@acorex/components 3.0.14 → 3.0.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/acorex-components.metadata.json +1 -1
- package/bundles/acorex-components.umd.js +1 -1
- package/bundles/acorex-components.umd.js.map +1 -1
- package/bundles/acorex-components.umd.min.js +1 -1
- package/bundles/acorex-components.umd.min.js.map +1 -1
- package/esm2015/lib/dropdown/dropdown.component.js +2 -2
- package/esm5/lib/dropdown/dropdown.component.js +2 -2
- package/fesm2015/acorex-components.js +1 -1
- package/fesm2015/acorex-components.js.map +1 -1
- package/fesm5/acorex-components.js +1 -1
- package/fesm5/acorex-components.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@acorex/components/lib/validation/validation-rule.widget.ts","ng://@acorex/components/lib/validation/validation.component.ts","ng://@acorex/components/lib/base/events.class.ts","ng://@acorex/components/lib/base/element.class.ts","ng://@acorex/components/lib/popover/custom-cdk-overlay.service.ts","ng://@acorex/components/lib/popover/overlay.service.ts","ng://@acorex/components/lib/loading/loading-indicator.component.ts","ng://@acorex/components/lib/loading/loading.service.ts","ng://@acorex/components/lib/page/page.component.ts","ng://@acorex/components/lib/base/base-page.class.ts","ng://@acorex/components/lib/button/button.component.ts","ng://@acorex/components/lib/button/button.module.ts","ng://@acorex/components/lib/calendar/calendar-box/calendar-box.component.ts","ng://@acorex/components/lib/popover/popover.component.ts","ng://@acorex/components/lib/popover/popover.module.ts","ng://@acorex/components/lib/calendar/calendar-box/calendar-box.module.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler-views.property.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler.class.ts","ng://@acorex/components/lib/toolbar/toolbar-item.ts","ng://@acorex/components/lib/menu/menu.component.ts","ng://@acorex/components/lib/toolbar/menu/toolbar-menu.component.ts","ng://@acorex/components/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.ts","ng://@acorex/components/lib/calendar/scheduler/views/scheduler-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/views/month/scheduler-month-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.ts","ng://@acorex/components/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.ts","ng://@acorex/components/lib/toolbar/search/toolbar-search.component.ts","ng://@acorex/components/lib/data-source/read-param.ts","ng://@acorex/components/lib/data-source/datasource.component.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler.component.ts","ng://@acorex/components/lib/toolbar/toolbar.component.ts","ng://@acorex/components/lib/toolbar/title/toolbar-title.component.ts","ng://@acorex/components/lib/toolbar/group-button/toolbar-group-button.component.ts","ng://@acorex/components/lib/menu/menu2.component.ts","ng://@acorex/components/lib/menu/menu-item.component.ts","ng://@acorex/components/lib/tooltip/tooltip.directive.ts","ng://@acorex/components/lib/tooltip/tooltip.module.ts","ng://@acorex/components/lib/menu/menu.module.ts","ng://@acorex/components/lib/toolbar/toolbar.module.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler.module.ts","ng://@acorex/components/lib/checkbox/checkbox.component.ts","ng://@acorex/components/lib/checkbox/checkbox.module.ts","ng://@acorex/components/lib/context-menu/context-menu.component.ts","ng://@acorex/components/lib/context-menu/context-menu.directive.ts","ng://@acorex/components/lib/context-menu/context-menu.module.ts","ng://@acorex/components/lib/data-filter/filter.class.ts","ng://@acorex/components/lib/selection-list/selection-list.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-date.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-number.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-selection.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-string.component.ts","ng://@acorex/components/lib/textbox/textbox.component.ts","ng://@acorex/components/lib/toast/toast-wrapper/toast-wrapper.component.ts","ng://@acorex/components/lib/toast/toast-message/toast-message.component.ts","ng://@acorex/components/lib/toast/toast.service.ts","ng://@acorex/components/lib/data-filter/filter-panel/filter-panel.component.ts","ng://@acorex/components/lib/data-filter/toolbar/filter-toolbar.component.ts","ng://@acorex/components/lib/panel-box/panel-box.component.ts","ng://@acorex/components/lib/panel-box/panel-box.module.ts","ng://@acorex/components/lib/dropdown/dropdown.component.ts","ng://@acorex/components/lib/date-picker/date-picker.component.ts","ng://@acorex/components/lib/form-group/form-group.component.ts","ng://@acorex/components/lib/form-group/form-group.module.ts","ng://@acorex/components/lib/textbox/textbox.module.ts","ng://@acorex/components/lib/dropdown/dropdown.module.ts","ng://@acorex/components/lib/date-picker/date-picker.module.ts","ng://@acorex/components/lib/toast/toast.module.ts","ng://@acorex/components/lib/selection-list/selection-list.module.ts","ng://@acorex/components/lib/validation/validation-form.component.ts","ng://@acorex/components/lib/validation/validation.module.ts","ng://@acorex/components/lib/data-filter/filter.module.ts","ng://@acorex/components/lib/data-list/core/data-list.component.ts","ng://@acorex/components/lib/data-list/list/toolbar-list-view.component.ts","ng://@acorex/components/lib/data-list/list/list.component.ts","ng://@acorex/components/lib/data-source/datasource.module.ts","ng://@acorex/components/lib/data-list/list/list.module.ts","ng://@acorex/components/lib/dialog/dialog.component.ts","ng://@acorex/components/lib/dialog/dialog.module.ts","ng://@acorex/components/lib/popup/popup.component.ts","ng://@acorex/components/lib/popup/popup.service.ts","ng://@acorex/components/lib/dialog/dialog.service.ts","ng://@acorex/components/lib/drawer/drawer.component.ts","ng://@acorex/components/lib/drawer/drawer.module.ts","ng://@acorex/components/lib/fieldset/fieldset.component.ts","ng://@acorex/components/lib/fieldset/fieldset.module.ts","ng://@acorex/components/lib/label/label.component.ts","ng://@acorex/components/lib/label/label.module.ts","ng://@acorex/components/lib/loading/loading-panel.component.ts","ng://@acorex/components/lib/loading/loading.module.ts","ng://@acorex/components/lib/number-box/number-box.component.ts","ng://@acorex/components/lib/number-box/number-box.module.ts","ng://@acorex/components/lib/page/content.component.ts","ng://@acorex/components/lib/page/footer.component.ts","ng://@acorex/components/lib/page/page.module.ts","ng://@acorex/components/lib/password-box/password-box.component.ts","ng://@acorex/components/lib/password-box/password-box.module.ts","ng://@acorex/components/lib/popup/popup.module.ts","ng://@acorex/components/lib/progress-bar/progress-bar.component.ts","ng://@acorex/components/lib/progress-bar/progress-bar.module.ts","ng://@acorex/components/lib/query-builder/query-builder.class.ts","ng://@acorex/components/lib/searchbox/searchbox.component.ts","ng://@acorex/components/lib/selectbox/selectbox.component.ts","ng://@acorex/components/lib/query-builder/query-builder-rule.component.ts","ng://@acorex/components/lib/query-builder/query-builder-popup/query-builder-popup.component.ts","ng://@acorex/components/lib/query-builder/query-builder.service.ts","ng://@acorex/components/lib/query-builder/query-builder-group.component.ts","ng://@acorex/components/lib/query-builder/query-builder.component.ts","ng://@acorex/components/lib/searchbox/searchbox.module.ts","ng://@acorex/components/lib/selectbox/selectbox2.component.ts","ng://@acorex/components/lib/selectbox/selectbox.module.ts","ng://@acorex/components/lib/query-builder/query-builder.module.ts","ng://@acorex/components/lib/switch/switch.component.ts","ng://@acorex/components/lib/switch/switch.module.ts","ng://@acorex/components/lib/tab-page/tab-page.service.ts","ng://@acorex/components/lib/tab-page/tab-page-host.component.ts","ng://@acorex/components/lib/tab-page/tab-page-Renderer.component.ts","ng://@acorex/components/lib/tab-page/tab-page.module.ts","ng://@acorex/components/lib/tab-strip/tab-strip.component.ts","ng://@acorex/components/lib/tab-strip/tab-strip.module.ts","ng://@acorex/components/lib/tab-view/dynamic-tabs.directive.ts","ng://@acorex/components/lib/tab-view/tab.component.ts","ng://@acorex/components/lib/tab-view/tab-view.component.ts","ng://@acorex/components/lib/tab-view/tab-view.module.ts","ng://@acorex/components/lib/textarea/textarea.component.ts","ng://@acorex/components/lib/textarea/textarea.module.ts","ng://@acorex/components/lib/time-picker/time-picker.component.ts","ng://@acorex/components/lib/time-picker/time-picker.module.ts","ng://@acorex/components/lib/tree-side-menu/tree-side-menu.component.ts","ng://@acorex/components/lib/tree-side-menu/tree-side-menu.module.ts","ng://@acorex/components/lib/tree-view/tree-view.component.ts","ng://@acorex/components/lib/tree-view/tree-view.module.ts","ng://@acorex/components/lib/upload-file/upload-file.component.ts","ng://@acorex/components/lib/upload-file/upload-file.module.ts","ng://@acorex/components/lib/accordion/accordion.component.ts","ng://@acorex/components/lib/accordion/accordion.module.ts","ng://@acorex/components/lib/property-editor/property-editor.class.ts","ng://@acorex/components/lib/property-editor/property-editor-renderer.directive.ts","ng://@acorex/components/lib/property-editor/editors/text-editor/text.editor.ts","ng://@acorex/components/lib/property-editor/editors/text-editor/text.module.ts","ng://@acorex/components/lib/property-editor/editors/number-editor/number.editor.ts","ng://@acorex/components/lib/property-editor/editors/number-editor/number.module.ts","ng://@acorex/components/lib/property-editor/editors/selectbox-editor/selectbox.editor.ts","ng://@acorex/components/lib/property-editor/editors/selectbox-editor/selectbox.module.ts","ng://@acorex/components/lib/property-editor/editors/range-editor/range.editor.ts","ng://@acorex/components/lib/color-picker/color-box/color-box.component.ts","ng://@acorex/components/lib/color-picker/color-picker.component.ts","ng://@acorex/components/lib/color-picker/color-picker.module.ts","ng://@acorex/components/lib/property-editor/editors/range-editor/range.module.ts","ng://@acorex/components/lib/property-editor/editors/color-editor/color.editor.ts","ng://@acorex/components/lib/property-editor/editors/color-editor/color.module.ts","ng://@acorex/components/lib/property-editor/editors/column-editor/column.editor.ts","ng://@acorex/components/lib/property-editor/editors/column-editor/column.module.ts","ng://@acorex/components/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.ts","ng://@acorex/components/lib/property-editor/editors/conditional-color-editor/conditional-color.module.ts","ng://@acorex/components/lib/property-editor/editors/switch-editor/number.editor.ts","ng://@acorex/components/lib/property-editor/editors/switch-editor/number.module.ts","ng://@acorex/components/lib/property-editor/editors/date-editor/date.editor.ts","ng://@acorex/components/lib/property-editor/editors/date-editor/date.module.ts","ng://@acorex/components/lib/property-editor/editors/time-editor/time.editor.ts","ng://@acorex/components/lib/property-editor/editors/time-editor/time.module.ts","ng://@acorex/components/lib/property-editor/property-editor.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__read","o","m","ar","error","__spread","concat","AXValidationRules","addRule","name","rule","exists","get","registredRules","find","AXValidationRuleComponent","type","enabled","validate","regRule","internalValidate","message","ruleValue","AXTranslator","isArray","ex","RegExp","test","res_1","val","catch","finally","Input","Component","selector","template","AXValidation","rules","validateOn","_this","all","map","AXValidationComponent","_super","rulesChange","EventEmitter","showMessage","_rules","emit","ngAfterContentInit","_a","contentItems","toArray","ContentChildren","QueryList","Output","AXValidationComponent_1","providers","provide","useExisting","AXHtmlEvent","AXBaseEvent","AXValueEvent","AXDataEvent","AXBaseComponent","uid","AXHtmlUtil","getUID","AXBaseInputChangeEvent","AXValidatableComponent","__valueField","tabIndex","initValidation","elementRef","valueField","validation","__nativeElement","nativeElement","__validation","undefined","clearValidationStyle","applyValidationStyle","element","clear","formGroup","closest","formItem","querySelector","parent_1","_b","_c","parentElement","_d","classList","remove","_e","_f","add","removeChild","parent_2","span","document","createElement","innerText","appendChild","AXBaseTextComponent","cdr","ref","disabled","readonly","textAlign","size","userChange","onkey","onBlur","onFocus","onValueChanged","valueChange","icon","allowClear","ngAfterViewInit","input","onkeyup","onkeydown","onkeypress","_validation","_contentValidation","_value","old","component","oldValue","isUserChange","detectChanges","focus","isFocused","activeElement","setTextAlign","handleInputBlur","htmlElement","htmlEvent","handleInputFocus","ViewChild","static","ContentChild","ElementRef","AXBaseButtonComponent","click","AXBaseDropdownComponent","fitParent","showDropDownButton","DynamicOverlayContainer","setContainerElement","containerElement","_containerElement","Injectable","providedIn","OverlayContainer","DynamicOverlay","scrollStrategies","_overlayContainer","_componentFactoryResolver","_positionBuilder","_keyboardDispatcher","_injector","_ngZone","_document","_directionality","rendererFactory","renderer","createRenderer","_dynamicOverlayContainer","setStyle","createOn","config","ScrollStrategyOptions","ComponentFactoryResolver","OverlayPositionBuilder","OverlayKeyboardDispatcher","Injector","NgZone","Inject","args","DOCUMENT","Directionality","RendererFactory2","Overlay","AXOverlayService","overlayService","overlayService2","appRef","show","content","context","configs","hasBackdrop","transparentBackdrop","closeOnClickOutside","portal","positionStrategy","viewRef","components","instance","TemplateRef","TemplatePortal","ComponentPortal","position","targetElement","flexibleConnectedTo","withPositions","withPush","global","centerHorizontally","centerVertically","scrollStrategy","reposition","autoClose","scroll","block","disposeOnNavigation","backdropClass","panelClass","overlayRef","host","attach","setTimeout","changeDetectorRef","merge","backdropClick","detachments","subscribe","dispose","onBackdropClick","bind","ApplicationRef","AXLoadingIndicatorComponent","ngOnInit","AXLoadingService","injection","_stack","location","com","id","Date","getTime","hide","filter","AXRenderService","AXPageComponent","el","loadingService","_isLoading","_loadingId","ChangeDetectorRef","AXPageCloseEvent","cancel","AXPageClosedPromise","executor","close","closeMethod","AXBasePageComponent","onClosed","pageContainer","isLoading","data","onClosing","ngOnDestroy","unsubscribe","AXBasePopupPageComponent","_footerButtons","onFooterButtonsChanged","Subject","configFooterButtons","getFooterButtons","buttons","footerButtons","onFooterButtonClick","AXButtonComponent","submitBehavior","cancelBehavior","loading","selected","focusButton","handleClick","stopPropagation","onKeydownHandler","preventDefault","container","HostListener","KeyboardEvent","encapsulation","ViewEncapsulation","None","COMPONENT","MODULES","CommonModule","AXButtonModule","NgModule","declarations","imports","exports","AXCalendarBoxComponent","weekdays","jalali","locale","AXConfig","dir","number","gregorian","selectableHoliday","dayStyle","showTodayButton","matrix","rotated","_view","_depth","holidays","weekends","onClick","getHoliday","getWeekend","navigate","view","date","vv","AXDateTime","convert","unValidDate","max","min","isInMInMaxRange","equal","setFocus","clone","focusedValue","today","viewRange","month","range","findDay","toISOString","split","getStyle","style","getTitle","text","initLayout","getViewCompaire","numRotate","path","getTodayName","prev","rotate","array","len","a","start","end","fd","startOf","startTime","firstDayOfWeek","endOf","endDayOfWeek","AXDateTimeRange","matrixify","applyStyle","enumurate","nextMonth","splice","dates","items","forEach","j","item","compaireNew","focused","unselect","h","holiday","indexDay_1","Math","floor","cc","Number","changeView","arr","cols","ceil","slice","setDayClick","event","setMonthClick","depth","set","year","monthOfYear","setYearClick","setToday","trackByFn","index","changeDetection","ChangeDetectionStrategy","OnPush","AXPopoverComponent","zone","openMode","closeMode","_visible","internalShow","internalHide","toggle","visible","run","open","isOpen","overlay","targetEl","addEventListener","removeEventListener","AXPopoverModule","AXCalendarBoxModule","AXCoreModule","AXSchedulerViewProperty","caption","interval","Attribute","AXSchedulerViewsProperty","AXAsyncEventArgs","onComplete","complete","AXSchedulerEventChangeArgs","canceled","alignment","AXMenuItemClickEvent","AXEvent","AXMenuComponent","onItemClick","selection","mode","direction","_menuTemplate","_contentMenuTemplate","_items","rtl","window","getComputedStyle","getPropertyValue","handleItemClick","disable","AXToolbarMenuComponent","update","AXToolbarMenuComponent_1","AXToolbarItem","AXToolbarSchedulerViewsComponent","onViewChanged","menu","AXToolbarSchedulerViewsComponent_1","AXSchedulerBaseViewComponent","timeSlot","onNavigatorDateChanged","events","slots","onEventChanged","_navigatorDate","getEvents","unit","ngAfterViewChecked","updateSize","onDragDropOnDay","time","previousContainer","opacity","oldSlot","newSlot","er","slotTime","z","durDay","duration","endTime","durTime_1","Directive","AXSchedulerDayTimeViewComponent","elm","times","vScroll","header","firstTr","index_1","querySelectorAll","children","width","offsetWidth","height","clientHeight","arrangeEvents","addDay","slot","display","navigatorDate","height_1","offsetHeight","attributes","getNamedItem","total","abs","hour","findEventIndex","sort","d1","d2","indexOf","AXSchedulerDayTimeViewComponent_1","AXSchedulerMonthViewComponent","weekDays","title","startDayOfWeek","dragHour","deltaY","addMonth","rows","dur","toString","matrixSlots","slotTd","viewMoreDiv","viewMore","visibility","top","getBoundingClientRect","bottom","innerHTML","onDragStarted","runOutsideAngular","dragEnterSlot","source","dropContainer","drageMouseMove","onDragEntered","dragPreview","onDragEnded","diff","round","AXSchedulerMonthViewComponent_1","AXToolbarSchedulerNavigatorComponent","viewDepth","onNavigate","startIcon","tooltip","goto","onDateChange","calDate","sameDay","sameMonth","sameYear","format","cal","toolbar","AXToolbarSchedulerNavigatorComponent_1","AXSchedulerAgendaViewComponent","hideEmptyDays","AXSchedulerAgendaViewComponent_1","AXSchedulerTimelineViewComponent","AXSchedulerTimelineViewComponent_1","AXToolbarSearchComponent","_text","inputSearch","onSearchChanged","searchChangeObserver","Observable","observer","pipe","debounceTime","distinctUntilChanged","AXToolbarSearchComponent_1","AXDataSourceReceivedEvent","AXDataSourceComponent","onDataReceived","onFetchStart","fetch","params","provideData","extra","_data","AXDataSourceReceivedResult","requestId","AXSchedulerComponent","viewItems","_currentView","setView","viewManager","views","createView","startAnim","portalOutlet","detach","compRef","setNavigatorText","refresh","toolbarNavigator","dateRange","groupName","dataSource","searchText","toolbarView","currentView","searchInput","x","CdkPortalOutlet","AXToolbarComponent","AXToolbarTitleComponent","AXToolbarTitleComponent_1","AXToolbarButtonGroupComponent","itemClick","AXToolbarButtonGroupComponent_1","AXMenu2Component","viewContainerRef","subItemsOverlays","level","showSubmenu","originX","originY","overlayX","overlayY","AXMenu2Component_1","onDocumentClick","contains","hideOverlays","ViewContainerRef","AXMenuItemComponent","showSubMenu","showSubItems","AXMenuItem","AXTooltipDirective","placement","delay","offset","onMouseEnter","onMouseLeave","setPosition","addClass","removeClass","tooltipTitle","createText","left","hostPos","tooltipPos","scrollPos","pageYOffset","documentElement","scrollTop","right","Renderer2","AXTooltipModule","AXMenuModule","COMPONENTS","AXToolbarModule","AXSchedulerModule","PortalModule","DragDropModule","entryComponents","AXCheckBoxItemClick","AXCheckBoxComponent","indeterminate","AXCheckBoxModule","FormsModule","AXContextMenuComponent","_left","_top","_rtl","containRec","innerWidth","innerHeight","handleClickItem","class","AXContextMenuItemClickEvent","AXContextMenuDirective","factoryResolver","injector","onContextMenuItemClick","internalItems","onContextMenu","getMenuItems","createContextMenu","contextMenu","wrapper","wrapperClick","wrapperRClick","factory","resolveComponentFactory","componentRef","createComponent","clearComponentSubscriptions","createComponentSubscriptions","elementsFromPoint","clientX","clientY","includes","clickSubscribe","closeSubscribe","dataItem","contextDataItem","menuItem","contextMenuItems","MouseEvent","AXContextMenuModule","AXFilterColumnComponent","operator","field","activeChange","_active","active","setFilter","AXSelectionListComponent","_selectedItems","textField","selectedItemsChange","selectedValuesChange","selectedItems","selectedValues","JSON","stringify","onCheckValueChange","checked","onvalueChanged","AXFilterColumnDateComponent","fromDate","toDate","selectedItem","showCustom","showSpecific","dateChange","onSelectedChanged","condition","dataType","AXFilterColumnDateComponent_1","AXFilterColumnNumberComponent","operators","onOperatorChange","onTextChange","AXFilterColumnNumberComponent_1","AXFilterColumnSelectionComponent","values","onSelectChange","some","AXFilterColumnSelectionComponent_1","AXFilterColumnStringComponent","AXFilterColumnStringComponent_1","AXTextBoxComponent","showMask","maskGuid","maskPlaceholder","maskKeepCharPositions","AXTextBoxComponent_1","AXToastWrapperComponent","AXToastMessageComponent","elRef","timeOut","closeable","toastWidth","interval_1","setInterval","clearInterval","AXToastService","injectionService","info","options","success","warning","opt","appendComponent","toastWrapper","AXFilterPanelComponent","toast","groups","predefinedFilters","saveItems","filterChange","updateMenu","filters","onValueChange","con","load","cancelSaveFilter","col","panel","setFilterByIndex","applySize","setFilterByName","removeFilter","footer","savedList","currentFilter","applySaveFilter","isNew","isInEdit","onMenuItemClick","handleRenameClick","tbxNameOnKey","tbxName","ViewChildren","AXToolbarFilterViewComponent","_uid","menuItems","divider","selectAll","addPredefinedList","filterPanel","root","setCurrent","name_1","prompt","findSelected","onCtxClick","menuId","currentTarget","getAttribute","AXToolbarFilterViewComponent_1","AXPanelBoxComponent","_caption","collapsedChange","_collapsed","allowCollapse","collapsed","animations","trigger","state","padding","transition","animate","AXPanelBoxModule","AXDropdownComponent","dropdownToggle","onButtonClick","dropdownEL","dropdownWidth","endButtons","childNodes","paddingInlineEnd","clientWidth","handleArrowClick","ensureOverlayCreated","templatePortal","setDirection","baseTemplate","hasAttached","AXDataPickerChangeEvent","AXDatePickerComponent","yyyyMMdd","ddMMyyyy","yyyyddMM","placeholder","showToday","openByClick","cursorPosition","model","_renderPicker","typeChange","_type","_setDateType","selectToday","dropdown","convertMaskToDate","convertStringToGregorian","convertMask","dateType","mask","monnth","day","textChange","markForCheck","guide","keepCharPositions","onStartfocus","caretColor","setCaretPosition","handleButtonClick","handleKeyPress","selectionStart","inputChar","String","fromCharCode","charCode","ind1","charAt","ind2","ind3","ind4","ind5","ind6","ind7","ind8","ind9","ind10","setCaret","ctrl","pos","setSelectionRange","AXDatePickerComponent_1","AXFormGroupComponent","required","div","AXFormGroupModule","TextMaskModule","AXTextBoxModule","OverlayModule","AXDropdownModule","AXDatePickerModule","AXToastModule","AXSelectionListModule","AXValidationFormComponent","widgets","onInit","widgetsQuery","w","failed","addWidget","widget","descendants","AXValidationModule","AXFilterModule","AXDataListComponent","configDataList","dataReceived","AXToolbarListViewComponent","vertical","verticalWrap","horizontalWrap","horizontal","onDirectionChanged","_direction","AXToolbarListViewComponent_1","AXListComponent","connectedList","allowMoveItem","_dataSource","_contentDataSource","_itemTemplate","_contentItemTemplate","_emptyTemplate","_contentEmptyTemplate","viewToolbar","dragDrop","AXDataSourceModule","AXListModule","AXDialogComponent","AXDialogModule","AXTranslatorModule","AXPopupComponent","resolver","rendererService","modal","maximizable","closable","headerButtons","console","log","findLoadedComponentByRoute","route","loadComponent","createEmbeddedView","$implicit","popupBody","insert","comRef","onFooterButtonsSubscription","onCloseClick","destroy","onFullScreen","handleFooterButtonClick","read","AXPopupService","stack","arg1","arg2","popup","closePopup","promise","closeFunc","reverse","closingFunc","res","AXDialogAlertResult","_executor","closeAction","action","AXDialogConfirmResult","okayAction","cancelAction","finalAction","okay","final","AXDialogResult","thenAction","AXDialogService","popupService","alert","confirm","_i","AXDrawerComponent","drawerState","transform","AXDrawerModule","BrowserAnimationsModule","AXFieldsetComponent","AXFieldsetModule","AXLabelComponent","AXLabelModule","AXLoadingPanelComponent","AXLoadingModule","A11yModule","AXNumberBoxComponent","showSeparator","showCurrency","showCounter","scrollWeel","showDoubleCounter","userQuestionUpdate","userEdite","findDots","findMinus","decimalConstant","lastStep","intStep","decimalNumber","customStep","_values","textValue","isNaN","replace","addCommas","search","addCommas2","nStr","x1","x2","rgx","handleWheel","wheelDelta","upStepHandel","delaySearch","downStepHandel","match","keyCode","figureAfterDot","dotIndex","handleKeyUp","handleKeyDown","countAfterDot","defaultStep","pow","dotPosition","tmp","parseFloat","count","toFixed","parseInt","checkMinMax","doGetCaretPosition","createTextRange","collapse","moveEnd","moveStart","select","AXNumberBoxComponent_1","AXNumberBoxModule","AXPageContentComponent","AXPageFooterComponent","AXPageModule","AXPasswordBoxComponent","eyeIcon","handleShowPassword","AXPasswordBoxComponent_1","AXPasswordBoxModule","AXPopupModule","AXProgressBarComponent","progress","AXProgressBarModule","AXQueryBuilderRuleEvent","AXQueryBuilderGroupEvent","AXSearchBoxComponent","textChanged","handleKeyEvent","AXSelectBoxSelectionChangedEvent","AXSelectBoxComponent","showCheckBox","allowNull","bufferSize","remoteOperation","currentfocusedIndex","showLoading","skip","totalCount","allowSearch","itemRemove","itemsChange","hasSelectedValue","itemsFiltered","dropDownDisabled","selectionChanged","itemsStatusObserver","setSelectedItemsChange","Set","waitForData","rowTemplate","rowInputTemplate","scrolled","listContainer","scrollHeight","take","textbox","setSelectedItems","isUserInput","changed","setSelectedIndex","emitSelectionChangedEvent","sign","toLowerCase","itemDiv","scrollIntoView","behavior","compareSelectedValues","addId_1","vId","newId","differenceBy","vv_1","rc","newValue","currentValue","setSelectedValues","dropdownToggleSelecBox","serchBox","handleItemRemoveClick","onFocusTextBox","onTextBoxClick","handleKeyEventSearch","textBoxSelectBox","getItems","selectedItemByIndex","stopImmediatePropagation","isChar","str","code","ctrlKey","isItemSelected","callbackfn","AXSelectBoxComponent_1","AXQueryBuilderRuleComponent","isEditing","fields","onRuleDelete","ruleChanged","showValue","isOnDemandLabel","provideDataBoolean","provideDataOperator","getProvideData","control","optionsData","onDemandLabel","saveRule","form","handleEditClick","handleCommitClick","handleRemoveClick","captionChange","dataField","AXQueryBuilderControl","dataFieldItem","selectBox","selectBoxValue","selectBoxBoolean","operatorChange","valueItem","onDemandLabelChange","valueBooleanChange","getOnDemandName","getOption","AXQueryBuilderRule","AXQueryBuilderGroup","AXQueryBuilderPopupComponent","complateValue","makeJsonString","groupString","group","groupCopy","parse","getNoValueRule","getValue","gr","textValueChange","findNullValue","AXQueryBuilderService","canOpen","canRun","runQuery","getQueryString","query","queryString","queryStringElastic","AXQueryBuilderGroupComponent","qs","groupRuleChanged","showGroupCondition","ruleDelete","parent","addGroup","addGroupOR","makeGroup","addGroupAND","_condition","changeDetailMode","handleChangeClick","AXQueryBuilderComponent","rootGroup","onRuleChanged","saved","getQueryBuilder","AXSearchBoxModule","AXSelectBoxValueChangedEvent","AXSelectBox2Component","selectionMode","selectionDataMode","AXObjectUtil","deepJSONClone","selectedKeys","renderSelection","orgRes","ii","fake","func","focusOnSearchBox","focusOnCurrentFocusedIndex","selectItems","internalGetItemValue","unselectItems","internalGetItemByDataMode","isLetter","selectItemByNav","focusedItem","toggleSelect","inputedVal","searchBox","AXSelectBox2Component_1","AXScrollModule","AXSelectBoxModule","MODUELS","AXQueryBuilderModule","AXSwitchComponent","AXSwitchModule","AXTabPageService","tabs","opened","activated","closed","arg3","newTab","pinned","existTab","findExistTab","tab","doCloseAction","currentTab","sender","tab_1","AXTabPageHostComponent","tabService","Error","hostView","AXTabPageRendererComponent","childs","subscriptions","hidden","reattach","componentRef_1","hostref","AXTabPageModule","AXTabStripChangedEvent","AXTabStripComponent","onTabChanged","seledtedTab","AXTabStripModule","DynamicTabsDirective","viewContainer","AXTabComponent","isCloseable","AXTabViewComponent","fullWidth","dynamicTabs","onActiveTab","first","selectTab","openTab","componentFactory","dynamicTabPlaceholder","dataContext","closeTab","closeActiveTab","activeTabs","Boolean","AXTabViewModule","AXTextAreaComponent","maxLength","AXTextAreaComponent_1","AXTextAreaModule","AXTimePickerChangedEvent","AXTimePickerComponent","showCurentTime","clearDisabled","HHmmss","HHmm","HH","hhmmss","hhmm","hh","hhmmssam","hhmmam","hham","valueHam","valueMam","valueSam","timeType","minute","second","indOld4","indOld7","indOld10","clearValue","placeholderChar","getHours","amHour","getMinutes","sec","getSeconds","firstChar","secondChar","ind11","hourind","afterHourind","beforeHourind","secondind","typeind","typeind2","afterHourIndex","minuteind","afterMinuteIndex","secondIndex","aftersecondIndex","AXTimePickerComponent_1","AXTimePickerModule","itemData","AXTreeSideMenuItemData","AXTreeSideMenuSelectionChangedEvent","AXTreeSideMenuItemClick","AXTreeSideMenuComponent","cssClass","selectionLevel","selectedFieldName","selectNodesRecursive","seletedKeyFields","keyField","hasChildField","bordered","lazyLoading","allowDrag","iconStart","closeIconName","openIconName","onItemOpening","onItemClosing","onItemDrag","onItemMoved","showSelectBox","list","selectedParents","loadAllChildren","listLoad","validDrop","lockedDrag","childField","showContextMenu","handleOnContextMenuItem","internalSelectItem","parentNode","changeParentSelect","changeChildSelect","makeNode","addChildren","node","AXTreeSideMenuNode","k","hasChild","allselect","alldeselect","oneselect","isindeterminate","toggleNode","flag","itemdbClick","handleOnNodeClick","loaded","itemRow","random","hideLoading","disabledCheckBox","selectItem","result_1","onDragStart","itemDrag","onDragEnd","itemDrop","drop","sameChilde","movedEvent","AXTreeSideMenuItemMovedEvent","dragDropItem","child","itemChild","itemParent","listChange","changeChiled","openAll","loadAll","scrolIntoView","closeAll","unSelectAll","getSelectedNodes","selectItemsNode","getSelectedParents","selectItemsParent","getParentsId","keyFields","getSelectedKeyFields","Ids","AXTreeSideMenuModule","AXTreeViewItemData","AXTreeViewselectionChangedEvent","AXTreeViewseletedKeyFieldsChangedEvent","AXTreeViewItemClick","AXTreeViewComponent","seletedKeyFieldsChanged","isSelectedItem","loced","AXTreeViewNode","AXTreeViewItemMovedEvent","AXTreeViewModule","AXUploadFileComponent","rendrer","onLoad","onProgress","files","fileName","onDeleteClick","onFileChange","addFile","fileInput","dropRef","progressRef","overlayDiv","handleOverlayDragOver","handleDragOver","handleDragLeave","handleDrop","dataTransfer","file","progressDiv","progressLabel","reader","FileReader","pv","uploaded","intv","readAsDataURL","HTMLElement","AXUploadFileModule","AXAccordionComponent","multiple","panels","handleCollapsedChanged","AXAccordionModule","AXProperyEditorComponent","initiated","validatableComponentRegistered","registerForValidationForm","handleValueChange","initiat","cls","property","AXPropertyDecorators","register","REGISTRY","AXPropertyDecorator","has","isValid","getProperties","superClass","getPrototypeOf","AXPropertyEditorRendererDirective","componentFactoryResolver","renderService","_context","assignProps","editorClass","cmpRef","subscription","validationForm","editorOptions","startsWith","substring","getPropByPath","this_1","AXTextPropertyEditorComponent","clearButton","textBox","AXTextPropertyEditorModule","AXNumberBoxPropertyEditorComponent","minValue","maxValue","AXNumberBoxPropertyEditorModule","AXSelectBoxPropertyEditorComponent","intVal","AXSelectBoxPropertyEditorModule","AXRangePropertyEditorComponent","ranges","onFormInit","editRow","tplEdit","handleAddClick","color","AXColorBoxComponent","inputFormat","onColorSelect","rColor","gColor","bColor","colors","selectColor","rgb","AXColorUtil","hex2Rgb","onColorClick","handleColorChange","rgb2Hex","AXColorBoxComponent_1","AXColorPickerComponent","showClear","findTextColor","contrastToWhite","AXColorPickerComponent_1","AXColorPickerModule","AXRangePropertyEditorModule","AXColorPropertyEditorComponent","AXColorPropertyEditorModule","ColumnPropertyEditorComponent","columns","columnTypeData","handleDataReceived","moveItemInArray","previousIndex","currentIndex","handleAddColumn","fieldName","fieldType","displayType","fillByUser","rowHeader","AXColumnPropertyEditorModule","AXConditionalColorPropertyEditorComponent","booleanItems","deepCopy","updateOperations","dataTypes","getDefaultValue","opr","oprItem","getIcon","AXConditionalColorPropertyEditorModule","conditional-color-property-editor","replaced-color","replaced-title","AXSwitchPropertyEditorComponent","AXSwitchPropertyEditorModule","AXDatePropertyEditorComponent","AXDatePropertyEditorModule","AXTimePropertyEditorComponent","AXTimePropertyEditorModule","WDIGET_MODULES","AXProppertyEditorModule","RouterModule","forChild"],"mappings":";;;;;;;;;;;;;;oFAgBA,IAAIA,EAAgB,SAASC,EAAGC,GAI5B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUL,EAAGC,GAAKD,EAAEI,UAAYH,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIK,KAAKL,EAAOA,EAAEM,eAAeD,KAAIN,EAAEM,GAAKL,EAAEK,MACpDN,EAAGC,IAGrB,SAASO,EAAUR,EAAGC,GAEzB,SAASQ,IAAOC,KAAKC,YAAcX,EADnCD,EAAcC,EAAGC,GAEjBD,EAAEY,UAAkB,OAANX,EAAaC,OAAOW,OAAOZ,IAAMQ,EAAGG,UAAYX,EAAEW,UAAW,IAAIH,GAG5E,IAAIK,EAAW,WAQlB,OAPAA,EAAWZ,OAAOa,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIZ,KADTW,EAAIG,UAAUF,GACOhB,OAAOU,UAAUL,eAAee,KAAKL,EAAGX,KAAIU,EAAEV,GAAKW,EAAEX,IAE9E,OAAOU,IAEKO,MAAMb,KAAMU,YAezB,SAASI,EAAWC,EAAYC,EAAQC,EAAKC,GAChD,IAA2H5B,EAAvH6B,EAAIT,UAAUC,OAAQS,EAAID,EAAI,EAAIH,EAAkB,OAATE,EAAgBA,EAAO1B,OAAO6B,yBAAyBL,EAAQC,GAAOC,EACrH,GAAuB,iBAAZI,SAAoD,mBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASR,EAAYC,EAAQC,EAAKC,QACpH,IAAK,IAAIV,EAAIO,EAAWJ,OAAS,EAAGH,GAAK,EAAGA,KAASlB,EAAIyB,EAAWP,MAAIY,GAAKD,EAAI,EAAI7B,EAAE8B,GAAKD,EAAI,EAAI7B,EAAE0B,EAAQC,EAAKG,GAAK9B,EAAE0B,EAAQC,KAASG,GAChJ,OAAOD,EAAI,GAAKC,GAAK5B,OAAOgC,eAAeR,EAAQC,EAAKG,GAAIA,EAGzD,SAASK,EAAQC,EAAYC,GAChC,OAAO,SAAUX,EAAQC,GAAOU,EAAUX,EAAQC,EAAKS,IAGpD,SAASE,EAAWC,EAAaC,GACpC,GAAuB,iBAAZR,SAAoD,mBAArBA,QAAQS,SAAyB,OAAOT,QAAQS,SAASF,EAAaC,GAG7G,SAASE,EAAUC,EAASC,EAAYC,EAAGC,GAE9C,OAAO,IAAKD,IAAMA,EAAIE,WAAU,SAAUC,EAASC,GAC/C,SAASC,EAAUC,GAAS,IAAMC,EAAKN,EAAUO,KAAKF,IAAW,MAAOG,GAAKL,EAAOK,IACpF,SAASC,EAASJ,GAAS,IAAMC,EAAKN,EAAiB,MAAEK,IAAW,MAAOG,GAAKL,EAAOK,IACvF,SAASF,EAAKI,GAJlB,IAAeL,EAIaK,EAAOC,KAAOT,EAAQQ,EAAOL,QAJ1CA,EAIyDK,EAAOL,MAJhDA,aAAiBN,EAAIM,EAAQ,IAAIN,GAAE,SAAUG,GAAWA,EAAQG,OAITO,KAAKR,EAAWK,GAClGH,GAAMN,EAAYA,EAAUvB,MAAMoB,EAASC,GAAc,KAAKS,WAI/D,SAASM,EAAYhB,EAASiB,GACjC,IAAsGC,EAAGC,EAAG9C,EAAG+C,EAA3GC,EAAI,CAAEC,MAAO,EAAGC,KAAM,WAAa,GAAW,EAAPlD,EAAE,GAAQ,MAAMA,EAAE,GAAI,OAAOA,EAAE,IAAOmD,KAAM,GAAIC,IAAK,IAChG,OAAOL,EAAI,CAAEV,KAAMgB,EAAK,GAAIC,MAASD,EAAK,GAAIE,OAAUF,EAAK,IAAwB,mBAAXG,SAA0BT,EAAES,OAAOC,UAAY,WAAa,OAAO/D,OAAUqD,EACvJ,SAASM,EAAKlD,GAAK,OAAO,SAAUuD,GAAK,OACzC,SAAcC,GACV,GAAId,EAAG,MAAM,IAAIe,UAAU,mCAC3B,KAAOZ,GAAG,IACN,GAAIH,EAAI,EAAGC,IAAM9C,EAAY,EAAR2D,EAAG,GAASb,EAAU,OAAIa,EAAG,GAAKb,EAAS,SAAO9C,EAAI8C,EAAU,SAAM9C,EAAEM,KAAKwC,GAAI,GAAKA,EAAET,SAAWrC,EAAIA,EAAEM,KAAKwC,EAAGa,EAAG,KAAKlB,KAAM,OAAOzC,EAE3J,OADI8C,EAAI,EAAG9C,IAAG2D,EAAK,CAAS,EAARA,EAAG,GAAQ3D,EAAEmC,QACzBwB,EAAG,IACP,KAAK,EAAG,KAAK,EAAG3D,EAAI2D,EAAI,MACxB,KAAK,EAAc,OAAXX,EAAEC,QAAgB,CAAEd,MAAOwB,EAAG,GAAIlB,MAAM,GAChD,KAAK,EAAGO,EAAEC,QAASH,EAAIa,EAAG,GAAIA,EAAK,CAAC,GAAI,SACxC,KAAK,EAAGA,EAAKX,EAAEI,IAAIS,MAAOb,EAAEG,KAAKU,MAAO,SACxC,QACI,KAAkB7D,GAAZA,EAAIgD,EAAEG,MAAY9C,OAAS,GAAKL,EAAEA,EAAEK,OAAS,MAAkB,IAAVsD,EAAG,IAAsB,IAAVA,EAAG,IAAW,CAAEX,EAAI,EAAG,SACjG,GAAc,IAAVW,EAAG,MAAc3D,GAAM2D,EAAG,GAAK3D,EAAE,IAAM2D,EAAG,GAAK3D,EAAE,IAAM,CAAEgD,EAAEC,MAAQU,EAAG,GAAI,MAC9E,GAAc,IAAVA,EAAG,IAAYX,EAAEC,MAAQjD,EAAE,GAAI,CAAEgD,EAAEC,MAAQjD,EAAE,GAAIA,EAAI2D,EAAI,MAC7D,GAAI3D,GAAKgD,EAAEC,MAAQjD,EAAE,GAAI,CAAEgD,EAAEC,MAAQjD,EAAE,GAAIgD,EAAEI,IAAIU,KAAKH,GAAK,MACvD3D,EAAE,IAAIgD,EAAEI,IAAIS,MAChBb,EAAEG,KAAKU,MAAO,SAEtBF,EAAKf,EAAKtC,KAAKqB,EAASqB,GAC1B,MAAOV,GAAKqB,EAAK,CAAC,EAAGrB,GAAIQ,EAAI,EAAI,QAAWD,EAAI7C,EAAI,EACtD,GAAY,EAAR2D,EAAG,GAAQ,MAAMA,EAAG,GAAI,MAAO,CAAExB,MAAOwB,EAAG,GAAKA,EAAG,QAAK,EAAQlB,MAAM,GArB9BL,CAAK,CAACjC,EAAGuD,MA8CtD,SAASK,EAAOC,EAAG7D,GACtB,IAAI8D,EAAsB,mBAAXT,QAAyBQ,EAAER,OAAOC,UACjD,IAAKQ,EAAG,OAAOD,EACf,IAAmBlD,EAAYwB,EAA3BpC,EAAI+D,EAAE3D,KAAK0D,GAAOE,EAAK,GAC3B,IACI,WAAc,IAAN/D,GAAgBA,KAAM,MAAQW,EAAIZ,EAAEmC,QAAQI,MAAMyB,EAAGJ,KAAKhD,EAAEqB,OAExE,MAAOgC,GAAS7B,EAAI,CAAE6B,MAAOA,GACjC,QACQ,IACQrD,IAAMA,EAAE2B,OAASwB,EAAI/D,EAAU,SAAI+D,EAAE3D,KAAKJ,GAE1D,QAAkB,GAAIoC,EAAG,MAAMA,EAAE6B,OAE7B,OAAOD,EAGJ,SAASE,IACZ,IAAK,IAAIF,EAAK,GAAIhE,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAC3CgE,EAAKA,EAAGG,OAAON,EAAO3D,UAAUF,KACpC,OAAOgE,mBC5IX,SAAAI,KAmBA,OAhBgBA,EAAAC,QAAd,SAAsBC,EAAcC,GAClC,IAAMC,EAASJ,EAAkBK,IAAIH,GACjCE,EACFA,EAAOD,KAAOA,EAGdH,EAAkBM,eAAed,KAAK,CACpCU,KAAIA,EACJC,KAAIA,KAKIH,EAAAK,IAAd,SAAkBH,GAChB,OAAO9E,KAAKkF,eAAeC,MAAK,SAAAhE,GAAK,OAAAA,EAAE2D,OAASA,MAhBnCF,EAAAM,eAA6D,GAkB9EN,kBAOA,SAAAQ,IAEEpF,KAAAqF,KAA8B,WAO9BrF,KAAAsF,SAAmB,EA6DrB,OA3DEF,EAAAlF,UAAAqF,SAAA,SAAS9C,GACP,IAAqB,IAAjBzC,KAAKsF,QACP,OAAOjD,QAAQC,QAAQ,CAAEQ,QAAQ,IAEnC,IAAM0C,EAAUZ,EAAkBK,IAAIjF,KAAKqF,MAC3C,OAAIG,EACKxF,KAAKyF,iBAAiBD,EAAQT,KAAKM,KAAM5C,EAAOzC,KAAK0F,SAAWF,EAAQT,KAAKW,QAASF,EAAQT,KAAKtC,OAGnGzC,KAAKyF,iBAAiBzF,KAAKqF,KAAM5C,EAAOzC,KAAK0F,QAAS1F,KAAKyC,QAK9D2C,EAAAlF,UAAAuF,iBAAR,SAAyBJ,EAAc5C,EAAaiD,EAAkBC,GACpE,OAAO,IAAItD,SAAgC,SAAAC,GACzC,OAAQ+C,GACN,IAAK,WACH/C,EAAQ,CACNoD,QAASA,GAAWE,EAAAA,aAAaX,IAAI,gCACrCnC,OAAiB,MAATL,GAA0B,IAATA,KAAiB9C,MAAMkG,QAAQpD,IAAW9C,MAAMkG,QAAQpD,IAAUA,EAAM9B,OAAS,KAE5G,MACF,IAAK,QACH,IAAMmF,EAAK,IAAIC,OAAOJ,GACtBrD,EAAQ,CACNoD,QAASA,GAAWE,EAAAA,aAAaX,IAAI,6BACrCnC,OAAQgD,EAAGE,KAAKvD,KAElB,MACF,IAAK,SACL,IAAK,WACH,GAAyB,mBAAdkD,EAA0B,CACnC,IAAMM,EAAW,GACjBA,EAAIP,QAAUA,EACd,IAAMQ,EAAMP,EAAU,CAAElD,MAAKA,EAAEiD,QAAOA,IAClCQ,aAAe7D,QACjB6D,EAAIlD,MAAK,SAAA7B,GACP8E,EAAInD,OAAS3B,KACZgF,OAAM,SAAAhF,GACP8E,EAAInD,QAAS,KACZsD,SAAQ,WACT9D,EAAQ2D,OAIVA,EAAInD,OAASoD,EACb5D,EAAQ2D,SAIV3D,EAAQ,CAAEQ,QAAQ,IAEpB,MACF,QACER,EAAQ,CAAEQ,QAAQ,SAhE1BhC,EAAA,CADCuF,EAAAA,4DAGDvF,EAAA,CADCuF,EAAAA,+DAGDvF,EAAA,CADCuF,EAAAA,6DAIDvF,EAAA,CADCuF,EAAAA,gEARUjB,EAAyBtE,EAAA,CAJrCwF,EAAAA,UAAU,CACTC,SAAU,qBACVC,SAAU,MAECpB,mBC1Bb,SAAAqB,IAEEzG,KAAA0G,MAA4B,GAC5B1G,KAAA2G,WAA2C,SA8B7C,OA3BEF,EAAAvG,UAAAqF,SAAA,SAAS9C,GAAT,IAAAmE,EAAA5G,KACE,OAAKA,KAAK0G,OAA+B,IAAtB1G,KAAK0G,MAAM/F,OAGvB,IAAI0B,SAAgC,SAAAC,GACzCD,QAAQwE,IACND,EAAKF,MAAMI,KAAI,SAAA3F,GACb,GAAIA,aAAaiE,EACf,OAAOjE,EAAEoE,SAAS9C,GAGlB,IAAMuB,EAAI,IAAIoB,EAEd,OADA5F,OAAOa,OAAO2D,EAAG7C,GACV6C,EAAEuB,SAAS9C,OAGtBO,MAAK,SAAA1D,GACL,IAAMmF,EAAQnF,EAAE6F,MAAK,SAAAhE,GAAK,OAAa,IAAbA,EAAE2B,UAE1BR,EADEmC,GAGM,CAAE3B,QAAQ,UAnBfT,QAAQC,QAAQ,CAAEQ,QAAQ,KAyBvC2D,mBAQA,SAAAM,IAAA,IAAAH,EAAA,OAAAI,GAAAA,EAAAnG,MAAAb,KAAAU,YAAAV,YAOE4G,EAAAK,YAAgD,IAAIC,EAAAA,aAGpDN,EAAAO,aAAuB,EAgBvBP,EAAAD,WAA2C,aAQ7C,OAlC2C7G,EAAAiH,EAAAC,KAA9BD,EAeXvH,OAAAgC,eAAWuF,EAAA7G,UAAA,QAAK,KAAhB,WACE,OAAOF,KAAKoH,YAEd,SAAiBpD,GACfhE,KAAKoH,OAASpD,EACVhE,KAAKiH,aACPjH,KAAKiH,YAAYI,KAAKrD,oCAQ1B+C,EAAA7G,UAAAoH,mBAAA,iBACMtH,KAAK0G,OAA+B,IAAtB1G,KAAK0G,MAAM/F,SAC3B4G,EAAAvH,KAAK0G,OAAMtC,KAAIvD,MAAA0G,EAAA7C,EAAI1E,KAAKwH,aAAaC,aA5BzC3G,EAAA,CADC4G,EAAAA,gBAAgBtC,mBACKuC,EAAAA,+CAItB7G,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAGbpG,EAAA,CADC8G,EAAAA,qEAMD9G,EAAA,CADCuF,EAAAA,yFAYDvF,EAAA,CADCuF,EAAAA,kEAzBUU,EAAqBc,EAAA/G,EAAA,CALjCwF,EAAAA,UAAU,CACTC,SAAU,gBACVC,SAAU,4BACVsB,UAAW,CAAC,CAAEC,QAAStB,EAAcuB,YAAaH,OAEvCd,IAA8BN,KC/C3C,2BAKA,SAAAwB,mDAGA,OAHkDnI,EAAAmI,EAAAjB,GAGlDiB,GAHkDC,iBAKlD,SAAAC,mDAGA,OAHqCrI,EAAAqI,EAAAnB,GAGrCmB,GAHqCD,iBAKrC,SAAAE,mDAEA,OAFoCtI,EAAAsI,EAAApB,GAEpCoB,GAFoCF,KAIpC,0BCRE,SAAAG,IADArI,KAAAsI,IAAcC,EAAAA,WAAWC,SAG3B,OAJW1H,EAAA,CAARuF,EAAAA,gEAIHgC,mBAGA,SAAAI,mDAEA,OAF4C3I,EAAA2I,EAAAzB,GAE5CyB,GAF4CN,iBA6B5C,SAAAO,IAAA,IAAA9B,EAAA,OAAAI,GAAAA,EAAAnG,MAAAb,KAAAU,YAAAV,YAEU4G,EAAA+B,aAAuB,QAM/B/B,EAAAgC,SAAmB,IA8ErB,OAtFqD9I,EAAA4I,EAAA1B,GAUzC0B,EAAAxI,UAAA2I,eAAV,SACEC,EACAC,EACAC,GAEAhJ,KAAKiJ,gBAAkBH,EAAWI,cAClClJ,KAAK2I,aAAeI,EACpB/I,KAAKmJ,aAAeH,EACpB,IAAMvG,EAAQzC,KAAKA,KAAK2I,gBAClBhJ,MAAMkG,QAAQpD,IAAUA,GAAW9C,MAAMkG,QAAQpD,IAAUA,EAAM9B,OAAS,IAC9EX,KAAKuF,YAGT/F,OAAAgC,eAAIkH,EAAAxI,UAAA,aAAU,KAAd,WACE,OAAOF,KAAKmJ,8CAGdT,EAAAxI,UAAAqF,SAAA,WAAA,IAAAqB,EAAA5G,KACE,QAA0BoJ,IAAtBpJ,KAAKmJ,eAA+BnJ,KAAKmJ,aAAazC,OAAS,IAAI/F,OAAS,EAAG,CACjF,IAAMmC,EAAS9C,KAAKmJ,aAAa5D,SAASvF,KAAKA,KAAK2I,eASpD,OARA7F,EAAOE,MAAK,SAAA7B,GACNA,EAAE2B,OACJ8D,EAAKyC,qBAAqBzC,EAAKqC,iBAG/BrC,EAAK0C,qBAAqB1C,EAAKqC,gBAAiB9H,MAG7C2B,EAGP,OAAOT,QAAQC,QAAQ,CAAEQ,QAAQ,KAK3B4F,EAAAxI,UAAAmJ,qBAAV,SAA+BE,EAAsBC,mBACnD,QADmD,IAAAA,IAAAA,GAAA,QACzBJ,IAAtBpJ,KAAKmJ,eAA+BnJ,KAAKmJ,aAAazC,OAAS,IAAI/F,OAAS,EAAG,CACjF,IAAM8I,EAAYF,EAAQG,QAAQ,eAC5BC,GAAoB,QAATpC,EAAAkC,SAAS,IAAAlC,OAAA,EAAAA,EAAEqC,cAAc,gBAAiBL,EAAQG,QAAQ,eAAiBH,EAAQK,cAAc,cAE5GC,GADiB,QAAZC,EAAGL,SAAS,IAAAK,GAAAA,EAAEF,cAAc,sBAChB,QAARG,EAAAJ,SAAQ,IAAAI,OAAA,EAAAA,EAAEC,gBAAiBT,EAAQS,eAE1C,QAARC,EAAAN,SAAQ,IAAAM,GAAAA,EAAEC,UAAUC,OAAO,iBACnB,QAARC,EAAAT,SAAQ,IAAAS,GAAAA,EAAEF,UAAUC,OAAO,eAEtBX,GACK,QAARa,EAAAV,SAAQ,IAAAU,GAAAA,EAAEH,UAAUI,IAAI,iBAGtBT,EAAOD,cAAc,oBACvBC,EAAOU,YAAYV,EAAOD,cAAc,sBAKpClB,EAAAxI,UAAAoJ,qBAAV,SAA+BC,EAAsBvF,iBACnD,QAA0BoF,IAAtBpJ,KAAKmJ,eAA+BnJ,KAAKmJ,aAAazC,OAAS,IAAI/F,OAAS,EAAG,CACjF,IAAM8I,EAAYF,EAAQG,QAAQ,eAC5BC,GAAoB,QAATpC,EAAAkC,SAAS,IAAAlC,OAAA,EAAAA,EAAEqC,cAAc,gBAAiBL,EAAQG,QAAQ,eAAiBH,EAAQK,cAAc,cAE5GY,GADiB,QAAZV,EAAGL,SAAS,IAAAK,GAAAA,EAAEF,cAAc,sBAChB,QAARG,EAAAJ,SAAQ,IAAAI,OAAA,EAAAA,EAAEC,gBAAiBT,EAAQS,eAMlD,GALQ,QAARC,EAAAN,SAAQ,IAAAM,GAAAA,EAAEC,UAAUI,IAAI,eAChB,QAARF,EAAAT,SAAQ,IAAAS,GAAAA,EAAEF,UAAUC,OAAO,iBACvBK,EAAOZ,cAAc,oBACvBY,EAAOD,YAAYC,EAAOZ,cAAc,oBAEtC5J,KAAKmJ,aAAahC,YAAa,CACjC,IAAMsD,EAAOC,SAASC,cAAc,QACpCF,EAAKG,UAAY5G,EAAE0B,QACnB+E,EAAKP,UAAUI,IAAI,KAAM,cACzBE,EAAOK,YAAYJ,MAzEzB3J,EAAA,CADCuF,EAAAA,gEA+EHqC,GAtFqDL,iBAiKnD,SAAAyC,EAAsBC,EAAkCC,GAAxD,IAAApE,EACEI,EAAApG,KAAAZ,OAAOA,YADa4G,EAAAmE,IAAAA,EAAkCnE,EAAAoE,IAAAA,EAvCxDpE,EAAAgC,SAAmB,EAuBnBhC,EAAAqE,UAAoB,EAGpBrE,EAAAsE,UAAoB,EAGpBtE,EAAAuE,UAAqC,KAGrCvE,EAAAwE,KAAyC,KAKzCxE,EAAAyE,YAAsB,EAOfzE,EAAA0E,MAAqC,IAAIpE,EAAAA,aAGzCN,EAAA2E,OAA2C,IAAIrE,EAAAA,aAG/CN,EAAA4E,QAA4C,IAAItE,EAAAA,aAGhDN,EAAA6E,eAAuD,IAAIvE,EAAAA,aAGlEN,EAAA8E,YAAiC,IAAIxE,EAAAA,aAIrCN,EAAA+E,KAAe,GAGf/E,EAAAgF,YAAsB,IAgExB,OA9JkD9L,EAAAgL,EAAA9D,GAEhD8D,EAAA5K,UAAA2L,gBAAA,WAAA,IAAAjF,EAAA5G,KACMA,KAAK8L,QACP9L,KAAK8L,MAAM5C,cAAc6C,QAAU,SAACnJ,GAClCgE,EAAKyE,YAAa,EAClBzE,EAAKnE,MAASG,EAAE5B,OAAeyB,MAC/BmE,EAAK0E,MAAMjE,KAAKzE,IAElB5C,KAAK8L,MAAM5C,cAAc8C,UAAY,SAACpJ,GACpCgE,EAAKyE,YAAa,EAElBzE,EAAKnE,MAASG,EAAE5B,OAAeyB,MAC/BmE,EAAK0E,MAAMjE,KAAKzE,IAElB5C,KAAK8L,MAAM5C,cAAc+C,WAAa,SAACrJ,GACrCgE,EAAKyE,YAAa,EAElBzE,EAAKnE,MAASG,EAAE5B,OAAeyB,MAC/BmE,EAAK0E,MAAMjE,KAAKzE,MAMtBkI,EAAA5K,UAAAoH,mBAAA,WACEtH,KAAK6I,eAAe7I,KAAKgL,IAAK,QAAShL,KAAKgJ,aAiB9CxJ,OAAAgC,eAAWsJ,EAAA5K,UAAA,aAAU,KAArB,WACE,OAAOF,KAAKkM,YAAclM,KAAKkM,YAAclM,KAAKmM,wBAGpD,SAAsBnI,GACpBhE,KAAKkM,YAAclI,EACnBhE,KAAK6I,eAAe7I,KAAKgL,IAAK,QAAShH,oCAiDzCxE,OAAAgC,eAAWsJ,EAAA5K,UAAA,QAAK,KAAhB,WACE,OAAOF,KAAKoM,YAEd,SAAiBpI,GACf,GAAIA,IAAMhE,KAAKoM,OAAQ,CACrB,IAAMC,EAAMrM,KAAKoM,OACjBpM,KAAKoM,OAASpI,EAEdhE,KAAK0L,YAAYrE,KAAKrD,GACtBhE,KAAKyL,eAAepE,KAAK,CACvBiF,UAAWtM,KACXyC,MAAOuB,EACPuI,SAAUF,EACVG,aAAcxM,KAAKqL,aAErBrL,KAAKqL,YAAa,EAClBrL,KAAKqJ,qBAAqBrJ,KAAK8L,MAAM5C,eAAelF,GACpDhE,KAAK+K,IAAI0B,kDAIb3B,EAAA5K,UAAAwM,MAAA,WACE1M,KAAK8L,MAAM5C,cAAcwD,SAG3B5B,EAAA5K,UAAAsJ,MAAA,WACExJ,KAAKqL,YAAa,EAElBrL,KAAKyC,MAAQ,KACbzC,KAAK8L,MAAM5C,cAAczG,MAAQ,MAGnCqI,EAAA5K,UAAAyM,UAAA,WACE,OAAO3M,KAAK8L,MAAM5C,gBAAkBwB,SAASkC,eAG/C9B,EAAA5K,UAAA2M,aAAA,WACE,MAAuB,SAAnB7M,KAAKmL,UACA,YAEc,UAAnBnL,KAAKmL,UACA,kBADT,GAKFL,EAAA5K,UAAA4M,gBAAA,SAAgBlK,GACd5C,KAAKuL,OAAOlE,KAAK,CACfiF,UAAWtM,KACX+M,YAAa/M,KAAKgL,IAAI9B,cACtB8D,UAAWpK,KAIfkI,EAAA5K,UAAA+M,iBAAA,SAAiBrK,GACf5C,KAAKwL,QAAQnE,KAAK,CAChBiF,UAAWtM,KACX+M,YAAa/M,KAAKgL,IAAI9B,cACtB8D,UAAWpK,KA5Hf9B,EAAA,CADCuF,EAAAA,gEAKDvF,EAAA,CAFCoM,EAAAA,UAAU,QAAS,CAAEC,QAAQ,IAC7BC,EAAAA,aAAa,QAAS,CAAED,QAAQ,oBAC1BE,EAAAA,yCAGPvM,EAAA,CADCsM,EAAAA,aAAa3G,EAAc,CAAE0G,QAAQ,oBACV1G,6CAK5B3F,EAAA,CADCuF,EAAAA,wBAKwBI,0BAAAA,oCAOzB3F,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,mEAUDvF,EAAA,CADC8G,EAAAA,yBACaV,EAAAA,2CAGdpG,EAAA,CADC8G,EAAAA,yBACcV,EAAAA,4CAGfpG,EAAA,CADC8G,EAAAA,yBACeV,EAAAA,6CAGhBpG,EAAA,CADC8G,EAAAA,yBACsBV,EAAAA,oDAGvBpG,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAIbpG,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,mEAKDvF,EAAA,CADCuF,EAAAA,2FA6DHyE,GA9JkDpC,iBAgKlD,SAAA4E,IAAA,IAAA1G,EAAA,OAAAI,GAAAA,EAAAnG,MAAAb,KAAAU,YAAAV,YAME4G,EAAA2G,MAA+C,IAAIrG,EAAAA,aAMnDN,EAAAgC,SAAmB,IAErB,OAdoD9I,EAAAwN,EAAAtG,GAGlDlG,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADC8G,EAAAA,yBACMV,EAAAA,2CAGPpG,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,gEAGHiH,GAdoDjF,iBAgBpD,SAAAmF,IAAA,IAAA5G,EAAA,OAAAI,GAAAA,EAAAnG,MAAAb,KAAAU,YAAAV,YASE4G,EAAA6G,WAAqB,EAGrB7G,EAAAgC,SAAmB,EAGnBhC,EAAA8G,oBAA8B,IAIhC,OAnBsD5N,EAAA0N,EAAAxG,GAGpDlG,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,kEAIDvF,EAAA,CADCuF,EAAAA,gEAIDvF,EAAA,CADCuF,EAAAA,2EAKHmH,GAnBsDnF,iBChStD,SAAAsF,0DAA6C7N,EAAA6N,EAAA3G,GAClC2G,EAAAzN,UAAA0N,oBAAP,SAA2BC,GACvB7N,KAAK8N,kBAAoBD,6IAFpBF,EAAuB7M,EAAA,CAHnCiN,EAAAA,WAAW,CACRC,WAAY,UAEHL,IAAgCM,EAAAA,gCAezC,SAAAC,EACIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACkBC,EAClBC,EACAC,GAVJ,IAAAhI,EAYII,EAAApG,KAAAZ,KACImO,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACH3O,YACD4G,EAAKiI,SAAWD,EAAgBE,eAAe,KAAM,MAErDlI,EAAKmI,yBAA2BX,WA7BJtO,EAAAoO,EAAAlH,GAgCxBkH,EAAAhO,UAAA0N,oBAAR,SAA4BC,GACxB7N,KAAK6O,SAASG,SAASnB,EAAkB,YAAa,iBACtD7N,KAAK+O,yBAAyBnB,oBAAoBC,IAG/CK,EAAAhO,UAAA+O,SAAP,SAAgBpB,EAA+BqB,GAE3C,OADAlP,KAAK4N,oBAAoBC,GAClB7G,EAAA9G,UAAMC,OAAMS,KAAAZ,KAACkP,6CAlCFC,EAAAA,6BACCxB,SACQyB,EAAAA,gCACTC,EAAAA,8BACGC,EAAAA,iCACVC,EAAAA,gBACFC,EAAAA,uCACRC,EAAAA,OAAMC,KAAA,CAACC,EAAAA,mBACSC,EAAAA,sBACAC,EAAAA,qZAdZ3B,EAAcpN,EAAA,CAH1BiN,EAAAA,WAAW,CACRC,WAAY,SAcPvM,EAAA,EAAAgO,EAAAA,OAAOE,EAAAA,kCAPUR,EAAAA,sBACCxB,EACQyB,EAAAA,yBACTC,EAAAA,uBACGC,EAAAA,0BACVC,EAAAA,SACFC,EAAAA,OAAMhQ,OAEEoQ,EAAAA,eACAC,EAAAA,oBAdZ3B,IAAuB4B,EAAAA,sBCRhC,SAAAC,EACYC,EACAC,EACAC,GAFAlQ,KAAAgQ,eAAAA,EACAhQ,KAAAiQ,gBAAAA,EACAjQ,KAAAkQ,OAAAA,SAIZH,EAAA7P,UAAAiQ,KAAA,SAAKC,EAAcC,EAAeC,GAC9BA,EAAU9Q,OAAOa,OAAO,CACpBkQ,aAAa,EACbC,qBAAqB,EACrBC,qBAAqB,GACtBH,GAAW,IAEd,IAEII,EAYAC,EAdEC,EAA4B5Q,KAAKkQ,OAAOW,WAAW,GAAGC,SAASF,QAI9C,iBAAZR,IAIFA,aAAmBW,EAAAA,YACxBL,EAAS,IAAIM,EAAAA,eAAeZ,EAASQ,EAASP,GAEtB,mBAAZD,IACZM,EAAS,IAAIO,EAAAA,gBAAgBb,EAASQ,KAItCD,EADAL,EAAQY,UAAYZ,EAAQa,cACTnR,KAAKgQ,eAAekB,WAClCE,oBAAoBd,EAAQa,eAC5BE,cACG1R,MAAMkG,QAAQyK,EAAQY,UAAYZ,EAAQY,SAAW,CAACZ,EAAQY,WAEjEI,UAAS,GAGKtR,KAAKgQ,eAAekB,WAAWK,SAASC,qBAAqBC,mBAEpF,IAAIC,EAAiC1R,KAAKgQ,eAAe7B,iBAAiBwD,WAAW,CAAEC,WAAW,IAC3E,UAAnBtB,EAAQuB,SACRH,EAAiB1R,KAAKgQ,eAAe7B,iBAAiB2D,SAG1D,IAAM5C,EAAS,CACXyB,iBAAgBA,EAChBe,eAAcA,EACdnB,YAAaD,EAAQC,YACrBwB,qBAAqB,EACrBC,cAAe1B,EAAQ0B,cAAgB1B,EAAQ0B,cAAiB1B,EAAQE,oBAAsB,wCAAqCpH,EACnI6I,WAAY3B,EAAQ2B,WAAa3B,EAAQ2B,WAAa,CAAC,oBAAqB,oBAG5EC,EAAa5B,EAAQzC,iBAAmB7N,KAAKgQ,eAAef,SAASqB,EAAQzC,iBAAkBqB,GAAUlP,KAAKiQ,gBAAgB9P,OAAO+O,GAEnIiD,EAAOD,EAAWE,OAAO1B,GAoB/B,OAnBIyB,EAAKrB,WACLtR,OAAOa,OAAO8R,EAAKrB,SAAUT,GAC7BgC,YAAW,WACPF,EAAKG,kBAAkB7F,kBACxB,IAEH6D,EAAQG,qBACR8B,EAAAA,MACIL,EAAWM,gBACXN,EAAWO,eACbC,WAAU,WACRR,EAAWS,UACXT,OAAa9I,EACTkH,EAAQsC,iBACRtC,EAAQsC,qBAKb,CACH9B,SAAUqB,EAAKrB,SACf6B,QAAST,EAAWS,QAAQE,KAAKX,8CA7EbhE,SACC4B,EAAAA,eACTgD,EAAAA,+KAJX/C,EAAgBjP,EAAA,CAD5BiN,EAAAA,WAAW,CAAEC,WAAY,gCAGME,EACC4B,EAAAA,QACTgD,EAAAA,kBAJX/C,mBCnBX,SAAAgD,KAQF,OANEA,EAAA7S,UAAA8S,SAAA,WACEhT,KAAKoL,KAAO,IAIdtK,EAAA,CADCuF,EAAAA,4DAPU0M,EAA2BjS,EAAA,CAJvCwF,EAAAA,UAAU,CACTC,SAAU,uBACVC,SAAA,s7DAEWuM,mBCOT,SAAAE,EAAoBC,EAAoClD,GAApChQ,KAAAkT,UAAAA,EAAoClT,KAAAgQ,eAAAA,EAHhDhQ,KAAAmT,OAAwD,UAOhEF,EAAA/S,UAAAiQ,KAAA,SAAKiD,GACD,IAAIjB,EACAiB,IACAjB,EAAOiB,EAAS1J,QAAQ,qBAE5B,IAAMmE,EAAoBsE,GAAQiB,EAC5BC,EAAMrT,KAAKgQ,eAAeG,KAAK4C,EAA6B,GAC9D,CACItC,qBAAqB,EACrB5C,iBAAgBA,EAChB0C,aAAa,EACbyB,cAAe,CAAC,sBAChBH,OAAQ,UAEVyB,GAAK,IAAIC,MAAOC,UAEtB,OADAxT,KAAKmT,OAAO/O,KAAK,CAAEkP,GAAEA,EAAEhH,UAAW+G,IAC3BC,GAGXL,EAAA/S,UAAAuT,KAAA,SAAKH,GACD,IAAMnQ,EAAInD,KAAKmT,OAAOhO,MAAK,SAAAhE,GAAK,OAAAA,EAAEmS,KAAOA,KACrCnQ,IACAA,EAAEmJ,UAAUqG,UACZ3S,KAAKmT,OAASnT,KAAKmT,OAAOO,QAAO,SAAAvS,GAAK,OAAAA,EAAEmS,KAAOA,gDA3BxBK,EAAAA,uBAAyC5D,6IAL/DkD,EAAgBnS,EAAA,CAD5BiN,EAAAA,WAAW,CAAEC,WAAY,gCAMS2F,EAAAA,gBAAyC5D,KAL/DkD,mBCQX,SAAAW,EACUC,EACAC,EACA/I,GAFA/K,KAAA6T,GAAAA,EACA7T,KAAA8T,eAAAA,EACA9T,KAAA+K,IAAAA,EASF/K,KAAA+T,YAAsB,EAchC,OAnBEH,EAAA1T,UAAA2L,gBAAA,aAMArM,OAAAgC,eAAWoS,EAAA1T,UAAA,YAAS,KAApB,WACE,OAAOF,KAAK+T,gBAEd,SAAqB/P,GACnBhE,KAAK+T,WAAa/P,EACdhE,KAAKgU,aAAehQ,IACtBhE,KAAK8T,eAAeL,KAAKzT,KAAKgU,YAC9BhU,KAAKgU,WAAa,MAEhBhQ,IACFhE,KAAKgU,WAAahU,KAAK8T,eAAe3D,KAAKnQ,KAAK6T,GAAG3K,0FAtBzCmE,EAAAA,kBACY4F,SACXgB,EAAAA,qBAJJL,EAAe9S,EAAA,CAZ3BwF,EAAAA,UAAU,CACTC,SAAU,UACVC,SAAU,8RAYI6G,EAAAA,WACY4F,EACXgB,EAAAA,qBAJJL,oBCNb,SAAAM,mDACA,OADsCpU,EAAAoU,EAAAlN,GACtCkN,GADsC9L,KAEtC,WACIpI,KAAAmU,QAAkB,KAItB,2BAQI,SAAAC,EACIC,UAGArN,EAAApG,KAAAZ,KAAMqU,IAASrU,KAQvB,OAfyCF,EAAAsU,EAAApN,GAU9BoN,EAAAlU,UAAAoU,MAAP,WACQtU,KAAKuU,aACLvU,KAAKuU,eAGjBH,GAfyC/R,sBAiBzC,SAAAmS,IAKYxU,KAAA+T,YAAsB,EAY9B/T,KAAAyU,SAA2C,IAAIvN,EAAAA,aAenD,OA1BI1H,OAAAgC,eAAWgT,EAAAtU,UAAA,YAAS,KAApB,WACI,OAAOF,KAAK+T,gBAEhB,SAAqB/P,GACjBhE,KAAK+T,WAAa/P,EACdhE,KAAK0U,gBACL1U,KAAK0U,cAAcC,UAAY3U,KAAK2U,4CAO5CH,EAAAtU,UAAAoU,MAAA,SAAMM,GACF5U,KAAKyU,SAASpN,KAAK,CACfiF,UAAWtM,KACX4U,KAAMA,KAIdJ,EAAAtU,UAAA2U,UAAA,SAAUjS,KAGV4R,EAAAtU,UAAA4U,YAAA,WACI9U,KAAKyU,SAASM,eA3BlBjU,EAAA,CADCoM,EAAAA,UAAU0G,EAAiB,CAAEzG,QAAQ,oBACfyG,wCA6B3BY,oBASI,SAAAQ,IAAA,IAAApO,EACII,EAAApG,KAAAZ,OAAOA,YAOH4G,EAAAqO,eAAiC,GACzCrO,EAAAsO,uBAAyB,IAAIC,EAAAA,QAPzB9C,YAAW,WACPzL,EAAKwO,oBAAoBxO,EAAKyO,yBA4B1C,OAtCuDvV,EAAAkV,EAAAhO,GAkBnDxH,OAAAgC,eAAcwT,EAAA9U,UAAA,gBAAa,KAA3B,WACI,OAAOF,KAAKiV,gBAAkB,oCAGxBD,EAAA9U,UAAAkV,oBAAV,SAA8BE,GACtBA,GACAtV,KAAKiV,eAAiBK,EACtBtV,KAAKkV,uBAAuBvS,KAAK2S,IAGjCtV,KAAKkV,uBAAuBvS,KAAK3C,KAAKuV,gBAI9CP,EAAA9U,UAAAsV,oBAAA,SAAoB5S,KAGpBoS,EAAA9U,UAAAmV,iBAAA,WACI,MAAO,IAEfL,GAtCuDR,kBC9DrD,SAAAiB,EAAoB5B,GAApB,IAAAjN,EACEI,EAAApG,KAAAZ,OAAOA,YADW4G,EAAAiN,GAAAA,EAOpBjN,EAAAvB,KAAe,UAMfuB,EAAA8O,gBAA0B,EAG1B9O,EAAA+O,gBAA0B,EAG1B/O,EAAAkL,OAAiB,EAGjBlL,EAAAgP,SAAmB,EAGnBhP,EAAAiP,UAAoB,IAoCtB,OA/DuC/V,EAAA2V,EAAAzO,GA6BrCyO,EAAAvV,UAAA2L,gBAAA,WAAA,IAAAjF,EAAA5G,KACMA,KAAK0V,gBACPrD,YAAW,WACTzL,EAAKkP,gBACJ,KAMPL,EAAAvV,UAAA6V,YAAA,SAAYnT,IACY,IAAlB5C,KAAKiL,WACPjL,KAAKuN,MAAMlG,KAAK,CACdiF,UAAWtM,KACX+M,YAAa/M,KAAK6T,GAAG3K,cACrB8D,UAAWpK,IAEbA,EAAEoT,oBAKNP,EAAAvV,UAAA+V,iBAAA,SAAiBrT,GACf,GAAI5C,KAAK2V,eAIP,OAHA3V,KAAK+V,YAAY,MACjBnT,EAAEoT,kBACFpT,EAAEsT,kBACK,GAIXT,EAAAvV,UAAA4V,YAAA,WACE9V,KAAKmW,UAAUjN,cAAcwD,kDA3DPW,EAAAA,cAIkBvM,EAAA,CAAzCoM,EAAAA,UAAU,YAAa,CAAEC,QAAQ,oBAAmBE,EAAAA,6CAGrDvM,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,uEAIDvF,EAAA,CADCuF,EAAAA,uEAIDvF,EAAA,CADCuF,EAAAA,8DAIDvF,EAAA,CADCuF,EAAAA,gEAIDvF,EAAA,CADCuF,EAAAA,iEAyBDvF,EAAA,CADCsV,EAAAA,aAAa,0BAA2B,CAAC,4DACtBC,oFAnDTZ,EAAiB3U,EAAA,CAL7BwF,EAAAA,UAAU,CACTC,SAAU,YACV+P,cAAeC,EAAAA,kBAAkBC,KACjChQ,SAAA,mmCAIwB6G,EAAAA,cAFboI,IAA0BnI,GCJjCmJ,GAAY,CAAChB,IACbiB,GAAU,CAACC,EAAAA,4BAQjB,SAAAC,KAA8B,OAAjBA,EAAc9V,EAAA,CAN1B+V,EAAAA,SAAS,CACNC,aAAYpS,EAAM+R,IAClBM,QAAOrS,EAAMgS,IACbM,QAAOtS,EAAM+R,IACb3O,UAAW,MAEF8O,oBCkJX,SAAAK,EAAoBlM,EAAgCC,GAAhChL,KAAA+K,IAAAA,EAAgC/K,KAAAgL,IAAAA,EAjIpDhL,KAAAkX,SAAqB,GAEblX,KAAAV,EAAI,CACV6X,OAAQ,CACNC,OAAQC,EAAAA,SAASpS,IAAI,2BAA6B,KAClDqS,IAAK,MACLC,OAAQ,GAEVC,UAAW,CACTJ,OAAQC,EAAAA,SAASpS,IAAI,8BAAgC,KACrDqS,IAAK,MACLC,OAAQ,IAOZvX,KAAAoL,KAAsB,KAkBtBpL,KAAAyX,mBAA6B,EAG7BzX,KAAA0X,SAAW,GAOJ1X,KAAA2X,iBAA2B,EAElC3X,KAAA4X,OAAgB,GAChB5X,KAAA6X,SAAmB,EACX7X,KAAA8X,MAA4B,MAU5B9X,KAAA+X,OAA6B,MAY7B/X,KAAAgY,SAAgC,GAChChY,KAAAiY,SAAgC,GAGxCjY,KAAAyL,eAAmD,IAAIvE,EAAAA,aAGvDlH,KAAAkY,QAA4C,IAAIhR,EAAAA,aAGhDlH,KAAA0L,YAAkC,IAAIxE,EAAAA,aAiDpClH,KAAKmY,WAAad,EAAAA,SAASpS,IAAI,qBAC/BjF,KAAKoY,WAAaf,EAAAA,SAASpS,IAAI,qBAgSnC,OAhXEzF,OAAAgC,eAAWyV,EAAA/W,UAAA,OAAI,KAAf,WACE,OAAOF,KAAK8X,WAEd,SAAgB9T,GACdhE,KAAK8X,MAAQ9T,EACbhE,KAAKqY,SAAS,oCAMhB7Y,OAAAgC,eAAWyV,EAAA/W,UAAA,QAAK,KAAhB,WACE,OAAOF,KAAK+X,YAEd,SAAiB/T,GACfhE,KAAK+X,OAAS/T,EACdhE,KAAKsY,KAAOtU,mCAkBdxE,OAAAgC,eAAWyV,EAAA/W,UAAA,QAAK,KAAhB,iBACE,OAAkB,QAAlBqH,EAAOvH,KAAKoM,cAAM,IAAA7E,OAAA,EAAAA,EAAEgR,UAEtB,SAAiBvU,WACXwU,EACAxU,IACFwU,EAAKC,EAAAA,WAAWC,QAAQ1U,IAE1B,IAAI2U,GAAc,GACd3Y,KAAK4Y,KAAO5Y,KAAK6Y,OACnBF,EAAc3Y,KAAK8Y,gBAAgBN,IAEhCG,IACCH,IAAOA,EAAGO,MAAM/Y,KAAKoM,UACvBpM,KAAKoM,OAASoM,EACdxY,KAAKoM,OAAO/G,KAAOrF,KAAKqF,KACxBrF,KAAKgZ,SAAShZ,KAAKoM,OAAO6M,SAC1BjZ,KAAK0L,YAAYrE,KAAKmR,EAAGD,MACzBvY,KAAKyL,eAAepE,KAAK,CACvBiF,UAAWtM,KACXyC,MAAkB,QAAb8E,EAAEvH,KAAKoM,cAAM,IAAA7E,OAAA,EAAAA,EAAEgR,KACpBxL,YAAa/M,KAAKgL,IAAI9B,iBAGjBE,MAALpF,IACFhE,KAAKoM,OAAS,KACdpM,KAAKkZ,aAAelZ,KAAKmZ,MACzBnZ,KAAKoZ,UAAYpZ,KAAKmZ,MAAME,MAAMC,MAClCtZ,KAAKqY,SAAS,IAEhBrY,KAAKkY,QAAQ7Q,KAAK,CAChBiF,UAAWtM,KACXyC,MAAkB,QAAbqH,EAAE9J,KAAKoM,cAAM,IAAAtC,OAAA,EAAAA,EAAEyO,KACpBxL,YAAa/M,KAAKgL,IAAI9B,kDAM5B1J,OAAAgC,eAAIyV,EAAA/W,UAAA,QAAK,KAAT,WACE,OAAO,IAAIuY,EAAAA,WAAW,IAAIlF,KAAQvT,KAAKqF,uCAQzC4R,EAAA/W,UAAAqZ,QAAA,SAAQhB,GACN,QAAIvY,KAAK0X,SAASvS,MAAK,SAAChE,GAAM,OAAAA,EAAEoX,MAAQA,EAAKiB,cAAcC,MAAM,KAAK,OAMxExC,EAAA/W,UAAAwZ,SAAA,SAASnB,GACP,OAAIvY,KAAK0X,SAASvS,MAAK,SAAChE,GAAM,OAAAA,EAAEoX,MAAQA,EAAKiB,cAAcC,MAAM,KAAK,MAC7DzZ,KAAK0X,SAASvS,MAAK,SAAChE,GAAM,OAAAA,EAAEoX,MAAQA,EAAKiB,cAAcC,MAAM,KAAK,MAAIE,MAEtE,IAIX1C,EAAA/W,UAAA0Z,SAAA,SAASrB,GACP,OAAIvY,KAAK0X,SAASvS,MAAK,SAAChE,GAAM,OAAAA,EAAEoX,MAAQA,EAAKiB,cAAcC,MAAM,KAAK,MAC7DzZ,KAAK0X,SAASvS,MAAK,SAAChE,GAAM,OAAAA,EAAEoX,MAAQA,EAAKiB,cAAcC,MAAM,KAAK,MAAII,KAEtE,IAIX5C,EAAA/W,UAAA8S,SAAA,WACEhT,KAAKkZ,aAAe,IAAIT,EAAAA,WAAW,IAAIlF,KAAQvT,KAAKqF,MAEpDrF,KAAK8Z,aAEL9Z,KAAKoZ,UAAYpZ,KAAKmZ,MAAME,MAAMC,MAC9BtZ,KAAKyC,MACPzC,KAAKgZ,SAAS,IAAIP,EAAAA,WAAWzY,KAAKyC,MAAOzC,KAAKqF,OAE9CrF,KAAKgZ,SAAShZ,KAAKmZ,OAGrBnZ,KAAKsY,KAAO,OAGdrB,EAAA/W,UAAA6Z,gBAAA,SAAgBzB,GACd,OAAQA,GACN,IAAK,MACH,MAAO,MACT,IAAK,QACH,MAAO,KACT,IAAK,OACH,MAAO,MAIbrB,EAAA/W,UAAA2L,gBAAA,WACE7L,KAAKqY,SAAS,IAGRpB,EAAA/W,UAAA4Z,WAAR,qBACO9Z,KAAKqF,OACRrF,KAAKqF,KAAOgS,EAAAA,SAASpS,IAAI,kBAAoB,aAE1CjF,KAAKoX,SACRpX,KAAKoX,QAA0B,QAAjB7P,EAAAvH,KAAKV,EAAEU,KAAKqF,aAAK,IAAAkC,OAAA,EAAAA,EAAE6P,SAAUpX,KAAKoX,QAE7CpX,KAAKsX,MACRtX,KAAKsX,KAAuB,QAAjBxN,EAAA9J,KAAKV,EAAEU,KAAKqF,aAAK,IAAAyE,OAAA,EAAAA,EAAEwN,MAAO,OAEvCtX,KAAKga,WAA6B,QAAjBjQ,EAAA/J,KAAKV,EAAEU,KAAKqF,aAAK,IAAA0E,OAAA,EAAAA,EAAEwN,SAAU,EAC9C,IAAM0C,EAAO,yBACbja,KAAKkX,SAAW,CACdtR,EAAAA,aAAaX,IAAOgV,EAAI,OAAQja,KAAKoX,QACrCxR,EAAAA,aAAaX,IAAOgV,EAAI,OAAQja,KAAKoX,QACrCxR,EAAAA,aAAaX,IAAOgV,EAAI,OAAQja,KAAKoX,QACrCxR,EAAAA,aAAaX,IAAOgV,EAAI,OAAQja,KAAKoX,QACrCxR,EAAAA,aAAaX,IAAOgV,EAAI,OAAQja,KAAKoX,QACrCxR,EAAAA,aAAaX,IAAOgV,EAAI,OAAQja,KAAKoX,QACrCxR,EAAAA,aAAaX,IAAOgV,EAAI,OAAQja,KAAKoX,UAIzCH,EAAA/W,UAAAga,aAAA,WACE,OAAOtU,EAAAA,aAAaX,IAAI,iBAAkBjF,KAAKoX,SAGjDH,EAAA/W,UAAAia,KAAA,WACEna,KAAKqY,UAAU,IAGjBpB,EAAA/W,UAAAyC,KAAA,WACE3C,KAAKqY,SAAS,IAGhBpB,EAAA/W,UAAAka,OAAA,SAAOC,EAAO5Z,GACZ,IAAM6Z,EAAMD,EAAM1Z,OAClB,OAASF,EAAI6Z,EAAe7Z,EAAI,EAAI4Z,EAAMvT,KAAI,SAAClE,EAAGpC,EAAG+Z,GAAM,OAAAA,GAAG/Z,EAAIC,GAAK6Z,MAAQD,EAAMvT,KAAI,SAAClE,EAAGpC,EAAG+Z,GAAM,OAAAA,GAAGD,GAAQA,EAAM9Z,EAAIC,GAAK6Z,GAAQA,MAApHD,GAGtBpD,EAAA/W,UAAAmY,SAAA,SAAS5V,GACP,IAAI+X,EACAC,EACJ,GAAkB,QAAdza,KAAKsY,KAAgB,CACvB,IAAIoC,OAAE,EAONF,GALEE,EADEjY,aAAiBgW,EAAAA,WACdhW,EAAMkY,QAAQ,SAEd3a,KAAKoZ,UAAUwB,UAAUtQ,IAAI,MAAO,IAAIA,IAAI,QAAS7H,GAAOkY,QAAQ,UAGhEE,eACXJ,EAAMC,EAAGI,MAAM,SAASC,aAExBP,EAAQA,EAAMlQ,IAAI,OAAQtK,KAAKga,WAC/BS,EAAMA,EAAInQ,IAAI,MAAO,GAAGA,IAAI,OAAQtK,KAAKga,YAGpCha,KAAK6X,SAAW7X,KAAKkX,SAASvW,OAAS,IACxB,WAAdX,KAAKqF,KACPrF,KAAKkX,SAAWlX,KAAKoa,OAAOpa,KAAKkX,UAAWlX,KAAKga,WAEjDha,KAAKkX,SAAWlX,KAAKoa,OAAOpa,KAAKkX,SAAUlX,KAAKga,WAGlDha,KAAK6X,SAAU,QAEZ,GAAkB,UAAd7X,KAAKsY,KAAkB,CAC5BoC,OAAE,EAMNF,EAJEE,EADEjY,aAAiBgW,EAAAA,WACdhW,EAAMkY,QAAQ,QAEd3a,KAAKoZ,UAAUwB,UAAUtQ,IAAI,MAAO,IAAIA,IAAI,OAAQ7H,GAAOkY,QAAQ,QAG1EF,EAAMC,EAAGI,MAAM,aACV,GAAkB,SAAd9a,KAAKsY,KAAiB,CAC3BoC,OAAE,EAUND,GADAD,GAPEE,EADEjY,aAAiBgW,EAAAA,WACdhW,EAAMkY,QAAQ,QAEd3a,KAAKoZ,UAAUwB,UACjBtQ,IAAI,MAAO,IACXA,IAAI,OAAgB,GAAR7H,GACZkY,QAAQ,SAEFrQ,IAAI,QAAS,IACZA,IAAI,OAAQ,GAAGwQ,MAAM,QAEnC9a,KAAKoZ,UAAY,IAAI4B,EAAAA,gBAAgBR,EAAOC,GAExCza,KAAKmY,YAAyC,mBAApBnY,KAAKmY,aACjCnY,KAAKgY,SAAWhY,KAAKmY,WAAWqC,EAAMjC,KAAMkC,EAAIlC,KAAMvY,KAAKqF,OAGzDrF,KAAKoY,YAAyC,mBAApBpY,KAAKoY,aACjCpY,KAAKiY,SAAWjY,KAAKoY,WAAWoC,EAAMjC,KAAMkC,EAAIlC,KAAMvY,KAAKqF,OAI3C,QAAdrF,KAAKsY,MACPtY,KAAK4X,OAAS5X,KAAKib,UAAUjb,KAAKkb,WAAWlb,KAAKoZ,UAAU+B,UAAU,MAAOnb,KAAKqF,OAAQ,GACtFrF,KAAK4X,OAAOjX,OAAS,QAA2DyI,IAAtDpJ,KAAK4X,OAAO,GAAGzS,MAAK,SAAChE,GAAM,OAAgB,IAAhBA,EAAEia,cACzDpb,KAAK4X,OAAOyD,OAAO,EAAG,QAEuDjS,IAA3EpJ,KAAK4X,OAAO5X,KAAK4X,OAAOjX,OAAS,GAAGwE,MAAK,SAAChE,GAAM,OAAgB,IAAhBA,EAAEia,cACpDpb,KAAK4X,OAAOyD,OAAOrb,KAAK4X,OAAOjX,OAAS,EAAG,IAEtB,UAAdX,KAAKsY,KACdtY,KAAK4X,OAAS5X,KAAKib,UAAUjb,KAAKkb,WAAWlb,KAAKoZ,UAAU+B,UAAU,QAASnb,KAAKqF,OAAQ,GACrE,SAAdrF,KAAKsY,OACdtY,KAAK4X,OAAS5X,KAAKib,UAAUjb,KAAKkb,WAAWlb,KAAKoZ,UAAU+B,UAAU,OAAQnb,KAAKqF,OAAQ,IAE7FrF,KAAK+K,IAAI0B,iBAGHwK,EAAA/W,UAAAgb,WAAR,SAAmBI,GAAnB,IAAA1U,EAAA5G,KACQub,EAAe,GAmCrB,OAlCAD,EAAME,SAAQ,SAAClc,EAAGkB,EAAGib,GACnB,IAAMC,EAAY,GAMlB,GALAA,EAAKnD,KAAOjZ,EAEZoc,EAAK7F,SAAgH,IAArGvW,EAAEqc,YAAY,IAAIlD,EAAAA,WAAW7R,EAAKnE,MAAOmE,EAAKvB,MAAOuB,EAAKmT,gBAAgBnT,EAAK0R,MAAO1R,EAAKvB,MAC3GqW,EAAKE,QAA2F,IAAjFtc,EAAEqc,YAAY/U,EAAKsS,aAActS,EAAKmT,gBAAgBnT,EAAK0R,MAAO1R,EAAKvB,MACtFqW,EAAKvC,MAAQvS,EAAKuS,OAAmF,IAA1E7Z,EAAEqc,YAAY/U,EAAKuS,MAAOvS,EAAKmT,gBAAgBnT,EAAK0R,MAAO1R,EAAKvB,MACzE,QAAduB,EAAK0R,KAAgB,CAEvBoD,EAAKN,UAAwF,IAA5E9b,EAAEqc,YAAY/U,EAAKwS,UAAUwB,UAAUtQ,IAAI,MAAO,IAAK,KAAM1D,EAAKvB,MAEnFqW,EAAKG,SAAWjV,EAAKkS,gBAAgBxZ,GACrCsH,EAAKoR,SAASwD,SAAQ,SAACM,GAER,IADAxc,EAAEqc,YAAY,IAAIlD,EAAAA,WAAWqD,EAAEvD,KAAM3R,EAAKvB,MAAO,MAAOuB,EAAKvB,QAExEqW,EAAKK,SAAU,GACgB,IAA3BnV,EAAK6Q,oBACPiE,EAAKG,UAAW,OAKtB,IAAMG,EAAWxb,EAAwB,EAApByb,KAAKC,MAAM1b,EAAI,GACpCoG,EAAKqR,SAASuD,SAAQ,SAACW,GACjBC,OAAOD,KAAQH,IACjBN,EAAKK,SAAU,GACgB,IAA3BnV,EAAK6Q,oBACPiE,EAAKG,UAAW,OAKxBN,EAAMnX,KAAKsX,MAENH,GAGTtE,EAAA/W,UAAAmc,WAAA,WACoB,QAAdrc,KAAKsY,KACPtY,KAAKsY,KAAO,QACW,UAAdtY,KAAKsY,OACdtY,KAAKsY,KAAO,SAIhBrB,EAAA/W,UAAA+a,UAAA,SAAUqB,EAAYC,GACpB,IACM3E,EAAS,GACf,GAFaqE,KAAKO,KAAKF,EAAI3b,OAAS4b,GAEzBA,IAASD,EAAI3b,OACtB,IAAK,IAAIH,EAAI,EAAGA,EAAI8b,EAAI3b,OAAQH,GAAK+b,EACnC3E,EAAOxT,KAAKkY,EAAIG,MAAMjc,EAAG+b,EAAO/b,IAGpC,OAAOoX,GAGTX,EAAA/W,UAAAwc,YAAA,SAAYC,EAAmBjB,IACP,IAAlBA,EAAKG,WACP7b,KAAKyC,MAAQiZ,EAAKnD,KAAKA,MAGzBoE,EAAM3G,mBAGRiB,EAAA/W,UAAA4Y,gBAAA,SAAgBxZ,GACd,IAAI8B,GAAI,EAcR,YAbUgI,IAAN9J,IACEU,KAAK6Y,MAAQ7Y,KAAK4Y,MACpBxX,GAAwG,IAApG9B,EAAEqc,YAAY,IAAIlD,EAAAA,WAAWzY,KAAK6Y,IAAK7Y,KAAKqF,MAAOrF,KAAK+Z,gBAAgB/Z,KAAKsY,MAAOtY,KAAKqF,OAE3FrF,KAAK4Y,MAAQ5Y,KAAK6Y,MACpBzX,EAAuG,IAAnG9B,EAAEqc,YAAY,IAAIlD,EAAAA,WAAWzY,KAAK4Y,IAAK5Y,KAAKqF,MAAOrF,KAAK+Z,gBAAgB/Z,KAAKsY,MAAOtY,KAAKqF,OAE3FrF,KAAK6Y,KAAO7Y,KAAK4Y,MACnBxX,GACsG,IAApG9B,EAAEqc,YAAY,IAAIlD,EAAAA,WAAWzY,KAAK6Y,IAAK7Y,KAAKqF,MAAOrF,KAAK+Z,gBAAgB/Z,KAAKsY,MAAOtY,KAAKqF,OACU,IAAnG/F,EAAEqc,YAAY,IAAIlD,EAAAA,WAAWzY,KAAK4Y,IAAK5Y,KAAKqF,MAAOrF,KAAK+Z,gBAAgB/Z,KAAKsY,MAAOtY,KAAKqF,QAGxFjE,GAGT6V,EAAA/W,UAAA0c,cAAA,SAAcD,EAAmBpE,GACZ,UAAfvY,KAAK6c,MACP7c,KAAKyC,MAAQ8V,EAAKA,MAElBvY,KAAKsY,KAAO,MACZtY,KAAKgZ,SAAS,IAAIP,EAAAA,WAAWzY,KAAKyC,MAAOzC,KAAKqF,MAAMyX,IAAI,OAAQvE,EAAKwE,MAAMD,IAAI,QAASvE,EAAKyE,eAE/FL,EAAM3G,mBAGRiB,EAAA/W,UAAA+c,aAAA,SAAaN,EAAmBpE,GACX,SAAfvY,KAAK6c,MACP7c,KAAKyC,MAAQ8V,EAAKA,MAElBvY,KAAKsY,KAAO,QACZtY,KAAKgZ,SAAS,IAAIP,EAAAA,WAAWzY,KAAKyC,MAAOzC,KAAKqF,MAAMyX,IAAI,OAAQvE,EAAKwE,QAEvEJ,EAAM3G,mBAGRiB,EAAA/W,UAAA8Y,SAAA,SAAST,GACPvY,KAAKkZ,aAAeX,EACpBvY,KAAKqY,SAASrY,KAAKkZ,eAGrBjC,EAAA/W,UAAAgd,SAAA,WACEld,KAAKyC,MAAQzC,KAAKmZ,MAAMZ,KACxBvY,KAAKsY,KAAO,OAGdrB,EAAA/W,UAAAid,UAAA,SAAUC,EAAO1B,GACf,OAAOA,EAAKnD,KAAKA,KAAK/E,oDAjSCS,EAAAA,yBAAgC5G,EAAAA,cA/GzDvM,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,8DAIDvF,EAAA,CADCuF,EAAAA,2DAIDvF,EAAA,CADCuF,EAAAA,wBACIkN,iCAGLzS,EAAA,CADCuF,EAAAA,wBACIkN,iCAGLzS,EAAA,CADCuF,EAAAA,0EAIDvF,EAAA,CADCuF,EAAAA,gEAQDvF,EAAA,CADCuF,EAAAA,MAAM,mFAOPvF,EAAA,CADCuF,EAAAA,0FAYDvF,EAAA,CADCuF,EAAAA,2FAcDvF,EAAA,CADC8G,EAAAA,yBACeV,EAAAA,oDAGhBpG,EAAA,CADC8G,EAAAA,yBACQV,EAAAA,6CAGTpG,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAIbpG,EAAA,CADCuF,EAAAA,wBAImBkN,6BAAAA,kCA1FT0D,EAAsBnW,EAAA,CANlCwF,EAAAA,UAAU,CACTC,SAAU,kBACVC,SAAA,svOACA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,gCAoIhBtJ,EAAAA,kBAAgC5G,EAAAA,cAlI9C4J,oBCfX,SAAAuG,EACUxN,EACAyN,EACA1S,GAFA/K,KAAAgQ,eAAAA,EACAhQ,KAAAyd,KAAAA,EACAzd,KAAA+K,IAAAA,EAaS/K,KAAA0d,SAAyC,SAExC1d,KAAA2d,UAAgD,WAE5D3d,KAAA4d,UAAoB,EAkF9B,OAhFEpe,OAAAgC,eAAWgc,EAAAtd,UAAA,UAAO,KAAlB,WACE,OAAOF,KAAK4d,cAEd,SAAmB5Z,GACbA,IAAMhE,KAAK4d,WACT5Z,EACFhE,KAAK6d,eAEL7d,KAAK8d,eAEP9d,KAAK4d,SAAW5Z,EAChBhE,KAAK+K,IAAI0B,kDAIb+Q,EAAAtd,UAAA6d,OAAA,WACE/d,KAAKge,SAAWhe,KAAKge,SAGvBR,EAAAtd,UAAAoU,MAAA,WAAA,IAAA1N,EAAA5G,KACEA,KAAKyd,KAAKQ,KAAI,WACZrX,EAAKoX,SAAU,MAInBR,EAAAtd,UAAAge,KAAA,WAAA,IAAAtX,EAAA5G,KACEA,KAAKyd,KAAKQ,KAAI,WACZrX,EAAKoX,SAAU,MAIXR,EAAAtd,UAAA2d,aAAR,WAAA,IAAAjX,EAAA5G,KACMA,KAAKme,SAGTne,KAAKoe,QAAUpe,KAAKgQ,eAAeG,KAAKnQ,KAAKwG,SAAU,GAAI,CACzDiK,oBAAwC,aAAnBzQ,KAAK2d,UAC1BxM,cAAenR,KAAKqe,SACpB9N,YAAgC,aAAnBvQ,KAAK2d,UAClBzM,SAAUlR,KAAKkR,SACf0B,gBAAiB,WACfhM,EAAKgX,UAAW,OAKdJ,EAAAtd,UAAA4d,aAAR,WACM9d,KAAKoe,SACPpe,KAAKoe,QAAQzL,WAIjB6K,EAAAtd,UAAA2L,gBAAA,WAAA,IAAAjF,EAAA5G,KACEqS,YAAW,WACTzL,EAAKyX,SAAkC,iBAAhBzX,EAAK5F,OAAsB0J,SAASd,cAA2BhD,EAAK5F,QAAU4F,EAAK5F,OAEnF,aAAnB4F,EAAK+W,WACP/W,EAAKyX,SAASC,iBAAiB,WAAY1X,EAAK0N,MAAMzB,KAAKjM,IAEvC,UAAlBA,EAAK8W,UAAwB9W,EAAKyX,UACpCzX,EAAKyX,SAASC,iBAAiB,YAAa1X,EAAKsX,KAAKrL,KAAKjM,IAGvC,UAAlBA,EAAK8W,UAAwB9W,EAAKyX,UACpCzX,EAAKyX,SAASC,iBAAiB,QAAS1X,EAAKsX,KAAKrL,KAAKjM,MAExD,MAGL4W,EAAAtd,UAAA4U,YAAA,WACwB,UAAlB9U,KAAK0d,UAAwB1d,KAAKqe,WACpCre,KAAKqe,SAASE,oBAAoB,YAAave,KAAKke,KAAKrL,KAAK7S,OAC9DA,KAAKqe,SAASE,oBAAoB,QAASve,KAAKke,KAAKrL,KAAK7S,OAC1DA,KAAKqe,SAASE,oBAAoB,WAAYve,KAAKke,KAAKrL,KAAK7S,SAIjER,OAAAgC,eAAIgc,EAAAtd,UAAA,SAAM,KAAV,WACE,OAAOF,KAAKge,kFAnGYjO,SACVP,EAAAA,cACDyE,EAAAA,qBAOfnT,EAAA,CADCoM,EAAAA,UAAU,uBACO6D,EAAAA,6CAEDjQ,EAAA,CAAhBuF,EAAAA,MAAM,gEAEYvF,EAAA,CAAlBuF,EAAAA,MAAM,oEAEYvF,EAAA,CAAlBuF,EAAAA,MAAM,oEAEavF,EAAA,CAAnBuF,EAAAA,MAAM,sEAIPvF,EAAA,CADCuF,EAAAA,+FAtBUmX,EAAkB1c,EAAA,CAP9BwF,EAAAA,UAAU,CACTC,SAAU,aACVC,SAAA,8JAEA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,uQAIfxN,EACVP,EAAAA,OACDyE,EAAAA,qBAJJuJ,oBCHb,SAAAgB,KAA8B,OAAjBA,EAAe1d,EAAA,CAN3B+V,EAAAA,SAAS,CACRC,aAAc,CAAC0G,IACfzG,QAAS,CAACJ,EAAAA,cACVK,QAAS,CAACwG,IACV1V,UAAW,MAEA0W,oBCIb,SAAAC,KACA,OADaA,EAAmB3d,EAAA,CAN/B+V,EAAAA,SAAS,CACRC,aAAc,CAACG,IACfF,QAAS,CAACJ,EAAAA,aAAcC,GAAgB4H,GAAiBE,EAAAA,cACzD1H,QAAS,CAACC,IACVnP,UAAW,MAEA2W,oBCLT,SAAAE,EAC8BtZ,EACGuZ,EACH9Z,GAFA9E,KAAAqF,KAAAA,EACGrF,KAAA4e,QAAAA,EACH5e,KAAA8E,KAAAA,EAclC,OALI6Z,EAAAze,UAAA8S,SAAA,WACShT,KAAK6e,WACN7e,KAAK6e,SAAW,sEAbnBC,EAAAA,UAASpP,KAAA,CAAC,0CACVoP,EAAAA,UAASpP,KAAA,CAAC,6CACVoP,EAAAA,UAASpP,KAAA,CAAC,aAMf5O,EAAA,CADCuF,EAAAA,gEAVQsY,EAAuB7d,EAAA,CAJnCwF,EAAAA,UAAU,CACPC,SAAU,oBACVC,SAAU,KAKL/E,EAAA,EAAAqd,EAAAA,UAAU,SACVrd,EAAA,EAAAqd,EAAAA,UAAU,YACVrd,EAAA,EAAAqd,EAAAA,UAAU,wDALNH,oBA6BT,SAAAI,KACJ,OAF8Cje,EAAA,CAAzC4G,EAAAA,gBAAgBiX,oBAAgChX,EAAAA,wCADxCoX,EAAwBje,EAAA,CANpCwF,EAAAA,UAAU,CACPC,SAAU,qBACVC,SAAU,qEAIDuY,oBCpBb,SAAAC,IACIhf,KAAAif,WAAgC,IAAI/X,EAAAA,cAAkB,GAM1D,OALI8X,EAAA9e,UAAAgf,SAAA,WACQlf,KAAKif,YACLjf,KAAKif,WAAW5X,KAAKrH,OAGjCgf,oBAEA,SAAAG,IAAA,IAAAvY,EAAA,OAAAI,GAAAA,EAAAnG,MAAAb,KAAAU,YAAAV,YACI4G,EAAAwY,UAAoB,IAIxB,OALgDtf,EAAAqf,EAAAnY,GAKhDmY,GALgDH,OCvBhD,WAEIhf,KAAAqf,UAAiC,yBCerC,SAAAC,mDAEA,OAF0Cxf,EAAAwf,EAAAtY,GAE1CsY,GAF0CC,iBAWxC,SAAAC,EAAoBxU,EAAyBD,GAAzB/K,KAAAgL,IAAAA,EAAyBhL,KAAA+K,IAAAA,EAqB7C/K,KAAAyf,YAAkD,IAAIvY,EAAAA,aAGtDlH,KAAAoL,KAAsB,KAGfpL,KAAA0f,UAA4C,OAG5C1f,KAAA2f,KAAmD,UAcnD3f,KAAA4f,UAAuC,aAsChD,OA1EEpgB,OAAAgC,eAAWge,EAAAtf,UAAA,eAAY,KAAvB,WACE,OAAOF,KAAK6f,cAAgB7f,KAAK6f,cAAgB7f,KAAK8f,0BAExD,SAAwB9b,GACtBhE,KAAK6f,cAAgB7b,mCAoCvBxE,OAAAgC,eAAWge,EAAAtf,UAAA,QAAK,KAAhB,WACE,OAAOF,KAAK+f,YAEd,SAAiB/b,GACfhE,KAAK+f,OAAS/b,mCAGhBwb,EAAAtf,UAAA8S,SAAA,WACkB,MAAZhT,KAAKggB,MACPhgB,KAAKggB,IAA8F,QAAxFC,OAAOC,iBAAiBlgB,KAAKgL,IAAI9B,cAAe,MAAMiX,iBAAiB,eAKtFX,EAAAtf,UAAAkgB,gBAAA,SAAgBxd,EAAe8Y,SAE7B,GADA9Y,EAAEoT,mBACE0F,GAAUA,EAAKH,OAAUG,EAAKH,MAAM7H,QAAO,SAACvS,GAAM,OAAc,IAAdA,EAAE6c,WAAmBrd,QAAY+a,EAAK2E,aAA5F,CACE,IAAM9b,EAAI,CACR+H,UAAWtM,KACX+M,YAAa/M,KAAKgL,IAAI9B,cACtB8D,UAAWpK,EACXgS,KAAM8G,EACN5W,KAAU,QAANyC,EAAEmU,SAAI,IAAAnU,OAAA,EAAAA,EAAEzC,MAEV4W,EAAKxD,QACPwD,EAAKxD,UAGLlY,KAAKyf,YAAYpY,KAAK9C,8CA5EH8I,EAAAA,kBAAyB4G,EAAAA,qBAIlDnT,EAAA,CADCsM,EAAAA,aAAa2D,EAAAA,YAAa,CAAE5D,QAAQ,oBACf4D,EAAAA,yDAItBjQ,EAAA,CADCuF,EAAAA,wBAI0B0K,EAAAA,oCAAAA,EAAAA,gDAO3BjQ,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAGbpG,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,8DAIDvF,EAAA,CADCuF,EAAAA,sEAIDvF,EAAA,CADCuF,EAAAA,sEAMDvF,EAAA,CADCuF,EAAAA,iEAKDvF,EAAA,CADCuF,EAAAA,yFAjDUmZ,EAAe1e,EAAA,CAL3BwF,EAAAA,UAAU,CACTC,SAAU,UACVC,SAAA,ojHACA8P,cAAeC,EAAAA,kBAAkBC,8BAIRnJ,EAAAA,WAAyB4G,EAAAA,qBAFvCuL,qBCAX,SAAAc,EACUvV,GADV,IAAAnE,EAGEI,EAAApG,KAAAZ,OAAOA,YAFC4G,EAAAmE,IAAAA,EAQVnE,EAAA6Y,YAAkD,IAAIvY,EAAAA,aAiB/CN,EAAA8Y,UAA4C,eA4BrD,OAxD4C5f,EAAAwgB,EAAAtZ,KAA/BsZ,EAmBX9gB,OAAAgC,eAAW8e,EAAApgB,UAAA,eAAY,KAAvB,WACE,OAAOF,KAAK6f,cAAgB7f,KAAK6f,cAAgB7f,KAAK8f,0BAExD,SAAwB9b,GACtBhE,KAAK6f,cAAgB7b,mCASvBxE,OAAAgC,eAAW8e,EAAApgB,UAAA,QAAK,KAAhB,WACE,OAAOF,KAAK+f,YAEd,SAAiB/b,GACfhE,KAAK+f,OAAS/b,EACdhE,KAAKugB,0CAIPD,EAAApgB,UAAAkgB,gBAAA,SAAgB1E,GACd1b,KAAKyf,YAAYpY,KAAKqU,IAIjB4E,EAAApgB,UAAAoU,MAAP,aAIAgM,EAAApgB,UAAAqgB,OAAA,WAEEvgB,KAAK+K,IAAI0B,0DAjDIwH,EAAAA,qBAKsBnT,EAAA,CAApCoM,EAAAA,UAAU,OAAQ,CAAEC,QAAQ,oBAAcqS,gCAG3C1e,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAGbpG,EAAA,CADCsM,EAAAA,aAAa2D,EAAAA,YAAa,CAAE5D,QAAQ,oBACf4D,EAAAA,yDAKtBjQ,EAAA,CADCuF,EAAAA,wBAI0B0K,EAAAA,oCAAAA,EAAAA,gDAM3BjQ,EAAA,CADCuF,EAAAA,iEAKDvF,EAAA,CADCuF,EAAAA,yFA/BUia,EAAsBE,EAAA1f,EAAA,CANlCwF,EAAAA,UAAU,CACTC,SAAU,kBACVC,SAAA,2MACAsB,UAAW,CAAC,CAAEC,QAAS0Y,GAAezY,YAAawY,IACnDlK,cAAeC,EAAAA,kBAAkBC,8BAKlBvC,EAAAA,qBAHJqM,IAA+BG,kBCRxC,SAAAC,IAGA1gB,KAAAub,MAAsB,GAOtBvb,KAAA2gB,cAAsC,IAAIzZ,EAAAA,mBAM9C,SAjBawZ,EAMTA,EAAAxgB,UAAAqgB,OAAA,WACIvgB,KAAK4gB,KAAKL,UAMdG,EAAAxgB,UAAAuf,YAAA,SAAY7c,GACR5C,KAAK2gB,cAActZ,KAAKzE,EAAEkC,OAXuBhE,EAAA,CAApDoM,EAAAA,UAAUoT,GAAwB,CAAEnT,QAAQ,oBAAcmT,gCAQ3Dxf,EAAA,CADC8G,EAAAA,yBACcV,EAAAA,mDAXNwZ,EAAgCG,EAAA/f,EAAA,CAP5CwF,EAAAA,UAAU,CACPC,SAAU,4BACVC,SAAU,6HAGVsB,UAAW,CAAC,CAAEC,QAAS0Y,GAAezY,YAAa6Y,iCAE1CH,oBCLb,SAAAI,IAGI9gB,KAAA+gB,SAAmB,EAEnB/gB,KAAA6e,SAAmB,EAoBnB7e,KAAAmZ,MAAoB,IAAIV,EAAAA,WAKxBzY,KAAAghB,uBAAmD,IAAI9Z,EAAAA,aAWvDlH,KAAAihB,OAA6B,GAE7BjhB,KAAAkhB,MAA2B,GAW3BlhB,KAAAmhB,eAA2D,IAAIja,EAAAA,cAAyC,GA2D5G,OAlGI1H,OAAAgC,eAAIsf,EAAA5gB,UAAA,YAAS,KAAb,WACI,OAAIF,KAAKkhB,OAASlhB,KAAKkhB,MAAMvgB,OAClB,IAAIqa,EAAAA,gBAAgBhb,KAAKkhB,MAAM,GAAG5H,MAAMsB,UAAW5a,KAAKkhB,MAAMlhB,KAAKkhB,MAAMvgB,OAAS,GAAG2Y,MAAMsB,WAG3F,sCAafpb,OAAAgC,eAAWsf,EAAA5gB,UAAA,gBAAa,KAAxB,WACI,OAAOF,KAAKohB,oBAEhB,SAAyBpd,GACrBhE,KAAKohB,eAAiBpd,EACtBhE,KAAKghB,uBAAuB3Z,KAAKrD,oCAOrC8c,EAAA5gB,UAAAmhB,UAAA,SAAU/H,EAAwBgI,GAC9B,OAAOthB,KAAKihB,OAAOvN,QAAO,SAAAvS,GAAK,OAAAA,EAAEmY,MAAMsB,UAAU7B,MAAMO,EAAMsB,UAAW0G,OAG5ER,EAAA5gB,UAAAqhB,mBAAA,WACIvhB,KAAKwhB,cAOTV,EAAA5gB,UAAA4U,YAAA,WACQ9U,KAAKmhB,gBACLnhB,KAAKmhB,eAAepM,cAEpB/U,KAAKghB,wBACLhhB,KAAKmhB,eAAepM,cAEpB/U,KAAKkhB,QACLlhB,KAAKkhB,MAAQ,MAEblhB,KAAKihB,SACLjhB,KAAKihB,OAAS,OAKtBH,EAAA5gB,UAAAuhB,gBAAA,SAAgB7e,EAAG8e,GACf,IAAM7N,EAAKjR,EAAE8Y,KAAKnS,QAAQL,cAC1B,GAAItG,EAAE+e,oBAAsB/e,EAAEuT,UAAW,CACrCtC,EAAG8F,MAAMiI,QAAU,IACnB,IAAMxgB,EAAgC,IAAI+d,GAC1C/d,EAAEub,MAAQ/Z,EAAE8Y,KAAK9G,KACjBxT,EAAEygB,QAAUjf,EAAE+e,kBAAkB/M,KAChCxT,EAAE0gB,QAAUlf,EAAEuT,UAAUvB,KAExBxT,EAAE6d,WAAWvM,WAAU,SAACqP,GAEpB,GADAlO,EAAG8F,MAAMiI,QAAU,KACdG,EAAG3C,SAAU,CACd,IAAM4C,EAAWD,EAAGD,QAAQxI,MAAMsB,UAAUD,UACtCsH,EAAIF,EAAGpF,MAAMrD,MAAMsB,UAAU3B,QAC7BiJ,EAASF,EAASG,SAASF,EAAEtH,UAAW,QAC9BqH,EAASG,SAASF,EAAG,SAClBF,EAAGpF,MAAMrD,MAK5B,GAAIoI,EACA,OAKJ,GAHAK,EAAGpF,MAAMrD,MAAMsB,UAAYmH,EAAGpF,MAAMrD,MAAMsB,UAAUtQ,IAAI,MAAO4X,GAC/DH,EAAGpF,MAAMrD,MAAM8I,QAAUL,EAAGpF,MAAMrD,MAAM8I,QAAQ9X,IAAI,MAAO4X,GAC3DH,EAAGF,QAAQZ,OAASc,EAAGF,QAAQZ,OAAOvN,QAAO,SAAAvS,GAAK,OAAAA,EAAEmH,MAAQyZ,EAAGpF,MAAMrU,OACjEoZ,EAAM,CACNK,EAAGpF,MAAMrD,MAAMsB,UAAYmH,EAAGpF,MAAMrD,MAAMsB,UAAUkC,IAAI,OAAQ4E,GAChE,IAAIW,EAAUN,EAAGpF,MAAMrD,MAAMsB,UAAUuH,SAASF,EAAG,SAAW,GAC9DF,EAAGpF,MAAMrD,MAAM8I,QAAUL,EAAGpF,MAAMrD,MAAM8I,QAAQ9X,IAAI,OAAQ+X,GAEhEN,EAAGD,QAAQb,OAAO7c,KAAK2d,EAAGpF,WAIlC3c,KAAKmhB,eAAe9Z,KAAKjG,KA/EjCN,EAAA,CADC8G,EAAAA,yBACuBV,EAAAA,4DAwBxBpG,EAAA,CADC8G,EAAAA,yBACeV,EAAAA,oDAtDE4Z,EAA4BhgB,EAAA,CADjDwhB,EAAAA,aACqBxB,qBCElB,SAAAyB,EAAoBC,EAAyCzX,GAA7D,IAAAnE,EAAuFI,EAAApG,KAAAZ,OAAOA,YAA1E4G,EAAA4b,IAAAA,EAAyC5b,EAAAmE,IAAAA,EAC7DnE,EAAA6b,MAAe,WAyFnB,OA3FqD3iB,EAAAyiB,EAAAvb,KAAxCub,EASTA,EAAAriB,UAAA8S,SAAA,aAGAuP,EAAAriB,UAAA2L,gBAAA,WACI7L,KAAK0iB,QAAU1iB,KAAKwiB,IAAItZ,cAAcU,cAA2B,aACjE5J,KAAK2iB,OAAS3iB,KAAKwiB,IAAItZ,cAAcU,cAA2B,WAChE5J,KAAKkD,KAAOlD,KAAKwiB,IAAItZ,cAAcU,cAA2B,SAC9D5J,KAAKsY,KAAOtY,KAAKwiB,IAAItZ,cAAcU,cAA2B,SAC9D5J,KAAKmW,UAAYnW,KAAKwiB,IAAItZ,cAAcQ,QAAQ,oBAGpD6Y,EAAAriB,UAAAshB,WAAA,WACI,IAAMoB,EAAU5iB,KAAKkD,KAAK0G,cAAc,MACxC,GAAIgZ,EAAS,CACT,IAAIC,EAAQ,EACZ7iB,KAAK2iB,OAAOG,iBAAiB,MAAMtH,SAAQ,SAAAra,GAC5ByhB,EAAQG,SAASrH,KAAKmH,KAC9BlJ,MAAMqJ,MAAW7hB,EAAE8hB,YAAW,QAErCjjB,KAAK0iB,QAAQ/I,MAAMuJ,OAAS,eAAeljB,KAAK2iB,OAAOQ,aAAY,MAC/DnjB,KAAKmW,YACLnW,KAAKsY,KAAKqB,MAAMuJ,OAAYljB,KAAKmW,UAAUgN,aAAY,MAG/DnjB,KAAKojB,iBAGTb,EAAAriB,UAAAmY,SAAA,SAASE,QAAA,IAAAA,IAAAA,EAAA,IAAuBE,EAAAA,YAC5BzY,KAAKyiB,MAAQ,GACbziB,KAAKkhB,MAAQ,GACb,IAAK,IAAI1gB,EAAI,EAAGA,EAAIR,KAAK6e,SAAUre,IAAK,CACpC,IAAMlB,EAAIiZ,EAAK8K,OAAO7iB,GAChB8Y,EAAQ,IAAI0B,EAAAA,gBAAgB1b,EAAGA,GAC/BgkB,EAAwB,CAC1BhK,MAAKA,EACL2H,OAAQjhB,KAAKqhB,UAAU/H,EAAO,QAElCtZ,KAAKkhB,MAAM9c,KAAKkf,GAEpB,IAAS9iB,EAAI,EAAGA,EAAI,GAAIA,IACpBR,KAAKyiB,MAAMre,KAAK,CACZmf,SAAU,IAAM/iB,GAAGic,OAAO,GAAK,MAC/Bha,MAAOjC,IAGfR,KAAKwjB,cAAgBjL,EACrBvY,KAAK+K,IAAI0B,iBAGb8V,EAAAriB,UAAAyC,KAAA,WACI3C,KAAKqY,SAASrY,KAAKwjB,cAAcH,OAAOrjB,KAAK6e,YAEjD0D,EAAAriB,UAAAia,KAAA,WACIna,KAAKqY,SAASrY,KAAKwjB,cAAcH,QAAQrjB,KAAK6e,YAGlD0D,EAAAriB,UAAAkjB,cAAA,WAAA,IAAAxc,EAAA5G,KACUihB,EAASjhB,KAAKwiB,IAAItZ,cAAc4Z,iBAA8B,UACpE,GAAI7B,EAAOtgB,OAAQ,CACf,IAAM8iB,EAASxC,EAAO,GAAGvX,QAAQ,MAAMga,aACvCzC,EAAOzF,SAAQ,SAAA5Y,GACX,IAAM0F,EAAM1F,EAAE+gB,WAAWC,aAAa,YAAYnhB,MAC5Cka,EAAQ/V,EAAKqa,OAAO9b,MAAK,SAAAhE,GAAK,OAAAA,EAAEmH,MAAQA,KAE1Cub,EADQ5H,KAAKO,KAAKP,KAAK6H,IAAInH,EAAMrD,MAAM6I,SAAS,WAClC,EACdxF,EAAMrD,MAAMsB,UAAUmJ,KAAOF,EAAQ,KACrCA,EAAQ,GAAKlH,EAAMrD,MAAMsB,UAAUmJ,MAEvCnhB,EAAE+W,MAAMuJ,OAAUW,EAAQJ,EAAU,UAKhDlB,EAAAriB,UAAA8jB,eAAA,SAAerH,GAOX,OANU3c,KAAKihB,OAAOvN,QAAO,SAAAvS,GACzB,OAAAA,EAAEmY,MAAMsB,UAAU7B,MAAM4D,EAAMrD,MAAMsB,UAAW,UACjDqJ,MAAK,SAACC,EAAIC,GACR,OAAOD,EAAG5K,MAAMsB,UAAUe,YAAYwI,EAAG7K,MAAMsB,cAG1CwJ,QAAQzH,6CAxFItP,EAAAA,kBAAyC4G,EAAAA,qBADzDsO,EAA+B8B,EAAAvjB,EAAA,CAN3CwF,EAAAA,UAAU,CACPE,SAAA,81EAEA8P,cAAeC,EAAAA,kBAAkBC,KACjC1O,UAAW,CAAC,CAAEC,QAAS+Y,GAA8B9Y,YAAaqc,oTAGzChX,EAAAA,WAAyC4G,EAAAA,qBADzDsO,IAAwCzB,mBCGjD,SAAAwD,EACY9B,EACA/E,EACA1S,GAHZ,IAAAnE,EAIII,EAAApG,KAAAZ,OAAOA,YAHC4G,EAAA4b,IAAAA,EACA5b,EAAA6W,KAAAA,EACA7W,EAAAmE,IAAAA,EAcZnE,EAAA2d,SAAkB,CACd,CACInH,MAAO,EAAGoH,MAAO,UAErB,CACIpH,MAAO,EAAGoH,MAAO,SAErB,CACIpH,MAAO,EAAGoH,MAAO,WAErB,CACIpH,MAAO,EAAGoH,MAAO,aAErB,CACIpH,MAAO,EAAGoH,MAAO,YAErB,CACIpH,MAAO,EAAGoH,MAAO,UAErB,CACIpH,MAAO,EAAGoH,MAAO,aAEzB5d,EAAA6d,eAAiB,QAoHT7d,EAAA8d,SAAmB,aA+D/B,OA7NmD5kB,EAAAwkB,EAAAtd,KAAtCsd,EAWTA,EAAApkB,UAAA+V,iBAAA,SAAiBrT,GACTA,EAAE+hB,OAAS,EACX3kB,KAAKqY,SAASrY,KAAKwjB,cAAcoB,SAAS,IAErChiB,EAAE+hB,OAAS,GAChB3kB,KAAKqY,SAASrY,KAAKwjB,cAAcoB,UAAU,KAsCnDN,EAAApkB,UAAA2L,gBAAA,WACI7L,KAAK2iB,OAAS3iB,KAAKwiB,IAAItZ,cAAcU,cAA2B,WAChE5J,KAAKkD,KAAOlD,KAAKwiB,IAAItZ,cAAcU,cAA2B,SAC9D5J,KAAKsY,KAAOtY,KAAKwiB,IAAItZ,cAAcU,cAA2B,SAC9D5J,KAAKmW,UAAYnW,KAAKwiB,IAAItZ,cAAcQ,QAAQ,oBAKpD4a,EAAApkB,UAAAshB,WAAA,WACI,IAAMoB,EAAU5iB,KAAKkD,KAAK0G,cAAc,MACxC,GAAIgZ,EAAS,CACT,IAAIC,EAAQ,EACZ7iB,KAAK2iB,OAAOG,iBAAiB,MAAMtH,SAAQ,SAAAra,GAC5ByhB,EAAQG,SAASrH,KAAKmH,KAC9BlJ,MAAMqJ,MAAW7hB,EAAE8hB,YAAW,QAErCjjB,KAAKkD,KAAKyW,MAAMuJ,OAAS,eAAeljB,KAAK2iB,OAAOQ,aAAY,MAC5DnjB,KAAKmW,YACLnW,KAAKsY,KAAKqB,MAAMuJ,OAAYljB,KAAKmW,UAAUgN,aAAY,MAG/DnjB,KAAKojB,iBAGTkB,EAAApkB,UAAA+a,UAAA,SAAUqB,EAAKuI,EAAMtI,GACjB,IAAM3E,EAAS,GACf,GAAIiN,EAAOtI,IAASD,EAAI3b,OACpB,IAAK,IAAIH,EAAI,EAAGA,EAAI8b,EAAI3b,OAAQH,GAAK+b,EACjC3E,EAAOxT,KAAKkY,EAAIG,MAAMjc,EAAG+b,EAAO/b,IAGxC,OAAOoX,GAKX0M,EAAApkB,UAAAmY,SAAA,SAASE,QAAA,IAAAA,IAAAA,EAAA,IAAuBE,EAAAA,YAE5B,IAAM+B,EAAQjC,EAAKc,MAAMC,MAAMsB,UAAUC,eAEnCiK,EADMvM,EAAKc,MAAMC,MAAMsB,UAAUG,aACvBoH,SAAS3H,GACzBxa,KAAKkhB,MAAQ,GACb,IAAK,IAAI1gB,EAAI,EAAGA,EAAIskB,EAAKtkB,IAAK,CAC1B,IAAMlB,EAAIkb,EAAM6I,OAAO7iB,GACjB8Y,EAAyB,IAAI0B,EAAAA,gBAAgB1b,EAAGA,GACtDU,KAAKkhB,MAAM9c,KAAK,CACZkV,MAAKA,EACL2H,OAAQjhB,KAAKqhB,UAAU/H,EAAO,OAC9BhR,IAAKgR,EAAMsB,UAAUrC,KAAK/E,UAAUuR,aAG5C,IACMF,EAAO5I,KAAKC,MAAM4I,EADN,GAElB9kB,KAAKglB,YAAchlB,KAAKib,UAAUjb,KAAKkhB,MAAO2D,EAF5B,GAGlB7kB,KAAKwjB,cAAgBjL,EACrBvY,KAAK+K,IAAI0B,iBAIb6X,EAAApkB,UAAAyC,KAAA,WACI3C,KAAKqY,SAASrY,KAAKwjB,cAAcoB,SAAS5kB,KAAK6e,YAEnDyF,EAAApkB,UAAAia,KAAA,WACIna,KAAKqY,SAASrY,KAAKwjB,cAAcoB,UAAU5kB,KAAK6e,YAGpDyF,EAAApkB,UAAAkjB,cAAA,WAAA,IAAAxc,EAAA5G,KACIA,KAAKkhB,MAAM1F,SAAQ,SAAA8H,GACf,IAAM2B,EAASre,EAAK4b,IAAItZ,cAAcU,cAA2B,cAAgB0Z,EAAKhb,IAAM,MACtF4c,EAAcD,EAAOrb,cAA2B,cAClDub,EAAW,EACfD,EAAYvL,MAAM4J,QAAU,OAC5B,IAAMP,EAAQiC,EAAOhC,YACrBK,EAAKrC,OAAOzF,SAAQ,SAAAmB,GAChB,IAAM/Z,EAAIqiB,EAAOrb,cAA2B,cAAgB+S,EAAMrU,IAAM,MACxE,GAAI1F,EAAG,CACH,IAAMkiB,EAAM7I,KAAKO,KAAKP,KAAK6H,IAAInH,EAAMrD,MAAM6I,aAC3Cvf,EAAE+W,MAAMyL,WAAa,QACrBxiB,EAAE+W,MAAMqJ,MAAS8B,EAAM9B,EAAS,KAChCpgB,EAAE+W,MAAM0L,IAAsC,GAA9Bze,EAAKod,eAAerH,GAAgB,KAChD/Z,EAAE0iB,wBAAwBC,QAAUN,EAAOK,wBAAwBC,SACnEJ,IACAviB,EAAE+W,MAAMyL,WAAa,SACrBF,EAAYvL,MAAM4J,QAAU,QAC5B2B,EAAYM,UAAY,IAAIL,EAAQ,iBAOxDb,EAAApkB,UAAA8jB,eAAA,SAAerH,GAOX,OANU3c,KAAKihB,OAAOvN,QAAO,SAAAvS,GACzB,OAAAA,EAAEmY,MAAMsB,UAAU7B,MAAM4D,EAAMrD,MAAMsB,UAAW,WACjDqJ,MAAK,SAACC,EAAIC,GAER,OADUD,EAAG5K,MAAMsB,UAAUe,YAAYwI,EAAG7K,MAAMsB,UAAW,YAGxDwJ,QAAQzH,IAMrB2H,EAAApkB,UAAAulB,cAAA,SAAc9I,GAAd,IAAA/V,EAAA5G,KACIA,KAAKyd,KAAKiI,mBAAkB,WACxB9e,EAAK+e,cAAgBhJ,EAAMiJ,OAAOC,cAActc,QAAQL,cACxDtC,EAAK4b,IAAItZ,cAAcoV,iBAAiB,YAAa1X,EAAKkf,eAAejT,KAAKjM,QAGtF0d,EAAApkB,UAAA6lB,cAAA,SAAcpJ,GACV3c,KAAKgmB,YAActb,SAASd,cAA2B,qBACvD5J,KAAK2lB,cAAgBhJ,EAAMxG,UAAU5M,QAAQL,eAEjDob,EAAApkB,UAAA+lB,YAAA,SAAYtJ,GAAZ,IAAA/V,EAAA5G,KACIA,KAAK2lB,cAAgB,KACrB3lB,KAAKgmB,YAAc,KACnBhmB,KAAKyd,KAAKiI,mBAAkB,WACxB9e,EAAK4b,IAAItZ,cAAcqV,oBAAoB,YAAa3X,EAAKkf,eAAejT,KAAKjM,QAIjF0d,EAAApkB,UAAA4lB,eAAR,SAAuBljB,GAAvB,IAAAgE,EAAA5G,KACIA,KAAKyd,KAAKiI,mBAAkB,WAIxB,GAHK9e,EAAKof,cACNpf,EAAKof,YAActb,SAASd,cAA2B,sBAEvDhD,EAAK+e,eAAiB/e,EAAKof,YAAa,CACxC,IAAME,EAAOtf,EAAKof,YAAYV,wBAAwBD,IAAMze,EAAK+e,cAAcL,wBAAwBD,IACjGtB,EAAO9H,KAAKkK,MAAOD,EAAOtf,EAAK+e,cAAcL,wBAAwBpC,OAAU,IACrFtc,EAAKof,YAAYpc,cAAc,eAAe4b,WAAezB,EAAO,EAAIA,EAAO,GAAC,MAChFnd,EAAK8d,SAAWX,OAK5BO,EAAApkB,UAAAuhB,gBAAA,SAAgB7e,GAAhB,IAAAgE,EAAA5G,KACU6T,EAAKjR,EAAE8Y,KAAKnS,QAAQL,cAC1B,GAAItG,EAAE+e,oBAAsB/e,EAAEuT,UAAW,CACrCtC,EAAG8F,MAAMiI,QAAU,IACnB,IAAMxgB,EAAgC,IAAI+d,GAC1C/d,EAAEub,MAAQ/Z,EAAE8Y,KAAK9G,KACjBxT,EAAEygB,QAAUjf,EAAE+e,kBAAkB/M,KAChCxT,EAAE0gB,QAAUlf,EAAEuT,UAAUvB,KAExBxT,EAAE6d,WAAWvM,WAAU,SAACqP,GAEpB,GADAlO,EAAG8F,MAAMiI,QAAU,KACdG,EAAG3C,SAAU,CACd,IAAM4C,EAAWD,EAAGD,QAAQxI,MAAMsB,UAAUD,UACtCsH,EAAIF,EAAGpF,MAAMrD,MAAMsB,UAAU3B,QAC7BiJ,EAASF,EAASG,SAASF,EAAEtH,UAAW,QAC9CoH,EAAGpF,MAAMrD,MAAMsB,UAAYmH,EAAGpF,MAAMrD,MAAMsB,UAAUtQ,IAAI,MAAO4X,GAC1C,MAAjBtb,EAAK8d,WACL3C,EAAGpF,MAAMrD,MAAMsB,UAAYmH,EAAGpF,MAAMrD,MAAMsB,UAAUkC,IAAI,OAAQlW,EAAK8d,UACrE3C,EAAGpF,MAAMrD,MAAMsB,UAAYmH,EAAGpF,MAAMrD,MAAMsB,UAAUkC,IAAI,SAAU,IAEtEiF,EAAGpF,MAAMrD,MAAM8I,QAAUL,EAAGpF,MAAMrD,MAAM8I,QAAQ9X,IAAI,MAAO4X,GAC3DH,EAAGF,QAAQZ,OAASc,EAAGF,QAAQZ,OAAOvN,QAAO,SAAAvS,GAAK,OAAAA,EAAEmH,MAAQyZ,EAAGpF,MAAMrU,OACrEyZ,EAAGD,QAAQb,OAAO7c,KAAK2d,EAAGpF,WAGlC3c,KAAKmhB,eAAe9Z,KAAKjG,8CApNhBiM,EAAAA,kBACCmC,EAAAA,cACDyE,EAAAA,qBAKjBnT,EAAA,CADCsV,EAAAA,aAAa,QAAS,CAAC,yIAVfkO,EAA6B8B,EAAAtlB,EAAA,CANzCwF,EAAAA,UAAU,CACPE,SAAA,8kEAEA8P,cAAeC,EAAAA,kBAAkBC,KACjC1O,UAAW,CAAC,CAAEC,QAAS+Y,GAA8B9Y,YAAaoe,q8BAMjD/Y,EAAAA,WACCmC,EAAAA,OACDyE,EAAAA,qBANRqQ,IAAsCxD,kBCe/C,SAAAuF,EAAoBtb,GAAA/K,KAAA+K,IAAAA,EAWpB/K,KAAAsmB,UAAoB,MAGpBtmB,KAAAub,MAAsB,GA2BtBvb,KAAAumB,WAAyD,IAAIrf,EAAAA,mBAiEjE,SA3Gamf,EAiBTA,EAAAnmB,UAAA2L,gBAAA,WACI7L,KAAKub,MAAQ,CACT,CACIzW,KAAM,OACN0hB,UAAW,oBACXC,QAAS,QAEb,CACI3hB,KAAM,QACN+U,KAAM,QACN4M,QAAS,SAEb,CACI3hB,KAAM,OACN0hB,UAAW,qBACXC,QAAS,QAEb,CACI3hB,KAAM,aASlBuhB,EAAAnmB,UAAAuf,YAAA,SAAY7c,GACO,YAAXA,EAAEkC,KACF9E,KAAKmE,IAAI4Z,SAEO,UAAXnb,EAAEkC,KACP9E,KAAK0mB,KAAK,IAAIjO,EAAAA,aAGdzY,KAAKumB,WAAWlf,KAAKzE,EAAEkC,MACvB9E,KAAKmE,IAAImQ,UAKjB+R,EAAAnmB,UAAAymB,aAAA,SAAa/jB,GACT5C,KAAK0mB,KAAK9jB,EAAEH,QAGhB4jB,EAAAnmB,UAAAwmB,KAAA,SAAKnO,GACDvY,KAAKumB,WAAWlf,KAAKkR,GACrBvY,KAAKmE,IAAImQ,SAIb+R,EAAAnmB,UAAA4c,IAAA,SAAIxD,EAAwBjU,GACxB,GAAIiU,EAAO,CACP,IAAIO,EAAe,GACb+M,EAAsBtN,EAAMsB,UAC5BiM,EAAgE,IAAtDvN,EAAMsB,UAAUe,YAAYrC,EAAM8I,QAAS,OACrD0E,EAAiE,IAArDxN,EAAMsB,UAAUe,YAAYrC,EAAM8I,QAAS,MACvD2E,EAA+D,IAApDzN,EAAMsB,UAAUe,YAAYrC,EAAM8I,QAAS,KAC/C,UAAT/c,GAAoBwhB,EACpBhN,EAAOP,EAAMsB,UAAUoM,OAAO,iBAGhB,UAAT3hB,GAAoByhB,GAAaC,EACtClN,EAAUP,EAAMsB,UAAUoM,OAAO,WAAU,MAAM1N,EAAM8I,QAAQ4E,OAAO,YAExD,UAAT3hB,GAAoB0hB,EACzBlN,EAAUP,EAAMsB,UAAUoM,OAAO,UAAS,MAAM1N,EAAM8I,QAAQ4E,OAAO,gBAEvD,UAAT3hB,EACLwU,EAAUP,EAAMsB,UAAUoM,OAAO,gBAAe,MAAM1N,EAAM8I,QAAQ4E,OAAO,gBAE7D,UAAT3hB,IACLwU,EAAOP,EAAMsB,UAAUtQ,IAAI,MAAO,IAAI0c,OAAO,cAEjDhnB,KAAKub,MAAM,GAAG1B,KAAOA,EAEjB7Z,KAAKsmB,UADI,UAATjhB,EACiB,QAGA,MAGrBrF,KAAKinB,IAAI/N,aAAe0N,EACxB5mB,KAAKinB,IAAI5O,SAASuO,GAClB5mB,KAAKmE,IAAImQ,QAETtU,KAAKknB,QAAQ3G,oDAtGItM,EAAAA,qBAGzBnT,EAAA,CADCoM,EAAAA,UAAUoT,GAAwB,CAAEnT,QAAQ,oBACpCmT,mCAGTxf,EAAA,CADCoM,EAAAA,UAAU,MAAO,CAAEC,QAAQ,oBACvBqQ,+BAGL1c,EAAA,CADCoM,EAAAA,UAAU,MAAO,CAAEC,QAAQ,oBACvB8J,+BAgCLnW,EAAA,CADC8G,EAAAA,yBACWV,EAAAA,gDA1CHmf,EAAoCc,EAAArmB,EAAA,CAZhDwF,EAAAA,UAAU,CACPC,SAAU,iCACVC,SAAU,8UAOVsB,UAAW,CAAC,CAAEC,QAAS0Y,GAAezY,YAAamf,IACnD9J,gBAAiBC,EAAAA,wBAAwBC,gCAGhBtJ,EAAAA,qBADhBoS,qBCbT,SAAAe,EACY5E,EACAzX,GAFZ,IAAAnE,EAIII,EAAApG,KAAAZ,OAAOA,YAHC4G,EAAA4b,IAAAA,EACA5b,EAAAmE,IAAAA,EAKZnE,EAAAygB,eAAyB,UA8B7B,OAtCoDvnB,EAAAsnB,EAAApgB,KAAvCogB,EAUTA,EAAAlnB,UAAAshB,WAAA,aAIA4F,EAAAlnB,UAAAmY,SAAA,SAASE,QAAA,IAAAA,IAAAA,EAAA,IAAuBE,EAAAA,YAC5BzY,KAAKkhB,MAAQ,GACb,IAAK,IAAI1gB,EAAI,EAAGA,EAAIR,KAAK6e,SAAUre,IAAK,CACpC,IAAIlB,EAAIiZ,EAAK8K,OAAO7iB,GACd8Y,EAAQ,IAAI0B,EAAAA,gBAAgB1b,EAAGA,GAC/BgkB,EAAwB,CAC1BhK,MAAKA,EACL2H,OAAQjhB,KAAKqhB,UAAU/H,EAAO,QAE9BtZ,KAAKqnB,eAAwC,IAAvB/D,EAAKrC,OAAOtgB,QAGtCX,KAAKkhB,MAAM9c,KAAKkf,GAEpBtjB,KAAKwjB,cAAgBjL,EACrBvY,KAAK+K,IAAI0B,iBAGb2a,EAAAlnB,UAAAyC,KAAA,WACI3C,KAAKqY,SAASrY,KAAKwjB,cAAcH,OAAOrjB,KAAK6e,YAEjDuI,EAAAlnB,UAAAia,KAAA,WACIna,KAAKqY,SAASrY,KAAKwjB,cAAcH,QAAQrjB,KAAK6e,qDAlCjCxR,EAAAA,kBACA4G,EAAAA,qBAHRmT,EAA8BE,EAAAxmB,EAAA,CAN1CwF,EAAAA,UAAU,CACPE,SAAA,upEAEA8P,cAAeC,EAAAA,kBAAkBC,KACjC1O,UAAW,CAAC,CAAEC,QAAS+Y,GAA8B9Y,YAAasf,gkCAIjDja,EAAAA,WACA4G,EAAAA,qBAHRmT,IAAuCtG,mBCChD,SAAAyG,EAAoB/E,EAAyCzX,GAA7D,IAAAnE,EAAuFI,EAAApG,KAAAZ,OAAOA,YAA1E4G,EAAA4b,IAAAA,EAAyC5b,EAAAmE,IAAAA,EAK7DnE,EAAA6b,MAAe,WA0EnB,OAhFsD3iB,EAAAynB,EAAAvgB,KAAzCugB,EAeTA,EAAArnB,UAAA8S,SAAA,aAGAuU,EAAArnB,UAAA2L,gBAAA,WACI7L,KAAK0iB,QAAU1iB,KAAKwiB,IAAItZ,cAAcU,cAA2B,aAEjE5J,KAAK2iB,OAAS3iB,KAAKwiB,IAAItZ,cAAcU,cAA2B,WAChE5J,KAAKkD,KAAOlD,KAAKwiB,IAAItZ,cAAcU,cAA2B,SAC9D5J,KAAKsY,KAAOtY,KAAKwiB,IAAItZ,cAAcU,cAA2B,SAE9D5J,KAAKmW,UAAYnW,KAAKwiB,IAAItZ,cAAcQ,QAAQ,oBAOpD6d,EAAArnB,UAAAshB,WAAA,aAeA+F,EAAArnB,UAAAmY,SAAA,SAASE,QAAA,IAAAA,IAAAA,EAAA,IAAuBE,EAAAA,YAC5BzY,KAAKwjB,cAAgBjL,EACrBvY,KAAKyiB,MAAM,GACXziB,KAAKkhB,MAAQ,GACb,IAAK,IAAI1gB,EAAI,EAAGA,EAAIR,KAAK6e,SAAUre,IAAK,CACpC,IAAIlB,EAAIiZ,EAAK8K,OAAO7iB,GAChB8Y,EAAQ,IAAI0B,EAAAA,gBAAgB1b,EAAGA,GAC/BgkB,EAAwB,CACxBhK,MAAOA,EACP2H,OAAQjhB,KAAKqhB,UAAU/H,EAAO,QAElCtZ,KAAKkhB,MAAM9c,KAAKkf,GAEpB,IAAS9iB,EAAI,EAAGA,EAAI,GAAIA,IACpBR,KAAKyiB,MAAMre,KAAK,CACZmf,SAAS,IAAM/iB,GAAGic,OAAO,GAAK,MAC9Bha,MAAMjC,IAGdR,KAAK+K,IAAI0B,iBAGb8a,EAAArnB,UAAAyC,KAAA,WACI3C,KAAKqY,SAASrY,KAAKwjB,cAAcH,OAAOrjB,KAAK6e,YAEjD0I,EAAArnB,UAAAia,KAAA,WACIna,KAAKqY,SAASrY,KAAKwjB,cAAcH,QAAQrjB,KAAK6e,YAGlD0I,EAAArnB,UAAAkjB,cAAA,sDA3EyB/V,EAAAA,kBAAyC4G,EAAAA,qBADzDsT,EAAgCC,EAAA1mB,EAAA,CAN5CwF,EAAAA,UAAU,CACPE,SAAA,moEAEA8P,cAAeC,EAAAA,kBAAkBC,KACjC1O,UAAW,CAAC,CAAEC,QAAS+Y,GAA8B9Y,YAAawf,yCAGzCna,EAAAA,WAAyC4G,EAAAA,qBADzDsT,IAAyCzG,kBCKlD,SAAA2G,IAOAznB,KAAAyL,eAAqD,IAAIvE,EAAAA,mBAqC7D,SA7CaugB,EAYTjoB,OAAAgC,eAAWimB,EAAAvnB,UAAA,OAAI,KAAf,WACI,OAAOF,KAAK0nB,WAEhB,SAAgB1jB,GACZ,GAAIA,IAAMhE,KAAK0nB,MAAO,CAClB,IAAMrb,EAAMrM,KAAK0nB,MACjB1nB,KAAK0nB,MAAQ1jB,EACbhE,KAAKyL,eAAepE,KAAK,CACrBiF,UAAWtM,KACXyC,MAAOuB,EACPuI,SAAUF,sCAKfob,EAAAvnB,UAAAwM,MAAP,WACI1M,KAAK2nB,YAAYze,cAAcwD,SAGnC+a,EAAAvnB,UAAA0nB,gBAAA,SAAgB/N,GAAhB,IAAAjT,EAAA5G,KACSA,KAAK6nB,sBACNC,EAAAA,WAAW3nB,QAAO,SAAA4nB,GAEdnhB,EAAKihB,qBAAuBE,KAE3BC,KAAKC,EAAAA,aAAa,MAClBD,KAAKE,EAAAA,wBACLxV,WAAU,SAAAvR,GACPyF,EAAKiT,KAAO1Y,KAGxBnB,KAAK6nB,qBAAqBllB,KAAKkX,IAtCG/Y,EAAA,CAArCoM,EAAAA,UAAU,QAAS,CAAEC,QAAQ,oBAAqBE,EAAAA,+CAGnDvM,EAAA,CADC8G,EAAAA,yBACeV,EAAAA,oDAIhBpG,EAAA,CADCuF,EAAAA,0FAXQohB,EAAwBU,EAAArnB,EAAA,CAPpCwF,EAAAA,UAAU,CACPC,SAAU,oBACVC,SAAA,gMAEAsB,UAAW,CAAC,CAAEC,QAAS0Y,GAAezY,YAAamgB,qjBAG1CV,SCmBb,gBAYA,4BCxCA,SAAAW,mDAGA,OAH+CtoB,EAAAsoB,EAAAphB,GAG/CohB,GAH+ChgB,iBAU/C,SAAAigB,IAEIroB,KAAAsoB,eAA0D,IAAIphB,EAAAA,aAC9DlH,KAAAuoB,aAA0C,IAAIrhB,EAAAA,aA8BlD,OAtBImhB,EAAAnoB,UAAAsoB,MAAA,SAAMC,GAAN,IAAA7hB,EAAA5G,KACIA,KAAKuoB,aAAalhB,KAAK,CAAEiF,UAAWtM,OAChCA,KAAK0oB,cACU,OAAXD,EACAA,OAAyBrf,IAAhBpJ,KAAKyoB,OAAuB,KAAOzoB,KAAKyoB,OAEjDA,EAAOE,MAAQ3oB,KAAKyoB,OAIxBzoB,KAAK0oB,YAAYD,GAAQzlB,MAAK,SAAA4lB,GAC1B,IAAMhU,EAAmC,IAAIiU,GAC7CjU,EAAK9R,OAAS8lB,EACdhU,EAAKkU,UAAsB,MAAVL,EAAiB,KAAOA,EAAOK,UAChDliB,EAAK0hB,eAAejhB,KAAK,CACrBiF,UAAW1F,EACXgO,KAAMA,SArBtB9T,EAAA,CADCuF,EAAAA,qEAIDvF,EAAA,CADCuF,EAAAA,8DARQgiB,EAAqBvnB,EAAA,CAJjCwF,EAAAA,UAAU,CACPC,SAAU,iBACVC,SAAU,+BAED6hB,oBCuBX,SAAAU,EACUvG,EACA/E,EACA1S,GAFA/K,KAAAwiB,IAAAA,EACAxiB,KAAAyd,KAAAA,EACAzd,KAAA+K,IAAAA,EAoCF/K,KAAAgpB,UAA0B,GAC1BhpB,KAAAmZ,MAAQ,IAAIV,EAAAA,WACZzY,KAAAwjB,cAAgB,IAAI/K,EAAAA,WAI5BzY,KAAAihB,OAA6B,GAG7BjhB,KAAAmhB,eAA2D,IAAIja,EAAAA,aAiKjE,OAjLE1H,OAAAgC,eAAWunB,EAAA7oB,UAAA,cAAW,KAAtB,WACE,OAAOF,KAAKipB,kBAEd,SAAuBjlB,GACrBhE,KAAKkpB,QAAQllB,oCAcf+kB,EAAA7oB,UAAAgpB,QAAA,SAAQpkB,GAEN,GADA9E,KAAKipB,aAAenkB,EAChB9E,KAAKmpB,YAAYC,MAAO,CAC1BppB,KAAKgpB,UAAUxN,SAAQ,SAAAra,GACrBA,EAAE0U,UAAW,KAEf7V,KAAKgpB,UAAU7jB,MAAK,SAAAhE,GAAK,OAAAA,EAAE2D,MAAQA,KAAM+Q,UAAW,EACpD,IAAMA,EAAW7V,KAAKmpB,YAAYC,MAAMjkB,MAAK,SAAAhE,GAAK,OAAAA,EAAE2D,MAAQA,KAC5D9E,KAAKqpB,WAAWxT,KAKZkT,EAAA7oB,UAAAmpB,WAAR,SAAmBxT,GAAnB,IAKMnF,EALN9J,EAAA5G,KACEA,KAAKspB,YACDtpB,KAAKsY,MACPtY,KAAKsY,KAAKxD,cAGZ9U,KAAKupB,aAAaC,SAClB,IAAI3K,EAAWhJ,EAASgJ,SACF,QAAlBhJ,EAASxQ,OACXqL,EAAS,IAAIO,EAAAA,gBAA8CsR,KAEvC,SAAlB1M,EAASxQ,OACXqL,EAAS,IAAIO,EAAAA,gBAA8CsR,IAC3D1D,EAA+B,EAApBhJ,EAASgJ,UAEA,UAAlBhJ,EAASxQ,OACXqL,EAAS,IAAIO,EAAAA,gBAA8CqT,KAEvC,WAAlBzO,EAASxQ,OACXqL,EAAS,IAAIO,EAAAA,gBAA8CmW,KAEvC,aAAlBvR,EAASxQ,OACXqL,EAAS,IAAIO,EAAAA,gBAA8CsW,KAE7D,IAAMkC,EAAsDzpB,KAAKupB,aAAanX,OAAO1B,GACrF1Q,KAAKsY,KAAOmR,EAAQ3Y,SACpB9Q,KAAKsY,KAAKjT,KAAOwQ,EAASxQ,KAC1BrF,KAAKsY,KAAKuG,SAAWA,EAErB7e,KAAKsY,KAAK6I,eAAezO,WAAU,SAAA9P,GACjCgE,EAAKua,eAAe9Z,KAAKzE,MAE3B5C,KAAKsY,KAAK0I,uBAAuBtO,WAAU,SAAC9P,GAC1CgE,EAAK4c,cAAgB5gB,EACrBgE,EAAK8iB,mBACL9iB,EAAK0iB,eAEPtpB,KAAK2pB,WAGCZ,EAAA7oB,UAAAwpB,iBAAR,WACM1pB,KAAK4pB,kBACP5pB,KAAK4pB,iBAAiB9M,IAAI9c,KAAKsY,KAAKuR,UAAW7pB,KAAKsY,KAAKjT,OAIrD0jB,EAAA7oB,UAAAopB,UAAR,WAAA,IAAA1iB,EAAA5G,KACEA,KAAKmW,UAAUjN,cAAcgB,UAAUC,OAAO,uBAC9CnK,KAAKmW,UAAUjN,cAAcyQ,MAAMiI,QAAU,IAC7CvP,YAAW,WACTzL,EAAKuP,UAAUjN,cAAcgB,UAAUI,IAAI,yBAC1C,MAGLye,EAAA7oB,UAAA2L,gBAAA,WAAA,IAAAjF,EAAA5G,KACEqS,YAAW,SAAA/O,GACTsD,EAAKuiB,YAAYC,MAAM5N,SAAQ,SAAAxX,GAC7B4C,EAAKoiB,UAAU5kB,KAAK,CAClB0lB,UAAW,OACXhlB,KAAMd,EAAEc,KACR+U,KAAM7V,EAAE4a,aAIZhY,EAAKmjB,WAAWzB,eAAe5V,WAAU,SAAA9P,GACvCgE,EAAKqa,OAASre,EACdgE,EAAK0R,KAAK2I,OAASra,EAAKqa,OACpBra,EAAKojB,YAAcpjB,EAAK0R,KAAK2I,QAAUra,EAAK0R,KAAK2I,OAAOtgB,SAC1DiG,EAAK4c,cAAgB5c,EAAK0R,KAAK2I,OAAO,GAAG3H,MAAMsB,WAE7ChU,EAAK4c,cACP5c,EAAK0R,KAAKD,SAASzR,EAAK4c,eAGxB5c,EAAK0R,KAAKD,SAASzR,EAAKuS,UAIxBvS,EAAKqjB,cACPrjB,EAAKqjB,YAAYtJ,cAAcjO,WAAU,SAAAvR,GACvCyF,EAAKsjB,YAAc/oB,KAErByF,EAAKqjB,YAAY1O,MAAQ3U,EAAKoiB,WAG5BpiB,EAAKgjB,kBACPhjB,EAAKgjB,iBAAiBrD,WAAW7T,WAAU,SAAAvR,GAC/B,SAANA,EACFyF,EAAK0R,KAAK3V,OAEG,SAANxB,EACPyF,EAAK0R,KAAK6B,OAGVvT,EAAK0R,KAAKD,SAASlX,MAIrByF,EAAKujB,aACPvjB,EAAKujB,YAAY1e,eAAeiH,WAAU,SAAAvR,GAExC,GADAyF,EAAKojB,WAAa7oB,EACdA,EAAG,CACLyF,EAAKoiB,UAAUxN,SAAQ,SAAAra,GAAOA,EAAE6c,SAAU,KAC1C,IAAMoM,EAA6B,IAAIzL,GAAwB,SAAU,SAAU,eACnFyL,EAAEvL,SAAW,IACbjY,EAAKyiB,WAAWe,GAChBxjB,EAAK+iB,eAGL/iB,EAAKoiB,UAAUxN,SAAQ,SAAAra,GAAOA,EAAE6c,SAAU,KAC1CpX,EAAKsiB,QAAQtiB,EAAKqiB,cAEpBriB,EAAKqjB,YAAY1J,YAIrB3Z,EAAKsiB,QAAQtiB,EAAKsjB,aAClBtjB,EAAK+iB,cAITZ,EAAA7oB,UAAAqhB,mBAAA,WACEvhB,KAAKwhB,cAGCuH,EAAA7oB,UAAAshB,WAAR,WAAA,IAAA5a,EAAA5G,KACEA,KAAKyd,KAAKiI,mBAAkB,WAC1B,IAAMwB,EAAUtgB,EAAK4b,IAAItZ,cAAcU,cACrC,yBAEEsd,IACFtgB,EAAKuP,UAAUjN,cAAcyQ,MAAMuJ,OAAS,eAAegE,EAAQ/D,aAAY,WAKrF4F,EAAA7oB,UAAA4U,YAAA,WACE9U,KAAKupB,aAAaC,UAGpBT,EAAA7oB,UAAAypB,QAAA,WACE3pB,KAAK+pB,WAAWvB,MAAM,CACpBwB,WAAYhqB,KAAKgqB,uDA5MN3c,EAAAA,kBACCmC,EAAAA,cACDyE,EAAAA,qBAIfnT,EAAA,CADCoM,EAAAA,UAAUmd,EAAAA,gBAAiB,CAAEld,QAAQ,oBAChBkd,EAAAA,qDAItBvpB,EAAA,CADCoM,EAAAA,UAAU,YAAa,CAAEC,QAAQ,oBACfE,EAAAA,6CAGnBvM,EAAA,CADCsM,EAAAA,aAAa2R,GAA0B,CAAE5R,QAAQ,oBAC7B4R,uCAGrBje,EAAA,CADCsM,EAAAA,aAAasT,GAAkC,CAAEvT,QAAQ,oBACrCuT,uCAErB5f,EAAA,CADCsM,EAAAA,aAAaiZ,GAAsC,CAAElZ,QAAQ,oBACpCkZ,4CAG1BvlB,EAAA,CADCsM,EAAAA,aAAaqa,GAA0B,CAAEta,QAAQ,oBACrCsa,uCAGb3mB,EAAA,CADCsM,EAAAA,aAAaib,GAAuB,CAAElb,QAAQ,oBAC3Bkb,sCAOpBvnB,EAAA,CADCuF,EAAAA,iGAcDvF,EAAA,CADCuF,EAAAA,6DAIDvF,EAAA,CADC8G,EAAAA,yBACeV,EAAAA,oDAjDL6hB,EAAoBjoB,EAAA,CANhCwF,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,sUAEA8P,cAAeC,EAAAA,kBAAkBC,m5FAIlBnJ,EAAAA,WACCmC,EAAAA,OACDyE,EAAAA,qBAJJ8U,oBC3BT,SAAAuB,KAIJ,OAFIA,EAAApqB,UAAA8S,SAAA,aAJSsX,EAAkBxpB,EAAA,CAN9BwF,EAAAA,UAAU,CACPC,SAAU,aACVC,SAAA,8EAEA8P,cAAcC,EAAAA,kBAAkBC,oKAEvB8T,oBCaT,SAAAC,WAYJ,SAbaA,EAKT/qB,OAAAgC,eAAW+oB,EAAArqB,UAAA,OAAI,KAAf,WACI,OAAOF,KAAK0nB,WAEhB,SAAgB1jB,GACRA,IAAMhE,KAAK0nB,QACX1nB,KAAK0nB,MAAQ1jB,oCALrBlD,EAAA,CADCuF,EAAAA,0FAJQkkB,EAAuBC,EAAA1pB,EAAA,CAlBnCwF,EAAAA,UAAU,CACPC,SAAU,mBACVC,SAAU,mOAcVsB,UAAW,CAAC,CAAEC,QAAS0Y,GAAezY,YAAawiB,YAP1C,4JASAD,oBCKX,SAAAE,IAGAzqB,KAAAub,MAA0B,GAG1Bvb,KAAA0qB,UAA0C,IAAIxjB,EAAAA,aAG9ClH,KAAA2f,KAA8B,eAkBhC,SA5Ba8K,EAYXA,EAAAvqB,UAAAgY,QAAA,SAAQwD,GACW,UAAb1b,KAAK2f,MACP3f,KAAKub,MAAMC,SAAQ,SAAAra,GACjBA,EAAE0U,UAAW,KAEf6F,EAAK7F,UAAW,EAChB7V,KAAK0qB,UAAUrjB,KAAKqU,IAEhBA,EAAK7F,SACP6F,EAAK7F,UAAW,GAEhB6F,EAAK7F,UAAW,EAChB7V,KAAK0qB,UAAUrjB,KAAKqU,KApB1B5a,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADC8G,EAAAA,yBACUV,EAAAA,+CAGXpG,EAAA,CADCuF,EAAAA,4DATUokB,EAA6BE,EAAA7pB,EAAA,CArBzCwF,EAAAA,UAAU,CACTC,SAAU,0BACVC,SAAU,yXAeVsB,UAAW,CACT,CAAEC,QAAS0Y,GAAezY,YAAa2iB,iCAG9BF,oBCgBT,SAAAG,EACYxM,EACAyM,EACA/hB,GAFA9I,KAAAoe,QAAAA,EACApe,KAAA6qB,iBAAAA,EACA7qB,KAAA8I,WAAAA,EAVZ9I,KAAA8qB,iBAAmB,IAAInrB,MACvBK,KAAA+qB,MAAgB,EAGN/qB,KAAA6V,SAAW,IAAI3O,EAAAA,mBA2D7B,SAhEa0jB,EAcTA,EAAA1qB,UAAA8qB,YAAA,SAAYrO,GACR,IAAMzL,EAAgC,GAClB,IAAhByL,EAAMoO,MACN7Z,EAAS9M,KAAK,CACV6mB,QAAS,QACTC,QAAS,SACTC,SAAU,QACVC,SAAU,QAGdla,EAAS9M,KAAK,CACV6mB,QAAS,MACTC,QAAS,MACTC,SAAU,QACVC,SAAU,QAIlB,IAAMza,EAAmB3Q,KAAKoe,QACzBlN,WACAE,oBAAoBuL,EAAMpT,SAC1B8H,cAAcH,GACbgB,EAAalS,KAAKoe,QAAQje,OAAO,CACnCwQ,iBAAgBA,EAChBJ,aAAa,EACbyB,cAAe,qCAEnBhS,KAAK8qB,iBAAiB1mB,KAAK8N,GAC3B,IAAMxB,EAAS,IAAIO,EAAAA,gBAAgBoa,EAAkBrrB,KAAK6qB,kBAEpDxX,EAAMnB,EAAWE,OAAO1B,GAC9B2C,EAAIvC,SAASia,MAAQpO,EAAMoO,MAAQ,EACnC1X,EAAIvC,SAASyK,MAAQoB,EAAMjB,KAAKH,OAI7BqP,EAAA1qB,UAAAorB,gBAAP,SAAuBtqB,GACGhB,KAAK8I,WAAWI,cAAcqiB,SAASvqB,IAEzDhB,KAAKwrB,gBAIbZ,EAAA1qB,UAAAsrB,aAAA,WACIxrB,KAAK8qB,iBAAiBtP,SAAQ,SAAClX,GAAM,OAAAA,EAAEqO,aACvC3S,KAAK8qB,iBAAiBnqB,OAAS,GAEnCiqB,EAAA1qB,UAAA4U,YAAA,WACI9U,KAAKwrB,yDArDY1b,EAAAA,eACS2b,EAAAA,wBACNpe,EAAAA,cAPfvM,EAAA,CAARuF,EAAAA,4DACSvF,EAAA,CAAT8G,EAAAA,iEA6CD9G,EAAA,CADCsV,EAAAA,aAAa,iBAAkB,CAAC,+IAjDxBwU,EAAgBS,EAAAvqB,EAAA,CAf5BwF,EAAAA,UAAU,CACPC,SAAU,WACVC,SAAU,kSAWV8P,cAAeC,EAAAA,kBAAkBC,40CAWZ1G,EAAAA,QACS2b,EAAAA,iBACNpe,EAAAA,cAXfud,oBCNT,SAAAc,EAAoBniB,GAAAvJ,KAAAuJ,QAAAA,EAFVvJ,KAAA2rB,YAAc,IAAIzkB,EAAAA,aAUhC,OANIwkB,EAAAxrB,UAAA0rB,aAAA,SAAajP,WACTA,EAAM3G,mBACc,QAApBlM,EAAa,QAAbvC,EAAIvH,KAAK0b,YAAI,IAAAnU,OAAA,EAAAA,EAAEgU,aAAK,IAAAzR,OAAA,EAAAA,EAAEnJ,SAClBX,KAAK2rB,YAAYtkB,KAAK,CAAEqU,KAAM1b,KAAK0b,KAAMnS,QAASvJ,KAAKuJ,QAASwhB,MAAO/qB,KAAK+qB,kDALvD1d,EAAAA,cAJpBvM,EAAA,CAARuF,EAAAA,wBAAcwlB,EAAAA,wCACN/qB,EAAA,CAARuF,EAAAA,6DACSvF,EAAA,CAAT8G,EAAAA,oEAHQ8jB,EAAmB5qB,EAAA,CAZ/BwF,EAAAA,UAAU,CACPC,SAAU,eACVC,SAAU,8cAQV8P,cAAeC,EAAAA,kBAAkBC,8BAOJnJ,EAAAA,cALpBqe,oBCVX,SAAAI,EAAoBjY,EAAwBhF,GAAxB7O,KAAA6T,GAAAA,EAAwB7T,KAAA6O,SAAAA,EALnC7O,KAAA+rB,UAAoB,MACpB/rB,KAAAgsB,MAAgB,IAEzBhsB,KAAAisB,OAAS,GA4FX,OArF8BH,EAAA5rB,UAAAgsB,aAAA,WACrBlsB,KAAKymB,SACRzmB,KAAKmQ,QAImB2b,EAAA5rB,UAAAisB,aAAA,WACtBnsB,KAAKymB,SACPzmB,KAAKyT,QAITqY,EAAA5rB,UAAAiQ,KAAA,WACEnQ,KAAKG,SACLH,KAAKosB,cACLpsB,KAAK6O,SAASwd,SAASrsB,KAAKymB,QAAS,oBAGvCqF,EAAA5rB,UAAAuT,KAAA,WACE,GAAIzT,KAAKymB,QACP,IACEzmB,KAAK6O,SAASyd,YAAYtsB,KAAKymB,QAAS,mBACxCzmB,KAAK6O,SAAStE,YAAYG,SAASxH,KAAMlD,KAAKymB,SAC9CzmB,KAAKymB,QAAU,KACf,MAAOhiB,MAIbqnB,EAAA5rB,UAAAC,OAAA,WACKH,KAAKusB,eACNvsB,KAAKymB,QAAUzmB,KAAK6O,SAASlE,cAAc,QAE7C3K,KAAK6O,SAAShE,YACZ7K,KAAKymB,QACLzmB,KAAK6O,SAAS2d,WAAWxsB,KAAKusB,eAGhCvsB,KAAK6O,SAAShE,YAAYH,SAASxH,KAAMlD,KAAKymB,SAE9CzmB,KAAK6O,SAASwd,SAASrsB,KAAKymB,QAAS,cACrCzmB,KAAK6O,SAASwd,SAASrsB,KAAKymB,QAAS,cAAczmB,KAAK+rB,WACxD/rB,KAAK6O,SAASG,SAAShP,KAAKymB,QAAS,qBAAsB,WAAWzmB,KAAKgsB,MAAK,MAChFhsB,KAAK6O,SAASG,SAAShP,KAAKymB,QAAS,kBAAmB,WAAWzmB,KAAKgsB,MAAK,MAC7EhsB,KAAK6O,SAASG,SAAShP,KAAKymB,QAAS,gBAAiB,WAAWzmB,KAAKgsB,MAAK,MAC3EhsB,KAAK6O,SAASG,SAAShP,KAAKymB,QAAS,aAAc,WAAWzmB,KAAKgsB,MAAK,QAI1EF,EAAA5rB,UAAA4U,YAAA,WACE9U,KAAKyT,QAGPqY,EAAA5rB,UAAAksB,YAAA,WACE,IAMI/G,EACAoH,EAPEC,EAAU1sB,KAAK6T,GAAG3K,cAAcoc,wBAEhCqH,EAAa3sB,KAAKymB,QAAQnB,wBAE1BsH,EAAY3M,OAAO4M,aAAeniB,SAASoiB,gBAAgBC,WAAariB,SAASxH,KAAK6pB,WAAa,EAKlF,QAAnB/sB,KAAK+rB,YACP1G,EAAMqH,EAAQrH,IAAMsH,EAAWzJ,OAASljB,KAAKisB,OAC7CQ,EAAOC,EAAQD,MAAQC,EAAQ1J,MAAQ2J,EAAW3J,OAAS,GAGtC,WAAnBhjB,KAAK+rB,YACP1G,EAAMqH,EAAQnH,OAASvlB,KAAKisB,OAC5BQ,EAAOC,EAAQD,MAAQC,EAAQ1J,MAAQ2J,EAAW3J,OAAS,GAGtC,SAAnBhjB,KAAK+rB,YACP1G,EAAMqH,EAAQrH,KAAOqH,EAAQxJ,OAASyJ,EAAWzJ,QAAU,EAC3DuJ,EAAOC,EAAQD,KAAOE,EAAW3J,MAAQhjB,KAAKisB,QAGzB,UAAnBjsB,KAAK+rB,YACP1G,EAAMqH,EAAQrH,KAAOqH,EAAQxJ,OAASyJ,EAAWzJ,QAAU,EAC3DuJ,EAAOC,EAAQM,MAAQhtB,KAAKisB,QAG9BjsB,KAAK6O,SAASG,SAAShP,KAAKymB,QAAS,MAAUpB,EAAMuH,EAAS,MAC9D5sB,KAAK6O,SAASG,SAAShP,KAAKymB,QAAS,OAAWgG,EAAI,gDAxF9Bpf,EAAAA,kBAA8B4f,EAAAA,aANpCnsB,EAAA,CAAjBuF,EAAAA,MAAM,uEACEvF,EAAA,CAARuF,EAAAA,iEACQvF,EAAA,CAARuF,EAAAA,6DAS2BvF,EAAA,CAA3BsV,EAAAA,aAAa,kIAMctV,EAAA,CAA3BsV,EAAAA,aAAa,kIAlBH0V,EAAkBhrB,EAAA,CAH9BwhB,EAAAA,UAAU,CACT/b,SAAU,uCASc8G,EAAAA,WAA8B4f,EAAAA,aAP3CnB,oBCKb,SAAAoB,KAA8B,OAAjBA,EAAepsB,EAAA,CAN3B+V,EAAAA,SAAS,CACNC,aAAc,CAACgV,IACf/U,QAAS,CAAEJ,EAAAA,cACXK,QAAS,CAAC8U,IACVhkB,UAAW,MAEFolB,oBCEb,SAAAC,KAA4B,OAAfA,EAAYrsB,EAAA,CANxB+V,EAAAA,SAAS,CACRC,aAAc,CAAC0I,GAAiBoL,GAAkBc,IAClD3U,QAAS,CAACJ,EAAAA,aAAauW,IACvBlW,QAAS,CAACwI,GAAiBoL,GAAkBc,IAC7C5jB,UAAW,MAEAqlB,MCFPC,GAAa,CACf9C,GACAhK,GACAmH,GACA8C,GACAE,kBASJ,SAAA4C,KAA+B,OAAlBA,EAAevsB,EAAA,CAN3B+V,EAAAA,SAAS,CACNC,aAAc,CAACsW,IACfrW,QAAS,CAACJ,EAAAA,aAAc6H,GAAiB2O,IACzCnW,QAAS,CAACoW,IACVtlB,UAAW,MAEFulB,oBC0Bb,SAAAC,KAAiC,OAApBA,EAAiBxsB,EAAA,CAhC7B+V,EAAAA,SAAS,CACNC,aAAc,CACViS,GACAhK,GACAJ,GACA4D,GACA+B,GACA8C,GACAG,GACA7G,GACA2F,IAEJtP,QAAS,CAACJ,EAAAA,aAAa+H,EAAAA,aAAcD,GAAqB4O,GAAiB7O,GAAiB+O,EAAAA,aAAcC,EAAAA,gBAC1GxW,QAAS,CACL+R,GACAhK,GACAJ,GACA4D,GACA+B,GACA8C,GACAG,GACA7G,GACA2F,IAEJoH,gBAAiB,CACbnJ,GACA/B,GACA6E,GACAG,IAEJzf,UAAW,MAEFwlB,qBCpCb,SAAAI,mDAEA,OAFyC5tB,EAAA4tB,EAAA1mB,GAEzC0mB,GAFyCzlB,kBAgCvC,SAAA0lB,EAAsB5iB,EAAgCC,GAAtD,IAAApE,EACEI,EAAApG,KAAAZ,OAAOA,YADa4G,EAAAmE,IAAAA,EAAgCnE,EAAAoE,IAAAA,EAlBtDpE,EAAAsE,UAAoB,EAGpBtE,EAAAqE,UAAoB,EAGpBrE,EAAAwE,KAAsB,KAGtBxE,EAAArD,MAAgB,GAGhBqD,EAAAgC,SAAmB,EAGnBhC,EAAAgnB,eAAyB,EAQzBhnB,EAAA6E,eAAsD,IAAIvE,EAAAA,aAE1DN,EAAA8E,YAAqC,IAAIxE,EAAAA,aAGzCN,EAAAsR,QAA6C,IAAIhR,EAAAA,aAEzCN,EAAAwF,QAAmB,IA+C7B,OAjFyCtM,EAAA6tB,EAAA3mB,GAqBvC2mB,EAAAztB,UAAAwM,MAAA,aAcAlN,OAAAgC,eAAWmsB,EAAAztB,UAAA,QAAK,KAAhB,WACE,OAAOF,KAAKoM,YAId,SAAiBpI,GACf,GAAIA,GAAKhE,KAAKoM,aAAgBhD,IAANpF,EAAiB,CACvC,IAAMqI,EAAMrM,KAAKoM,OACjBpM,KAAKoM,OAASpI,EACdhE,KAAK0L,YAAYrE,KAAKrD,GACtBhE,KAAKyL,eAAepE,KAAK,CACvBiF,UAAWtM,KACXyC,MAAOuB,EACPuI,SAAUF,EACVU,YAAa/M,KAAKgL,IAAI9B,kDAU5BykB,EAAAztB,UAAA8S,SAAA,WACOhT,KAAK4tB,eAA+B,MAAd5tB,KAAKyC,QAC9BzC,KAAKyC,OAAQ,IAIjBkrB,EAAAztB,UAAA6V,YAAA,SAAYnT,GAAZ,IAAAgE,EAAA5G,KAGEqS,YAAW,WACJzL,EAAKqE,UAAarE,EAAKsE,UAG1BtE,EAAKsR,QAAQ7Q,KAAK,CAChBiF,UAAW1F,EACXmG,YAAanG,EAAKoE,IAAI9B,cACtB8D,UAAWpK,EACXH,MAAOmE,EAAKnE,UAGf,+CAzDsBwR,EAAAA,yBAAgC5G,EAAAA,cArBrBvM,EAAA,CAArCoM,EAAAA,UAAU,QAAS,CAAEC,QAAQ,oBAAeE,EAAAA,yCAG7CvM,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,6DAIDvF,EAAA,CADCuF,EAAAA,gEAIDvF,EAAA,CADCuF,EAAAA,sEASDvF,EAAA,CADC8G,EAAAA,yBACeV,EAAAA,oDAEhBpG,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAGbpG,EAAA,CADC8G,EAAAA,yBACQV,EAAAA,6CAQTpG,EAAA,CADCuF,EAAAA,6FAvCUsnB,EAAmB7sB,EAAA,CAN/BwF,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,ozBACA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,gCAwBdtJ,EAAAA,kBAAgC5G,EAAAA,cAtBhDsgB,IAA4BtlB,iBCdzC,SAAAwlB,KAAgC,OAAnBA,EAAgB/sB,EAAA,CAN5B+V,EAAAA,SAAS,CACRC,aAAc,CAAC6W,IACf5W,QAAS,CAACJ,EAAAA,aAAcmX,EAAAA,aACxB9W,QAAS,CAAC2W,IACV7lB,UAAW,MAEA+lB,oBCuBX,SAAAE,EAAoB5X,GAAAnW,KAAAmW,UAAAA,EArBpBnW,KAAAoL,KAAsB,KAMtBpL,KAAAub,MAAsB,GAGtBvb,KAAAyf,YAAiC,IAAIvY,EAAAA,aAGrClH,KAAAyU,SAAsC,IAAIvN,EAAAA,aAO1ClH,KAAAmQ,MAAgB,EA8ClB,OAzCE4d,EAAA7tB,UAAA2L,gBAAA,aAGAkiB,EAAA7tB,UAAAoU,MAAA,WACEtU,KAAKmQ,MAAO,EACZnQ,KAAKyU,SAASpN,KAAK,CACjBiF,UAAWtM,QAMf+tB,EAAA7tB,UAAAge,KAAA,SAAK8P,EAAOC,EAAMC,GAAlB,IAAAtnB,EAAA5G,UAAkB,IAAAkuB,IAAAA,GAAA,GAChBluB,KAAKmQ,MAAO,EACZkC,YAAW,WACT,IAAM8b,EAAavnB,EAAKuP,UAAUjN,cAAcoc,wBAC5CmH,GAAgB,IAATyB,EAAiBF,EAAQA,EAAQG,EAAWnL,MACnDqC,EAAM4I,GACG,IAATC,GAAkBF,EAAQG,EAAWnL,MAAQ/C,OAAOmO,WACtD3B,EAAOxM,OAAOmO,WAAaD,EAAWnL,OACpB,IAATkL,GAAiBF,EAAQG,EAAWnL,MAAQ,IACrDyJ,EAAO,GAELpH,EAAM8I,EAAWjL,OAASjD,OAAOoO,cACnChJ,EAAM4I,EAAOE,EAAWjL,QAE1Btc,EAAKuP,UAAUjN,cAAcyQ,MAAM8S,KAAOA,EAAO,KACjD7lB,EAAKuP,UAAUjN,cAAcyQ,MAAM0L,IAAMA,EAAM,OAE9C,IAOL0I,EAAA7tB,UAAAouB,gBAAA,SAAgB5S,GACTA,EAAK2E,cAA4BjX,IAAjBsS,EAAK2E,SACxBrgB,KAAKyf,YAAYpY,KAAKqU,6CAzCKrO,EAAAA,cArB/BvM,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,6DAIDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAGbpG,EAAA,CADC8G,EAAAA,yBACSV,EAAAA,8CAGVpG,EAAA,CADCoM,EAAAA,UAAU,0BACHG,EAAAA,0CAjBG0gB,EAAsBjtB,EAAA,CALlCwF,EAAAA,UAAU,CACTC,SAAU,kBACVC,SAAA,k8DACA2L,KAAM,CAAEoc,MAAO,sDAyBgBlhB,EAAAA,cAvBpB0gB,qBCFb,SAAAS,mDAGA,OAHiD1uB,EAAA0uB,EAAAxnB,GAGjDwnB,GAHiDtmB,iBA8C/C,SAAAumB,EACUzjB,EACA0jB,EACA7D,EACA8D,GAHA3uB,KAAAgL,IAAAA,EACAhL,KAAA0uB,gBAAAA,EACA1uB,KAAA6qB,iBAAAA,EACA7qB,KAAA2uB,SAAAA,EA/BV3uB,KAAA4uB,uBAAoE,IAAI1nB,EAAAA,aAGxElH,KAAAggB,KAAe,EAEfhgB,KAAA6uB,cAA8B,GA8HhC,OAxHEJ,EAAAvuB,UAAA4uB,cAAA,SAAclsB,GADd,IAAAgE,EAAA5G,KAEEA,KAAK+uB,eAAe/rB,MAAK,SAAAuY,GACvB3Y,EAAEoT,kBACFpT,EAAEsT,iBACFtP,EAAKooB,oBACLpoB,EAAKqoB,YAAY1T,MAAQA,EAGzB3U,EAAKqoB,YAAY/Q,KAAKtb,EAAEwnB,EAAGxnB,EAAEQ,EAAGwD,EAAKoZ,SAgBzCyO,EAAAvuB,UAAA8S,SAAA,WACkB,MAAZhT,KAAKggB,MACPhgB,KAAKggB,IAA8F,QAAxFC,OAAOC,iBAAiBlgB,KAAKgL,IAAI9B,cAAe,MAAMiX,iBAAiB,eAItFsO,EAAAvuB,UAAA8uB,kBAAA,WACE,IAAME,EAAUxkB,SAASC,cAAc,OACvCukB,EAAQhlB,UAAUI,IAAI,sBACtB4kB,EAAQ5Q,iBAAiB,QAASte,KAAKmvB,aAAatc,KAAK7S,OACzDkvB,EAAQ5Q,iBAAiB,cAAete,KAAKovB,cAAcvc,KAAK7S,OAEhE0K,SAASxH,KAAK2H,YAAYqkB,GAC1B,IAAMG,EAAUrvB,KAAK0uB,gBAAgBY,wBAAwBvB,IACvDwB,EAAevvB,KAAK6qB,iBAAiB2E,gBAAgBH,GAC3DrvB,KAAKivB,YAAcM,EAAaze,SAChCoe,EAAQrkB,YAAY0kB,EAAanc,SAASlK,eAE1ClJ,KAAKyvB,8BACLzvB,KAAK0vB,gCAGPjB,EAAAvuB,UAAAivB,aAAA,SAAavsB,GACX5C,KAAKmK,UAGPskB,EAAAvuB,UAAAkvB,cAAA,SAAcxsB,GACR8H,SAASilB,kBAAkB/sB,EAAEgtB,QAAShtB,EAAEitB,SAASC,SAAS9vB,KAAKgL,IAAI9B,gBACrEtG,EAAEoT,kBACFpT,EAAEsT,iBAEFlW,KAAKivB,YAAY/Q,KAAKtb,EAAEwnB,EAAGxnB,EAAEQ,EAAGpD,KAAKggB,OAGrCpd,EAAEsT,iBACFlW,KAAKmK,WAMDskB,EAAAvuB,UAAAuvB,4BAAR,WACMzvB,KAAK+vB,iBACP/vB,KAAK+vB,eAAehb,cACpB/U,KAAK+vB,oBAAiB3mB,GAEpBpJ,KAAKgwB,iBACPhwB,KAAKgwB,eAAejb,cACpB/U,KAAKgwB,oBAAiB5mB,IAIlBqlB,EAAAvuB,UAAAwvB,6BAAR,WAAA,IAAA9oB,EAAA5G,KACEA,KAAK+vB,eAAiB/vB,KAAKivB,YAAYxP,YAAY/M,WAAU,SAAAvR,GAC3DyF,EAAKuD,SACLvD,EAAKgoB,uBAAuBvnB,KAAK,CAC/BiF,UAAW1F,EACXqpB,SAAUrpB,EAAKspB,gBACfnjB,YAAanG,EAAKoE,IAAI9B,cACtBinB,SAAUhvB,OAGdnB,KAAKgwB,eAAiBhwB,KAAKivB,YAAYxa,SAAS/B,WAAU,SAAAvR,GACxDyF,EAAK6oB,kCAIDhB,EAAAvuB,UAAAiK,OAAR,iBACEnK,KAAK6qB,iBAAiBrhB,QACtBxJ,KAAKyvB,8BACwC,QAA7CloB,EAAAmD,SAASd,cAAc,8BAAsB,IAAArC,GAAAA,EAAE4C,UAGzCskB,EAAAvuB,UAAA6uB,aAAR,WAAA,IAAAnoB,EAAA5G,KACE,OAAO,IAAIqC,SAAsB,SAACC,EAASC,GACzC,GAAuC,mBAA3BqE,EAAqB,iBAAkB,CACjD,IAAMV,EAAMU,EAAKwpB,iBAAiBxpB,EAAKspB,iBACnChqB,aAAe7D,QACjB6D,EAAIlD,MAAK,SAAA4lB,GACPtmB,EAAQsmB,MAGVtmB,EAAQ4D,QAEDvG,MAAMkG,QAAQe,EAAKwpB,kBAC5B9tB,EAAQsE,EAAKwpB,kBAGb9tB,EAAQ,QAKdmsB,EAAAvuB,UAAA4U,YAAA,WACE9U,KAAKyvB,wEArGQpiB,EAAAA,kBACY+B,EAAAA,gCACCqc,EAAAA,wBACRlc,EAAAA,YAxCpBzO,EAAA,CADCuF,EAAAA,wBACY0nB,uCAGbjtB,EAAA,CADCuF,EAAAA,uEAIDvF,EAAA,CADCuF,EAAAA,wEAIDvF,EAAA,CADC8G,EAAAA,yBACuBV,EAAAA,4DAGxBpG,EAAA,CADCuF,EAAAA,4DASDvF,EAAA,CADCsV,EAAAA,aAAa,cAAe,CAAC,4DACbia,8EAtBN5B,EAAsB3tB,EAAA,CAHlCwhB,EAAAA,UAAU,CACT/b,SAAU,2CAyCK8G,EAAAA,WACY+B,EAAAA,yBACCqc,EAAAA,iBACRlc,EAAAA,YA1CTkf,oBCJb,SAAA6B,KAEA,OAFaA,EAAmBxvB,EAAA,CAN/B+V,EAAAA,SAAS,CACNC,aAAc,CAACiX,GAAwBU,IACvC1X,QAAS,CAACJ,EAAAA,cACVK,QAAS,CAAC+W,GAAwBU,IAClC3mB,UAAW,MAEFwoB,oBCkBT,SAAAC,EAAsBxlB,GAAA/K,KAAA+K,IAAAA,EAGtB/K,KAAAwwB,SAAmB,QACnBxwB,KAAAyC,MAAa,KAEbzC,KAAAywB,MAAgB,KAGhBzwB,KAAA0L,YAAkC,IAAIxE,EAAAA,aAItClH,KAAA0wB,aAAsC,IAAIxpB,EAAAA,aA2B9C,OAvBI1H,OAAAgC,eAAW+uB,EAAArwB,UAAA,SAAM,KAAjB,WACI,OAAOF,KAAK2wB,aAEhB,SAAkB3sB,GACdhE,KAAK2wB,QAAU3sB,EACfhE,KAAK0wB,aAAarpB,KAAKrD,oCAM3BusB,EAAArwB,UAAAsJ,MAAA,WACIxJ,KAAK4wB,QAAS,EACd5wB,KAAKyC,MAAQ,KACbzC,KAAK+K,IAAI0B,iBAGb8jB,EAAArwB,UAAA2wB,UAAA,SAAUpuB,EAAY+tB,GAClBxwB,KAAK4wB,QAAS,EACd5wB,KAAKwwB,SAAWA,EAChBxwB,KAAKyC,MAAQA,EACbzC,KAAK+K,IAAI0B,0DAtCcwH,EAAAA,qBAM3BnT,EAAA,CADCuF,EAAAA,6DAIDvF,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAIbpG,EAAA,CADC8G,EAAAA,yBACaV,EAAAA,kDAIdpG,EAAA,CADCuF,EAAAA,8FAlBiBkqB,EAAuBzvB,EAAA,CAD5CwhB,EAAAA,mCAG8BrO,EAAAA,qBAFTsc,qBCiDpB,SAAAO,EAAoB/lB,GAApB,IAAAnE,EACEI,EAAApG,KAAAZ,OAAOA,YADW4G,EAAAmE,IAAAA,EAhEZnE,EAAAmqB,eAAwB,GAYhCnqB,EAAAwE,KAAsB,KAGtBxE,EAAAgZ,UAAoB,aAGpBhZ,EAAA2U,MAAgC,GAGhC3U,EAAA+Y,KAAe,SAGf/Y,EAAAoqB,UAAoB,OAGpBpqB,EAAAmC,WAAqB,QAGrBnC,EAAAqqB,oBAA2C,IAAI/pB,EAAAA,aAa/CN,EAAAsqB,qBAA4C,IAAIhqB,EAAAA,eAkDlD,OA/F8CpH,EAAAgxB,EAAA9pB,GAmC5CxH,OAAAgC,eAAWsvB,EAAA5wB,UAAA,gBAAa,KAAxB,WACE,OAAOF,KAAK+wB,gBAAkB,QAEhC,SAAyB/sB,GACvBhE,KAAK+wB,eAAiB/sB,EACtBhE,KAAKixB,oBAAoB5pB,KAAKrH,KAAKmxB,eACnCnxB,KAAK+K,IAAI0B,iDAOXjN,OAAAgC,eAAWsvB,EAAA5wB,UAAA,iBAAc,KAAzB,WADA,IAAA0G,EAAA5G,KAEE,OAAOA,KAAK+wB,eAAejqB,KAAI,SAAA3F,GAAK,OAAAA,EAAEyF,EAAKmC,gBAAgB,QAE7D,SAA0B/E,GAA1B,IAAA4C,EAAA5G,KACQqM,EAAMrM,KAAKoxB,eACR,MAALptB,IACFA,EAAI,IAEFqtB,KAAKC,UAAUjlB,IAAQglB,KAAKC,UAAUttB,KACxChE,KAAKmxB,cAAgBnxB,KAAKub,MAAM7H,QAAO,SAAAvS,GAAK,OAAA6C,EAAE8rB,SAAS3uB,EAAEyF,EAAKmC,gBAC9D/I,KAAKkxB,qBAAqB7pB,KAAKrH,KAAKoxB,kDAIxCN,EAAA5wB,UAAA2L,gBAAA,WACE7L,KAAK+K,IAAI0B,iBAOXqkB,EAAA5wB,UAAAqxB,mBAAA,SAAmB9uB,EAAY+uB,GACzBxxB,KAAKiL,WACW,WAAdjL,KAAK2f,KACP3f,KAAKoxB,eAAiB,CAAC3uB,GAEnB+uB,EACGxxB,KAAKoxB,eAAetB,SAASrtB,KAChCzC,KAAKoxB,eAAc1sB,EAAO1E,KAAKoxB,eAAmB,CAAC3uB,KAGrDzC,KAAKoxB,eAAiBpxB,KAAKoxB,eAAe1d,QAAO,SAAAvS,GAAK,OAAAA,IAAMsB,OAMpEquB,EAAA5wB,UAAAwM,MAAA,aAGAokB,EAAA5wB,UAAAuxB,eAAA,SAAe7uB,GACX5C,KAAKiL,UACPjL,KAAKixB,oBAAoB5pB,KAAK,CAACzE,8CAzBRqR,EAAAA,qBA7DzBnT,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,8DAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,wBACM1G,oCAGPmB,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,kEAIDvF,EAAA,CADC8G,EAAAA,yBACoBV,EAAAA,yDAGrBpG,EAAA,CADCuF,EAAAA,iGAWDvF,EAAA,CADC8G,EAAAA,yBACqBV,EAAAA,0DAGtBpG,EAAA,CADCuF,EAAAA,kGA/CUyqB,EAAwBhwB,EAAA,CANpCwF,EAAAA,UAAU,CACTC,SAAU,oBACVC,SAAA,+qCACA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,gCAoEhBtJ,EAAAA,qBAlEd6c,IAAiCzoB,kBCoD1C,SAAAqpB,EAAsB3mB,GAAtB,IAAAnE,EACII,EAAApG,KAAAZ,KAAM+K,IAAI/K,YADQ4G,EAAAmE,IAAAA,EAnCtBnE,EAAA2U,MAAa,CACT,CACI1B,KAAM,QACNpX,MAAO,SAEX,CACIoX,KAAM,YACNpX,MAAO,aAEX,CACIoX,KAAM,aACNpX,MAAO,cAEX,CACIoX,KAAM,YACNpX,MAAO,aAEX,CACIoX,KAAM,WACNpX,MAAO,YAEX,CACIoX,KAAM,QACNpX,MAAO,UAIfmE,EAAA+qB,SAAuB,IAAIlZ,EAAAA,WAC3B7R,EAAAgrB,OAAqB,IAAInZ,EAAAA,WAEzB7R,EAAAirB,aAAoB,KAEpBjrB,EAAAkrB,YAAsB,EACtBlrB,EAAAmrB,cAAwB,UA6D5B,OAjGiDjyB,EAAA4xB,EAAA1qB,KAApC0qB,EA0CTA,EAAAxxB,UAAA2L,gBAAA,WACI7L,KAAK0f,UAAUyR,cAAgB,CAACnxB,KAAKub,MAAM,KAE/CmW,EAAAxxB,UAAA8xB,WAAA,SAAWpvB,GACP5C,KAAK0L,YAAYrE,QAErBqqB,EAAAxxB,UAAA+xB,kBAAA,SAAkB1W,GAEdvb,KAAK6xB,aAAetW,EAAM,GAC1Bvb,KAAK8xB,WAAa9xB,KAAK6xB,cAA2C,SAA3B7xB,KAAK6xB,aAAapvB,MACzDzC,KAAK+xB,aAAe/xB,KAAK6xB,cAA2C,YAA3B7xB,KAAK6xB,aAAapvB,MAC3DzC,KAAK+K,IAAI0B,gBACTzM,KAAK0L,YAAYrE,QAGrB7H,OAAAgC,eAAIkwB,EAAAxxB,UAAA,YAAS,KAAb,WACI,IAAIiZ,EAAQ,IAAIV,EAAAA,WAChB,OAAQzY,KAAK6xB,aAAapvB,OACtB,IAAK,QAGD,OAFAzC,KAAK2xB,SAAW3xB,KAAK4xB,OAASzY,EAEvB,CACH+Y,UAAW,QACXzB,MAAOzwB,KAAKywB,MACZ0B,SAAU,OACV1vB,MAAOzC,KAAK2xB,SAASnY,eAE7B,IAAK,WACD,MAAO,CACH0Y,UAAW,QACXzB,MAAOzwB,KAAKywB,MACZ0B,SAAU,OACV1vB,MAAOzC,KAAK2xB,SAASnY,eAE7B,IAAK,YACDxZ,KAAK4xB,OAASzY,EAAM2B,MAAM,QAC1B9a,KAAK2xB,SAAWxY,EAAMwB,QAAQ,QAC9B,MACJ,IAAK,aACD3a,KAAK4xB,OAASzY,EAAM2B,MAAM,SAC1B9a,KAAK2xB,SAAWxY,EAAMwB,QAAQ,SAC9B,MACJ,IAAK,YACD3a,KAAK4xB,OAASzY,EAAM2B,MAAM,QAC1B9a,KAAK2xB,SAAWxY,EAAMwB,QAAQ,QAItC,MAAO,CACHuX,UAAW,UACXzB,MAAOzwB,KAAKywB,MACZ0B,SAAU,OACV1vB,MAAO,CAACzC,KAAK2xB,SAASnY,cAAexZ,KAAK4xB,OAAOpY,0FAxD9BvF,EAAAA,qBArC4BnT,EAAA,CAAtDoM,EAAAA,UAAU4jB,GAA0B,CAAE3jB,QAAQ,oBAAmB2jB,qCADzDY,EAA2BU,EAAAtxB,EAAA,CApBvCwF,EAAAA,UAAU,CACPC,SAAU,wBACVC,SAAU,itBAaVsB,UAAW,CACP,CAAEC,QAASwoB,GAAyBvoB,YAAaoqB,IAErD/U,gBAAiBC,EAAAA,wBAAwBC,gCAwCdtJ,EAAAA,qBAtClByd,IAAoCnB,mBCyC7C,SAAA8B,EAAsBtnB,GAAtB,IAAAnE,EACII,EAAApG,KAAAZ,KAAM+K,IAAI/K,YADQ4G,EAAAmE,IAAAA,EApCtBnE,EAAA4pB,SAAmB,QAEnB5pB,EAAA0rB,UAAmB,CACf,CACI9N,MAAO,KACP/hB,MAAO,SAEX,CACI+hB,MAAO,QACP/hB,MAAO,aAEX,CACI+hB,MAAO,YACP/hB,MAAO,aAEX,CACI+hB,MAAO,qBACP/hB,MAAO,mBAEX,CACI+hB,MAAO,eACP/hB,MAAO,gBAEX,CACI+hB,MAAO,wBACP/hB,MAAO,sBAEX,CACI+hB,MAAO,WACP/hB,MAAO,YAEX,CACI+hB,MAAO,cACP/hB,MAAO,yBAoCnB,OAvEmD3C,EAAAuyB,EAAArrB,KAAtCqrB,EA0CTA,EAAAnyB,UAAAqyB,iBAAA,SAAiB3vB,GAEb5C,KAAK0L,YAAYrE,QAGrBgrB,EAAAnyB,UAAAsyB,aAAA,SAAa5vB,GAAb,IAAAgE,EAAA5G,KAEI,IAAKA,KAAK6nB,qBACN,OAAO,IAAIC,EAAAA,YAAW,SAAAC,GAClBnhB,EAAKihB,qBAAuBE,KAE3BC,KAAKC,EAAAA,aAAa,MAClBD,KAAKE,EAAAA,wBACLxV,WAAU,SAAAvR,GACPyF,EAAK8E,YAAYrE,UAG7BrH,KAAK6nB,qBAAqBllB,KAAKC,IAGnCpD,OAAAgC,eAAI6wB,EAAAnyB,UAAA,YAAS,KAAb,WACI,MAAO,CACHgyB,UAAWlyB,KAAKwwB,SAChBC,MAAOzwB,KAAKywB,MACZ0B,SAAU,SACV1vB,MAAOzC,KAAKyC,iFA7BOwR,EAAAA,qBAtClBoe,EAA6BI,EAAA3xB,EAAA,CArBzCwF,EAAAA,UAAU,CACPC,SAAU,0BACVC,SAAU,qiBAeVsB,UAAW,CACP,CAAEC,QAASwoB,GAAyBvoB,YAAayqB,6BAyC1Bxe,EAAAA,qBAtClBoe,IAAsC9B,mBCK/C,SAAAmC,EAAsB3nB,GAAtB,IAAAnE,EACII,EAAApG,KAAAZ,KAAM+K,IAAI/K,YADQ4G,EAAAmE,IAAAA,EAbtBnE,EAAAuqB,cAAuB,GAGvBvqB,EAAA2U,MAAuB,GAGvB3U,EAAA+Y,KAAO,SAGP/Y,EAAAurB,SAAgB,iBAuCpB,OAnDsDryB,EAAA4yB,EAAA1rB,KAAzC0rB,EAoBTlzB,OAAAgC,eAAIkxB,EAAAxyB,UAAA,YAAS,KAAb,WACI,IAAMyyB,EAAS3yB,KAAKmxB,cAAcrqB,KAAI,SAAA3F,GAAK,OAAAA,EAAEsB,SAC7C,OAAsB,IAAlBkwB,EAAOhyB,OACA,KAGJ,CACHuxB,UAAyB,WAAdlyB,KAAK2f,KAAoB,QAAU,WAC9C8Q,MAAOzwB,KAAKywB,MACZ0B,SAAUnyB,KAAKmyB,SACf1vB,MAAqB,WAAdzC,KAAK2f,KAAoBgT,EAAO,GAAKA,oCAGpDD,EAAAxyB,UAAAsJ,MAAA,WACIxJ,KAAKmxB,cAAgB,GACrBnqB,EAAA9G,UAAMsJ,MAAK5I,KAAAZ,OAEf0yB,EAAAxyB,UAAA0yB,eAAA,SAAehwB,GACX5C,KAAK0L,YAAYrE,QAIrBqrB,EAAAxyB,UAAA2wB,UAAA,SAAUpuB,EAAY+tB,GAEdxwB,KAAKmxB,cADL1uB,aAAiB9C,MACIK,KAAKub,MAAM7H,QAAO,SAAAvS,GAAK,OAAAsB,EAAMowB,MAAK,SAAA5Q,GAAK,OAAAA,IAAM9gB,EAAEsB,YAG/C,CAACzC,KAAKub,MAAMpW,MAAK,SAAAhE,GAAK,OAAAA,EAAEsB,QAAUA,MAE3DuE,EAAA9G,UAAM2wB,UAASjwB,KAAAZ,KAACyC,EAAO+tB,6CAjCAvc,EAAAA,qBAV3BnT,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,gEAXQqsB,EAAgCI,EAAAhyB,EAAA,CAb5CwF,EAAAA,UAAU,CACPC,SAAU,6BACVC,SAAU,+OAMVsB,UAAW,CACP,CAAEC,QAASwoB,GAAyBvoB,YAAa8qB,IAErDzV,gBAAiBC,EAAAA,wBAAwBC,gCAkBdtJ,EAAAA,qBAhBlBye,IAAyCnC,mBC+ClD,SAAAwC,EAAsBhoB,GAAtB,IAAAnE,EACII,EAAApG,KAAAZ,KAAM+K,IAAI/K,YADQ4G,EAAAmE,IAAAA,EApCtBnE,EAAA4pB,SAAmB,WACnB5pB,EAAA0rB,UAAmB,CACf,CACI9N,MAAO,KACP/hB,MAAO,SAEX,CACI+hB,MAAO,QACP/hB,MAAO,aAEX,CACI+hB,MAAO,WACP/hB,MAAO,YAEX,CACI+hB,MAAO,eACP/hB,MAAO,gBAEX,CACI+hB,MAAO,aACP/hB,MAAO,cAEX,CACI+hB,MAAO,WACP/hB,MAAO,YAEX,CACI+hB,MAAO,WACP/hB,MAAO,YAEX,CACI+hB,MAAO,cACP/hB,MAAO,yBAuCnB,OA1EmD3C,EAAAizB,EAAA/rB,KAAtC+rB,EA6CTA,EAAA7yB,UAAAqyB,iBAAA,SAAiB3vB,GAEb5C,KAAK0L,YAAYrE,QAKrB0rB,EAAA7yB,UAAAsyB,aAAA,SAAa5vB,GAAb,IAAAgE,EAAA5G,KACI,IAAKA,KAAK6nB,qBACN,OAAO,IAAIC,EAAAA,YAAW,SAAAC,GAClBnhB,EAAKihB,qBAAuBE,KAE3BC,KAAKC,EAAAA,aAAa,MAClBD,KAAKE,EAAAA,wBACLxV,WAAU,SAAAvR,GACPyF,EAAK8E,YAAYrE,UAG7BrH,KAAK6nB,qBAAqBllB,KAAKC,IAGnCpD,OAAAgC,eAAIuxB,EAAA7yB,UAAA,YAAS,KAAb,WACI,MAAO,CACHgyB,UAAWlyB,KAAKwwB,SAChBC,MAAOzwB,KAAKywB,MACZ0B,SAAU,SACV1vB,MAAOzC,KAAKyC,iFAhCOwR,EAAAA,qBAvClB8e,EAA6BC,EAAAlyB,EAAA,CArBzCwF,EAAAA,UAAU,CACPC,SAAU,0BACVC,SAAU,qiBAeVsB,UAAW,CACP,CAAEC,QAASwoB,GAAyBvoB,YAAagrB,6BA0C1B/e,EAAAA,qBAvClB8e,IAAsCxC,mBCSjD,SAAA0C,EAAsBloB,EAAwBC,GAA9C,IAAApE,EACEI,EAAApG,KAAAZ,KAAM+K,EAAKC,IAAIhL,YADK4G,EAAAmE,IAAAA,EAjBtBnE,EAAAvB,KAAkE,OAGlEuB,EAAAssB,UAAoB,EAMpBtsB,EAAAusB,UAAoB,EAGpBvsB,EAAAwsB,gBAA0B,IAG1BxsB,EAAAysB,uBAAiC,UAKnC,OA1BwCvzB,EAAAmzB,EAAAjsB,KAA3BisB,2CAuBgBhf,EAAAA,yBAAwB5G,EAAAA,cApBnDvM,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,uEAIDvF,EAAA,CADCuF,EAAAA,8EApBU4sB,EAAkBK,EAAAxyB,EAAA,CAR9BwF,EAAAA,UAAU,CACTC,SAAU,cACVC,SAAA,uuCACA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,OACzCpL,KAAM,CAAEwH,MAAO,sBACf7R,UAAW,CAAC,CAAEC,QAASW,EAAwBV,YAAasrB,6BAyBjCrf,EAAAA,kBAAwB5G,EAAAA,cAvBxC4lB,IAA2BnoB,iBCFtC,SAAAyoB,KAGF,OADEA,EAAArzB,UAAA8S,SAAA,aAHWugB,EAAuBzyB,EAAA,CANnCwF,EAAAA,UAAU,CACTC,SAAU,mBACVC,SAAU,GAEV8P,cAAeC,EAAAA,kBAAkBC,mPAEtB+c,oBCAX,SAAAC,EAAoBC,GAAAzzB,KAAAyzB,MAAAA,EAEXzzB,KAAAwkB,MAAgB,GAEhBxkB,KAAA0zB,QAAkB,IAClB1zB,KAAA2zB,WAAqB,EAErB3zB,KAAAqF,KAAiD,OAE1DrF,KAAA2Z,MAAgB,OAChB3Z,KAAA2L,KAAe,GACf3L,KAAA4zB,WAAqB,IA4CvB,OA1CEJ,EAAAtzB,UAAA8S,SAAA,WAAA,IAAApM,EAAA5G,KACE,GAAIA,KAAK0zB,QACP,IAAMG,EAAWC,aAAY,aACzBltB,EAAKgtB,WACiB,IAApBhtB,EAAKgtB,aACPG,cAAcF,GACdjtB,EAAK0N,WAENtU,KAAK0zB,QAAU,KAEpB,OAAQ1zB,KAAKqF,MACX,IAAK,UACHrF,KAAK2Z,MAAQ,UACb,MACF,IAAK,UACH3Z,KAAK2Z,MAAQ,UACb,MACF,IAAK,QACH3Z,KAAK2Z,MAAQ,QACb,MACF,QACE3Z,KAAK2Z,MAAQ,OAGjB,OAAQ3Z,KAAKqF,MACX,IAAK,UACHrF,KAAK2L,KAAO,sBACZ,MACF,IAAK,UACH3L,KAAK2L,KAAO,8BACZ,MACF,IAAK,QACH3L,KAAK2L,KAAO,4BACZ,MACF,QACE3L,KAAK2L,KAAO,uBAIlB6nB,EAAAtzB,UAAAoU,MAAA,WACEtU,KAAKyzB,MAAMvqB,cAAcc,cAAcO,YAAYvK,KAAKyzB,MAAMvqB,yDArDrCmE,EAAAA,cAElBvM,EAAA,CAARuF,EAAAA,6DACQvF,EAAA,CAARuF,EAAAA,+DACQvF,EAAA,CAARuF,EAAAA,+DACQvF,EAAA,CAARuF,EAAAA,kEAEQvF,EAAA,CAARuF,EAAAA,4DARUmtB,EAAuB1yB,EAAA,CALnCwF,EAAAA,UAAU,CACTE,SAAA,wqBAEA8P,cAAeC,EAAAA,kBAAkBC,45CAGNnJ,EAAAA,cADhBmmB,oBCOX,SAAAQ,EAAoBC,GAAAj0B,KAAAi0B,iBAAAA,SAEpBD,EAAA9zB,UAAAg0B,KAAA,SAAKxuB,EAAiByuB,GACpBn0B,KAAKmQ,KAAKzK,EAAS,OAAQyuB,IAG7BH,EAAA9zB,UAAAk0B,QAAA,SAAQ1uB,EAAiByuB,GACvBn0B,KAAKmQ,KAAKzK,EAAS,UAAWyuB,IAGhCH,EAAA9zB,UAAAm0B,QAAA,SAAQ3uB,EAAiByuB,GACvBn0B,KAAKmQ,KAAKzK,EAAS,UAAWyuB,IAGhCH,EAAA9zB,UAAAuE,MAAA,SAAMiB,EAAiByuB,GACrBn0B,KAAKmQ,KAAKzK,EAAS,QAASyuB,IAGtBH,EAAA9zB,UAAAiQ,KAAR,SACEzK,EACAL,EACA8uB,GAEA,IAAMG,EAAM90B,OAAOa,OACjB,CACEqF,QAAOA,EACPL,KAAIA,GAEN8uB,GAGIjF,EAAUxkB,SAASd,cAAc,oBACvC,GAAKslB,EAUHlvB,KAAKi0B,iBAAiBM,gBACpBf,GACAc,EACApF,OAbU,CACZ,IAAMsF,EAAex0B,KAAKi0B,iBAAiBM,gBACzChB,IAEFvzB,KAAKi0B,iBAAiBM,gBACpBf,GACAc,EACAE,EAAaphB,SAASlK,0DAvCUyK,EAAAA,6IAF3BqgB,EAAclzB,EAAA,CAD1BiN,EAAAA,WAAW,CAAEC,WAAY,gCAGc2F,EAAAA,mBAF3BqgB,oBCgDT,SAAAS,EAAoB1pB,EAAgC2pB,GAAhC10B,KAAA+K,IAAAA,EAAgC/K,KAAA00B,MAAAA,EA9BpD10B,KAAA20B,OAAgC,GAGhC30B,KAAA40B,kBAA0C,GAG1C50B,KAAA2f,KAA8B,QAE9B3f,KAAA60B,UAA0B,CACtB,CACI/vB,KAAM,SACN+U,KAAM,OACN2M,UAAW,cACXjL,MAAO,CACH,CACIzW,KAAM,OACN+U,KAAM,gBAEV,CACI/U,KAAM,SACN+U,KAAM,kBAQtB7Z,KAAA80B,aAAkD,IAAI5tB,EAAAA,aA+M1D,OA3MIutB,EAAAv0B,UAAAW,MAAA,WACIb,KAAK80B,aAAaztB,KAAKrH,KAAKyC,OAC5BzC,KAAK+0B,cAGFN,EAAAv0B,UAAAsJ,MAAP,WACIxJ,KAAKg1B,QAAQxZ,SAAQ,SAAA5Y,GACjBA,EAAE4G,WAENxJ,KAAK40B,kBAAkBpZ,SAAQ,SAAAra,GAC1BA,EAAU0U,UAAW,KAE1B7V,KAAK80B,aAAaztB,KAAKrH,KAAKyC,OAC5BzC,KAAK+0B,cAGTN,EAAAv0B,UAAA+0B,cAAA,SAAcryB,GAAd,IAAAgE,EAAA5G,KACsB,cAAdA,KAAK2f,MACLtN,YAAW,WACPzL,EAAKkuB,aAAaztB,KAAKT,EAAKnE,OAC5BmE,EAAKmuB,eACN,KAKXN,EAAAv0B,UAAAqxB,mBAAA,SAAmBvtB,EAAGpB,GAAtB,IAAAgE,EAAA5G,KAGS4C,EAAEH,OAAuB,cAAdzC,KAAK2f,OACjB3f,KAAKg1B,QAAQxZ,SAAQ,SAAAra,GACbA,EAAEsvB,QAAUzsB,EAAEysB,OACdtvB,EAAEqI,WAGV6I,YAAW,WACPzL,EAAKkuB,aAAaztB,KAAKT,EAAKnE,MAAMiR,QAAO,SAAAvS,GAAK,OAAAA,EAAEsvB,QAAUzsB,EAAEysB,UAC5D7pB,EAAKmuB,eACN,MAKXv1B,OAAAgC,eAAIizB,EAAAv0B,UAAA,QAAK,KAAT,WACI,IAAMg1B,EAA2B,GASjC,OARIl1B,KAAKg1B,SACLh1B,KAAKg1B,QAAQxZ,SAAQ,SAAA5Y,GAEbA,EAAEguB,QAAUhuB,EAAEsvB,YAAoC,MAArBtvB,EAAEsvB,UAAUzvB,OAAwC,MAArBG,EAAEsvB,UAAUzvB,QAA4C,aAA1BG,EAAEsvB,UAAUA,WAAsD,iBAA1BtvB,EAAEsvB,UAAUA,aAC9IgD,EAAI9wB,KAAKxB,EAAEsvB,cAIhBgD,mCAKJT,EAAAv0B,UAAAi1B,KAAP,SAAYH,GAAZ,IAAApuB,EAAA5G,KACIA,KAAKg1B,QAAQxZ,SAAQ,SAAA5Y,GACjBA,EAAE4G,WAENxJ,KAAKo1B,mBACLJ,EAAQxZ,SAAQ,SAAArY,GACZ,IAAMkyB,EAAMzuB,EAAKouB,QAAQ7vB,MAAK,SAAAhE,GAAK,OAAAA,EAAEsvB,QAAUttB,EAAEstB,SAC7C4E,GACAA,EAAIxE,UAAU1tB,EAAEV,MAAOU,EAAE+uB,cAIjClyB,KAAK80B,aAAaztB,KAAKrH,KAAKyC,OAC5BzC,KAAK+0B,cAGTN,EAAAv0B,UAAA2L,gBAAA,WAAA,IAAAjF,EAAA5G,KACmBA,KAAKs1B,MAAMpsB,cAAcU,cAAc,aAElD5J,KAAKkD,KAAKgG,cAAcyQ,MAAMuJ,OAAS,sBAE3C7Q,YAAW,WACHzL,EAAKguB,kBACLhuB,EAAK2uB,iBAAiB,GAGtB3uB,EAAK4C,UAEV,KACHxJ,KAAKw1B,aAGTf,EAAAv0B,UAAAq1B,iBAAA,SAAiBnY,GACb,IAAMja,EAAInD,KAAK40B,kBAAkBxX,GAC7Bja,GACAnD,KAAKy1B,gBAAgBtyB,EAAE2B,OAI/B2vB,EAAAv0B,UAAAu1B,gBAAA,SAAgB3wB,GACZ,IAAM3B,EAAInD,KAAK40B,kBAAkBzvB,MAAK,SAAAhE,GAAK,OAAAA,EAAE2D,OAASA,KAClD3B,IACAnD,KAAKm1B,KAAKhyB,EAAEV,OACZzC,KAAK40B,kBAAkBpZ,SAAQ,SAAAra,GAC1BA,EAAU0U,UAAW,KAEzB1S,EAAU0S,UAAW,IAM9B4e,EAAAv0B,UAAAw1B,aAAA,SAAavyB,GACTnD,KAAK40B,kBAAoB50B,KAAK40B,kBAAkBlhB,QAAO,SAAAvS,GAAK,OAAAA,EAAE2D,MAAQ3B,EAAE2B,QACxE9E,KAAK+0B,cAGTv1B,OAAAgC,eACIizB,EAAAv0B,UAAA,gBAAa,KADjB,WAEI,OAAOF,KAAK40B,kBAAkBzvB,MAAK,SAAAhE,GAAK,OAACA,EAAU0U,6CAI/C4e,EAAAv0B,UAAAs1B,UAAR,WACI,IAAI1Z,EAAI,EACRA,GAAK9b,KAAK21B,OAAOzsB,cAAcoc,wBAAwBpC,OACvDpH,GAAK9b,KAAK41B,UAAU1sB,cAAcoc,wBAAwBpC,OAC1DpH,GAAK,GACL9b,KAAKkD,KAAKgG,cAAcyQ,MAAMuJ,OAAS,eAAepH,EAAC,OAKnD2Y,EAAAv0B,UAAA60B,WAAR,WAAA,IAAAnuB,EAAA5G,KACIqS,YAAW,WACPzL,EAAKiuB,UAAU,GAAGtZ,MAAM,GAAGyC,QAAgC,MAAtBpX,EAAKivB,cAC1CjvB,EAAKiuB,UAAU,GAAGtZ,MAAM,GAAGyC,QAAgC,MAAtBpX,EAAKivB,gBAE3C,MAGPpB,EAAAv0B,UAAA41B,gBAAA,WACc91B,KAAK61B,eAgBnBpB,EAAAv0B,UAAAk1B,iBAAA,WACI,IAAMjyB,EAAInD,KAAK61B,cACX1yB,IACKA,EAAU4yB,MACX/1B,KAAK01B,aAAavyB,GAGjBA,EAAU6yB,UAAW,GAG9Bh2B,KAAK+0B,cAGTN,EAAAv0B,UAAA+1B,gBAAA,SAAgBrzB,GAIZ,GAHe,SAAXA,EAAEkC,MACF9E,KAAK81B,kBAEM,WAAXlzB,EAAEkC,KAAmB,CACrB,IAAM3B,EAAI,CACN2B,KAAMyD,EAAAA,WAAWC,SACjBgc,MAAO,GACP/hB,MAAOzC,KAAKyC,OAEhBzC,KAAK40B,kBAAkBxwB,KAAKjB,GAC3BA,EAAU4yB,OAAQ,EACnB/1B,KAAKy1B,gBAAgBtyB,EAAE2B,MACvB9E,KAAKk2B,kBAAkB/yB,KAI/BsxB,EAAAv0B,UAAAi2B,aAAA,SAAavzB,GACM,UAAXA,EAAEyC,MAA8B,UAAVzC,EAAE3B,KACxBjB,KAAK81B,kBAEM,UAAXlzB,EAAEyC,MAA8B,WAAVzC,EAAE3B,KACxBjB,KAAKo1B,oBAIbX,EAAAv0B,UAAAg2B,kBAAA,SAAkB/yB,GAAlB,IAAAyD,EAAA5G,KACKmD,EAAU6yB,UAAW,EACtBh2B,KAAK+K,IAAI0B,gBACT4F,YAAW,WACPzL,EAAKwvB,QAAQ3zB,MAAQU,EAAEqhB,MACvB5d,EAAKwvB,QAAQ1pB,UACd,8CA3MkBuH,EAAAA,yBAAkC+f,MAxCrBlzB,EAAA,CAArCoM,EAAAA,UAAU,QAAS,CAAEC,QAAQ,oBAAeE,EAAAA,yCACNvM,EAAA,CAAtCoM,EAAAA,UAAU,SAAU,CAAEC,QAAQ,oBAAgBE,EAAAA,0CACLvM,EAAA,CAAzCoM,EAAAA,UAAU,YAAa,CAAEC,QAAQ,oBAAmBE,EAAAA,6CAChBvM,EAAA,CAApCoM,EAAAA,UAAU,OAAQ,CAAEC,QAAQ,oBAAcE,EAAAA,wCACLvM,EAAA,CAArCoM,EAAAA,UAAU,OAAQ,CAAEC,QAAQ,oBAAeqS,gCACJ1e,EAAA,CAAvCoM,EAAAA,UAAU,UAAW,CAAEC,QAAQ,oBAAiB8lB,mCAEVnyB,EAAA,CAAtCu1B,EAAAA,aAAa9F,oBAAkC5oB,EAAAA,0CAGhD7G,EAAA,CADCuF,EAAAA,6DAIDvF,EAAA,CADCuF,EAAAA,wEAIDvF,EAAA,CADCuF,EAAAA,4DAuBDvF,EAAA,CADC8G,EAAAA,yBACaV,EAAAA,kDAxCLutB,EAAsB3zB,EAAA,CAPlCwF,EAAAA,UAAU,CACPC,SAAU,kBACVC,SAAA,wnNAEA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,kvEA4ChBtJ,EAAAA,kBAAkC+f,MA1ClDS,oBCFT,SAAA6B,IACAt2B,KAAAu2B,KAAehuB,EAAAA,WAAWC,SAQ1BxI,KAAAowB,iBAAiC,CAM7B,CACItrB,KAAM,SACN0hB,UAAW,eACX3M,KAAM,WAMd7Z,KAAAw2B,UAA0B,CACtB,CACI1xB,KAAM,OACN0hB,UAAW,gBACX3M,KAAM,aACN0B,MAAO,CACH,CACIzW,KAAM,YACN6U,MAAO,IACPE,KAAM,cAQV,CACI4c,SAAS,EACT3xB,KAAM,OACN0hB,UAAW,cACX3M,KAAM,QAEV,CACI4c,SAAS,EACT3xB,KAAM,SACN0hB,UAAW,cACX3M,KAAM,uBA+G1B,SAnKayc,EA2DTA,EAAAp2B,UAAA2L,gBAAA,WAAA,IAAAjF,EAAA5G,KACIqS,YAAW,WACPzL,EAAK8vB,YACL9vB,EAAK+vB,sBACN,MAGPL,EAAAp2B,UAAAy2B,kBAAA,WAAA,IAAA/vB,EAAA5G,KACIA,KAAK42B,YAAYhC,kBAAkBpZ,SAAQ,SAAAra,GACvC,IAAMua,EAAO,CACT5W,KAAM3D,EAAE2D,KACR+U,KAAM1Y,EAAEqjB,MACRnf,KAAM,IACNmhB,UAAW,MACX5R,KAAMzT,EAAEsB,MACRkX,MAAO/S,EAAK2vB,KACZjuB,IAAKC,EAAAA,WAAWC,UAEpB5B,EAAKiwB,KAAKtb,MAAMF,OAAO,EAAG,EAAGK,MAEjC1b,KAAKugB,UAGF+V,EAAAp2B,UAAAw2B,UAAP,WACI12B,KAAK82B,WAAW92B,KAAK62B,KAAKtb,MAAM,IAChCvb,KAAK42B,YAAYptB,QACjBxJ,KAAKugB,SACLvgB,KAAK4gB,KAAKtM,SAIdgiB,EAAAp2B,UAAAwqB,UAAA,SAAU9nB,GAEN,GAAgB,MAAZA,EAAE+W,MACa,cAAX/W,EAAEkC,KACF9E,KAAK02B,aAGL12B,KAAK82B,WAAWl0B,GAChB5C,KAAK42B,YAAYzB,KAAKvyB,EAAEgS,WAG3B,CACD,GAAe,WAAXhS,EAAEkC,KAAmB,CACrB,IAAMiyB,EAAOC,OAAO,0BACpB,GAAID,EAAM,CACN,IAAMrb,EAAO,CACT7B,KAAMkd,EACN1xB,KAAM,IACNsU,MAAO3Z,KAAKu2B,KACZ/P,UAAW,MACX5R,KAAM5U,KAAK42B,YAAYn0B,MACvB6F,IAAKC,EAAAA,WAAWC,UAEpBxI,KAAK62B,KAAKtb,MAAMF,OAAO,EAAG,EAAGK,GAC7B1b,KAAK82B,WAAWpb,IAIxB,GAAe,SAAX9Y,EAAEkC,KAAiB,CACnB,IAAM+Q,EAAW7V,KAAKi3B,eAClBphB,IACAA,EAASjB,KAAO5U,KAAK42B,YAAYn0B,QAI7CzC,KAAKugB,UAGD+V,EAAAp2B,UAAA+2B,aAAR,WACI,OAAOj3B,KAAK62B,KAAKtb,MAAMpW,MAAK,SAAAhE,GAAK,OAAAA,EAAE0U,aAGvCrW,OAAAgC,eAAY80B,EAAAp2B,UAAA,OAAI,KAAhB,WACI,OAAOF,KAAKw2B,UAAU,oCAGnBF,EAAAp2B,UAAAqgB,OAAP,WACIvgB,KAAK4gB,KAAKL,SACVlO,YAAW,cAER,MAICikB,EAAAp2B,UAAA42B,WAAR,SAAmBl0B,GACf5C,KAAK62B,KAAKhd,KAAOjX,EAAEiX,KACnB7Z,KAAK62B,KAAKtb,MAAM7H,QAAO,SAAAvS,GAAK,MAAY,MAAZA,EAAEwY,SAAe6B,SAAQ,SAAAra,GACjDA,EAAE0U,UAAW,EACb1U,EAAEqlB,UAAY,SAElB5jB,EAAEiT,UAAW,EACbjT,EAAE4jB,UAAY,eACdxmB,KAAK62B,KAAKtb,MAAMpW,MAAK,SAAAhE,GAAK,MAAW,SAAXA,EAAE2D,QAAiBkZ,QAAqB,cAAXpb,EAAEkC,MAG7DwxB,EAAAp2B,UAAAg3B,WAAA,SAAWt0B,GACP,IACMu0B,EADSn3B,KAAKivB,YAAYmI,cACVC,aAAa,YACpB,WAAXz0B,EAAEkC,MAAqBqyB,IACvBn3B,KAAK62B,KAAKtb,MAAQvb,KAAK62B,KAAKtb,MAAM7H,QAAO,SAAAvS,GAAK,OAAAA,EAAEmH,MAAQ6uB,KACxDn3B,KAAK02B,cA5JwB51B,EAAA,CAApCoM,EAAAA,UAAU,OAAQ,CAAEC,QAAQ,oBAAcmT,gCACCxf,EAAA,CAA3CoM,EAAAA,UAAU,cAAe,CAAEC,QAAQ,oBAAqBqS,uCAGzD1e,EAAA,CADCuF,EAAAA,wBACYouB,uCARJ6B,EAA4BgB,EAAAx2B,EAAA,CAPxCwF,EAAAA,UAAU,CACPC,SAAU,yBACVC,SAAA,8PAEA8P,cAAeC,EAAAA,kBAAkBC,KACjC1O,UAAW,CAAC,CAAEC,QAAS0Y,GAAezY,YAAasvB,uQAE1ChB,oBC6Bb,SAAAiB,IAIWv3B,KAAAoL,KAAsB,KAEtBpL,KAAAqF,KAAe,GAKhBrF,KAAAw3B,SAAmB,UAU3Bx3B,KAAAy3B,gBAAyC,IAAIvwB,EAAAA,aACrClH,KAAA03B,YAAsB,EAarB13B,KAAA23B,eAAyB,EAOpC,OA7BEn4B,OAAAgC,eAAI+1B,EAAAr3B,UAAA,UAAO,KAAX,WACE,OAAOF,KAAKw3B,cAEd,SAAYtxB,GACVlG,KAAKw3B,SAAmB,KAARtxB,EAAa,UAAYA,mCAQ3C1G,OAAAgC,eAAI+1B,EAAAr3B,UAAA,YAAS,KAAb,WACE,OAAOF,KAAK03B,gBAEd,SAAcxxB,GACRA,IAAQlG,KAAK03B,aACf13B,KAAK03B,WAAaxxB,EAClBlG,KAAKy3B,gBAAgBpwB,KAAKrH,KAAK03B,8CAMnCH,EAAAr3B,UAAA6d,OAAA,WACM/d,KAAK23B,gBACP33B,KAAK43B,WAAa53B,KAAK43B,YArC3B92B,EAAA,CADCsM,EAAAA,aAAa,SAAU,CAAED,QAAQ,oBAClB4D,EAAAA,mDAEPjQ,EAAA,CAARuF,EAAAA,4DAEQvF,EAAA,CAARuF,EAAAA,4DAODvF,EAAA,CADCuF,EAAAA,6FASDvF,EAAA,CADC8G,EAAAA,yBACgBV,EAAAA,qDAIjBpG,EAAA,CADCuF,EAAAA,iGAWQvF,EAAA,CAARuF,EAAAA,sEAnCUkxB,EAAmBz2B,EAAA,CA3B/BwF,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,8wBAEAqxB,WAAY,CACVC,EAAAA,QAAQ,oBAAqB,CAC3BC,EAAAA,MACE,QACApe,EAAAA,MAAM,CACJuJ,OAAQ,IACRtB,QAAS,KAGbmW,EAAAA,MACE,SACApe,EAAAA,MAAM,CACJuJ,OAAQ,MACRtB,QAAS,EACToW,QAAS,KAGbC,EAAAA,WAAW,YAAaC,EAAAA,QAAQ,QAChCD,EAAAA,WAAW,kBAAmBC,EAAAA,QAAQ,UACtCD,EAAAA,WAAW,kBAAmBC,EAAAA,QAAQ,2cAI/BX,oBCnCb,SAAAY,KAA+B,OAAlBA,EAAgBr3B,EAAA,CAN5B+V,EAAAA,SAAS,CACRC,aAAc,CAACygB,IACfxgB,QAAS,CAACJ,EAAAA,cACVK,QAAS,CAACugB,IACVzvB,UAAW,MAEAqwB,qBC6DX,SAAAC,EAAoBrtB,EACVC,EACAoT,EACAyM,GAHV,IAAAjkB,EAKEI,EAAApG,KAAAZ,OAAOA,YALW4G,EAAAmE,IAAAA,EACVnE,EAAAoE,IAAAA,EACApE,EAAAwX,QAAAA,EACAxX,EAAAikB,iBAAAA,EAvCVjkB,EAAAoZ,IAAe3I,EAAAA,SAASpS,IAAI,cAG5B2B,EAAAsE,UAAoB,EAGpBtE,EAAAgP,SAAmB,EAGnBhP,EAAAyxB,eAAoC,IAAInxB,EAAAA,aAGxCN,EAAA0xB,cAAuD,IAAIpxB,EAAAA,eAmJ7D,OAtKyCpH,EAAAs4B,EAAApxB,GAsBvCoxB,EAAAl4B,UAAA+V,iBAAA,SAAiBrT,GACV5C,KAAKiL,UAAsB,UAAVrI,EAAE3B,KAA8B,YAAX2B,EAAEyC,MACtCrF,KAAKkL,UACRlL,KAAK+d,SAIK,WAAVnb,EAAE3B,KACAjB,KAAKme,SACPne,KAAKsU,QACL1R,EAAEoT,oBAmBRoiB,EAAAl4B,UAAA8S,SAAA,WAAA,IAAApM,EAAA5G,KACkB,MAAZA,KAAKggB,MACPhgB,KAAKggB,IAA8F,QAAxFC,OAAOC,iBAAiBlgB,KAAKgL,IAAI9B,cAAe,MAAMiX,iBAAiB,cAEpF9N,YAAW,WACTzL,EAAKoE,IAAI9B,cAAcgB,UAAUI,IAAI1D,EAAKoZ,IAAM,MAAQ,OACxDpZ,EAAK2xB,WAAWrvB,cAAcgB,UAAUI,IAAI1D,EAAKoZ,IAAM,MAAQ,SAC9D,IAILoY,EAAAl4B,UAAA2L,gBAAA,WAAA,IAAAjF,EAAA5G,MAEyB,IAAnBA,KAAKyN,UACPzN,KAAKw4B,cAAgBx4B,KAAKu4B,WAAWrvB,cAAc+Z,YAEnDjjB,KAAKw4B,cAAgB,KAGvBnmB,YAAW,WACLzL,EAAK6xB,YAAkE,IAApD7xB,EAAK6xB,WAAWvvB,cAAcwvB,WAAW/3B,SAC9DiG,EAAKwJ,QAAQlH,cAAcyQ,MAAMgf,iBAAmB/xB,EAAK6xB,WAAWvvB,cAAc0vB,YAAc,QAEjG,IAGLR,EAAAl4B,UAAA4U,YAAA,mBACiB,QAAfvN,EAAAvH,KAAKkS,kBAAU,IAAA3K,GAAAA,EAAEiiB,SACF,QAAf1f,EAAA9J,KAAKkS,kBAAU,IAAApI,GAAAA,EAAE6I,WAGnBylB,EAAAl4B,UAAA24B,iBAAA,SAAiBj2B,GAAjB,IAAAgE,EAAA5G,KACEqS,YAAW,WACTzL,EAAKmX,WACJ,IAGLqa,EAAAl4B,UAAA6d,OAAA,YACwB,IAAlB/d,KAAKiL,WACPjL,KAAKme,OAASne,KAAKsU,QAAUtU,KAAKke,SAItCka,EAAAl4B,UAAAoU,MAAA,iBACOtU,KAAKme,SAGK,QAAf5W,EAAAvH,KAAKkS,kBAAU,IAAA3K,GAAAA,EAAEiiB,SACjBxpB,KAAKq4B,eAAehxB,KAAK,CAAEsY,KAAM,YAGnCyY,EAAAl4B,UAAAge,KAAA,WACMle,KAAKme,SAGTne,KAAK84B,uBACL94B,KAAKkS,WAAWE,OAAOpS,KAAK+4B,gBAC5B/4B,KAAKq4B,eAAehxB,KAAK,CAAEsY,KAAM,WAG3ByY,EAAAl4B,UAAA44B,qBAAR,WAAA,IAAAlyB,EAAA5G,KACE,IAAKA,KAAKkS,WAAY,CACpB,IAAMmM,EAAW3T,SAASd,cAA2B,IAAM5J,KAAKsI,KAC1DqI,EAAmB3Q,KAAKoe,QAAQlN,WACnCE,oBAAoBiN,GACpBhN,cAAc,CACb,CACE4Z,QAAS,QACTC,QAAS,SACTC,SAAU,QACVC,SAAU,OAEZ,CACEH,QAAS,QACTC,QAAS,SACTC,SAAU,QACVC,SAAU,UAEZ,CACEH,QAAS,MACTC,QAAS,SACTC,SAAU,MACVC,SAAU,OAEZ,CACEH,QAAS,MACTC,QAAS,SACTC,SAAU,MACVC,SAAU,YAGb9Z,UAAS,GACZtR,KAAKkS,WAAalS,KAAKoe,QAAQje,OAAO,CACpCwQ,iBAAgBA,EAEhBe,eAAgB1R,KAAKoe,QAAQjQ,iBAAiBwD,WAAW,CACvDC,WAAW,IAEbrB,aAAa,EACbyB,cAAe,qCAEjBhS,KAAKkS,WAAW8mB,aAAah5B,KAAKggB,IAAM,MAAQ,OAChDhgB,KAAKkS,WAAWM,gBAAgBE,WAAU,WAAM,OAAA9L,EAAK0N,WAElDtU,KAAK+4B,iBACR/4B,KAAK+4B,eAAiB,IAAI/nB,EAAAA,eAAehR,KAAKi5B,aAAcj5B,KAAK6qB,oBAIrErrB,OAAAgC,eAAI42B,EAAAl4B,UAAA,SAAM,KAAV,WACE,QAAOF,KAAKkS,YAAalS,KAAKkS,WAAWgnB,+CAI3Cd,EAAAl4B,UAAAwM,MAAA,sDA1HyBuH,EAAAA,yBACV5G,EAAAA,kBACIyC,EAAAA,eACS2b,EAAAA,oBA7CD3qB,EAAA,CAA1BoM,EAAAA,UAAU,gCAA8B6D,EAAAA,iDACAjQ,EAAA,CAAxCoM,EAAAA,UAAU,UAAW,CAAEC,QAAQ,oBAAkBE,EAAAA,2CACNvM,EAAA,CAA3CoM,EAAAA,UAAU,aAAc,CAAEC,QAAQ,oBAAqBE,EAAAA,8CACrBvM,EAAA,CAAlCoM,EAAAA,UAAU,KAAM,CAAEC,QAAQ,oBAAoBE,EAAAA,8CAG/CvM,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,gEAIDvF,EAAA,CADC8G,EAAAA,yBACeV,EAAAA,oDAGhBpG,EAAA,CADC8G,EAAAA,yBACcV,EAAAA,mDAGfpG,EAAA,CADCsV,EAAAA,aAAa,UAAW,CAAC,4DACNC,oFAtBT+hB,EAAmBt3B,EAAA,CAR/BwF,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,u9BAEA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,OACzCpL,KAAM,CAAEwH,MAAO,4QA6CU1F,EAAAA,kBACV5G,EAAAA,WACIyC,EAAAA,QACS2b,EAAAA,oBA9CjB2M,IAA4B5qB,kBCRzC,SAAA2rB,mDAEA,OAF6Cr5B,EAAAq5B,EAAAnyB,GAE7CmyB,GAF6ChxB,kBAqF3C,SAAAixB,EAAoBpuB,EAAyBD,GAA7C,IAAAnE,EACEI,EAAApG,KAAAZ,OAAOA,YADW4G,EAAAoE,IAAAA,EAAyBpE,EAAAmE,IAAAA,EAjE7CnE,EAAA8Q,SAAW,GAGX9Q,EAAAyyB,SAAgB,CAAC,QAAS,QAAS,QAAS,QAAS,IAAK,QAAS,QAAS,IAAK,QAAS,SAC1FzyB,EAAA0yB,SAAgB,CAAC,QAAS,QAAS,IAAK,QAAS,QAAS,IAAK,QAAS,QAAS,QAAS,SAC1F1yB,EAAA2yB,SAAgB,CAAC,QAAS,QAAS,QAAS,QAAS,IAAK,QAAS,QAAS,IAAK,QAAS,SAkBjF3yB,EAAA4yB,YAAsB,GAe/B5yB,EAAAgF,YAAsB,EAGtBhF,EAAAuE,UAAqC,KAGrCvE,EAAA6yB,WAAqB,EAGrB7yB,EAAA6Q,mBAA6B,EAM7B7Q,EAAA+Q,iBAA2B,EAG3B/Q,EAAA8yB,aAAuB,EAEvB9yB,EAAA+yB,eAAyB,EAEzB/yB,EAAAgzB,MAAa,KAGbhzB,EAAAizB,eAAyB,EAWzBjzB,EAAAwE,KAAsB,KAGtBxE,EAAAkzB,WAA2C,IAAI5yB,EAAAA,aAEvCN,EAAAmzB,MAAwB,YA4FhCnzB,EAAAyE,YAAsB,EAGtBzE,EAAA6E,eAAwD,IAAIvE,EAAAA,aAG5DN,EAAA8E,YAAkC,IAAIxE,EAAAA,aA7GhCmQ,EAAAA,SAASpS,IAAI,mBACf2B,EAAKvB,KAAOgS,EAAAA,SAASpS,IAAI,0BAulB/B,OApqB2CnF,EAAAs5B,EAAApyB,KAA9BoyB,EAuBX55B,OAAAgC,eAAW43B,EAAAl5B,UAAA,aAAU,KAArB,WACE,OAAOF,KAAKkM,YAAclM,KAAKkM,YAAclM,KAAKmM,wBAGpD,SAAsBnI,GACpBhE,KAAKkM,YAAclI,mCA8DrBxE,OAAAgC,eAAW43B,EAAAl5B,UAAA,OAAI,KAAf,WACE,OAAOF,KAAK+5B,WAGd,SAAgB/1B,GACVA,GAAKhE,KAAK+5B,QACZ/5B,KAAK+5B,MAAQ/1B,EACThE,KAAKoM,SACPpM,KAAKyC,MAAQzC,KAAKoM,OAAOmM,MAE3BvY,KAAKg6B,eACLh6B,KAAK85B,WAAWzyB,KAAKrD,qCAIzBo1B,EAAAl5B,UAAA+5B,YAAA,WACEj6B,KAAKyC,MAAQ,IAAI8Q,MAGnB6lB,EAAAl5B,UAAAwM,MAAA,WACE1M,KAAKk6B,SAASxtB,SAGhB0sB,EAAAl5B,UAAAi6B,kBAAA,SAAkBtgB,GAChB,GAAiB,UAAb7Z,KAAKqF,KACP,IAAI/F,GAAI,IAAImZ,EAAAA,YAAa2hB,yBAAyBvgB,EAAM,YAI1D,OAAOva,GAGT85B,EAAAl5B,UAAAm6B,YAAA,SAAY9hB,GACV,IAAInV,EACAmB,EACAjF,EACJ,OAAQU,KAAKs6B,SAASC,MACpB,KAAKv6B,KAAKq5B,SACRj2B,EAAImV,EAAKkE,MAAM,EAAG,GAClBlY,EAAIgU,EAAKkE,MAAM,EAAG,GAClBnd,EAAIiZ,EAAKkE,MAAM,EAAG,IAClB,MACF,KAAKzc,KAAKs5B,SACRl2B,EAAImV,EAAKkE,MAAM,EAAG,IAClBlY,EAAIgU,EAAKkE,MAAM,EAAG,GAClBnd,EAAIiZ,EAAKkE,MAAM,EAAG,GAClB,MACF,KAAKzc,KAAKu5B,SACRn2B,EAAImV,EAAKkE,MAAM,EAAG,GAClBlY,EAAIgU,EAAKkE,MAAM,EAAG,IAClBnd,EAAIiZ,EAAKkE,MAAM,EAAG,GAItB,MAAO,CAAEM,KAAM3Z,EAAGo3B,OAAQj2B,EAAGk2B,IAAKn7B,IAGpC85B,EAAAl5B,UAAAw6B,WAAA,SAAW93B,GAET,GADA5C,KAAK6Z,KAAOjX,EAAEH,MACVzC,KAAK6Z,OAAoC,IAA5B7Z,KAAK6Z,KAAKuK,QAAQ,MAAmC,IAApBpkB,KAAK6Z,KAAKlZ,OAAc,CACxEX,KAAKqL,WAAazI,EAAE4J,aACpB,IAAM+L,EAAOvY,KAAKq6B,YAAYr6B,KAAK6Z,MACnC7Z,KAAKyC,MAAQzC,KAAKm6B,kBAAkB5hB,EAAKwE,KAAO,IAAMxE,EAAKiiB,OAAS,IAAMjiB,EAAKkiB,OAInFrB,EAAAl5B,UAAA8S,SAAA,WACEhT,KAAKg6B,gBAGPZ,EAAAl5B,UAAA2L,gBAAA,WAAA,IAAAjF,EAAA5G,KACEqS,YAAW,iBACTzL,EAAKiT,KAAkB,QAAdtS,EAAGX,EAAKwF,cAAM,IAAA7E,OAAA,EAAAA,EAAEwd,WACrBne,EAAK6yB,YAAc7yB,EAAKnE,OAC1BmE,EAAKqzB,cAEPrzB,EAAKmE,IAAI4vB,mBAIbvB,EAAAl5B,UAAAoH,mBAAA,WACEtH,KAAK6I,eAAe7I,KAAKgL,IAAK,QAAShL,KAAKgJ,aAG9CowB,EAAAl5B,UAAAsJ,MAAA,WACExJ,KAAKqL,YAAa,EAClBrL,KAAKyC,MAAQ,MAafjD,OAAAgC,eAAW43B,EAAAl5B,UAAA,QAAK,KAAhB,iBACE,OAAkB,QAAlBqH,EAAOvH,KAAKoM,cAAM,IAAA7E,OAAA,EAAAA,EAAEgR,UAEtB,SAAiBvU,GAAjB,MAAA4C,EAAA5G,KACEA,KAAKuF,WACL,IAAMgH,EAAWvM,KAAKoM,OAChBC,EAAMrM,KAAKyC,MAGfzC,KAAKoM,OADHpI,EACY,IAAIyU,EAAAA,WAAWzU,EAAGhE,KAAKqF,MAEvB,KAEhB,IAAIsT,GAAc,GACd3Y,KAAK4Y,KAAO5Y,KAAK6Y,OACnBF,EAAc3Y,KAAK8Y,gBAAgBL,EAAAA,WAAWC,QAAQ1U,KAGnD2U,KACG3U,GAAKuI,GAAcvM,KAAKoM,SAAWpM,KAAKoM,OAAO2M,MAAMxM,EAAU,UACnEvM,KAAK6Z,KAAkB,QAAdtS,EAAGvH,KAAKoM,cAAM,IAAA7E,OAAA,EAAAA,EAAEwd,WACzB1S,YAAW,WACTzL,EAAK8E,YAAYrE,KAAKrD,GACtB4C,EAAK6E,eAAepE,KAAK,CACvBiF,UAAW1F,EACX2F,SAAUF,EACV5J,MAAOuB,EACPwI,aAAc5F,EAAKyE,eAEpB,MAGPrL,KAAKqL,YAAa,mCAGZ+tB,EAAAl5B,UAAA85B,aAAR,WACE,OAAQh6B,KAAKs6B,UACX,IAAK,WACHt6B,KAAKs6B,SAAW,CACdM,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKq5B,SACXwB,mBAAmB,GAErB,MACF,IAAK,WACH76B,KAAKs6B,SAAW,CACdM,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKs5B,SACXuB,mBAAmB,GAErB,MACF,IAAK,WACH76B,KAAKs6B,SAAW,CACdM,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKu5B,SACXsB,mBAAmB,GAErB,MAEF,QACmB,aAAb76B,KAAKqF,KACPrF,KAAKs6B,SAAW,CACdM,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKs5B,SACXuB,mBAAmB,GAEC,UAAb76B,KAAKqF,OACdrF,KAAKs6B,SAAW,CACdM,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKq5B,SACXwB,mBAAmB,MAO7BzB,EAAAl5B,UAAA4Y,gBAAA,SAAgBxZ,GACd,IAAI8B,GAAI,EAcR,YAbUgI,IAAN9J,IACEU,KAAK6Y,MAAQ7Y,KAAK4Y,MACpBxX,GAA8E,IAA1E9B,EAAEqc,YAAY,IAAIlD,EAAAA,WAAWzY,KAAK6Y,IAAK7Y,KAAKqF,MAAO,MAAOrF,KAAKqF,OAEjErF,KAAK4Y,MAAQ5Y,KAAK6Y,MACpBzX,EAA6E,IAAzE9B,EAAEqc,YAAY,IAAIlD,EAAAA,WAAWzY,KAAK4Y,IAAK5Y,KAAKqF,MAAO,MAAOrF,KAAKqF,OAEjErF,KAAK6Y,KAAO7Y,KAAK4Y,MACnBxX,GAC4E,IAA1E9B,EAAEqc,YAAY,IAAIlD,EAAAA,WAAWzY,KAAK6Y,IAAK7Y,KAAKqF,MAAO,MAAOrF,KAAKqF,OACU,IAAzE/F,EAAEqc,YAAY,IAAIlD,EAAAA,WAAWzY,KAAK4Y,IAAK5Y,KAAKqF,MAAO,MAAOrF,KAAKqF,QAG9DjE,GAGTg4B,EAAAl5B,UAAAymB,aAAA,SAAa/jB,GACX5C,KAAKqL,YAAa,EAClBrL,KAAKk6B,SAAS5lB,SAKhB8kB,EAAAl5B,UAAAgY,QAAA,SAAQtV,GACN5C,KAAKqL,YAAa,EAClBrL,KAAKk6B,SAAS5lB,SAGhB8kB,EAAAl5B,UAAA46B,aAAA,WAAA,IAAAl0B,EAAA5G,KACmBoJ,MAAbpJ,KAAK6Z,MAAkC,MAAb7Z,KAAK6Z,MAA6B,IAAb7Z,KAAK6Z,OACtD7Z,KAAK8L,MAAMA,MAAM5C,cAAcyQ,MAAMohB,WAAa,cAClD1oB,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAMA,MAAM5C,cAAe,GACtDtC,EAAK+yB,eAAiB,EACtB/yB,EAAKkF,MAAMA,MAAM5C,cAAcyQ,MAAMohB,WAAa,SACjD,KAIP3B,EAAAl5B,UAAA+M,iBAAA,WACMjN,KAAK05B,aACP15B,KAAK65B,eAAgB,EACrB75B,KAAKk6B,SAAShc,QAEdle,KAAK86B,gBAKT1B,EAAAl5B,UAAA4M,gBAAA,WACM9M,KAAK6Z,OAAmC,GAA3B7Z,KAAK6Z,KAAKuK,QAAQ,OACjCpkB,KAAK6Z,KAAO,GACZ7Z,KAAKyC,MAAQ,OAIjB22B,EAAAl5B,UAAA+6B,kBAAA,WAAA,IAAAr0B,EAAA5G,KACEA,KAAK65B,eAAgB,EACrBxnB,YAAW,WACTzL,EAAKszB,SAASnc,aAIlBqb,EAAAl5B,UAAAg7B,eAAA,SAAet4B,GAAf,IAAAgE,EAAA5G,KACgB,WAAV4C,EAAEyC,MAA+B,YAAVzC,EAAEyC,MAAgC,SAAVzC,EAAEyC,OACrC,WAAVzC,EAAE3B,KACJ2B,EAAEsT,iBAEAtT,EAAE3B,IAEQ,cAAV2B,EAAE3B,KAAiC,eAAV2B,EAAE3B,MACzBjB,KAAK8L,MAAMA,MAAM5C,cAAciyB,gBAAoE,IAAlDn7B,KAAK8L,MAAMA,MAAM5C,cAAciyB,kBAClFn7B,KAAK25B,eAAiB35B,KAAK8L,MAAMA,MAAM5C,cAAciyB,gBAG3C,YAAVv4B,EAAE3B,KAA+B,cAAV2B,EAAE3B,MAC3B2B,EAAEsT,iBACFtT,EAAEoT,oBAIN,IAAMolB,EAAYC,OAAOC,aAAa14B,EAAE24B,UACxC,GAAiBnyB,MAAbpJ,KAAK6Z,KAAmB,CAC1B,IAAM2hB,EAAOx7B,KAAK6Z,KAAK4hB,OAAO,GACxBC,EAAO17B,KAAK6Z,KAAK4hB,OAAO,GACxBE,EAAO37B,KAAK6Z,KAAK4hB,OAAO,GACxBG,EAAO57B,KAAK6Z,KAAK4hB,OAAO,GACxBI,EAAO77B,KAAK6Z,KAAK4hB,OAAO,GACxBK,EAAO97B,KAAK6Z,KAAK4hB,OAAO,GACxBM,EAAO/7B,KAAK6Z,KAAK4hB,OAAO,GACxBO,EAAOh8B,KAAK6Z,KAAK4hB,OAAO,GACxBQ,EAAOj8B,KAAK6Z,KAAK4hB,OAAO,GACxBS,EAAQl8B,KAAK6Z,KAAK4hB,OAAO,GAC/B,OAAQz7B,KAAKs6B,SAASC,MACpB,KAAKv6B,KAAKq5B,SAgBR,GAfc,YAAVz2B,EAAEyC,OACJrF,KAAK+V,cAEM,KAAR+lB,GAAuB,KAARC,GAAeX,GAAa,MACjC,KAARU,GAAuB,KAARC,GAAyB,KAARE,GAAwB,KAATC,IAA+B,KAAbd,EAEpEx4B,EAAEsT,iBACe,KAAR+lB,GAAwB,KAATC,IACpBJ,EAAOC,GAAQ,MAAQX,GAAa,IACtCx4B,EAAEsT,iBACO4lB,EAAOC,EAAO,MAAQX,GAAa,KAC5Cx4B,EAAEsT,oBAIwB,IAA5BlW,KAAK6Z,KAAKuK,QAAQ,MAA6B,KAAdpkB,KAAK6Z,MACzB,YAAXjX,EAAEyC,OACU,YAAVzC,EAAE3B,KACAjB,KAAK25B,gBAAkB,IACzB35B,KAAK6Z,KAAOwhB,OAAOjf,OAAOof,EAAOE,EAAOC,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,GAE7Fl8B,KAAK25B,gBAAkB,GAAK35B,KAAK25B,gBAAkB,IACjDvd,OAAO0f,EAAOC,GAAQ,GACpB3f,OAAO0f,EAAOC,GAAQ,EACxB/7B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAO,IAAMR,OAAOjf,OAAO0f,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAErGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOR,OAAOjf,OAAO0f,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAGjGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAO,KAAOG,EAAOC,EAAOC,GAGpEl8B,KAAK25B,gBAAkB,IACrBvd,OAAO6f,EAAOC,GAAS,GACrB9f,OAAO6f,EAAOC,GAAS,EACzBl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAO,IAAMX,OAAOjf,OAAO6f,EAAOC,GAAS,GAExGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOX,OAAOjf,OAAO6f,EAAOC,GAAS,GAGpGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAO,OAUrD,cAAVp5B,EAAE3B,MACPjB,KAAK25B,gBAAkB,EACzB35B,KAAK6Z,KAAOwhB,OAAOjf,OAAOof,EAAOE,EAAOC,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EACtFl8B,KAAK25B,eAAiB,GAAK35B,KAAK25B,gBAAkB,EACvDvd,OAAO0f,EAAOC,GAAQ,EACpB3f,OAAO0f,EAAOC,GAAQ,GACxB/7B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAO,IAAMR,OAAOjf,OAAO0f,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAErGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOR,OAAOjf,OAAO0f,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAGjGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAO,KAAOG,EAAOC,EAAOC,EAE7Dl8B,KAAK25B,gBAAkB,IAC5Bvd,OAAO6f,EAAOC,GAAS,EACrB9f,OAAO6f,EAAOC,GAAS,GACzBl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAO,IAAMX,OAAOjf,OAAO6f,EAAOC,GAAS,GAExGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOX,OAAOjf,OAAO6f,EAAOC,GAAS,GAGpGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAO,OAU5D,YAAVp5B,EAAE3B,KAA+B,cAAV2B,EAAE3B,KAI3B,OAHAjB,KAAK8L,MAAMA,MAAM5C,cAAcyQ,MAAMohB,WAAa,cAClDn4B,EAAEsT,iBACFtT,EAAEoT,mBACK,EAIE,UAAXpT,EAAEyC,OACU,YAAVzC,EAAE3B,KAA+B,cAAV2B,EAAE3B,MAC3BjB,KAAKm8B,WACLn8B,KAAK8L,MAAMA,MAAM5C,cAAcyQ,MAAMohB,WAAa,OAClDn4B,EAAEsT,iBACFtT,EAAEoT,oBAGN,MACF,KAAKhW,KAAKs5B,SAcR,GAbe,aAAX12B,EAAEyC,OACJrF,KAAK+V,cAEM,KAAR6lB,GAAuB,KAARC,GAAeT,GAAa,MACjC,KAARI,GAAuB,KAARE,GAAyB,KAARE,GAAuB,KAARC,IAA8B,KAAbT,EAEnEx4B,EAAEsT,iBAEU,KAARslB,GAAuB,KAARE,GAAeN,GAAa,KAC7Cx4B,EAAEsT,mBAIwB,IAA5BlW,KAAK6Z,KAAKuK,QAAQ,MAA6B,KAAdpkB,KAAK6Z,MACzB,YAAXjX,EAAEyC,OACU,YAAVzC,EAAE3B,KACAjB,KAAK25B,gBAAkB,IACzB35B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOT,OAAOjf,OAAO2f,EAAOC,EAAOC,EAAOC,GAAS,IAEhGl8B,KAAK25B,eAAiB,GAAK35B,KAAK25B,gBAAkB,IAChDvd,OAAOwf,EAAOC,GAAQ,GACpBzf,OAAOwf,EAAOC,GAAQ,EACxB77B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAO,IAAMN,OAAOjf,OAAOwf,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAAOC,EAAOC,EAErGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAON,OAAOjf,OAAOwf,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAAOC,EAAOC,EAGjGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAO,KAAOG,EAAOC,EAAOC,EAAOC,EAAOC,GAGpEl8B,KAAK25B,gBAAkB,IACrBvd,OAAOof,EAAOE,GAAQ,GACpBtf,OAAOof,EAAOE,GAAQ,EACxB17B,KAAK6Z,KAAO,IAAMwhB,OAAOjf,OAAOof,EAAOE,GAAQ,GAAKC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAErGl8B,KAAK6Z,KAAOwhB,OAAOjf,OAAOof,EAAOE,GAAQ,GAAKC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAGjGl8B,KAAK6Z,KAAO,KAAO8hB,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,IAQrD,cAAVt5B,EAAE3B,MACPjB,KAAK25B,gBAAkB,EACzB35B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOT,OAAOjf,OAAO2f,EAAOC,EAAOC,EAAOC,GAAS,GACzFl8B,KAAK25B,eAAiB,GAAK35B,KAAK25B,gBAAkB,EACvDvd,OAAOwf,EAAOC,GAAQ,EACpBzf,OAAOwf,EAAOC,GAAQ,GACxB77B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAO,IAAMN,OAAOjf,OAAOwf,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAAOC,EAAOC,EAErGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAON,OAAOjf,OAAOwf,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAAOC,EAAOC,EAGjGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAO,KAAOG,EAAOC,EAAOC,EAAOC,EAAOC,EAE7Dl8B,KAAK25B,gBAAkB,IAC5Bvd,OAAOof,EAAOE,GAAQ,EACpBtf,OAAOof,EAAOE,GAAQ,GACxB17B,KAAK6Z,KAAO,IAAMwhB,OAAOjf,OAAOof,EAAOE,GAAQ,GAAKC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAErGl8B,KAAK6Z,KAAOwhB,OAAOjf,OAAOof,EAAOE,GAAQ,GAAKC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAGjGl8B,KAAK6Z,KAAO,KAAO8hB,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,IAS5D,YAAVt5B,EAAE3B,KAA+B,cAAV2B,EAAE3B,KAI3B,OAHAjB,KAAK8L,MAAMA,MAAM5C,cAAcyQ,MAAMohB,WAAa,cAClDn4B,EAAEsT,iBACFtT,EAAEoT,mBACK,EAIE,UAAXpT,EAAEyC,OACU,YAAVzC,EAAE3B,KAA+B,cAAV2B,EAAE3B,MAC3BjB,KAAKm8B,WACLn8B,KAAK8L,MAAMA,MAAM5C,cAAcyQ,MAAMohB,WAAa,OAClDn4B,EAAEsT,iBACFtT,EAAEoT,oBAGN,MAEF,KAAKhW,KAAKu5B,SAcR,GAbe,aAAX32B,EAAEyC,OAEQ,MAAT42B,GAAyB,KAATC,GAAgBd,GAAa,MACnC,KAARU,GAAuB,KAARC,GAAyB,KAARE,GAAeC,IAAwB,KAAbd,EAE7Dx4B,EAAEsT,iBACe,KAAR4lB,GAAuB,KAARC,GAAeX,GAAa,KACpDx4B,EAAEsT,iBAEJ7D,YAAW,WACTzL,EAAKmP,gBACJ,KAE2B,IAA5B/V,KAAK6Z,KAAKuK,QAAQ,MAA6B,KAAdpkB,KAAK6Z,MACzB,YAAXjX,EAAEyC,OACU,YAAVzC,EAAE3B,KACAjB,KAAK25B,gBAAkB,IACzB35B,KAAK6Z,KAAOwhB,OAAOjf,OAAOof,EAAOE,EAAOC,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,GAE7Fl8B,KAAK25B,eAAiB,GAAK35B,KAAK25B,gBAAkB,IAChDvd,OAAO0f,EAAOC,GAAQ,GACpB3f,OAAO0f,EAAOC,GAAQ,EACxB/7B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAO,IAAMR,OAAOjf,OAAO0f,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAErGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOR,OAAOjf,OAAO0f,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAGjGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAO,KAAOG,EAAOC,EAAOC,GAGpEl8B,KAAK25B,gBAAkB,IACrBvd,OAAO6f,EAAOC,GAAS,GACrB9f,OAAO6f,EAAOC,GAAS,EACzBl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAO,IAAMX,OAAOjf,OAAO6f,EAAOC,GAAS,GAExGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOX,OAAOjf,OAAO6f,EAAOC,GAAS,GAGpGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAO,OAQrD,cAAVp5B,EAAE3B,MACPjB,KAAK25B,gBAAkB,EACzB35B,KAAK6Z,KAAOwhB,OAAOjf,OAAOof,EAAOE,EAAOC,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EACtFl8B,KAAK25B,eAAiB,GAAK35B,KAAK25B,gBAAkB,EACvDvd,OAAO0f,EAAOC,GAAQ,EACpB3f,OAAO0f,EAAOC,GAAQ,GACxB/7B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAO,IAAMR,OAAOjf,OAAO0f,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAErGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOR,OAAOjf,OAAO0f,EAAOC,GAAQ,GAAKC,EAAOC,EAAOC,EAGjGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAO,KAAOG,EAAOC,EAAOC,EAE7Dl8B,KAAK25B,gBAAkB,IAC5Bvd,OAAO6f,EAAOC,GAAS,EACrB9f,OAAO6f,EAAOC,GAAS,GACzBl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAO,IAAMX,OAAOjf,OAAO6f,EAAOC,GAAS,GAExGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOX,OAAOjf,OAAO6f,EAAOC,GAAS,GAGpGl8B,KAAK6Z,KAAO2hB,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAO,OAS5D,YAAVp5B,EAAE3B,KAA+B,cAAV2B,EAAE3B,KAI3B,OAHAjB,KAAK8L,MAAMA,MAAM5C,cAAcyQ,MAAMohB,WAAa,cAClDn4B,EAAEsT,iBACFtT,EAAEoT,mBACK,EAIE,UAAXpT,EAAEyC,OACU,YAAVzC,EAAE3B,KAA+B,cAAV2B,EAAE3B,MAC3BjB,KAAKm8B,WACLn8B,KAAK8L,MAAMA,MAAM5C,cAAcyQ,MAAMohB,WAAa,OAClDn4B,EAAEsT,iBACFtT,EAAEoT,uBASdojB,EAAAl5B,UAAA6V,YAAA,YACM/V,KAAK8L,MAAMA,MAAM5C,cAAciyB,gBAAoE,IAAlDn7B,KAAK8L,MAAMA,MAAM5C,cAAciyB,kBAClFn7B,KAAK25B,eAAiB35B,KAAK8L,MAAMA,MAAM5C,cAAciyB,iBAIzD/B,EAAAl5B,UAAA86B,iBAAA,SAAiBoB,EAAMC,GACjBD,EAAKE,oBACPF,EAAK1vB,QACL0vB,EAAKE,kBAAkBD,EAAKA,KAIhCjD,EAAAl5B,UAAAi8B,SAAA,WACEn8B,KAAKg7B,iBAAiBh7B,KAAK8L,MAAMA,MAAM5C,cAAelJ,KAAK25B,0DAzlBpCtsB,EAAAA,kBAAyB4G,EAAAA,qBAvElDnT,EAAA,CADCoM,EAAAA,UAAU,WAAY,CAAEC,QAAQ,oBACvBirB,oCAGVt3B,EAAA,CADCoM,EAAAA,UAAU,QAAS,CAAEC,QAAQ,oBACvB8lB,iCAGPnyB,EAAA,CADCuF,EAAAA,gEAYDvF,EAAA,CADCsM,EAAAA,aAAa3G,EAAc,CAAE0G,QAAQ,oBACV1G,6CAI5B3F,EAAA,CADCuF,EAAAA,wBAKwBI,0BAAAA,oCAIhB3F,EAAA,CAARuF,EAAAA,mEAGDvF,EAAA,CADCuF,EAAAA,wBACIkN,iCAGLzS,EAAA,CADCuF,EAAAA,wBACIkN,iCAGLzS,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,mEAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,kEAIDvF,EAAA,CADCuF,EAAAA,0EAIDvF,EAAA,CADCuF,EAAAA,gEAIDvF,EAAA,CADCuF,EAAAA,wEAIDvF,EAAA,CADCuF,EAAAA,oEAmBDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADC8G,EAAAA,yBACWV,EAAAA,gDAKZpG,EAAA,CADCuF,EAAAA,0FA6FDvF,EAAA,CADC8G,EAAAA,yBACeV,EAAAA,oDAGhBpG,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAIbpG,EAAA,CADCuF,EAAAA,wBAImBkN,6BAAAA,kCAhMT6lB,EAAqBmD,EAAAz7B,EAAA,CARjCwF,EAAAA,UAAU,CACTC,SAAU,iBACVC,SAAA,ihDAEA8P,cAAeC,EAAAA,kBAAkBC,KACjC1O,UAAW,CAAC,CAAEC,QAASW,EAAwBV,YAAau0B,IAC5DpqB,KAAM,CAAEwH,MAAO,wIA2EUtM,EAAAA,WAAyB4G,EAAAA,qBAzEvCmlB,IAA8B1wB,kBCNzC,SAAA8zB,EAAoBzxB,GAApB,IAAAnE,EACEI,EAAApG,KAAAZ,OAAOA,YADW4G,EAAAmE,IAAAA,EAVpBnE,EAAAwE,KAAsB,KAQtBxE,EAAA61B,UAAoB,IAetB,OAzB0C38B,EAAA08B,EAAAx1B,GAiBxCw1B,EAAAt8B,UAAA2L,gBAAA,qBACE7L,KAAKy8B,SAA4C,QAApC1yB,EAA6B,QAA7BD,EAAiB,QAAjBvC,EAAGvH,KAAKsM,iBAAS,IAAA/E,OAAA,EAAAA,EAAEyB,kBAAU,IAAAc,OAAA,EAAAA,EAAEpD,aAAK,IAAAqD,OAAA,EAAAA,EAAE8oB,MAAK,SAAA1xB,GAAK,MAAW,aAAXA,EAAEkE,QAC3DrF,KAAKy8B,UACPz8B,KAAK08B,IAAIxzB,cAAcgB,UAAUI,IAAI,4DARhB2J,EAAAA,qBAVzBnT,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCoM,EAAAA,UAAU,uBACNG,EAAAA,uCAGLvM,EAAA,CADCsM,EAAAA,aAAa1E,mBACKA,oCARR8zB,EAAoB17B,EAAA,CAPhCwF,EAAAA,UAAU,CACTC,SAAU,gBACVC,SAAA,yoBACA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,OACzCpL,KAAM,CAAEwH,MAAO,+CAcU1F,EAAAA,qBAZduoB,IAA6Bn0B,GCTpCoO,GAAY,CAAC+lB,IACb9lB,GAAU,CAACC,EAAAA,4BAQjB,SAAAgmB,KAAiC,OAApBA,EAAiB77B,EAAA,CAN7B+V,EAAAA,SAAS,CACNC,aAAYpS,EAAM+R,IAClBM,QAAOrS,EAAMgS,IACbM,QAAOtS,EAAM+R,IACb3O,UAAW,MAEF60B,MCPPlmB,GAAY,CAACwc,IACbvc,GAAU,CAACC,EAAAA,aAAcC,GAAgBgmB,EAAAA,eAAgB9O,EAAAA,2BAQ/D,SAAA+O,KAA+B,OAAlBA,EAAe/7B,EAAA,CAN3B+V,EAAAA,SAAS,CACRC,aAAYpS,EAAM+R,IAClBM,QAAOrS,EAAMgS,IACbM,QAAOtS,EAAM+R,IACb3O,UAAW,MAEA+0B,MCNPpmB,GAAY,CAAC2hB,IACb1hB,GAAU,CAACC,EAAAA,aAAcgmB,GAAmBE,GAAiBjmB,GAAgB4H,GAAiBse,EAAAA,6BAQpG,SAAAC,KAAgC,OAAnBA,EAAgBj8B,EAAA,CAN5B+V,EAAAA,SAAS,CACNC,aAAYpS,EAAM+R,IAClBM,QAAOrS,EAAMgS,IACbM,QAAOtS,EAAM+R,IACb3O,UAAW,MAEFi1B,oBCFb,SAAAC,KAAiC,OAApBA,EAAkBl8B,EAAA,CAN9B+V,EAAAA,SAAS,CACRC,aAAc,CAACsiB,IACfriB,QAAS,CAACJ,EAAAA,aAAcmX,EAAAA,YAAaiP,GAAkBte,GAAqB7H,GAAgBimB,GAAiBD,EAAAA,eAAgB9O,EAAAA,aAC7H9W,QAAS,CAACoiB,IACVtxB,UAAW,MAEAk1B,oBCJb,SAAAC,KAA6B,OAAhBA,EAAan8B,EAAA,CAPzB+V,EAAAA,SAAS,CACRC,aAAc,CAACyc,GAAyBC,IACxCzc,QAAS,CAACJ,EAAAA,cACVK,QAAS,CAACuc,IACV9F,gBAAiB,CAAC8F,GAAyBC,IAC3C1rB,UAAW,CAACksB,OAEDiJ,oBCAb,SAAAC,KAAqC,OAAxBA,EAAqBp8B,EAAA,CANjC+V,EAAAA,SAAS,CACRC,aAAc,CAACga,IACf/Z,QAAS,CAACJ,EAAAA,aAAcmX,EAAAA,YAAaD,IACrC7W,QAAS,CAAC8Z,IACVhpB,UAAW,MAEAo1B,oBCQX,SAAAC,EAAoBnyB,EAAyBD,GAAzB/K,KAAAgL,IAAAA,EAAyBhL,KAAA+K,IAAAA,EAGrC/K,KAAAo9B,QAAoC,GAO5Cp9B,KAAA2G,WAA2C,SAG3C3G,KAAAq9B,OAAoC,IAAIn2B,EAAAA,aA4C1C,OAzCEi2B,EAAAj9B,UAAA2L,gBAAA,WAEE7L,KAAKq9B,OAAOh2B,KAAK,CACfiF,UAAWtM,KACX+M,YAAa/M,KAAKgL,IAAI9B,iBAI1Bi0B,EAAAj9B,UAAAqF,SAAA,iBAAAqB,EAAA5G,KASE,OARAuH,EAAAvH,KAAKo9B,SAAQh5B,KAAIvD,MAAA0G,EAAA7C,EAAI1E,KAAKs9B,aAAa71B,UAAUiM,QAAO,SAAAvS,GAAK,OAACyF,EAAKw2B,QAAQtN,SAAS3uB,QAEpFnB,KAAKo9B,QAAQ5hB,SAAQ,SAAA+hB,GACfA,EAAEv0B,YAAyC,MAA3Bu0B,EAAEv0B,WAAWrC,aAC/B42B,EAAEv0B,WAAWrC,WAAaC,EAAKD,eAI5B,IAAItE,SAA4B,SAAAC,GACrC,IAAKsE,EAAKw2B,SAAmC,IAAxBx2B,EAAKw2B,QAAQz8B,OAChC,OAAO0B,QAAQC,QAAQ,CAAEQ,QAAQ,IAEnCT,QAAQwE,IAAID,EAAKw2B,QAAQt2B,KAAI,SAAC3F,GAAM,OAAAA,EAAEoE,eAAavC,MAAK,SAAC0D,GACvD,IAAM82B,EAAS92B,EAAMgN,QAAO,SAACvS,GAAW,OAACA,EAAE2B,UACvC06B,EAAO78B,OACT2B,EAAQ,CACNQ,QAAQ,EACRyY,MAAOiiB,IAITl7B,EAAQ,CAAEQ,QAAQ,WAO1Bq6B,EAAAj9B,UAAAu9B,UAAA,SAAUC,GACR19B,KAAKo9B,QAAQh5B,KAAKs5B,6CAtDKrwB,EAAAA,kBAAyB4G,EAAAA,qBAOlDnT,EAAA,CADC4G,EAAAA,gBAAgBgB,EAAwB,CAAEi1B,aAAa,oBAClCh2B,EAAAA,+CAGtB7G,EAAA,CADCuF,EAAAA,kEAIDvF,EAAA,CADC8G,EAAAA,yBACOV,EAAAA,4CAfGi2B,EAAyBr8B,EAAA,CAJrCwF,EAAAA,UAAU,CACTC,SAAU,qBACVC,SAAU,qDAIe6G,EAAAA,WAAyB4G,EAAAA,qBAFvCkpB,oBCHX,SAAAS,IACEh5B,EAAkBC,QAAQ,QAAS,CACjCa,QAASE,EAAAA,aAAaX,IAAI,6BAC1BI,KAAM,QACN5C,MAAO,yIAETmC,EAAkBC,QAAQ,QAAS,CACjCa,QAASE,EAAAA,aAAaX,IAAI,6BAC1BI,KAAM,QACN5C,MAAO,iDAGb,OAbam7B,EAAkB98B,EAAA,CAN9B+V,EAAAA,SAAS,CACRC,aAAc,CAACqmB,GAA2Bp2B,EAAuB3B,GACjE2R,QAAS,CAACJ,EAAAA,cACVK,QAAS,CAACmmB,GAA2Bp2B,EAAuB3B,GAC5D0C,UAAW,gCAEA81B,MCSPxQ,GAAa,CACfqH,GACA1B,GACAL,GACAhB,GACAW,GACAiE,kBAsBJ,SAAAuH,KAA8B,OAAjBA,EAAc/8B,EAAA,CAnB1B+V,EAAAA,SAAS,CACNC,aAAc,CAACsW,IACfrW,QAAS,CACLJ,EAAAA,aACAmX,EAAAA,YACAqK,GACA6E,GACAnP,GACAgP,GACAe,GACAX,GACA5P,GACAF,GACA+P,GACAtmB,IAEJI,QAAS,CAACoW,IACVtlB,UAAW,MAEF+1B,qBC7Cb,SAAAC,IAAA,IAAAl3B,EAAA,OAAAI,GAAAA,EAAAnG,MAAAb,KAAAU,YAAAV,YAKE4G,EAAA2U,MAAe,GAqCP3U,EAAA6hB,OAAiC,KAY3C,OAtDkD3oB,EAAAg+B,EAAA92B,GA8BtC82B,EAAA59B,UAAA69B,eAAV,WAAA,IAAAn3B,EAAA5G,KACMA,KAAK+pB,YACP/pB,KAAK+pB,WAAWzB,eAAe5V,WAAU,SAAAvR,GACvCyF,EAAKo3B,aAAa78B,EAAEyT,KAAK9R,YAKvBg7B,EAAA59B,UAAA89B,aAAR,SAAqBppB,GACnB5U,KAAKub,MAAQ3G,GAKfkpB,EAAA59B,UAAAsoB,MAAA,SAAMC,QAAA,IAAAA,IAAAA,EAAA,IACJzoB,KAAKyoB,OAASA,EACVzoB,KAAK+pB,YACP/pB,KAAK+pB,WAAWvB,MAAMC,IAI1BqV,EAAA59B,UAAAypB,QAAA,WACE3pB,KAAKwoB,MAAMxoB,KAAKyoB,SA/ClB3nB,EAAA,CADCuF,EAAAA,4DAkDHy3B,GAtDkDz1B,iBCqB9C,SAAA41B,IAGAj+B,KAAAk+B,UAAoB,EAGpBl+B,KAAAm+B,cAAwB,EAGxBn+B,KAAAo+B,gBAA0B,EAG1Bp+B,KAAAq+B,YAAsB,EAItBr+B,KAAAs+B,mBAAsE,IAAIp3B,EAAAA,aAElElH,KAAAu+B,WAAkC,iBAiB9C,SApCaN,EAqBTz+B,OAAAgC,eAAWy8B,EAAA/9B,UAAA,YAAS,KAApB,WACI,OAAOF,KAAKu+B,gBAEhB,SAAqBv6B,GACjB,GAAIA,GAAKhE,KAAKu+B,WAAY,CACtB,IAAMlyB,EAAMrM,KAAKu+B,WACjBv+B,KAAKu+B,WAAav6B,EAClBhE,KAAKs+B,mBAAmBj3B,KAAK,CACzBiF,UAAWtM,KACXyC,MAAOuB,EACPuI,SAAUF,sCA3BtBvL,EAAA,CADCuF,EAAAA,MAAM,qEAIPvF,EAAA,CADCuF,EAAAA,MAAM,8EAIPvF,EAAA,CADCuF,EAAAA,MAAM,kFAIPvF,EAAA,CADCuF,EAAAA,MAAM,yEAKPvF,EAAA,CADC8G,EAAAA,yBACmBV,EAAAA,wDAIpBpG,EAAA,CADCuF,EAAAA,+FApBQ43B,EAA0BO,EAAA19B,EAAA,CApBtCwF,EAAAA,UAAU,CACPC,SAAU,uBACVC,SAAU,wkCAgBVsB,UAAW,CAAC,CAAEC,QAAS0Y,GAAezY,YAAaw2B,iCAE1CP,qBCKX,SAAAQ,IAAA,IAAA73B,EACEI,EAAApG,KAAAZ,OAAOA,YAEA4G,EAAAoc,MAAgB,GAChBpc,EAAAsc,OAAiB,OAGKtc,EAAA83B,cAA0B,GAEzC93B,EAAA+3B,eAAyB,EA2DzC/3B,EAAA03B,mBAAsE,IAAIp3B,EAAAA,aAElEN,EAAA23B,WAAkC,aA+C5C,OAtHqCz+B,EAAA2+B,EAAAz3B,GAmBnCxH,OAAAgC,eAAWi9B,EAAAv+B,UAAA,aAAU,KAArB,WACE,OAAOF,KAAK4+B,YAAc5+B,KAAK4+B,YAAc5+B,KAAK6+B,wBAGpD,SAAsB76B,GACpBhE,KAAK4+B,YAAc56B,mCAUrBxE,OAAAgC,eAAWi9B,EAAAv+B,UAAA,eAAY,KAAvB,WACE,OAAOF,KAAK8+B,cAAgB9+B,KAAK8+B,cAAgB9+B,KAAK++B,0BAExD,SAAwB/6B,GACtBhE,KAAK8+B,cAAgB96B,mCAWvBxE,OAAAgC,eAAWi9B,EAAAv+B,UAAA,gBAAa,KAAxB,WACE,OAAOF,KAAKg/B,eAAiBh/B,KAAKg/B,eAAiBh/B,KAAKi/B,2BAE1D,SAAyBj7B,GACvBhE,KAAKg/B,eAAiBh7B,mCAoBxBxE,OAAAgC,eAAWi9B,EAAAv+B,UAAA,YAAS,KAApB,WACE,OAAOF,KAAKu+B,gBAEd,SAAqBv6B,GACnB,GAAIhE,KAAKu+B,YAAcv6B,EAAG,CACxB,IAAMqI,EAAMrM,KAAKu+B,WACjBv+B,KAAKu+B,WAAav6B,EAClBhE,KAAKg5B,aAAah1B,GAClBhE,KAAKs+B,mBAAmBj3B,KAAK,CAC3BiF,UAAWtM,KACXyC,MAAOuB,EACPuI,SAAUF,sCAMhBoyB,EAAAv+B,UAAA2L,gBAAA,WAAA,IAAAjF,EAAA5G,KACEA,KAAKwoB,QACDxoB,KAAKk/B,aACPl/B,KAAKk/B,YAAYZ,mBAAmB5rB,WAAU,SAAAvR,GAC5CyF,EAAKgZ,UAAYze,EAAEsB,UAKjBg8B,EAAAv+B,UAAA84B,aAAR,SAAqBp2B,GACnB5C,KAAK4f,UAAYhd,GAenB67B,EAAAv+B,UAAAi/B,SAAA,SAASxiB,KA/GA7b,EAAA,CAARuF,EAAAA,6DACQvF,EAAA,CAARuF,EAAAA,8DAEgBvF,EAAA,CAAhBuF,EAAAA,MAAM,gEACiBvF,EAAA,CAAvBuF,EAAAA,MAAM,6EAEEvF,EAAA,CAARuF,EAAAA,sEAIDvF,EAAA,CADCsM,EAAAA,aAAaib,GAAuB,CAAElb,QAAQ,oBACnBkb,8CAK5BvnB,EAAA,CADCuF,EAAAA,wBAKwBgiB,2BAAAA,qCAMzBvnB,EAAA,CADCsM,EAAAA,aAAa,eAAgB,CAAED,QAAQ,oBAClB4D,EAAAA,yDAKtBjQ,EAAA,CADCuF,EAAAA,wBAI0B0K,EAAAA,oCAAAA,EAAAA,gDAQ3BjQ,EAAA,CADCsM,EAAAA,aAAa,gBAAiB,CAAED,QAAQ,oBAClB4D,EAAAA,0DAIvBjQ,EAAA,CADCuF,EAAAA,wBAI2B0K,EAAAA,oCAAAA,EAAAA,iDAM5BjQ,EAAA,CADCsM,EAAAA,aAAaqa,GAA0B,CAAEta,QAAQ,oBACnCsa,yCAGf3mB,EAAA,CADCsM,EAAAA,aAAa6wB,GAA4B,CAAE9wB,QAAQ,oBACvC8wB,uCAGbn9B,EAAA,CADCsM,EAAAA,aAAakd,GAAoB,CAAEnd,QAAQ,oBACnCmd,mCAKTxpB,EAAA,CADC8G,EAAAA,yBACmBV,EAAAA,wDAIpBpG,EAAA,CADCuF,EAAAA,+FAxEUo4B,EAAe39B,EAAA,CAN3BwF,EAAAA,UAAU,CACTC,SAAU,UACVC,SAAA,ukDAEA8P,cAAeC,EAAAA,kBAAkBC,ihCAEtBioB,IAAwBX,kBCpBrC,SAAAsB,KAAkC,OAArBA,EAAkBt+B,EAAA,CAN9B+V,EAAAA,SAAS,CACNC,aAAc,CAACuR,IACftR,QAAS,GACTC,QAAS,CAACqR,IACVvgB,UAAW,MAEFs3B,oBCGb,SAAAC,KAA4B,OAAfA,EAAYv+B,EAAA,CANxB+V,EAAAA,SAAS,CACNC,aAAc,CAAC2nB,GAAiBR,IAChClnB,QAAS,CAACJ,EAAAA,aAAcyoB,GAAoB5R,EAAAA,gBAC5CxW,QAAS,CAACynB,GAAiBR,IAC3Bn2B,UAAW,MAEFu3B,qBCGX,SAAAC,IAAA,IAAA14B,EACEI,EAAApG,KAAAZ,OAAOA,YAHT4G,EAAA0O,QAA0B,KAiB5B,OApBuCxV,EAAAw/B,EAAAt4B,GAWrCs4B,EAAAp/B,UAAAsV,oBAAA,SAAoB5S,GACd5C,KAAKkY,SACPlY,KAAKkY,QAAQtV,EAAEgS,OAInB0qB,EAAAp/B,UAAAmV,iBAAA,WACE,OAAOrV,KAAKsV,SAlBHgqB,EAAiBx+B,EAAA,CAN7BwF,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,4HAEA8P,cAAeC,EAAAA,kBAAkBC,meAEtB8oB,IAA0BtqB,kBCCvC,SAAAuqB,KAA8B,OAAjBA,EAAcz+B,EAAA,CAN1B+V,EAAAA,SAAS,CACNC,aAAc,CAACwoB,IACfvoB,QAAS,CAACJ,EAAAA,aAAcC,GAAe4oB,EAAAA,oBACvCxoB,QAAS,CAACsoB,IACVx3B,UAAW,MAEFy3B,qBCwBX,SAAAE,EACUC,EACA10B,EACA20B,EACA7rB,EACA/I,GALV,IAAAnE,EAOEI,EAAApG,KAAAZ,OAAOA,YANC4G,EAAA84B,SAAAA,EACA94B,EAAAoE,IAAAA,EACApE,EAAA+4B,gBAAAA,EACA/4B,EAAAkN,eAAAA,EACAlN,EAAAmE,IAAAA,EATVnE,EAAA+N,WAAqB,EA+FrB/N,EAAA6N,SAA2C,IAAIvN,EAAAA,aAE/CN,EAAAwE,KAAoC,KACpCxE,EAAAg5B,OAAiB,EAEjBh5B,EAAAgO,KAAY,GAEZhO,EAAAi5B,aAAuB,EAEvBj5B,EAAAk5B,UAAoB,EAIpBl5B,EAAAm5B,cAAgC,GAEhCn5B,EAAA2O,cAAgC,KAwClC,OAxJsCzV,EAAA2/B,EAAAz4B,GAgBpCy4B,EAAAv/B,UAAA2L,gBAAA,WAAA,IAAAjF,EAAA5G,KAGE,GAFAggC,QAAQC,IAAI,SACZjgC,KAAKgU,WAAahU,KAAK8T,eAAe3D,KAAKnQ,KAAKgL,IAAI9B,cAAcU,cAAc,6BACpD,iBAAjB5J,KAAKoQ,QACdpQ,KAAK2/B,gBAAgBO,2BAA2BlgC,KAAKoQ,QAAS,IAAIpN,MAAK,SAAAm9B,GACrE9tB,YAAW,iBACTzL,EAAKw5B,cAAmB,QAAN74B,EAAC44B,SAAK,IAAA54B,OAAA,EAAAA,EAAE+E,aACzB,aAGF,GAAItM,KAAKoQ,mBAAmBW,EAAAA,YAAa,CAC5C,IAAMuH,EAAOtY,KAAKoQ,QAAQiwB,mBAAmB,CAAEC,UAAWtgC,KAAK4U,OAC/D5U,KAAKugC,UAAUC,OAAOloB,GACtBtY,KAAK2U,WAAY,EACjB3U,KAAK8T,eAAeL,KAAKzT,KAAKgU,gBAEC,mBAAjBhU,KAAKoQ,SACnBiC,YAAW,WACTzL,EAAKw5B,cAAcx5B,EAAKwJ,aAMtBqvB,EAAAv/B,UAAAkgC,cAAR,SAAsB9zB,GAAtB,IAAA1F,EAAA5G,KAEE,GAAiB,MAAbsM,EAMJ,IACE,IAAM+iB,EAAUrvB,KAAK0/B,SAASpQ,wBAAwBhjB,GACtDtM,KAAKygC,OAASzgC,KAAKugC,UAAU/Q,gBAAgBH,GAC7C,IAAMhc,EAAMrT,KAAKygC,OAAO3vB,SACpBuC,EAAIoB,UACNpB,EAAIoB,SAAS/B,WAAU,SAAC9P,GACtBgE,EAAK6N,SAASpN,KAAKzE,MAGvB5C,KAAiB,SAAEsM,UAAY+G,EAC/B7T,OAAOa,OAAOL,KAAiB,SAAEsM,UAAWtM,KAAK4U,MAE7CvB,EAAIgC,mBACNrV,KAAKuV,cAAgBlC,EAAIgC,oBAEvBhC,EAAI6B,yBACNlV,KAAK0gC,4BAA+BrtB,EAAI6B,uBAAwDxC,WAAU,SAAAvR,GACxGyF,EAAK2O,cAAgBpU,EACrByF,EAAKmE,IAAI0B,oBAIbzM,KAAK0M,QACL1M,KAAK2U,WAAY,EACjB3U,KAAK8T,eAAeL,KAAKzT,KAAKgU,YAC9B3B,YAAW,WACTzL,EAAK65B,OAAOnuB,kBAAkB7F,kBAC7B,KACHzM,KAAK+K,IAAI0B,gBACT,MAAOhI,GAEPu7B,QAAQv7B,MAAMA,QAnCdu7B,QAAQv7B,MAAM,2BAA2BzE,KAAKoQ,UA2ClDqvB,EAAAv/B,UAAA+V,iBAAA,SAAiB0G,GACX3c,KAAK8/B,UACP9/B,KAAK2gC,gBAyBTlB,EAAAv/B,UAAAygC,aAAA,WACE3gC,KAAKyU,SAASpN,KAAK,CACjBiF,UAAWtM,KAAiB,SAAEsM,UAC9BS,YAAa/M,KAAKgL,IAAI9B,gBAExBlJ,KAAK+K,IAAI0B,iBAGXgzB,EAAAv/B,UAAA4U,YAAA,WACM9U,KAAKygC,QACPzgC,KAAKygC,OAAOG,UAEV5gC,KAAK0gC,6BACP1gC,KAAK0gC,4BAA4B3rB,cAEnC/U,KAAK+K,IAAI0B,gBACTzM,KAAK8T,eAAeL,KAAKzT,KAAKgU,aAGhCyrB,EAAAv/B,UAAAwM,MAAA,WAAA,IAAA9F,EAAA5G,KACEqS,YAAW,WAAM,OAAAzL,EAAKoE,IAAI9B,cAAcwD,YAG1C+yB,EAAAv/B,UAAA2gC,aAAA,aAEApB,EAAAv/B,UAAA4gC,wBAAA,SAAwBl+B,GAClBA,EAAEsV,QACJtV,EAAEsV,UAEKlY,KAAiB,SAAEsM,UAAUkJ,qBACpCxV,KAAiB,SAAEsM,UAAUkJ,oBAAoB,CAC/ClJ,UAAWtM,KAAiB,SAAEsM,UAC9BxH,KAAMlC,EAAEkC,KACR8P,KAAMhS,EACNmK,YAAa/M,KAAKgL,IAAI9B,0DA7IRkG,EAAAA,gCACL/B,EAAAA,kBACYsG,EAAAA,uBACDV,SACXgB,EAAAA,qBAyEfnT,EAAA,CADCoM,EAAAA,UAAU,YAAa,CAAE6zB,KAAMtV,EAAAA,iBAAkBte,QAAQ,oBACvCse,EAAAA,mDAGnB3qB,EAAA,CADCsV,EAAAA,aAAa,iBAAkB,CAAC,4DACTC,oFAvFbopB,EAAgB3+B,EAAA,CAL5BwF,EAAAA,UAAU,CACTE,SAAA,oiDAEA8P,cAAeC,EAAAA,kBAAkBC,szHASbpH,EAAAA,yBACL/B,EAAAA,WACYsG,EAAAA,gBACDV,EACXgB,EAAAA,qBAXJwrB,IAAyBp3B,iBClBpC,SAAA24B,EAAoBhxB,GAAAhQ,KAAAgQ,eAAAA,EAFZhQ,KAAAihC,MAAiC,UAmBzCD,EAAA9gC,UAAAge,KAAA,SAAKgjB,EAAMC,GAAX,IAAAv6B,EAAA5G,KACQm0B,EAAe,CACnB2L,UAAU,EACV10B,KAAM,KACNy0B,aAAa,EACbtqB,cAAe,GACfqqB,OAAO,GAGW,iBAATuB,EACThN,EAAQ3P,MAAQ2c,EAEhB3hC,OAAOa,OAAO8zB,EAASgN,GAEzB,IAAM9tB,EAAMrT,KAAKgQ,eAAeG,KAAKsvB,GAAkBtL,EAAS,CAC9D3jB,qBAAqB,EACrBD,YAAa4jB,EAAQyL,MACrBnvB,qBAAqB,EACrBoB,OAAQ,UAEJuvB,EAAQ/tB,EAAIvC,SAClBswB,EAAMhxB,QAAU8wB,EAChBE,EAAkB,SAAI,GAClBjN,EAAQ/oB,OACVg2B,EAAMh2B,KAAO+oB,EAAQ/oB,MAEnB+oB,EAAQ5e,gBACV6rB,EAAM7rB,cAAgB4e,EAAQ5e,eAEhCvV,KAAKihC,MAAM78B,KAAKg9B,GAChBA,EAAM3sB,SAAS/B,WAAU,SAAAvR,GACvByF,EAAKy6B,WAAWD,EAAO/tB,EAAKlS,MAE9B,IAAMmgC,EAAU,IAAIltB,GAAoB,SAAC9R,GACvC8+B,EAAkB,SAAE9sB,MAAQ,SAAC1R,GACvBN,GACFA,EAAQM,OAKd,OADA0+B,EAAqB,YAAI,WAAQF,EAAMT,gBAChCW,GAIDN,EAAA9gC,UAAAmhC,WAAR,SAAmBD,EAAyB/tB,EAAuBvQ,GAAnE,QAAA8D,EAAA5G,KACQuhC,EAAY,SAAC3+B,GACjByQ,EAAIV,UACJ/L,EAAKq6B,MAAM98B,aACJvB,EAAEuR,OACTitB,EAAkB,SAAE9sB,MAAM1R,GACtBgE,EAAKq6B,MAAMtgC,QAAUiG,EAAKq6B,MAAMO,UAAU,GAAG90B,SAE7C9J,EAAI,CAAEuR,QAAQ,GACdstB,EAA4C,QAAjC33B,EAAsB,QAAtBvC,EAAG65B,EAAkB,gBAAC,IAAA75B,OAAA,EAAAA,EAAE+E,iBAAS,IAAAxC,OAAA,EAAAA,EAAE+K,UACpD,GAAI4sB,EAAa,CACf,IAAMC,EAAMD,EAAY7+B,GACpB8+B,aAAer/B,QACjBq/B,EAAI1+B,MAAK,WACE,MAALJ,IAA0B,IAAbA,EAAEuR,QACjBotB,EAAUz+B,MAKL,MAALF,IAA0B,IAAbA,EAAEuR,QACjBotB,EAAUz+B,QAIdy+B,EAAUz+B,6CAvFsBiN,+GAHzBixB,EAAclgC,EAAA,CAD1BiN,EAAAA,WAAW,CAAEC,WAAY,gCAIY+B,KAHzBixB,oBCFT,SAAAW,EACIttB,GADJ,IAAAzN,EAAA5G,KAGIA,KAAK4hC,UAAYvtB,EACjBhC,YAAW,WACPzL,EAAKg7B,UAAUh7B,EAAKi7B,eACrB,IAUX,OALIF,EAAAzhC,UAAAoU,MAAA,SAAMwtB,GAEF,OADA9hC,KAAK6hC,YAAcC,EACZ9hC,MAGf2hC,mBAII,SAAAI,EACI1tB,GADJ,IAAAzN,EAAA5G,KAGIA,KAAK4hC,UAAYvtB,EACjBhC,YAAW,WACPzL,EAAKg7B,UAAUh7B,EAAKo7B,WAAYp7B,EAAKq7B,aAAcr7B,EAAKs7B,eACzD,IAmBX,OAZIH,EAAA7hC,UAAAiiC,KAAA,SAAKL,GAED,OADA9hC,KAAKgiC,WAAaF,EACX9hC,MAEX+hC,EAAA7hC,UAAAiU,OAAA,SAAO2tB,GAGH,OAFA9hC,KAAKiiC,aAAeH,EAEb9hC,MAEX+hC,EAAA7hC,UAAAkiC,MAAA,SAAMN,GACF9hC,KAAKkiC,YAAcJ,GAE3BC,mBAKI,SAAAM,EACIhuB,GADJ,IAAAzN,EAAA5G,KAGIA,KAAK4hC,UAAYvtB,EACjBhC,YAAW,WACPzL,EAAKg7B,UAAUh7B,EAAK07B,WAAY17B,EAAKs7B,eACtC,IAcX,OARIG,EAAAniC,UAAA8C,KAAA,SAAK8+B,GAED,OADA9hC,KAAKsiC,WAAaR,EACX9hC,MAGXqiC,EAAAniC,UAAAkiC,MAAA,SAAMN,GACF9hC,KAAKkiC,YAAcJ,GAE3BO,mBAKI,SAAAE,EAAoBC,GAAAxiC,KAAAwiC,aAAAA,SAIpBD,EAAAriC,UAAAuiC,MAAA,SAAMje,EAAe9e,GAArB,IAAAkB,EAAA5G,KACI,OAAO,IAAI2hC,IAAoB,SAACrtB,GAC5B,IAAM8sB,EAAQx6B,EAAK47B,aAAatkB,KAAKohB,GAAmB,CACpD9a,MAAKA,EACLpZ,KAAM,KACN00B,UAAU,EAEVlrB,KAAM,CACFlP,QAAOA,EACP4P,QAAS,CACL,CACIxQ,KAAM,UACN+U,KAAMjU,EAAAA,aAAaX,IAAI,kBACvB0U,MAAO,UACPjE,gBAAgB,IAGxBwC,QAAS,SAACtV,GACNw+B,EAAM9sB,QACNA,YAOpBiuB,EAAAriC,UAAAwiC,QAAA,SAAQle,EAAe9e,GAAvB,IAAAkB,EAAA5G,KACI,OAAO,IAAI+hC,IAAsB,SAACI,EAAMhuB,EAAQiuB,GAC5C,IAAMhB,EAAQx6B,EAAK47B,aAAatkB,KAAKohB,GAAmB,CACpD9a,MAAKA,EACLpZ,KAAM,KACN00B,UAAU,EAEVlrB,KAAM,CACFU,QAAS,CACL,CACIxQ,KAAM,UACN+U,KAAMjU,EAAAA,aAAaX,IAAI,kBACvB0U,MAAO,UACPjE,gBAAgB,EAChBC,gBAAgB,GAEpB,CACI7Q,KAAM,SACN+U,KAAMjU,EAAAA,aAAaX,IAAI,iBACvB0U,MAAO,eACPjE,gBAAgB,EAChBC,gBAAgB,IAGxBjQ,QAAOA,EACPwS,QAAS,SAACtV,GACNw+B,EAAM9sB,QACS,YAAX1R,EAAEkC,MAAsBq9B,GACxBA,IAEW,WAAXv/B,EAAEkC,MAAqBqP,GACvBA,IAEAiuB,GACAA,YASxBG,EAAAriC,UAAAiQ,KAAA,SAAKqU,EAAe9e,EAAiBo6B,GAArC,IAAAl5B,EAAA5G,UAAqC,IAAA8/B,IAAAA,GAAA,OAA2B,IAAAxqB,EAAA,GAAAqtB,EAAA,EAAAA,EAAAjiC,UAAAC,OAAAgiC,IAAArtB,EAAAqtB,EAAA,GAAAjiC,UAAAiiC,GAC5D,OAAO,IAAIN,IAAe,SAACr/B,EAAMo/B,GAC7B,IAAMhB,EAAQx6B,EAAK47B,aAAatkB,KAAKohB,GAAmB,CACpD9a,MAAKA,EACLpZ,KAAM,KACN00B,SAAQA,EACRlrB,KAAM,CACFlP,QAAOA,EACP4P,QAAOA,EACP4C,QAAS,SAACtV,GACNw+B,EAAM9sB,QACFtR,GACAA,EAAKJ,EAAEkC,MAEPs9B,GACAA,qDAxFUpB,iHAFzBuB,EAAezhC,EAAA,CAD3BiN,EAAAA,WAAW,CAAEC,WAAY,gCAGYgzB,MAFzBuB,oBCjDX,SAAAK,IAGA5iC,KAAAgjB,MAAgB,IAEhBhjB,KAAA6iC,YAAsB,MAgBxB,OAdED,EAAA1iC,UAAA4U,YAAA,WACEpK,SAASd,cAAc,QAAQM,UAAUC,OAAO,uBAElDy4B,EAAA1iC,UAAA6d,OAAA,WACE,IAAM7a,EAAOwH,SAASd,cAAc,QAEX,QAArB5J,KAAK6iC,aACP7iC,KAAK6iC,YAAc,KACnB3/B,EAAKgH,UAAUI,IAAI,wBAEnBtK,KAAK6iC,YAAc,MACnB3/B,EAAKgH,UAAUC,OAAO,wBAf1BrJ,EAAA,CADCuF,EAAAA,6DAHUu8B,EAAiB9hC,EAAA,CAtB7BwF,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,6MACAqxB,WAAY,CACVC,EAAAA,QAAQ,aAAc,CACpBC,EAAAA,MACE,KACApe,EAAAA,MAAM,CACJmpB,UAAW,wBAGf/K,EAAAA,MACE,MACApe,EAAAA,MAAM,CACJmpB,UAAW,6BAGf7K,EAAAA,WAAW,YAAaC,EAAAA,QAAQ,sBAChCD,EAAAA,WAAW,YAAaC,EAAAA,QAAQ,sDAIzB0K,oBCpBb,SAAAG,KAA6B,OAAhBA,EAAcjiC,EAAA,CAN1B+V,EAAAA,SAAS,CACRC,aAAc,CAAC8rB,IACf7rB,QAAS,CAACJ,EAAAA,aAAcqsB,EAAAA,yBACxBhsB,QAAS,CAAC4rB,IACV96B,UAAW,MAEAi7B,oBCsBb,SAAAE,IAEIjjC,KAAAoL,KAAsB,KAGtBpL,KAAA4e,QAAkB,GAGlB5e,KAAA23B,eAAyB,EAEzB33B,KAAA43B,WAAqB,EAMzB,OALIqL,EAAA/iC,UAAA6d,OAAA,WACQ/d,KAAK23B,gBACL33B,KAAK43B,WAAa53B,KAAK43B,YAX/B92B,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,+DAIDvF,EAAA,CADCuF,EAAAA,sEAPQ48B,EAAmBniC,EAAA,CA5B/BwF,EAAAA,UAAU,CACPC,SAAU,cACVC,SAAA,uQACA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,OACzCsa,WAAY,CACRC,EAAAA,QAAQ,oBAAqB,CACzBC,EAAAA,MACI,QACApe,EAAAA,MAAM,CACFuJ,OAAQ,IACRtB,QAAS,KAGjBmW,EAAAA,MACI,SACApe,EAAAA,MAAM,CACFuJ,OAAQ,MACRtB,QAAS,EACToW,QAAS,KAGjBC,EAAAA,WAAW,YAAaC,EAAAA,QAAQ,QAChCD,EAAAA,WAAW,kBAAmBC,EAAAA,QAAQ,UACtCD,EAAAA,WAAW,kBAAmBC,EAAAA,QAAQ,gBAIrC+K,oBCtBb,SAAAC,KAA+B,OAAlBA,EAAgBpiC,EAAA,CAN5B+V,EAAAA,SAAS,CACNC,aAAc,CAACmsB,IACflsB,QAAS,CAAEJ,EAAAA,cACXK,QAAS,CAACisB,IACVn7B,UAAW,MAEFo7B,qBCDX,SAAAC,IAAA,IAAAv8B,EACEI,EAAApG,KAAAZ,OAAOA,YAIT4G,EAAAwE,KAAsB,OAGxB,OATsCtL,EAAAqjC,EAAAn8B,GAQpCm8B,EAAAjjC,UAAA8S,SAAA,aAFAlS,EAAA,CADCuF,EAAAA,4DALU88B,EAAgBriC,EAAA,CAL5BwF,EAAAA,UAAU,CACTC,SAAU,WACVC,SAAA,2HACA8P,cAAeC,EAAAA,kBAAkBC,kCAEtB2sB,IAAyB96B,GCJhCoO,GAAY,CAAC0sB,IACbzsB,GAAU,CAACC,EAAAA,4BAQjB,SAAAysB,KAA6B,OAAhBA,EAAatiC,EAAA,CANzB+V,EAAAA,SAAS,CACNC,aAAYpS,EAAM+R,IAClBM,QAAOrS,EAAMgS,IACbM,QAAOtS,EAAM+R,IACb3O,UAAW,MAEFs7B,oBCAT,SAAAC,EAAoBr4B,GAAAhL,KAAAgL,IAAAA,EAKpBhL,KAAAge,SAAmB,EAiBvB,OAfIqlB,EAAAnjC,UAAA8S,SAAA,aAIAqwB,EAAAnjC,UAAA2L,gBAAA,WACiB7L,KAAKgL,IAAI9B,cAAcQ,QAAQ,qBAGhD25B,EAAAnjC,UAAAiQ,KAAA,WACInQ,KAAKge,SAAU,GAGnBqlB,EAAAnjC,UAAAuT,KAAA,WACIzT,KAAKge,SAAU,4CApBM3Q,EAAAA,cAKzBvM,EAAA,CADCuF,EAAAA,gEANQg9B,EAAuBviC,EAAA,CATnCwF,EAAAA,UAAU,CACPC,SAAU,mBACVC,SAAU,8QASe6G,EAAAA,cAFhBg2B,oBCCb,SAAAC,KAA+B,OAAlBA,EAAexiC,EAAA,CAN3B+V,EAAAA,SAAS,CACNC,aAAc,CAAC/D,EAA6BswB,IAC5CtsB,QAAS,CAACJ,EAAAA,aAAc4sB,EAAAA,YACxBvsB,QAAS,CAACjE,EAA6BswB,IACvCv7B,UAAW,MAEFw7B,qBCyJX,SAAAE,EAAsBz4B,EAAwBC,GAA9C,IAAApE,EACEI,EAAApG,KAAAZ,KAAM+K,EAAKC,IAAIhL,YADK4G,EAAAmE,IAAAA,EAzJbnE,EAAAiS,IAAc,KACdjS,EAAAgS,IAAc,KAGvBhS,EAAA68B,eAAyB,EAEzB78B,EAAA88B,cAAwB,EAGxB98B,EAAA+8B,aAAuB,EAGvB/8B,EAAAg9B,YAAsB,EAGtBh9B,EAAAi9B,mBAA6B,EAE7Bj9B,EAAAk9B,mBAAqB,IAAI3uB,EAAAA,QAEzBvO,EAAAm9B,WAAqB,EAIrBn9B,EAAAo9B,UAAoB,EACpBp9B,EAAAq9B,WAAqB,EACrBr9B,EAAA+yB,eAAyB,EAGzB/yB,EAAAs9B,gBAA0B,GAC1Bt9B,EAAAu9B,SAAmB,KAEVv9B,EAAAw9B,QAAkB,EAClBx9B,EAAAy9B,cAAwB,KACxBz9B,EAAA09B,WAAqB,KA0H5B19B,EAAKuE,UAAY,eA4brB,OAxlB0CrL,EAAA0jC,EAAAx8B,KAA7Bw8B,EAqCXhkC,OAAAgC,eAAWgiC,EAAAtjC,UAAA,QAAK,KAAhB,WACE,OAAOF,KAAKukC,aAEd,SAAiBvgC,GACf,GAAU,MAANA,EACFhE,KAAKwkC,UAAY,IACjBxkC,KAAKukC,QAAU,SAEf,GAAU,KAANvgC,GAAiB,MAALA,QAAmBoF,IAANpF,IAA2E,IAAlDygC,MAAMroB,OAAOpY,EAAE+gB,WAAW2f,QAAQ,KAAM,MAC5F,GAAU,KAAN1gC,GAAiB,MAALA,QAAmBoF,IAANpF,EAAiB,CAC5ChE,KAAKwkC,UAAY,GACjB,IAAMn4B,EAAMrM,KAAKukC,QACjBvkC,KAAKukC,QAAU,KAEXvkC,KAAKukC,UAAYl4B,IACnBrM,KAAK0L,YAAYrE,KAAK,MACtBrH,KAAKyL,eAAepE,KAAK,CACvBmF,aAAcxM,KAAK+jC,UACnBz3B,UAAWtM,KACXyC,MAAO,KACP8J,SACEvM,KAAKyjC,eAAiBp3B,EACV,MAARA,EACE,KACA+P,OAAO/P,EAAIq4B,QAAQ,KAAM,KAC3Br4B,MAAAA,EACA,KACQ,MAARA,EACA,KACA+P,OAAO/P,GACbU,YAAa/M,KAAKgL,IAAI9B,gBAExBlJ,KAAK+jC,WAAY,EACjB/jC,KAAK+K,IAAI0B,gBACTzM,KAAKqJ,qBAAqBrJ,KAAK8L,MAAM5C,oBAElC,CAeL,GAdAlF,EAAIA,EAAE+gB,WAGN/kB,KAAKwkC,UAAYxkC,KAAKyjC,eAAiBz/B,EAAIhE,KAAK2kC,UAAU3gC,EAAE+gB,YAAc/gB,EAWtEhE,KAAKukC,SACDl4B,EAAMrM,KAAKukC,SACTxf,WAAW6f,OAAO,SAAW5gC,EAAE+gB,WAAW6f,OAAO,SACnD5kC,KAAK25B,gBAAkBttB,EAAIu4B,OAAO,OACpC5kC,KAAK25B,eAAiB31B,EAAE4gC,OAAO,OAE/B5kC,KAAK25B,eAAiB31B,EAAErD,QAI9B,GAAIqD,IAAMhE,KAAKukC,QAAS,CAChBl4B,EAAMrM,KAAKukC,QACjBvkC,KAAKukC,QAAUvgC,EACfhE,KAAK0L,YAAYrE,KAAKrH,KAAKyjC,eAAiBz/B,EAAIoY,OAAOpY,EAAE0gC,QAAQ,KAAM,KAAOtoB,OAAOpY,IACrFhE,KAAKyL,eAAepE,KAAK,CACvBmF,aAAcxM,KAAK+jC,UACnBz3B,UAAWtM,KACXyC,MAAOzC,KAAKyjC,eAAiBz/B,EAAIoY,OAAOpY,EAAE0gC,QAAQ,KAAM,KAAOtoB,OAAOpY,GACtEuI,SACEvM,KAAKyjC,eAAiBp3B,EACV,MAARA,EACE,KACA+P,OAAO/P,EAAIq4B,QAAQ,KAAM,KAC3Br4B,MAAAA,EACA,KACQ,MAARA,EACA,KACA+P,OAAO/P,GACbU,YAAa/M,KAAKgL,IAAI9B,gBAExBlJ,KAAK+jC,WAAY,EACjB/jC,KAAK+K,IAAI0B,gBACTzM,KAAKqJ,qBAAqBrJ,KAAK8L,MAAM5C,oBAGpC,CACLlJ,KAAKwkC,UAAY,GACjBxgC,EAAI,KACEqI,EAAMrM,KAAKukC,QACjBvkC,KAAKukC,QAAU,KAEXvkC,KAAKukC,UAAYl4B,IACnBrM,KAAK0L,YAAYrE,KAAK,MACtBrH,KAAKyL,eAAepE,KAAK,CACvBmF,aAAcxM,KAAK+jC,UACnBz3B,UAAWtM,KACXyC,MAAO,KACP8J,SACEvM,KAAKyjC,eAAiBp3B,EACV,MAARA,EACE,KACA+P,OAAO/P,EAAIq4B,QAAQ,KAAM,KAC3Br4B,MAAAA,EACA,KACQ,MAARA,EACA,KACA+P,OAAO/P,GACbU,YAAa/M,KAAKgL,IAAI9B,gBAExBlJ,KAAK+jC,WAAY,EACjB/jC,KAAK+K,IAAI0B,gBACTzM,KAAKqJ,qBAAqBrJ,KAAK8L,MAAM5C,kDAU7Cs6B,EAAAtjC,UAAA2kC,WAAA,SAAWza,GACT,OAAOA,EAAErF,WAAW2f,QAAQ,wBAAyB,MAGvDlB,EAAAtjC,UAAAykC,UAAA,SAAUG,GAMR,IAJA,IAAM1a,GADN0a,GAAQ,IACOrrB,MAAM,KACjBsrB,EAAK3a,EAAE,GACL4a,EAAK5a,EAAEzpB,OAAS,EAAI,IAAMypB,EAAE,GAAK,GACjC6a,EAAM,eACLA,EAAIj/B,KAAK++B,IACdA,EAAKA,EAAGL,QAAQO,EAAK,SAEvB,OAAOF,EAAKC,GAGdxB,EAAAtjC,UAAA8S,SAAA,WAAA,IAAApM,EAAA5G,MACwB,IAAlBA,KAAKiL,WACiB,IAApBjL,KAAK4jC,YACPvxB,YAAW,WACTzL,EAAKkF,MAAM5C,cAAcoV,iBAAiB,SAAS,SAAC1b,GAClDgE,EAAKs+B,YAAYtiC,QAElB,MAOT4gC,EAAAtjC,UAAAglC,YAAA,SAAYvoB,GAAZ,IAAA/V,EAAA5G,KACO2c,EAAcwoB,WAAa,IAC9BnlC,KAAK8L,MAAM5C,cAAcyQ,MAAMohB,WAAa,cAE5C/6B,KAAKolC,eACLplC,KAAKqlC,cAELhzB,YAAW,WACTzL,EAAKu1B,WACLv1B,EAAKkF,MAAM5C,cAAcyQ,MAAMohB,WAAa,SAC3C,IAEApe,EAAcwoB,WAAa,IAC9BnlC,KAAK8L,MAAM5C,cAAcyQ,MAAMohB,WAAa,cAE5C/6B,KAAKslC,iBACLtlC,KAAKqlC,cAELhzB,YAAW,WACTzL,EAAKu1B,WACLv1B,EAAKkF,MAAM5C,cAAcyQ,MAAMohB,WAAa,SAC3C,IAELpe,EAAM3G,kBACN2G,EAAMzG,kBAGRstB,EAAAtjC,UAAAg7B,eAAA,SAAeve,GACb3c,KAAK+jC,WAAY,EACjB,IAGM3I,EAAYC,OAAOC,aAAa3e,EAAM4e,UAyB5C,GAvBIv7B,KAAKyC,OAAgD,OAAvCzC,KAAKyC,MAAMsiB,WAAWwgB,MAAM,SAC5CvlC,KAAKgkC,UAAW,GAEdhkC,KAAKyC,OAA+C,OAAtCzC,KAAKyC,MAAMsiB,WAAW6f,OAAO,OAC7C5kC,KAAKikC,WAAY,IAIfjkC,KAAK8L,MAAM5C,cAAciyB,gBAA8D,IAA5Cn7B,KAAK8L,MAAM5C,cAAciyB,kBACtEn7B,KAAK25B,eAAiB35B,KAAK8L,MAAM5C,cAAciyB,eAC/Cn7B,KAAK25B,gBAAkB,GAIrB35B,KAAK25B,gBAAkB,IAlBA,WAmBD3zB,KAAKo1B,IAC3Bze,EAAMzG,iBAEJlW,KAAKyC,OAASzC,KAAKyC,MAAM8iC,MAAM,QACjC5oB,EAAMzG,kBAIkB,IAAxBlW,KAAK25B,eACP,GAAsB,IAAlBhd,EAAM6oB,SA7Ba,WA6BsBx/B,KAAKo1B,GAE3C,CAQL,GAN2B,OAAvBp7B,KAAKqkC,eAAiD,IAAvBrkC,KAAKqkC,eACpB,MAAdjJ,GACFze,EAAMzG,iBAINlW,KAAKyC,OAASzC,KAAKyC,MAAMsiB,WAAWwgB,MAAM,OAAQ,CACpD,IAAME,EAAiBzlC,KAAKyC,MAAM9B,OAASX,KAAKyC,MAAM2hB,QAAQ,KACxDshB,EAAW1lC,KAAKyC,MAAM2hB,QAAQ,KAChCshB,EAAW,EAAIA,EAAWD,EAAiBC,EAAW,EAAIA,EAAW1lC,KAAKqkC,eAAiBrkC,KAAK25B,eAAiB,EAAI+L,GACvH/oB,EAAMzG,iBAIV,GAAkB,MAAdklB,EACep7B,KAAKyC,MAAMsiB,WAAW0W,OAAOz7B,KAAKyC,MAAM9B,OAAS,GAErDokB,WAAWwgB,MAAM,QAC5B5oB,EAAMzG,iBAGJlW,KAAKgkC,UACPrnB,EAAMzG,iBAERlW,KAAKgkC,UAAW,EAChBhkC,KAAKikC,WAAY,OA5BnBtnB,EAAMzG,kBAkCZstB,EAAAtjC,UAAAylC,YAAA,SAAYhpB,GACV3c,KAAK+jC,WAAY,EACC,YAAdpnB,EAAM1b,KAAmC,cAAd0b,EAAM1b,MACnCjB,KAAK8L,MAAM5C,cAAcyQ,MAAMohB,WAAa,OAC5Cpe,EAAMzG,iBACNyG,EAAM3G,mBAGU,YAAd2G,EAAM1b,KACRjB,KAAKm8B,WAGW,cAAdxf,EAAM1b,KACRjB,KAAKm8B,WAIW,cAAdxf,EAAM1b,KAAqC,eAAd0b,EAAM1b,MACjCjB,KAAK8L,MAAM5C,cAAciyB,gBAA8D,IAA5Cn7B,KAAK8L,MAAM5C,cAAciyB,kBACtEn7B,KAAK25B,eAAiB35B,KAAK8L,MAAM5C,cAAciyB,gBAKjC,SAAdxe,EAAM1b,MACRjB,KAAK25B,eAAiB,GAIN,QAAdhd,EAAM1b,MACRjB,KAAK25B,eAAiB35B,KAAKyC,MAAM9B,QAInCX,KAAKqlC,cAGa,cAAd1oB,EAAM1b,MACW,OAAfjB,KAAKyC,OAAkBzC,KAAKyC,MAAM9B,QAAU,EAC9CX,KAAK25B,eAAiB,EAEtB35B,KAAK25B,gBAAkB,IAK7B6J,EAAAtjC,UAAA0lC,cAAA,SAAcjpB,GAMZ,GALA3c,KAAK+jC,WAAY,EACC,YAAdpnB,EAAM1b,KAAmC,cAAd0b,EAAM1b,MACnC0b,EAAMzG,iBACNyG,EAAM3G,oBAEc,IAAlBhW,KAAKkL,SAAoB,CAC3B,IAAM26B,EACW,OAAf7lC,KAAKyC,OAAiC,KAAfzC,KAAKyC,YAA+B2G,IAAfpJ,KAAKyC,MAC7CzC,KAAKyC,MAAMsiB,WAAWpkB,OAAS,EAAIX,KAAKyC,MAAMsiB,WAAWX,QAAQ,KACjE,EACA0hB,EACJD,EAAgB7lC,KAAKqkC,cAAgBpoB,KAAK8pB,IAAI/lC,KAAKkkC,gBAAiBlkC,KAAKqkC,eAAiBpoB,KAAK8pB,IAAI/lC,KAAKkkC,gBAAiB2B,GAEvH7lC,KAAKyC,OAASzC,KAAKyC,MAAMsiB,WAAWwgB,MAAM,QAC5CvlC,KAAKgmC,YAAchmC,KAAKyC,MAAM2hB,QAAQ,KAClCpkB,KAAKgmC,aAAehmC,KAAK25B,gBACT,cAAdhd,EAAM1b,MACRjB,KAAKimC,IAAMC,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,KAC/C1kC,KAAKmmC,MAAQnmC,KAAKimC,KAAOjmC,KAAKokC,SACb,OAAbpkC,KAAK6Y,KAAgBuD,OAAOpc,KAAKmmC,QAAU/pB,OAAOpc,KAAK6Y,QAEzD7Y,KAAKyC,MAAQzC,KAAKmmC,MAAMC,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,KAI5E,YAAdlpB,EAAM1b,MACRjB,KAAKimC,IAAMC,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,KAC/C1kC,KAAKmmC,MAAQnmC,KAAKimC,MAAOjmC,KAAKokC,SACb,OAAbpkC,KAAK4Y,KAAgBwD,OAAOpc,KAAKmmC,QAAU/pB,OAAOpc,KAAK4Y,QACzD5Y,KAAKyC,MAAQzC,KAAKmmC,MAAMC,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,OAI5E,cAAdlpB,EAAM1b,MACS,OAAbjB,KAAK6Y,KAAgBuD,OAAOpc,KAAKyC,OAAS2Z,OAAOpc,KAAK6Y,QAChC,OAApB7Y,KAAKskC,YACPtkC,KAAKimC,IAAMC,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,KAC/C1kC,KAAKmkC,SACH+B,WAAWJ,EAAYM,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,IACzFK,WAAWlmC,KAAKskC,WAAW8B,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,IAC7FK,WAAWJ,EAAYM,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,IAC3F7lC,KAAKmmC,MAAQD,WAAWlmC,KAAKimC,KAAOjmC,KAAKmkC,SACzCnkC,KAAKyC,MAAQzC,KAAKmmC,MAAMC,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,KAE1F7lC,KAAKimC,IAAMC,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,KAC/C1kC,KAAKmmC,MAAQD,WAAWlmC,KAAKimC,KAAOH,EACpC9lC,KAAKyC,MAAQzC,KAAKmmC,MAAMC,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,KAK9E,YAAdlpB,EAAM1b,MACS,OAAbjB,KAAK4Y,KAAgBwD,OAAOpc,KAAKyC,OAAS2Z,OAAOpc,KAAK4Y,QAChC,OAApB5Y,KAAKskC,YACPtkC,KAAKimC,IAAMC,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,KAC/C1kC,KAAKmkC,SACH+B,WAAWJ,EAAYM,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,IACzFK,WAAWlmC,KAAKskC,WAAW8B,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,IAC7FK,WAAWJ,EAAYM,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,IAC3F7lC,KAAKmmC,MAAQD,WAAWlmC,KAAKimC,KAAOjmC,KAAKmkC,SACzCnkC,KAAKyC,MAAQzC,KAAKmmC,MAAMC,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,KAE1F7lC,KAAKimC,IAAMC,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,KAC/C1kC,KAAKmmC,MAAQD,WAAWlmC,KAAKimC,KAAOH,EACpC9lC,KAAKyC,MAAQzC,KAAKmmC,MAAMC,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,QAMhF,cAAdlpB,EAAM1b,MACQ,MAAZjB,KAAK6Y,KAA6B,MAAd7Y,KAAKyC,MAC3BzC,KAAKyC,MAAQzC,KAAK6Y,IAAIkM,YAEL,OAAb/kB,KAAK6Y,KAAgBuD,OAAOpc,KAAKyC,OAAS4jC,SAASrmC,KAAK6Y,IAAIkM,eAC5C,MAAd/kB,KAAKyC,MACPzC,KAAKyC,MAAQ,KAEbzC,KAAKimC,KAAOjmC,KAAKyC,MAAMsiB,WAAW2f,QAAQ,KAAM,IAChD1kC,KAAKmmC,OAASnmC,KAAKimC,KAAOjmC,KAAKokC,QAC/BpkC,KAAKyC,MAAQzC,KAAKmmC,MAAMphB,WAAW2f,QAAQ,KAAM,OAKvC,YAAd/nB,EAAM1b,MACQ,MAAZjB,KAAK6Y,KAA6B,MAAd7Y,KAAKyC,MAC3BzC,KAAKyC,MAAQzC,KAAK6Y,IAAIkM,YAEL,OAAb/kB,KAAK4Y,KAAgBwD,OAAOpc,KAAKyC,OAAS4jC,SAASrmC,KAAK4Y,IAAImM,eAC5C,MAAd/kB,KAAKyC,MACPzC,KAAKyC,MAAQ,KAEbzC,KAAKimC,IAAMjmC,KAAKyC,MAAMsiB,WAAW2f,QAAQ,KAAM,IAC/C1kC,KAAKmmC,OAASnmC,KAAKimC,MAAOjmC,KAAKokC,QAC/BpkC,KAAKyC,MAAQzC,KAAKmmC,MAAMphB,WAAW2f,QAAQ,KAAM,QAS7D,GAAkB,YAAd/nB,EAAM1b,KAAmC,cAAd0b,EAAM1b,IAInC,OAHAjB,KAAK8L,MAAM5C,cAAcyQ,MAAMohB,WAAa,cAC5Cpe,EAAMzG,iBACNyG,EAAM3G,mBACC,GAIXwtB,EAAAtjC,UAAA6V,YAAA,YACM/V,KAAK8L,MAAM5C,cAAciyB,gBAA8D,IAA5Cn7B,KAAK8L,MAAM5C,cAAciyB,kBACtEn7B,KAAK25B,eAAiB35B,KAAK8L,MAAM5C,cAAciyB,iBAInDqI,EAAAtjC,UAAAmlC,YAAA,WAAA,IAAAz+B,EAAA5G,KACE8nB,EAAAA,WAAW3nB,QAAO,SAAC4nB,GACjBnhB,EAAKk9B,mBAAqB/b,KAE5B/nB,KAAK8jC,mBAAmB9b,KAAKC,EAAAA,aAAa,KAAOC,EAAAA,wBAAwBxV,WAAU,SAACmH,GAAiB,OAAAjT,EAAK0/B,YAAYzsB,MAEtHxH,YAAW,WACTzL,EAAKk9B,mBAAmBnhC,KAAKiE,EAAKkF,MAAM5C,cAAczG,SACrD,KAGL+gC,EAAAtjC,UAAAomC,YAAA,SAAYzsB,GACO,OAAb7Z,KAAK6Y,MACFgB,EAAO7Z,KAAK6Y,MACf7Y,KAAKyC,MAAQ,IAGA,OAAbzC,KAAK4Y,MACFiB,EAAO7Z,KAAK4Y,MACf5Y,KAAKyC,MAAQ,KAKnB+gC,EAAAtjC,UAAAqmC,mBAAA,SAAmBnK,GAEjB,GAAIA,EAAKjB,gBAA0C,IAAxBiB,EAAKjB,eAE9B,OADWiB,EAAKjB,gBAKpBqI,EAAAtjC,UAAA86B,iBAAA,SAAiBoB,EAAMC,GACrB,GAAID,EAAKE,kBACPF,EAAK1vB,QACL0vB,EAAKE,kBAAkBD,EAAKA,QACvB,GAAID,EAAKoK,gBAAiB,CAC/B,IAAMltB,EAAQ8iB,EAAKoK,kBACnBltB,EAAMmtB,UAAS,GACfntB,EAAMotB,QAAQ,YAAarK,GAC3B/iB,EAAMqtB,UAAU,YAAatK,GAC7B/iB,EAAMstB,WAIVpD,EAAAtjC,UAAAi8B,SAAA,WACEn8B,KAAKg7B,iBAAiBh7B,KAAK8L,MAAM5C,cAAelJ,KAAK25B,iBAGvD6J,EAAAtjC,UAAAklC,aAAA,WAEE,GADAplC,KAAK+jC,WAAY,EACD,MAAZ/jC,KAAK6Y,KAA6B,MAAd7Y,KAAKyC,MAC3BzC,KAAKyC,MAAQzC,KAAK6Y,IAAIkM,gBAEtB,IAAsB,IAAlB/kB,KAAKkL,SAAoB,CAC3B,IAAM26B,EACW,OAAf7lC,KAAKyC,OAAiC,KAAfzC,KAAKyC,YAA+B2G,IAAfpJ,KAAKyC,MAC7CzC,KAAKyC,MAAMsiB,WAAWpkB,OAAS,EAAIX,KAAKyC,MAAMsiB,WAAWX,QAAQ,KACjE,EACN,GAAkB,MAAdpkB,KAAKyC,MACPzC,KAAKyC,MAAQ,QACR,CACL,IAAMqjC,EACJD,EAAgB7lC,KAAKqkC,cAAgBpoB,KAAK8pB,IAAI/lC,KAAKkkC,gBAAiBlkC,KAAKqkC,eAAiBpoB,KAAK8pB,IAAI/lC,KAAKkkC,gBAAiB2B,GAC3H7lC,KAAKgmC,YAAchmC,KAAKyC,MAAMsiB,WAAWX,QAAQ,KAAO,EACpDpkB,KAAKyC,OAASzC,KAAKyC,MAAMsiB,WAAWwgB,MAAM,OACxCvlC,KAAKgmC,YAAchmC,KAAK25B,gBAC1B35B,KAAKimC,IAAMC,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,KAC/C1kC,KAAKmmC,MAAQnmC,KAAKimC,MAAOjmC,KAAKokC,SACb,OAAbpkC,KAAK4Y,KAAgBwD,OAAOpc,KAAKmmC,QAAUnmC,KAAK4Y,OAClD5Y,KAAKyC,MAAQzC,KAAKmmC,MAAMC,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,MAG3E,OAAb7lC,KAAK4Y,KAAgBwD,OAAOpc,KAAKyC,OAAS2Z,OAAOpc,KAAK4Y,QAChC,OAApB5Y,KAAKskC,YACPtkC,KAAKimC,IAAMC,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,KAC/C1kC,KAAKmkC,SACH+B,WAAWJ,EAAYM,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,IACzFK,WAAWlmC,KAAKskC,WAAW8B,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,IAC7FK,WAAWJ,EAAYM,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,IAC3F7lC,KAAKmmC,MAAQD,WAAWlmC,KAAKimC,KAAOjmC,KAAKmkC,SACzCnkC,KAAKyC,MAAQzC,KAAKmmC,MAAMC,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,GAAenB,QAAQ,KAAM,MAEvH1kC,KAAKimC,IAAMC,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,KAC/C1kC,KAAKmmC,MAAQD,WAAWlmC,KAAKimC,KAAOH,EACpC9lC,KAAKyC,MAAQzC,KAAKmmC,MAAMC,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,GAAenB,QAAQ,KAAM,OAK5G,OAAb1kC,KAAK4Y,KAAgBwD,OAAOpc,KAAKyC,OAAS4jC,SAASrmC,KAAK4Y,IAAImM,eAC9D/kB,KAAKimC,IAAMjmC,KAAKyC,MAAMsiB,WAAW2f,QAAQ,KAAM,IAC/C1kC,KAAKmmC,OAASnmC,KAAKimC,MAAOjmC,KAAKokC,QAE/BpkC,KAAKyC,MAAQzC,KAAKmmC,MAAMphB,WAAW2f,QAAQ,KAAM,QAQ7DlB,EAAAtjC,UAAAolC,eAAA,WAEE,GADAtlC,KAAK+jC,WAAY,EACD,MAAZ/jC,KAAK6Y,KAA6B,MAAd7Y,KAAKyC,MAC3BzC,KAAKyC,MAAQzC,KAAK6Y,IAAIkM,gBAEtB,IAAsB,IAAlB/kB,KAAKkL,SAAoB,CAC3B,IAAM26B,EACW,OAAf7lC,KAAKyC,OAAiC,KAAfzC,KAAKyC,YAA+B2G,IAAfpJ,KAAKyC,MAC7CzC,KAAKyC,MAAMsiB,WAAWpkB,OAAS,EAAIX,KAAKyC,MAAMsiB,WAAWX,QAAQ,KACjE,EACN,GAAkB,MAAdpkB,KAAKyC,MACPzC,KAAKyC,MAAQ,QACR,CACL,IAAMqjC,EACJD,EAAgB7lC,KAAKqkC,cAAgBpoB,KAAK8pB,IAAI/lC,KAAKkkC,gBAAiBlkC,KAAKqkC,eAAiBpoB,KAAK8pB,IAAI/lC,KAAKkkC,gBAAiB2B,GAC3H7lC,KAAKgmC,YAAchmC,KAAKyC,MAAMsiB,WAAWX,QAAQ,KAAO,EACpDpkB,KAAKyC,OAASzC,KAAKyC,MAAMsiB,WAAWwgB,MAAM,OACxCvlC,KAAKgmC,YAAchmC,KAAK25B,gBAC1B35B,KAAKimC,IAAMC,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,KAC/C1kC,KAAKmmC,MAAQD,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,MAAQ1kC,KAAKokC,SAC7C,OAAbpkC,KAAK6Y,KAAgBuD,OAAOpc,KAAKmmC,QAAUnmC,KAAK6Y,OAClD7Y,KAAKyC,MAAQzC,KAAKmmC,MAAMC,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,GAAenB,QAAQ,KAAM,OAGxG,OAAb1kC,KAAK6Y,KAAgBuD,OAAOpc,KAAKyC,OAAS2Z,OAAOpc,KAAK6Y,QAChC,OAApB7Y,KAAKskC,YACPtkC,KAAKimC,IAAMC,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,KAC/C1kC,KAAKmkC,SACH+B,WAAWJ,EAAYM,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,IACzFK,WAAWlmC,KAAKskC,WAAW8B,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,IAC7FK,WAAWJ,EAAYM,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,IAC3F7lC,KAAKmmC,MAAQD,WAAWlmC,KAAKimC,KAAOjmC,KAAKmkC,SACzCnkC,KAAKyC,MAAQzC,KAAKmmC,MAAMC,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,KAE1F7lC,KAAKimC,IAAMC,WAAWlmC,KAAKyC,MAAMiiC,QAAQ,KAAM,KAC/C1kC,KAAKmmC,MAAQD,WAAWlmC,KAAKimC,KAAOH,EACpC9lC,KAAKyC,MAAQzC,KAAKmmC,MAAMC,QAAQP,EAAgB7lC,KAAKqkC,cAAgBrkC,KAAKqkC,cAAgBwB,MAK/E,OAAb7lC,KAAK6Y,KAAgBuD,OAAOpc,KAAKyC,OAAS4jC,SAASrmC,KAAK6Y,IAAIkM,eAC9D/kB,KAAKimC,KAAOjmC,KAAKyC,MAAMsiB,WAAW2f,QAAQ,KAAM,IAChD1kC,KAAKmmC,OAASnmC,KAAKimC,KAAOjmC,KAAKokC,QAC/BpkC,KAAKyC,MAAQzC,KAAKmmC,MAAMphB,WAAW2f,QAAQ,KAAM,iDAvblCzwB,EAAAA,yBAAwB5G,EAAAA,cAzJ1CvM,EAAA,CAARuF,EAAAA,2DACQvF,EAAA,CAARuF,EAAAA,2DAGDvF,EAAA,CADCuF,EAAAA,sEAGDvF,EAAA,CADCuF,EAAAA,qEAIDvF,EAAA,CADCuF,EAAAA,oEAIDvF,EAAA,CADCuF,EAAAA,mEAIDvF,EAAA,CADCuF,EAAAA,0EAiBQvF,EAAA,CAARuF,EAAAA,+DACQvF,EAAA,CAARuF,EAAAA,qEACQvF,EAAA,CAARuF,EAAAA,kEAlCUm9B,EAAoBqD,EAAA/lC,EAAA,CAPhCwF,EAAAA,UAAU,CACTC,SAAU,gBACVC,SAAA,0kEACA6W,gBAAiBC,EAAAA,wBAAwBC,OACzCpL,KAAM,CAAEwH,MAAO,sBACf7R,UAAW,CAAC,CAAEC,QAASW,EAAwBV,YAAa6+B,6BA4JjC5yB,EAAAA,kBAAwB5G,EAAAA,cA1JxCm2B,IAA6B14B,iBCC1C,SAAAg8B,KAAgC,OAAnBA,EAAiBhmC,EAAA,CAN7B+V,EAAAA,SAAS,CACRC,aAAc,CAAC0sB,IACfzsB,QAAS,CAACJ,EAAAA,aAAcC,GAAgBkX,EAAAA,aACxC9W,QAAS,CAACwsB,IACV17B,UAAW,MAEAg/B,oBCIX,SAAAC,EAAoBlzB,GAAA7T,KAAA6T,GAAAA,EACtB,gDAD0BxG,EAAAA,cADb05B,EAAsBjmC,EAAA,CAblCwF,EAAAA,UAAU,CACTC,SAAU,kBACVC,SAAU,kJAQR,kDAIsB6G,EAAAA,cADb05B,oBCHb,SAAAC,KAAqC,OAAxBA,EAAqBlmC,EAAA,CARjCwF,EAAAA,UAAU,CACTC,SAAU,iBACVC,SACE,uFAKSwgC,oBCCb,SAAAC,KAA4B,OAAfA,EAAYnmC,EAAA,CANxB+V,EAAAA,SAAS,CACNC,aAAc,CAACiwB,GAAwBC,GAAuBpzB,GAC9DmD,QAAS,CAACJ,EAAAA,aAAc2sB,IACxBtsB,QAAS,CAAC+vB,GAAwBC,GAAuBpzB,GACzD9L,UAAW,MAEFm/B,qBCDX,SAAAC,EAAsBn8B,EAAwBC,GAA9C,IAAApE,EACEI,EAAApG,KAAAZ,KAAM+K,EAAKC,IAAIhL,YADK4G,EAAAmE,IAAAA,EAItBnE,EAAAvB,KAA4B,WAC5BuB,EAAAugC,QAAkB,qBAYpB,OAlB4CrnC,EAAAonC,EAAAlgC,KAA/BkgC,EAQXA,EAAAhnC,UAAAknC,mBAAA,WACEpnC,KAAKmnC,QAAU,mBACG,aAAdnnC,KAAKqF,MACPrF,KAAKqF,KAAO,OACZrF,KAAKmnC,QAAU,qBAEfnnC,KAAKqF,KAAO,WACZrF,KAAKmnC,QAAU,wDAdQlzB,EAAAA,yBAAwB5G,EAAAA,cADxC65B,EAAsBG,EAAAvmC,EAAA,CARlCwF,EAAAA,UAAU,CACTC,SAAU,kBACVC,SAAA,svCACA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,OACzCpL,KAAM,CAAEwH,MAAO,sBACf7R,UAAW,CAAC,CAAEC,QAASW,EAAwBV,YAAaq/B,6BAGjCpzB,EAAAA,kBAAwB5G,EAAAA,cADxC65B,IAA+Bp8B,GCLtC2L,GAAY,CAACywB,IACbxwB,GAAU,CAACC,EAAAA,aAAcC,GAAe+lB,kBAQ9C,SAAA2K,KAAkC,OAArBA,EAAmBxmC,EAAA,CAN/B+V,EAAAA,SAAS,CACRC,aAAYpS,EAAM+R,IAClBM,QAAOrS,EAAMgS,IACbM,QAAOtS,EAAM+R,IACb3O,UAAW,MAEAw/B,oBCCb,SAAAC,KAA6B,OAAhBA,EAAazmC,EAAA,CAPzB+V,EAAAA,SAAS,CACRC,aAAc,CAAC2oB,IACf1oB,QAAS,CAACJ,EAAAA,aAAc6W,EAAAA,eAAgB+V,EAAAA,WAAY3sB,GAAgB4oB,EAAAA,mBAAoB8D,IACxFtsB,QAAS,CAACyoB,IACVhS,gBAAiB,CAACgS,IAClB33B,UAAW,CAACk5B,OAEDuG,qBCTb,SAAAC,IAAA,IAAA5gC,EAAA,OAAAI,GAAAA,EAAAnG,MAAAb,KAAAU,YAAAV,YACW4G,EAAA6gC,SAAmB,IAC9B,OAF4C3nC,EAAA0nC,EAAAxgC,GACjClG,EAAA,CAARuF,EAAAA,gEADUmhC,EAAsB1mC,EAAA,CAJlCwF,EAAAA,UAAU,CACTC,SAAU,kBACVC,SAAA,4MAEWghC,IAA+Bn/B,iBCI5C,SAAAq/B,KAAkC,OAArBA,EAAmB5mC,EAAA,CAP/B+V,EAAAA,SAAS,CACRC,aAAc,CAAC0wB,IACfzwB,QAAS,CAACJ,EAAAA,cACVK,QAAS,CAACwwB,IACV/Z,gBAAiB,CAAC+Z,IAClB1/B,UAAW,MAEA4/B,SCHb,WACE1nC,KAAAqF,KAAkC,UAClCrF,KAAAm0B,QAAe,OAGjB,gBAaA,gBAMA,4BAQA,SAAAwT,mDAEA,OAF6C7nC,EAAA6nC,EAAA3gC,GAE7C2gC,GAF6Cv/B,kBAI7C,SAAAw/B,mDAGA,OAH8C9nC,EAAA8nC,EAAA5gC,GAG9C4gC,GAH8Cx/B,MAK9C,4BC1BE,SAAAy/B,EAAsB98B,EAAwBC,GAA9C,IAAApE,EACEI,EAAApG,KAAAZ,KAAM+K,EAAKC,IAAIhL,YADK4G,EAAAmE,IAAAA,EAPfnE,EAAAkhC,YAA+C,IAAI5gC,EAAAA,aAE1DN,EAAA0xB,cAAiD,IAAIpxB,EAAAA,aAGrDN,EAAA4yB,YAAsB,YA8CtB5yB,EAAAolB,MAAgB,MAiBlB,OAvE0ClsB,EAAA+nC,EAAA7gC,GAgBxCxH,OAAAgC,eAAWqmC,EAAA3nC,UAAA,OAAI,KAAf,WACE,OAAOF,KAAK0nB,WAEd,SAAgB1jB,GACd,GAAIA,IAAMhE,KAAK0nB,MAAO,CACpB,IAAMrb,EAAMrM,KAAK0nB,MACjB1nB,KAAK0nB,MAAQ1jB,EACbhE,KAAK8nC,YAAYzgC,KAAK,CACpBiF,UAAWtM,KACXyC,MAAOuB,EACPuI,SAAUF,sCAKhBw7B,EAAA3nC,UAAA8S,SAAA,WACEhT,KAAKyC,MAAQ,GACbzC,KAAK6Z,KAAO,IAGdguB,EAAA3nC,UAAA0nB,gBAAA,SAAgB/N,GAAhB,IAAAjT,EAAA5G,KACOA,KAAK6nB,sBACRC,EAAAA,WAAW3nB,QAAO,SAAA4nB,GAEhBnhB,EAAKihB,qBAAuBE,KAE3BC,KAAKC,EAAAA,aAAajoB,KAAKgsB,QACvBhE,KAAKE,EAAAA,wBACLxV,WAAU,SAAAvR,GACTyF,EAAKiT,KAAO1Y,EACZyF,EAAKnE,MAAQtB,KAInBnB,KAAK6nB,qBAAqBllB,KAAKkX,IAQjCguB,EAAA3nC,UAAA6nC,eAAA,SAAenlC,GAEb5C,KAAKsL,MAAMjE,KAAKzE,IAGlBilC,EAAA3nC,UAAAqN,MAAA,SAAM3K,GACJ5C,KAAKs4B,cAAcjxB,KAAK,CACtBiF,UAAWtM,KACX+M,YAAa/M,KAAKgL,IAAI9B,cACtBzG,MAAOzC,KAAK6Z,iDAzDW5F,EAAAA,yBAAwB5G,EAAAA,cAPnDvM,EAAA,CADC8G,EAAAA,yBACmBV,EAAAA,iDAEpBpG,EAAA,CADC8G,EAAAA,yBACcV,EAAAA,mDAGfpG,EAAA,CADCuF,EAAAA,mEASDvF,EAAA,CADCuF,EAAAA,0FAuCDvF,EAAA,CADCuF,EAAAA,6DArDUwhC,EAAoB/mC,EAAA,CANhCwF,EAAAA,UAAU,CACTC,SAAU,gBACVC,SAAA,61CACA2L,KAAM,CAAEwH,MAAO,sBACf0D,gBAAiBC,EAAAA,wBAAwBC,gCAYdtJ,EAAAA,kBAAwB5G,EAAAA,cAVxCw6B,IAA6B/8B,kBCgBxC,SAAAk9B,EAAY17B,EAAuB6kB,EAA6BC,GAAhE,IAAAxqB,EACEI,EAAApG,KAAAZ,OAAOA,YAD0B4G,EAAAuqB,cAAAA,EAA6BvqB,EAAAwqB,eAAAA,EAE9DxqB,EAAK0F,UAAYA,IAErB,OALsDxM,EAAAkoC,EAAAhhC,GAKtDghC,GALsD9/B,kBAqGpD,SAAA+/B,EAAoBl9B,EAAgCC,EAAyByS,GAA7E,IAAA7W,EACEI,EAAApG,KAAAZ,OAAOA,YADW4G,EAAAmE,IAAAA,EAAgCnE,EAAAoE,IAAAA,EAAyBpE,EAAA6W,KAAAA,EArFpE7W,EAAA8G,oBAA8B,EAsB9B9G,EAAAshC,cAAwB,EAExBthC,EAAAsE,UAAoB,EAEpBtE,EAAAoZ,IAAe3I,EAAAA,SAASpS,IAAI,cAE5B2B,EAAAqE,UAAoB,EAIpBrE,EAAAwE,KAAsB,KAEtBxE,EAAAuhC,WAAqB,EAErBvhC,EAAAuE,UAAqC,KAErCvE,EAAAwhC,WAAqB,GAErBxhC,EAAAyhC,iBAA2B,EAGpCzhC,EAAAyxB,eAAoC,IAAInxB,EAAAA,aAGxCN,EAAA0hC,qBAA+B,EAC/B1hC,EAAA2hC,aAAuB,EAEvB3hC,EAAA4hC,MAAgB,EAChB5hC,EAAAojB,WAAqB,GAIrBpjB,EAAAiT,KAAe,GACfjT,EAAA6hC,WAAqB,EAqCZ7hC,EAAA8hC,aAAuB,EACvB9hC,EAAAoqB,UAAoB,OACpBpqB,EAAAmC,WAAqB,QACrBnC,EAAA+Y,KAA8B,SACvC/Y,EAAA+hC,YAAsB,EACZ/hC,EAAAgiC,YAAmC,IAAI1hC,EAAAA,aAEvCN,EAAA2E,OAA4B,IAAIrE,EAAAA,aAEhCN,EAAA4E,QAA6B,IAAItE,EAAAA,aAEnCN,EAAAmZ,OAAgB,GAexBnZ,EAAAiiC,kBAA4B,EAC5BjiC,EAAAkiC,cAAuB,GAIvBliC,EAAAmiC,kBAA4B,EAG5BniC,EAAAoiC,iBAAmE,IAAI9hC,EAAAA,aAGvEN,EAAAqqB,oBAA2C,IAAI/pB,EAAAA,aAEvCN,EAAAmqB,eAAwB,GA2FhCnqB,EAAAolB,MAAgB,IA2EhBplB,EAAAsqB,qBAAkD,IAAIhqB,EAAAA,qBAwmBxD,OAl5B0CpH,EAAAmoC,EAAAjhC,KAA7BihC,EAgEXzoC,OAAAgC,eAAWymC,EAAA/nC,UAAA,aAAU,KAArB,WACE,OAAOF,KAAK4+B,YAAc5+B,KAAK4+B,YAAc5+B,KAAK6+B,wBAGpD,SAAsB76B,GACpBhE,KAAK4+B,YAAc56B,mCASrBxE,OAAAgC,eAAWymC,EAAA/nC,UAAA,aAAU,KAArB,WACE,OAAOF,KAAKkM,YAAclM,KAAKkM,YAAclM,KAAKmM,wBAGpD,SAAsBnI,GACpBhE,KAAKkM,YAAclI,mCAuBrBxE,OAAAgC,eAAWymC,EAAA/nC,UAAA,QAAK,KAAhB,WACE,OAAOF,KAAK+f,YAEd,SAAiB/b,GACfhE,KAAK+f,OAAS/b,EACVhE,KAAK4oC,aACP5oC,KAAK4oC,YAAYvhC,KAAKrD,GAEpBhE,KAAKipC,qBACPjpC,KAAKipC,oBAAoBtmC,KAAK3C,KAAKub,MAAM5a,yCAmB7CnB,OAAAgC,eAAWymC,EAAA/nC,UAAA,gBAAa,KAAxB,WACE,OAAOF,KAAK+wB,gBAAkB,QAEhC,SAAyB/sB,GACvBhE,KAAKkpC,uBAAuBllC,oCAoB9BikC,EAAA/nC,UAAAgpC,uBAAA,SAAuBllC,EAAUqI,GAAjC,IAAAzF,EAAA5G,UAAiC,IAAAqM,IAAAA,EAAarM,KAAKmxB,eAC5CntB,IACHA,EAAI,IAIFqtB,KAAKC,UAAUjlB,KAASglB,KAAKC,UAAUttB,KACzChE,KAAK+wB,eAA8B,UAAb/wB,KAAK2f,KAAmB3b,EAAEyY,MAAM,EAAG,GAAE/X,EAAO,IAAIykC,IAAInlC,IAC1EhE,KAAK+wB,eAAevV,SAAQ,SAACra,GAAM,OAACA,EAAE0U,UAAW,KACjD7V,KAAKixB,oBAAoB5pB,KAAKrH,KAAK+wB,gBACnC/wB,KAAKkxB,qBAAqB7pB,KAAKrH,KAAKoxB,gBACpCpxB,KAAKqJ,qBAAqBrJ,KAAKgL,IAAI9B,eACnClJ,KAAKopC,aAAY,WACXxiC,EAAKmqB,gBACPnqB,EAAK2U,MAAMC,SAAQ,SAACra,GAAM,OAACA,EAAE0U,SAAWjP,EAAKmqB,eAAe8B,MAAK,SAACryB,GAAM,OAAAA,EAAEoG,EAAKmC,aAAe5H,EAAEyF,EAAKmC,uBAM7Gk/B,EAAA/nC,UAAA8S,SAAA,gBAC2B5J,IAArBpJ,KAAKqpC,aAAsDjgC,MAAzBpJ,KAAKspC,mBACzCtpC,KAAKqpC,YAAcrpC,KAAKspC,kBAEV,MAAZtpC,KAAKggB,MACPhgB,KAAKggB,IAA8F,QAAxFC,OAAOC,iBAAiBlgB,KAAKgL,IAAI9B,cAAe,MAAMiX,iBAAiB,eAItF8nB,EAAA/nC,UAAAqpC,SAAA,SAAS3mC,GACP,GACE5C,KAAKqoC,iBACLroC,KAAKyoC,WAAazoC,KAAKub,MAAM5a,QACoB,GAAjDX,KAAKwpC,cAActgC,cAAcugC,cACjCzpC,KAAKwpC,cAActgC,cAAcugC,aAAezpC,KAAKwpC,cAActgC,cAAc6jB,UAAY,IAAM,IAE/F/sB,KAAKwoC,OAASxoC,KAAKub,MAAM5a,OAAQ,CACnCX,KAAKuoC,aAAc,EACnBvoC,KAAKwoC,KAAOxoC,KAAKub,MAAM5a,OACvB,IAAM8nB,EAAiC,GACvCA,EAAO+f,KAAOxoC,KAAKub,MAAM5a,OACzB8nB,EAAOihB,KAAO1pC,KAAKooC,WACfpoC,KAAK2pC,QACPlhB,EAAOuB,WAAahqB,KAAK6Z,KAEzB4O,EAAOuB,WAAa,KAEtBhqB,KAAKwoB,MAAMC,KAITwf,EAAA/nC,UAAA0pC,iBAAR,SAAyB5lC,EAAU6lC,GACjC,IAAIC,GAAU,EACVD,IACFC,EAAUzY,KAAKC,UAAUttB,KAAOqtB,KAAKC,UAAUtxB,KAAKmxB,gBAEtDnxB,KAAKmxB,cAAgBntB,EACrBhE,KAAK+pC,mBACDF,GAAeC,GACjB9pC,KAAKgqC,6BAQT/B,EAAA/nC,UAAA4nC,YAAA,SAAYllC,GACV,GAAiB,OAAZA,EAAEH,YAA8B2G,IAAZxG,EAAEH,OAAmC,KAAZG,EAAEH,OAAiC,OAAfG,EAAE2J,eAAoCnD,IAAfxG,EAAE2J,UAAyC,KAAf3J,EAAE2J,UAGzH,GADAvM,KAAKsoC,qBAAuB,EACxBtoC,KAAKqoC,gBAAiB,CAKxB,GAJAroC,KAAKgqB,WAAahqB,KAAK6Z,KAInB7Z,KAAKub,MAEP,IADA,IAAIjb,EAAIN,KAAKub,MAAM5a,OACVH,EAAI,EAAGA,EAAIF,EAAGE,IACrBR,KAAKub,MAAMpX,MAOf,IAAMskB,EAAiC,GACvCA,EAAOuB,WAAahqB,KAAK6Z,KAEzB4O,EAAO+f,KAAO,EACd/f,EAAOihB,KAAO1pC,KAAKooC,WACnBpoC,KAAKwoB,MAAMC,WAKjBwf,EAAA/nC,UAAAo4B,cAAA,SAAc11B,GACZo9B,QAAQC,IAAI,gBAAiBr9B,IAGvBqlC,EAAA/nC,UAAA6pC,iBAAR,SAAyBE,GAAzB,IAAArjC,EAAA5G,UAAyB,IAAAiqC,IAAAA,EAAA,MACX,MAARA,GACGjqC,KAAKqoC,iBAAmBroC,KAAK6Z,MAAsB,KAAd7Z,KAAK6Z,KAC7C7Z,KAAKsoC,oBAAsBtoC,KAAKub,MAC7B7H,QAAO,SAACvS,GAAM,OAACA,EAAEyF,EAAKoqB,WAAsBkZ,cAAcpa,SAASlpB,EAAKiT,KAAKqwB,kBAC7E9lB,QAAQpkB,KAAKmxB,cAAcnxB,KAAKmxB,cAAcxwB,OAAS,IAE1DX,KAAKsoC,oBAAsBtoC,KAAKub,MAAM6I,QAAQpkB,KAAKmxB,cAAcnxB,KAAKmxB,cAAcxwB,OAAS,KAGrF,IAAVspC,EAAcjqC,KAAKsoC,sBAAwBtoC,KAAKsoC,sBAG9CtoC,KAAKqoC,gBACProC,KAAK8oC,cAAgB9oC,KAAKub,MAE1Bvb,KAAK8oC,cAAgB9oC,KAAK6Z,KACtB7Z,KAAKub,MAAM7H,QAAO,SAACvS,GAAM,OAACA,EAAEyF,EAAKoqB,WAAsBkZ,cAAcpa,SAASlpB,EAAKiT,KAAKqwB,kBACxFlqC,KAAKub,MAGXvb,KAAKsoC,oBACHtoC,KAAKsoC,oBAAsB,EACvB,EACAtoC,KAAKsoC,qBAAuBtoC,KAAK8oC,cAAcnoC,OAC/CX,KAAK8oC,cAAcnoC,OAAS,EAC5BX,KAAKsoC,oBAGPtoC,KAAKwpC,eACPxpC,KAAKyd,KAAKiI,mBAAkB,WAC1B,IAAMykB,EAAUvjC,EAAK4iC,cAActgC,cAAcU,cAAc,wBAAwBhD,EAAK0hC,oBAAmB,KAC3G6B,GACFA,EAAQC,eAAe,CAAEC,SAAU,eAU3C7qC,OAAAgC,eAAWymC,EAAA/nC,UAAA,iBAAc,KAAzB,WADA,IAAA0G,EAAA5G,KAEE,MAAkB,WAAdA,KAAK2f,KACA3f,KAAK+wB,eAAejqB,KAAI,SAAC3F,GAAM,OAAAA,EAAEyF,EAAKmC,eAAa,GAEnD/I,KAAK+wB,eAAejqB,KAAI,SAAC3F,GAAM,OAAAA,EAAEyF,EAAKmC,gBAAgB,QAIjE,SAA0B/E,GAA1B,IAAA4C,EAAA5G,KACMA,KAAKsqC,sBAAsBtmC,KAGtB,MAALA,EACFhE,KAAKmxB,cAAgB,QAEX/nB,IAANpF,IACEA,GAAK,IAAW,IAALA,GAAgB,MAALA,IACxBhE,KAAK6oC,kBAAmB,GAG1B7oC,KAAKopC,aAAY,WACf,GAAkB,WAAdxiC,EAAK+Y,KACH/Y,EAAK2U,MAAM7H,QAAO,SAACvS,GAAM,OAAA6C,GAAK7C,EAAEyF,EAAKmC,eACvCnC,EAAKuqB,cAAgBvqB,EAAK2U,MAAM7H,QAAO,SAACvS,GAAM,OAAA6C,GAAK7C,EAAEyF,EAAKmC,eAE1DnC,EAAKuqB,cAAgB,QAGvB,GAAIxxB,MAAMkG,QAAQ7B,GAChB,GAAI4C,EAAKuqB,cAAcxwB,OAASqD,EAAErD,OAChCiG,EAAKuqB,cAAgBvqB,EAAKuqB,cAAczd,QAAO,SAACvS,GAAM,OAAA6C,EAAE8rB,SAAS3uB,EAAEyF,EAAKmC,oBACnE,CACL,IAAIwhC,EAAQ,GACZvmC,EAAEwX,SAAQ,SAACgvB,SACTD,EAAMnmC,OAAImD,EAAA,IACPX,EAAKmC,YAAayhC,SAIvB,IAAIC,EAAQC,EAAAA,aAAaH,EAAO3jC,EAAKuqB,cAAevqB,EAAKmC,YACrD4hC,EAAK,GACTF,EAAMjvB,SAAQ,SAACovB,GACbD,EAAGvmC,KAAKwmC,EAAGhkC,EAAKmC,gBAElBnC,EAAK2U,MACF7H,QAAO,SAACvS,GAAM,OAAAwpC,EAAG7a,SAAS3uB,EAAEyF,EAAKmC,gBACjCyS,SAAQ,SAACkmB,GACR96B,EAAKuqB,cAAc/sB,KAAKs9B,MAG5B96B,EAAKsiC,uBAAuBtiC,EAAKuqB,cAAewZ,EAAGhqC,OAAS,EAAI,CAAC,GAAKiG,EAAKuqB,oBAK7EvqB,EAAKuqB,cADIntB,EACY4C,EAAK2U,MAAM7H,QAAO,SAACvS,GAAM,OAAA6C,IAAM7C,EAAEyF,EAAKmC,eAEtC,GAGzBnC,EAAKsqB,qBAAqB7pB,KAAKT,EAAKwqB,gBACpCxqB,EAAKmE,IAAI4vB,eACT/zB,EAAKmE,IAAI0B,sDAMTw7B,EAAA/nC,UAAAoqC,sBAAR,SAA8BO,GAC5B,IAAMC,EAAe9qC,KAAKoxB,eAC1B,OAAwB,MAAhB0Z,GAAoC,MAAZD,GAAqBxZ,KAAKC,UAAUwZ,KAAkBzZ,KAAKC,UAAUuZ,IAG/F5C,EAAA/nC,UAAA6qC,kBAAR,SAA0B/mC,EAAgB6lC,GACxC,IAAMC,IAAUD,IAAe7pC,KAAKsqC,sBAAsBtmC,GAC1DhE,KAAKoxB,eAAiBptB,EAClB6lC,GAAeC,GACjB9pC,KAAKgqC,6BAID/B,EAAA/nC,UAAA8pC,0BAAR,WACEhqC,KAAKgpC,iBAAiB3hC,KAAK,IAAI2gC,GAAiChoC,KAAMA,KAAKmxB,cAAenxB,KAAKoxB,kBAGjG6W,EAAA/nC,UAAA2L,gBAAA,WACM7L,KAAKooC,WAAa,KACpBpoC,KAAKooC,WAAa,IAEH,UAAbpoC,KAAK2f,OACP3f,KAAKkoC,cAAe,KAEjBloC,KAAKqoC,iBAAoBroC,KAAKqoC,iBAAmBroC,KAAK6oC,mBACzD7oC,KAAK2pB,WAGTse,EAAA/nC,UAAA8qC,uBAAA,SAAuBpoC,GAAvB,IAAAgE,EAAA5G,KACEA,KAAK6Z,KAAO,GACR7Z,KAAKk6B,SAAS/b,SAChBne,KAAK2pB,UACLtX,YAAW,WACLzL,EAAKqkC,UACPrkC,EAAKqkC,SAASv+B,UAEf,IAIL1M,KAAKq4B,eAAehxB,KAAKzE,IAG3BqlC,EAAA/nC,UAAAoH,mBAAA,WAAA,IAAAV,EAAA5G,KAOEA,KAAK6I,eAAe7I,KAAKgL,IAAK,gBAAiBhL,KAAKgJ,YAChDhJ,KAAK+pB,YAIP/pB,KAAK+pB,WAAWzB,eAAe5V,WAAU,SAACvR,GACxCyF,EAAK2hC,aAAc,EACnB3hC,EAAKo3B,aAAa78B,EAAEyT,KAAK9R,WAG7B9C,KAAK+K,IAAI4vB,eACT36B,KAAK+K,IAAI0B,iBAGHw7B,EAAA/nC,UAAA89B,aAAR,SAAqBppB,GAArB,IAAAhO,EAAA5G,KACMA,KAAKqoC,gBACHroC,KAAKgqB,YAAiC,MAAnBhqB,KAAKgqB,YAA0C,KAApBhqB,KAAKgqB,WACjDpV,EAAK6zB,YACHzoC,KAAKub,MAAM5a,OAEbiU,EAAK2G,MAAMC,SAAQ,SAACE,GAClB9U,EAAK2U,MAAMnX,KAAKsX,MAWpB1b,KAAKyoC,WAAa7zB,EAAK6zB,aAEE,GAArBzoC,KAAKub,MAAM5a,OACbX,KAAKub,MAAQ3G,EAAK2G,MAElB3G,EAAK2G,MAAMC,SAAQ,SAACE,GAClB9U,EAAK2U,MAAMnX,KAAKsX,MAMpB1b,KAAKyoC,WAA2Br/B,MAAdwL,EAAK2G,MAAqB,EAAI3G,EAAK2G,MAAM5a,QAEpDiU,EAAK2G,OAAS3G,EAAK2G,MAAM5a,SAAWiU,EAAK6zB,YAClDzoC,KAAKub,MAAQ3G,EAAK2G,MAClBvb,KAAKyoC,WAAa7zB,EAAK2G,MAAM5a,QACpBiU,EAAK6zB,YACd7zB,EAAK2G,MAAMC,SAAQ,SAACgH,GAClB5b,EAAK2U,MAAMnX,KAAKoe,MAKlBxiB,KAAKyoC,WAAa7zB,EAAK6zB,aAEvB7zB,EAAK4G,SAAQ,SAACgH,GACZ5b,EAAK2U,MAAMnX,KAAKoe,MAKlBxiB,KAAKyoC,WAAa7zB,EAAKjU,QAGzBX,KAAKub,MAAQ3G,EAGf5U,KAAK+K,IAAI4vB,eACT36B,KAAK+K,IAAI0B,iBAKXw7B,EAAA/nC,UAAAsoB,MAAA,SAAMC,QAAA,IAAAA,IAAAA,EAAA,IAEAzoB,KAAK+pB,aACP/pB,KAAKuoC,aAAc,EACnBvoC,KAAK+pB,WAAWvB,MAAMC,KAI1Bwf,EAAA/nC,UAAAypB,QAAA,WACE,IAAMlB,EAAiC,GAMvC,GALIzoB,KAAKqoC,kBACP5f,EAAO+f,KAAO,EACdxoC,KAAKwoC,KAAO,EACZ/f,EAAOihB,KAAO1pC,KAAKooC,YAEEh/B,MAAnBpJ,KAAK+pB,WAAyB,CAMhC,GAAI/pB,KAAKub,MAEP,IADA,IAAIjb,EAAIN,KAAKub,MAAM5a,OACVH,EAAI,EAAGA,EAAIF,EAAGE,IACrBR,KAAKub,MAAMpX,MAIfnE,KAAKwoB,MAAMC,KAIfwf,EAAA/nC,UAAAgrC,sBAAA,SAAsBxvB,GAAtB,IAAA9U,EAAA5G,KACoB,WAAdA,KAAK2f,KAEP3f,KAAK+qC,kBAAkB,MAAM,GAK7B/qC,KAAK4pC,iBACH5pC,KAAKmxB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAKmC,cAAgB2S,EAAK9U,EAAKmC,gBAClE,GAOJ/I,KAAKuF,WACLvF,KAAK+K,IAAI4vB,gBAGXsN,EAAA/nC,UAAAirC,eAAA,SAAevoC,KAEfqlC,EAAA/nC,UAAAkrC,eAAA,SAAexoC,GACQ,GAAjB5C,KAAKiL,UAAsC,GAAjBjL,KAAKkL,UACjClL,KAAKk6B,SAAShc,QAIlB+pB,EAAA/nC,UAAAkgB,gBAAA,SAAgBxd,EAAe8Y,GAA/B,IAAA9U,EAAA5G,KACQyC,EAAQiZ,EAAK1b,KAAK+I,YAExB,GAAkB,WAAd/I,KAAK2f,KAEP3f,KAAK+qC,kBAAkBtoC,GAAO,OACzB,CACL,IAAMuC,EAAShF,KAAKoxB,eAAe3U,MAAM,GACrCzX,EAAO8qB,SAASrtB,IACI,GAAlBzC,KAAKmoC,WAAwC,GAAlBnoC,KAAKmoC,WAAsBnoC,KAAKmxB,cAAcxwB,OAAS,IACpFX,KAAKkrC,sBAAsBxvB,IAG7B1W,EAAOZ,KAAK3B,GAEZzC,KAAK+qC,kBAAkB/lC,GAAQ,IAIlB,UAAbhF,KAAK2f,OACP3f,KAAK6Z,KAAO,GACZ7Z,KAAKk6B,SAAS5lB,QACdtU,KAAK+K,IAAI4vB,gBAKXtoB,YAAW,WACLzL,EAAKqkC,UACPrkC,EAAKqkC,SAASv+B,UAEf,GACH9J,EAAEoT,mBAGJiyB,EAAA/nC,UAAAmrC,qBAAA,SAAqBzoC,GAArB,MAAAgE,EAAA5G,KACE,GAAIA,KAAKiL,UAAYjL,KAAKkL,SAKxB,OAJAlL,KAAKk6B,SAAS5lB,QACdjC,YAAW,WACTzL,EAAK0kC,iBAAiB5+B,UACrB,IACI,EAEK,WAAV9J,EAAE3B,MACJjB,KAAK6Z,KAAO,KACZxH,YAAW,WACTzL,EAAK0kC,iBAAiB5+B,UACrB,KAEU,cAAV9J,EAAE3B,KAAiC,YAAV2B,EAAE3B,MAAsBjB,KAAKurC,WAAW5qC,OAAS,GAAgB,YAAXiC,EAAEyC,OAClE,WAAdrF,KAAK2f,MACP3f,KAAKsoC,oBAAsBtoC,KAAKsoC,qBAAiC,cAAV1lC,EAAE3B,IAAsB,GAAK,GACpFjB,KAAKwrC,oBAAoBxrC,KAAKsoC,sBAE1BtoC,KAAKk6B,SAAS/b,OAChBne,KAAK+pC,iBAA2B,cAAVnnC,EAAE3B,IAAsB,GAAK,IAEnDjB,KAAKk6B,SAAShc,OACd7L,YAAW,WACLzL,EAAKqkC,UACPrkC,EAAKqkC,SAASv+B,UAEf,KAYT9J,EAAE6oC,2BACa,YAAX7oC,EAAEyC,MAA+B,SAATzC,EAAE3B,KAAkBjB,KAAKk6B,SAAS/b,UACvDne,KAAKqoC,iBAAmBroC,KAAK6Z,MAAsB,KAAd7Z,KAAK6Z,MAC7C7Z,KAAK8oC,cAAgB9oC,KAAKub,MAAM7H,QAAO,SAACvS,GAAM,OAACA,EAAEyF,EAAKoqB,WAAsBkZ,cAAcpa,SAASlpB,EAAKiT,KAAKqwB,kBAC3E,IAA9BlqC,KAAK8oC,cAAcnoC,SACrBX,KAAKsoC,oBAAsB,IAG7BtoC,KAAK8oC,cAAgB9oC,KAAKub,MAI1Bvb,KAAKmxB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAKmC,cAAgBnC,EAAKkiC,cAAcliC,EAAK0hC,qBAAqB1hC,EAAKmC,eAAapI,OAAS,GACnH,YAAbX,KAAK2f,MAEiB,GAAlB3f,KAAKmoC,WAAwC,GAAlBnoC,KAAKmoC,WAAsBnoC,KAAKmxB,cAAcxwB,OAAS,MAC/EX,KAAKqoC,iBAAmBroC,KAAK6Z,MAAsB,KAAd7Z,KAAK6Z,KAC7C7Z,KAAKmxB,cAAgBnxB,KAAKmxB,cAAczd,QACtC,SAACvS,GACC,OAAAA,IACAyF,EAAK2U,MAAM7H,QAAO,SAACvS,GAAM,OAACA,EAAEyF,EAAKoqB,WAAsBkZ,cAAcpa,SAASlpB,EAAKiT,KAAKqwB,kBAAgBtjC,EAAK0hC,wBAGjHtoC,KAAKmxB,cAAgBnxB,KAAKmxB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAKmC,cAAgBnC,EAAK2U,MAAM3U,EAAK0hC,qBAAqB1hC,EAAKmC,eAEzH/I,KAAKgqC,6BAGU,YAAbhqC,KAAK2f,MAC0B,GAA7B3f,KAAKsoC,uBACFtoC,KAAKqoC,iBAAmBroC,KAAK6Z,MAAsB,KAAd7Z,KAAK6Z,KACX,IAA9B7Z,KAAK8oC,cAAcnoC,OACrBX,KAAKmxB,cAAc/sB,KAAKpE,KAAK8oC,cAAc,IAE3C9oC,KAAKmxB,cAAc/sB,KAAKpE,KAAK8oC,cAAc9oC,KAAKsoC,sBAGlDtoC,KAAKmxB,cAAc/sB,KAAKpE,KAAKub,MAAMvb,KAAKsoC,sBAE1CtoC,KAAKgqC,8BAGHhqC,KAAK6Z,MAAuC,KAAb,QAAlBtS,EAAAvH,KAAK8oC,qBAAa,IAAAvhC,OAAA,EAAAA,EAAE5G,SACnCX,KAAK4pC,iBAAiB5pC,KAAK8oC,eAAe,GAE3B,UAAb9oC,KAAK2f,OACP3f,KAAKk6B,SAAS5lB,QACdjC,YAAW,WACTzL,EAAK0kC,iBAAiB5+B,UACrB,KAIT9J,EAAEoT,kBACFpT,EAAEsT,iBACFtT,EAAE6oC,4BAEJzrC,KAAK+K,IAAI4vB,gBAGXsN,EAAA/nC,UAAAwrC,OAAA,SAAOC,GACL,QACEA,EAAI7b,SAAS,UACb6b,EAAI7b,SAAS,QACb6b,EAAI7b,SAAS,YACb6b,EAAI7b,SAAS,QACb6b,EAAI7b,SAAS,aACb6b,EAAI7b,SAAS,SACb6b,EAAI7b,SAAS,gBACb6b,EAAI7b,SAAS,UACb6b,EAAI7b,SAAS,cACb6b,EAAI7b,SAAS,gBACb6b,EAAI7b,SAAS,eACb6b,EAAI7b,SAAS,UACb6b,EAAI7b,SAAS,SACb6b,EAAI7b,SAAS,QACb6b,EAAI7b,SAAS,WACb6b,EAAI7b,SAAS,WACb6b,EAAI7b,SAAS,WACb6b,EAAI7b,SAAS,aACb6b,EAAI7b,SAAS,YACb6b,EAAI7b,SAAS,WACb6b,EAAI7b,SAAS,UACb6b,EAAI7b,SAAS,QACb6b,EAAI7b,SAAS,OACb6b,EAAI7b,SAAS,OACb6b,EAAI7b,SAAS,OACb6b,EAAI7b,SAAS,OACb6b,EAAI7b,SAAS,OACb6b,EAAI7b,SAAS,OACb6b,EAAI7b,SAAS,OACb6b,EAAI7b,SAAS,OACb6b,EAAI7b,SAAS,QACb6b,EAAI7b,SAAS,QACb6b,EAAI7b,SAAS,SAQjBmY,EAAA/nC,UAAA6nC,eAAA,SAAenlC,GAAf,IAAAgE,EAAA5G,KAMQo7B,EAAYx4B,EAAE3B,IAsBpB,IApBgB,aAAbm6B,GACc,aAAbA,GACa,OAAbA,GACa,SAAbA,GACa,UAAbA,GACa,aAAbA,GACa,WAAbA,GACS,UAAXx4B,EAAEgpC,MACW,GAAbhpC,EAAEipC,UAEFjpC,EAAEsT,iBAGQ,cAAVtT,EAAE3B,KACS,YAAX2B,EAAEyC,QACmB,IAAnBrF,KAAKmoC,WAAsBnoC,KAAKmxB,cAAcxwB,OAAS,IAA0B,IAAnBX,KAAKmoC,WAAuBnoC,KAAKmxB,cAAcxwB,OAAS,KAExHX,KAAKmxB,cAAchtB,MACnBnE,KAAKgqC,6BAEHhqC,KAAKiL,UAAYjL,KAAKkL,SAKxB,OAJAlL,KAAKk6B,SAAS5lB,QACdjC,YAAW,WACTzL,EAAK0kC,iBAAiB5+B,UACrB,IACI,EAEK2uB,OAAOC,aAAa14B,EAAE4iC,SAChCxlC,KAAK0rC,OAAO9oC,EAAE3B,MAAQjB,KAAK0oC,aAA4B,GAAb9lC,EAAEipC,UAC9C7rC,KAAKk6B,SAAShc,OACd7L,YAAW,WACLzL,EAAKqkC,UACPrkC,EAAKqkC,SAASv+B,UAEf,GACH1M,KAAK6Z,KAAOjX,EAAE3B,KAGF,WAAV2B,EAAE3B,MACJjB,KAAK6Z,KAAO,KACZ7Z,KAAKk6B,SAAS5lB,QACdjC,YAAW,WACTzL,EAAK0kC,iBAAiB5+B,UACrB,KAEU,cAAV9J,EAAE3B,KAAiC,YAAV2B,EAAE3B,MAAsBjB,KAAKurC,WAAW5qC,OAAS,GAAgB,YAAXiC,EAAEyC,OAClE,WAAdrF,KAAK2f,KACP3f,KAAKwrC,oBAAoBxrC,KAAKsoC,qBAAiC,cAAV1lC,EAAE3B,IAAsB,GAAK,IAE9EjB,KAAKk6B,SAAS/b,OAEQ,GAApBne,KAAK0oC,YACP1oC,KAAK+pC,iBAA2B,cAAVnnC,EAAE3B,IAAsB,GAAK,GAEnDoR,YAAW,WACLzL,EAAKqkC,UACPrkC,EAAKqkC,SAASv+B,UAEf,IAGL1M,KAAKk6B,SAAShc,OACU,GAApBle,KAAK0oC,aACPr2B,YAAW,WACLzL,EAAKqkC,UACPrkC,EAAKqkC,SAASv+B,UAEf,MAMc,IAArB1M,KAAK0oC,aACQ,YAAX9lC,EAAEyC,MAA+B,SAATzC,EAAE3B,KAAkBjB,KAAKk6B,SAAS/b,SAC5Dvb,EAAE6oC,2BAEAzrC,KAAKmxB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAKmC,cAAgBnC,EAAKkiC,cAAcliC,EAAK0hC,qBAAqB1hC,EAAKmC,eAAapI,OAAS,GACnH,YAAbX,KAAK2f,MAEiB,GAAlB3f,KAAKmoC,WAAwC,GAAlBnoC,KAAKmoC,WAAsBnoC,KAAKmxB,cAAcxwB,OAAS,MAC/EX,KAAKqoC,iBAAmBroC,KAAK6Z,MAAsB,KAAd7Z,KAAK6Z,KAC7C7Z,KAAKmxB,cAAgBnxB,KAAKmxB,cAAczd,QACtC,SAACvS,GACC,OAAAA,IACAyF,EAAK2U,MAAM7H,QAAO,SAACvS,GAAM,OAACA,EAAEyF,EAAKoqB,WAAsBkZ,cAAcpa,SAASlpB,EAAKiT,KAAKqwB,kBAAgBtjC,EAAK0hC,wBAGjHtoC,KAAKmxB,cAAgBnxB,KAAKmxB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAKmC,cAAgBnC,EAAK2U,MAAM3U,EAAK0hC,qBAAqB1hC,EAAKmC,eAEzH/I,KAAKgqC,6BAGU,YAAbhqC,KAAK2f,MAC0B,GAA7B3f,KAAKsoC,uBACFtoC,KAAKqoC,iBAAmBroC,KAAK6Z,MAAsB,KAAd7Z,KAAK6Z,KACX,IAA9B7Z,KAAK8oC,cAAcnoC,OACrBX,KAAKmxB,cAAc/sB,KAAKpE,KAAK8oC,cAAc,IAE3C9oC,KAAKmxB,cAAc/sB,KAAKpE,KAAK8oC,cAAc9oC,KAAKsoC,sBAGlDtoC,KAAKmxB,cAAc/sB,KAAKpE,KAAKub,MAAMvb,KAAKsoC,sBAE1CtoC,KAAKgqC,8BAGHhqC,KAAK6Z,MAAsC,IAA9B7Z,KAAK8oC,cAAcnoC,QAClCX,KAAK4pC,iBAAiB5pC,KAAK8oC,eAAe,GAE3B,UAAb9oC,KAAK2f,OACP3f,KAAKk6B,SAAS5lB,QACdjC,YAAW,WACTzL,EAAK0kC,iBAAiB5+B,UACrB,MAOb1M,KAAK+K,IAAI4vB,gBAGXsN,EAAA/nC,UAAAwM,MAAA,WACE1M,KAAK2pC,QAAQj9B,SAGfu7B,EAAA/nC,UAAAsrC,oBAAA,SAAoBpuB,GAApB,IAAAxW,EAAA5G,KACM0b,EAAO,IACN1b,KAAKqoC,iBAAmBroC,KAAK6Z,MAAsB,KAAd7Z,KAAK6Z,MAC7C7Z,KAAK8oC,cAAgB9oC,KAAKub,MAAM7H,QAAO,SAACvS,GAAM,OAACA,EAAEyF,EAAKoqB,WAAsBkZ,cAAcpa,SAASlpB,EAAKiT,KAAKqwB,kBAE7GxuB,EAAO1b,KAAK8oC,cAAc1rB,IAE1B1B,EAAO1b,KAAKub,MAAM6B,GAIhB1B,GACF1b,KAAK4pC,iBAAiB,CAACluB,IAAO,GAGhC1b,KAAK+pC,oBAGP9B,EAAA/nC,UAAAqrC,SAAA,WAAA,IAAA3kC,EAAA5G,KACE,OAAkB,MAAdA,KAAKub,MACA,IAEDvb,KAAKqoC,iBAAmBroC,KAAK6Z,MAAsB,KAAd7Z,KAAK6Z,KAC9C7Z,KAAKub,MAAM7H,QAAO,SAACvS,GAAM,OAACA,EAAEyF,EAAKoqB,WAAsBkZ,cAAcpa,SAASlpB,EAAKiT,KAAKqwB,kBACxFlqC,KAAKub,OAGX0sB,EAAA/nC,UAAA4rC,eAAA,SAAepwB,GAAf,IAAA9U,EAAA5G,KACE,OAAOA,KAAKmxB,eAAiBnxB,KAAKmxB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAKmC,cAAgB2S,EAAK9U,EAAKmC,eAAapI,OAAS,GAI/GsnC,EAAA/nC,UAAAkpC,YAAR,SAAoB2C,GAApB,IAAAnlC,EAAA5G,KACMA,KAAKub,OAASvb,KAAKub,MAAM5a,OAC3BorC,IACU/rC,KAAKipC,qBACfnhB,EAAAA,WAAW3nB,QAAO,SAAC4nB,GACjBnhB,EAAKqiC,oBAAsBlhB,KAE1BC,KAAKC,EAAAA,aAAa,MAClBD,KAAKE,EAAAA,wBACLxV,WAAU,SAACvR,GACV4qC,iDAxzBiB93B,EAAAA,yBAAgC5G,EAAAA,kBAA0BmC,EAAAA,UArF1E1O,EAAA,CAARuF,EAAAA,2EAGDvF,EAAA,CADCsM,EAAAA,aAAa2D,EAAAA,YAAa,CAAE5D,QAAQ,oBACxB4D,EAAAA,gDAGbjQ,EAAA,CADCuF,EAAAA,wBACiB0K,EAAAA,qDAElBjQ,EAAA,CADCoM,EAAAA,UAAU+lB,GAAoB,CAAE9lB,QAAQ,oBACnCE,EAAAA,wCAGNvM,EAAA,CADCoM,EAAAA,UAAU+lB,GAAoB,CAAE9lB,QAAQ,oBAChC8lB,mCAGTnyB,EAAA,CADCoM,EAAAA,UAAU,gBAAiB,CAAEC,QAAQ,oBACvBE,EAAAA,iDAGfvM,EAAA,CADCoM,EAAAA,UAAU,WAAY,CAAEC,QAAQ,oBACvB06B,oCAGV/mC,EAAA,CADCoM,EAAAA,UAAU,mBAAoB,CAAEC,QAAQ,oBACvB8lB,4CAETnyB,EAAA,CAARuF,EAAAA,qEAEQvF,EAAA,CAARuF,EAAAA,iEAEQvF,EAAA,CAARuF,EAAAA,4DAEQvF,EAAA,CAARuF,EAAAA,iEAEQvF,EAAA,CAARuF,EAAAA,mEAEQvF,EAAA,CAARuF,EAAAA,4DAEQvF,EAAA,CAARuF,EAAAA,kEAEQvF,EAAA,CAARuF,EAAAA,iEAEQvF,EAAA,CAARuF,EAAAA,kEAEQvF,EAAA,CAARuF,EAAAA,wEAGDvF,EAAA,CADC8G,EAAAA,yBACeV,EAAAA,oDAehBpG,EAAA,CADCsM,EAAAA,aAAaib,GAAuB,CAAElb,QAAQ,oBACnBkb,8CAK5BvnB,EAAA,CADCuF,EAAAA,wBAKwBgiB,2BAAAA,qCAKzBvnB,EAAA,CADCsM,EAAAA,aAAa3G,EAAc,CAAE0G,QAAQ,oBACV1G,6CAK5B3F,EAAA,CADCuF,EAAAA,wBAKwBI,0BAAAA,oCASzB3F,EAAA,CADCoM,EAAAA,UAAU,IAAK,CAAEC,QAAQ,oBAChBirB,oCAEDt3B,EAAA,CAARuF,EAAAA,oEACQvF,EAAA,CAARuF,EAAAA,iEACQvF,EAAA,CAARuF,EAAAA,kEACQvF,EAAA,CAARuF,EAAAA,4DAESvF,EAAA,CAAT8G,EAAAA,yBAAsBV,EAAAA,iDAEbpG,EAAA,CAAT8G,EAAAA,yBAAiBV,EAAAA,4CAERpG,EAAA,CAAT8G,EAAAA,yBAAkBV,EAAAA,6CAInBpG,EAAA,CADCuF,EAAAA,yFAsBDvF,EAAA,CADC8G,EAAAA,yBACiBV,EAAAA,sDAGlBpG,EAAA,CADC8G,EAAAA,yBACoBV,EAAAA,yDAIrBpG,EAAA,CADCuF,EAAAA,iGAqKDvF,EAAA,CADC8G,EAAAA,yBACqBV,EAAAA,0DAGtBpG,EAAA,CADCuF,EAAAA,oGA5SU4hC,EAAoB+D,EAAAlrC,EAAA,CARhCwF,EAAAA,UAAU,CACTC,SAAU,gBACVC,SAAA,+nKACA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,OACzCpL,KAAM,CAAEwH,MAAO,sBACf7R,UAAW,CAAC,CAAEC,QAASW,EAAwBV,YAAagkC,6BAwFnC/3B,EAAAA,kBAAgC5G,EAAAA,WAA0BmC,EAAAA,UAtFxEy4B,IAA6Bv/B,iBCDxC,SAAAujC,IAAA,IAAArlC,EAAA5G,KApBAA,KAAAksC,WAAqB,EASrBlsC,KAAAmsC,OAAgB,GAGhBnsC,KAAAosC,aAAsD,IAAIllC,EAAAA,aAG1DlH,KAAAqsC,YAAqD,IAAInlC,EAAAA,aAEzDlH,KAAAssC,WAAqB,EAErBtsC,KAAAusC,iBAA2B,EAY3BvsC,KAAAwsC,mBAAqB,SAAC5pC,GACpB,OAAO,IAAIP,SAAQ,SAACC,GAClBA,EAAQ,CACN,CACEG,MAAO,OACPoX,KAAMjU,EAAAA,aAAaX,IAAI,sBAEzB,CACExC,MAAO,QACPoX,KAAMjU,EAAAA,aAAaX,IAAI,6BAa/BjF,KAAAysC,oBAAsB,SAAC7pC,GAErB,OAAO,IAAIP,SAAQ,SAACC,GACS,WAAvBsE,EAAK7B,KAAKotB,UACZ7vB,EAAQ,CACN,CACEG,MAAO,QACPoX,KAAMjU,EAAAA,aAAaX,IAAI,uBAEzB,CACExC,MAAO,WACPoX,KAAMjU,EAAAA,aAAaX,IAAI,0BAEzB,CACExC,MAAO,aACPoX,KAAMjU,EAAAA,aAAaX,IAAI,4BAEzB,CACExC,MAAO,WACPoX,KAAMjU,EAAAA,aAAaX,IAAI,0BAEzB,CACExC,MAAO,YACPoX,KAAMjU,EAAAA,aAAaX,IAAI,2BAEzB,CACExC,MAAO,OACPoX,KAAMjU,EAAAA,aAAaX,IAAI,sBAEzB,CACExC,MAAO,WACPoX,KAAMjU,EAAAA,aAAaX,IAAI,4BAIF,WAAvB2B,EAAK7B,KAAKotB,UACZ7vB,EAAQ,CACN,CACEG,MAAO,QACPoX,KAAMjU,EAAAA,aAAaX,IAAI,uBAEzB,CACExC,MAAO,KACPoX,KAAMjU,EAAAA,aAAaX,IAAI,8BAEzB,CACExC,MAAO,MACPoX,KAAMjU,EAAAA,aAAaX,IAAI,oCAEzB,CACExC,MAAO,KACPoX,KAAMjU,EAAAA,aAAaX,IAAI,2BAEzB,CACExC,MAAO,MACPoX,KAAMjU,EAAAA,aAAaX,IAAI,iCAEzB,CACExC,MAAO,YACPoX,KAAMjU,EAAAA,aAAaX,IAAI,2BAEzB,CACExC,MAAO,OACPoX,KAAMjU,EAAAA,aAAaX,IAAI,sBAEzB,CACExC,MAAO,WACPoX,KAAMjU,EAAAA,aAAaX,IAAI,4BAIF,YAAvB2B,EAAK7B,KAAKotB,UACZ7vB,EAAQ,CACN,CACEG,MAAO,QACPoX,KAAMjU,EAAAA,aAAaX,IAAI,uBAEzB,CACExC,MAAO,OACPoX,KAAMjU,EAAAA,aAAaX,IAAI,sBAEzB,CACExC,MAAO,WACPoX,KAAMjU,EAAAA,aAAaX,IAAI,4BAI7B3C,EAAQ,QAqGZtC,KAAA0sC,eAAiB,SAAC9pC,GAChB,GAAIgE,EAAK7B,MAAQ6B,EAAK7B,KAAK4nC,QAAQxY,SAAWvtB,EAAK7B,KAAK4nC,QAAQxY,QAAQpK,WACtE,OAAOnjB,EAAK7B,KAAK4nC,QAAQxY,QAAQpK,WAAU3pB,EAAAA,EAAA,GAAMwC,GAAC,CAAEgqC,YAAWxsC,EAAA,GAAOwG,EAAK7B,KAAK4nC,QAAQxY,aAO9F,OApOE8X,EAAA/rC,UAAA8S,SAAA,aAEAi5B,EAAA/rC,UAAA2L,gBAAA,WAGM7L,KAAK+E,KAAK8nC,gBACZ7sC,KAAKusC,iBAAkB,IAmB3BN,EAAA/rC,UAAA4sC,SAAA,WACE9sC,KAAK+sC,KAAKxnC,WAAWvC,MAAK,SAAA7B,QAgG5B8qC,EAAA/rC,UAAA8sC,gBAAA,WACEhtC,KAAKksC,WAAY,GAGnBD,EAAA/rC,UAAA+sC,kBAAA,WACEjtC,KAAKksC,WAAY,EACjBlsC,KAAKqsC,YAAYhlC,KAAK,CAAEkU,MAAOvb,KAAK+E,KAAMuH,UAAWtM,QAEvDisC,EAAA/rC,UAAAgtC,kBAAA,WACEltC,KAAKosC,aAAa/kC,KAAK,CAAEkU,MAAOvb,KAAK+E,KAAMuH,UAAWtM,QAExDisC,EAAA/rC,UAAAitC,cAAA,SAAcvqC,GACRA,EAAEuuB,cAAc,KAClBnxB,KAAK+E,KAAK6Z,QAAUhc,EAAEuuB,cAAc,GAAGvS,QACvC5e,KAAK+E,KAAKqoC,UAAYxqC,EAAEuuB,cAAc,GAAGic,UACzCptC,KAAK+E,KAAKotB,SAAWvvB,EAAEuuB,cAAc,GAAGgB,SACxCnyB,KAAK+E,KAAK4nC,QAAU/pC,EAAEuuB,cAAc,GAAGwb,SAAW,IAAIU,GACtDrtC,KAAK+E,KAAKuoC,cAAc,GAAK1qC,EAAEuuB,cAAc,IAG3CnxB,KAAKutC,WACPvtC,KAAKutC,UAAU5jB,UAGjB3pB,KAAK+E,KAAKtC,MAAQ,KACa,cAA3BzC,KAAK+E,KAAK4nC,QAAQtnC,MACpBrF,KAAKwtC,eAAe7jB,UAEQ,WAA1B3pB,KAAK+E,KAAK4nC,QAAQtnC,MACpBrF,KAAKytC,iBAAiB9jB,UAExB3pB,KAAKqsC,YAAYhlC,KAAK,CAAEiF,UAAWtM,KAAMub,MAAOvb,KAAK+E,QAGvDknC,EAAA/rC,UAAAwtC,eAAA,SAAe9qC,GACb5C,KAAK+E,KAAKyrB,SAAW5tB,EAAE,GAAGH,MAC1BzC,KAAKqsC,YAAYhlC,KAAK,CAAEiF,UAAWtM,KAAMub,MAAOvb,KAAK+E,OAGlC,SAAfnC,EAAE,GAAGH,OAAmC,aAAfG,EAAE,GAAGH,MAChCzC,KAAKssC,WAAY,GAGjBtsC,KAAKssC,WAAY,EACjBtsC,KAAK+E,KAAKtC,MAAQ,GAClBzC,KAAK+E,KAAK8U,KAAO,GACjB7Z,KAAK+E,KAAK4oC,UAAY,GACtB3tC,KAAK+E,KAAK8nC,cAAgB,KAI9BZ,EAAA/rC,UAAAwL,YAAA,SAAY9I,GAEV5C,KAAK+E,KAAK8U,KAAOjX,EAAE,GAAoB,MAAdA,EAAE,GAAGH,MAAgB,GAAKG,EAAE,GAAGH,MAAqB,MAAXG,EAAEH,MAAgB,GAAKG,EAAEH,MAC3FzC,KAAK+E,KAAK8nC,cAAgB,GAC1B7sC,KAAKqsC,YAAYhlC,KAAK,CAAEiF,UAAWtM,KAAMub,MAAOvb,KAAK+E,QAEvDknC,EAAA/rC,UAAA0tC,oBAAA,SAAoBhrC,GAElB5C,KAAK+E,KAAK8nC,cAAgBjqC,EAAE,GAAK,SAAyB,MAAdA,EAAE,GAAGH,MAAgB,GAAKG,EAAE,GAAGH,OAAS,SAAsB,MAAXG,EAAEH,MAAgB,GAAKG,EAAEH,OACxHzC,KAAK+E,KAAKtC,MAAQ,GAClBzC,KAAK+E,KAAK8U,KAAO,GACjB7Z,KAAK+E,KAAK4oC,UAAY,GAEtB3tC,KAAKqsC,YAAYhlC,KAAK,CAAEiF,UAAWtM,KAAMub,MAAOvb,KAAK+E,QAEvDknC,EAAA/rC,UAAA2tC,mBAAA,SAAmBjrC,GAEjB5C,KAAK+E,KAAK8U,KAAOjX,EAAE,GAAoB,MAAdA,EAAE,GAAGH,MAAgB,GAAKG,EAAE,GAAGH,MAAqB,MAAXG,EAAEH,MAAgB,GAAKG,EAAEH,MAC3FzC,KAAK+E,KAAKtC,MAAmB2G,MAAXxG,EAAEH,MAAqBG,EAAE,GAAGH,MAAQG,EAAEH,MACxDzC,KAAK+E,KAAK8nC,cAAgB,GAC1B7sC,KAAKqsC,YAAYhlC,KAAK,CAAEiF,UAAWtM,KAAMub,MAAOvb,KAAK+E,QAEvDknC,EAAA/rC,UAAA4tC,gBAAA,SAAgB9pC,GACd,OAAOA,EAAIA,EAAEyV,MAAM,KAAK,GAAK,IAE/BwyB,EAAA/rC,UAAA+wB,oBAAA,SAAoBruB,GAClB,IAAInC,EAAIT,KAAK+tC,UAAU,aACvB/tC,KAAK+E,KAAK8U,KAAOjX,EAAE,GAAGnC,GAClBT,KAAK+E,MAAQ/E,KAAK+E,KAAK4nC,QAAQxY,QAAQprB,WACzC/I,KAAK+E,KAAKtC,MAAQG,EAAE,GAAG5C,KAAK+E,KAAK4nC,QAAQxY,QAAQprB,YAEjD/I,KAAK+E,KAAKtC,MAAQG,EAAE,GAAGH,MAEzBzC,KAAK+E,KAAK4oC,UAAU,GAAK/qC,EAAE,GAC3B5C,KAAKqsC,YAAYhlC,KAAK,CAAEiF,UAAWtM,KAAMub,MAAOvb,KAAK+E,OACrD/E,KAAK+E,KAAK8nC,cAAgB,IAE5BZ,EAAA/rC,UAAA2sC,cAAA,SAAcjqC,GAIG,GAAXA,EAAEH,QACJzC,KAAK+E,KAAK8nC,cAAgB,IAE5B7sC,KAAKusC,gBAAkB3pC,EAAEH,OAQ3BwpC,EAAA/rC,UAAA6tC,UAAA,SAAUjpC,GACR,OAAO9E,KAAK+E,KAAK4nC,QAAQxY,QAAUn0B,KAAK+E,KAAK4nC,QAAQxY,QAAQrvB,GAAQ,MAhQ/ChE,EAAA,CAAvBoM,EAAAA,UAAU,6BAAwB+6B,qCACNnnC,EAAA,CAA5BoM,EAAAA,UAAU,kCAAkC+6B,0CAEdnnC,EAAA,CAA9BoM,EAAAA,UAAU,oCAAsC+6B,4CAElBnnC,EAAA,CAA9BoM,EAAAA,UAAU,oCAAsC+lB,4CACXnyB,EAAA,CAArCoM,EAAAA,UAAUiwB,oBAAiCA,gCAE5Cr8B,EAAA,CADCuF,EAAAA,kEAIDvF,EAAA,CADCuF,EAAAA,wBACK2nC,gCAGNltC,EAAA,CADCuF,EAAAA,wBACO4nC,kCAGRntC,EAAA,CADCuF,EAAAA,6DAIDvF,EAAA,CADC8G,EAAAA,yBACaV,EAAAA,kDAGdpG,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAxBF+kC,EAA2BnrC,EAAA,CANvCwF,EAAAA,UAAU,CACTC,SAAU,gBACVC,SAAA,o9KACA2L,KAAM,CAAEoc,MAAO,oBACfjY,cAAeC,EAAAA,kBAAkBC,kCAEtBy1B,qBCET,SAAAiC,EAAoBxZ,GAApB,IAAA9tB,EACII,EAAApG,KAAAZ,OAAOA,YADS4G,EAAA8tB,MAAAA,EAIpB9tB,EAAA2U,MAA8B,GAE9B3U,EAAAunC,eAAyB,EAmFzBvnC,EAAA8lC,eAAiB,SAAC9pC,GACd,GAAIA,EAAE+lB,OAAS/lB,EAAE+lB,MAAMgkB,QAAQxY,SAAWvxB,EAAE+lB,MAAMgkB,QAAQxY,QAAQpK,WAC9D,OAAOnnB,EAAE+lB,MAAMgkB,QAAQxY,QAAQpK,WAAU3pB,EAAAA,EAAA,GAAMwC,GAAC,CAAEgqC,YAAWxsC,EAAA,GAAOwC,EAAE+lB,MAAMgkB,QAAQxY,aAI5FvtB,EAAA4lC,mBAAqB,SAAC5pC,GAClB,OAAO,IAAIP,SAAQ,SAACC,GAChBA,EAAQ,CACJ,CACIG,MAAO,OACPoX,KAAMjU,EAAAA,aAAaX,IAAI,sBAE3B,CACIxC,MAAO,QACPoX,KAAMjU,EAAAA,aAAaX,IAAI,+BA0D3C,OApKkDnF,EAAAouC,EAAAlnC,GAU9CknC,EAAAhuC,UAAAkuC,eAAA,SAAe7yB,GAAf,IAAA3U,EAAA5G,KACI,OAAO,IAAIqC,SAAQ,SAACC,EAASC,GACzBgZ,EAAMC,SAAQ,SAACjS,EAAS6T,EAAO/C,GACvB9Q,EAAQgS,MACR3U,EAAKwnC,eAAe7kC,EAAQgS,OAExBhS,EAAQojC,SAAWpjC,EAAQojC,QAAQxY,UAAmD,KAAvC5qB,EAAQojC,QAAQxY,QAAQpK,iBAA4D3gB,IAAvCG,EAAQojC,QAAQxY,QAAQpK,cACpHxgB,EAAQojC,QAAQxY,QAAQpK,WAAanjB,EAAK8hB,aAG9CtL,IAAU/C,EAAM1Z,OAAS,GACzB2B,EAAQ+X,EAAM,WAK9B6zB,EAAAhuC,UAAA2L,gBAAA,WACI,IAAIwiC,EAAchd,KAAKC,UAAUtxB,KAAKsuC,OACtCtuC,KAAKuuC,UAAYld,KAAKmd,MAAMH,GAC5BruC,KAAKouC,eAAepuC,KAAKuuC,UAAUhzB,OACnC,IAAK,IAAI/a,EAAI,EAAGA,EAAIR,KAAKuuC,UAAUhzB,MAAM5a,OAAQH,IAC7CR,KAAKyuC,eAAezuC,KAAKuuC,UAAUhzB,MAAM/a,IAEzCR,KAAKub,MAAM5a,OAAS,GACpBX,KAAKsU,MAAMtU,KAAKsuC,QAIxBJ,EAAAhuC,UAAAwuC,SAAA,SAAS1qC,GACL,OAA4B,GAArBA,EAAEogB,QAAQ,QAAepgB,EAAEyV,MAAM,KAAK,GAAKzV,GAEtDkqC,EAAAhuC,UAAAuuC,eAAA,SAAeE,SAEX,GAAIA,EAAGzc,UACH,IAAK,IAAI1xB,EAAI,EAAGA,EAAImuC,EAAGpzB,MAAM5a,OAAQH,IACjCR,KAAKyuC,eAAeE,EAAGpzB,MAAM/a,SAIQ,IAArB,QAAhB+G,EAAAonC,EAAG9B,qBAAa,IAAAtlC,OAAA,EAAAA,EAAE6c,QAAQ,UAC1BpkB,KAAKub,MAAMnX,KAAKuqC,IAO5BT,EAAAhuC,UAAA8S,SAAA,aAKAk7B,EAAAhuC,UAAA0uC,gBAAA,SAAgBhsC,EAAGmC,GACfA,EAAKtC,MAAQG,EAAEH,MACfsC,EAAK8U,KAAOjX,EAAEH,OAGlByrC,EAAAhuC,UAAA+wB,oBAAA,SAAoBruB,EAAGmC,GACnB,IAAItE,EAAIT,KAAK+tC,UAAU,YAAahpC,GACpCA,EAAK8U,KAAOjX,EAAE,GAAGnC,GACbsE,GAAQA,EAAK4nC,QAAQxY,QAAQprB,WAC7BhE,EAAKtC,MAAQG,EAAE,GAAGmC,EAAK4nC,QAAQxY,QAAQprB,YAEvChE,EAAKtC,MAAQG,EAAE,GAAGH,MAEtBsC,EAAK4oC,UAAU,GAAK/qC,EAAE,IAG1BsrC,EAAAhuC,UAAAwL,YAAA,SAAY9I,EAAGmC,GACXA,EAAKtC,MAAQG,EAAEH,MACfsC,EAAK8U,KAAOjX,EAAEH,OAGlByrC,EAAAhuC,UAAA2tC,mBAAA,SAAmBjrC,EAAGmC,GAClBA,EAAK8U,KAAkBzQ,MAAXxG,EAAEH,MAAqBG,EAAE,GAAGH,MAAQG,EAAEH,MAClDsC,EAAKtC,MAAmB2G,MAAXxG,EAAEH,MAAqBG,EAAE,GAAGH,MAAQG,EAAEH,OAGvDyrC,EAAAhuC,UAAA6tC,UAAA,SAAUjpC,EAAcC,GACpB,OAAOA,EAAK4nC,QAAQxY,QAAUpvB,EAAK4nC,QAAQxY,QAAQrvB,GAAQ,MAwB/DopC,EAAAhuC,UAAA2uC,cAAA,SAAcF,GACV,IAAK,IAAInuC,EAAI,EAAGA,EAAImuC,EAAGhuC,OAAQH,IACP,OAAhBmuC,EAAGnuC,GAAGiC,YAAkC2G,IAAhBulC,EAAGnuC,GAAGiC,OAAuC,KAAhBksC,EAAGnuC,GAAGiC,QAC3DzC,KAAKmuC,eAAgB,IAkBjCD,EAAAhuC,UAAAsV,oBAAA,SAAoB5S,GAApB,IAAAgE,EAAA5G,KACmB,YAAX4C,EAAEkC,MACF9E,KAAK+sC,KAAKxnC,WAAWvC,MAAK,SAAA7B,IACL,IAAbA,EAAE2B,QACF8D,EAAK0N,MAAM1N,EAAK2nC,cAIb,WAAX3rC,EAAEkC,MACF9E,KAAKsU,SAKb45B,EAAAhuC,UAAAmV,iBAAA,WACI,MAAO,CACH,CACIwE,KAAMjU,EAAAA,aAAaX,IAAI,kBACvBH,KAAM,UACN6U,MAAO,aACPhO,KAAM,uBAEV,CACIkO,KAAMjU,EAAAA,aAAaX,IAAI,iBACvBH,KAAM,SACN6U,MAAO,WACPhO,KAAM,kEA9JSqoB,MADWlzB,EAAA,CAArCoM,EAAAA,UAAUiwB,oBAAiCA,gCADnC+Q,EAA4BptC,EAAA,CAJxCwF,EAAAA,UAAU,CACPE,SAAA,iqIAK2BwtB,MAFlBka,IAAqCl5B,kBCN9C,SAAA85B,EAAoB1N,EAA+B1M,GAA/B10B,KAAAohC,MAAAA,EAA+BphC,KAAA00B,MAAAA,EAGnD10B,KAAA+uC,SAAmB,EACnB/uC,KAAAgvC,QAAkB,SACXF,EAAA5uC,UAAA+uC,SAAP,SAAgBX,EAA4B5lB,GAA5C,IAAA9hB,EAAA5G,KAEI,OAAO,IAAIqC,SAAQ,SAACC,GAChBsE,EAAKmoC,SAAU,EACf,IAAK,IAAIvuC,EAAI,EAAGA,EAAI8tC,EAAM/yB,MAAM5a,OAAQH,IACpCoG,EAAK6nC,eAAeH,EAAM/yB,MAAM/a,IAEpC,GAAIoG,EAAKmoC,QAAS,CACdnoC,EAAKooC,QAAS,EACd,IAASxuC,EAAI,EAAGA,EAAI8tC,EAAM/yB,MAAM5a,OAAQH,IACjB,GAAfoG,EAAKooC,QACLpoC,EAAKioC,cAAcP,EAAM/yB,MAAM/a,IAGnCoG,EAAKooC,QACLpoC,EAAKw6B,MAAMljB,KAAKgwB,GAA8B,CAAEt5B,KAAM,CAAE05B,MAAOA,EAAO5lB,YAAaA,GAAelE,MAAO,kBAAmBxhB,MAAK,SAAA7B,GAC7HmB,EAAQnB,WAIhBmB,EAAQgsC,OAQpBQ,EAAA5uC,UAAA2uC,cAAA,SAAcF,GACV,GAAmB,GAAf3uC,KAAKgvC,OACL,GAAIL,EAAGzc,UACH,IAAK,IAAI1xB,EAAI,EAAGA,EAAImuC,EAAGpzB,MAAM5a,OAAQH,IACjCR,KAAK6uC,cAAcF,EAAGpzB,MAAM/a,QAIR,SAApBmuC,EAAG9B,gBACH7sC,KAAKgvC,QAAS,EACdhvC,KAAK00B,MAAMjwB,MAAM,+CAQzBqqC,EAAA5uC,UAAAuuC,eAAR,SAAuBE,SAEnB,GAAIA,EAAGzc,UACH,IAAK,IAAI1xB,EAAI,EAAGA,EAAImuC,EAAGpzB,MAAM5a,OAAQH,IACjCR,KAAKyuC,eAAeE,EAAGpzB,MAAM/a,SAIQ,IAArB,QAAhB+G,EAAAonC,EAAG9B,qBAAa,IAAAtlC,OAAA,EAAAA,EAAE6c,QAAQ,WAC1BpkB,KAAK+uC,SAAU,IAOpBD,EAAA5uC,UAAAgvC,eAAP,SAAsBZ,EAA4BjpC,GAC9C,IAAI8pC,EAAQ,GACZ,OAAQ9pC,GACJ,IAAK,SACGipC,EAAM/yB,MAAM5a,OAAS,IACrBwuC,EAAQ,OAEZ,IAAK,IAAI3uC,EAAI,EAAGA,EAAI8tC,EAAM/yB,MAAM5a,OAAQH,IAAK,EACnCkb,EAAO4yB,EAAM/yB,MAAM/a,cACLytC,GAEhBkB,GAAgBzzB,EAAK0zB,YAIrBD,EAAQA,EAAQ,IAAMzzB,EAAKkD,QAAU,IAAMlD,EAAK8U,SAAW,IAAM9U,EAAKjZ,MAGtEjC,IAAM8tC,EAAM/yB,MAAM5a,OAAS,GAAc,OAATwuC,IAChCA,EAAQA,EAAQ,IAAMb,EAAMpc,WAIhCoc,EAAM/yB,MAAM5a,OAAS,IACrBwuC,GAAgB,OAEpB,MAEJ,IAAK,UACGb,EAAM/yB,MAAM5a,OAAS,IACrBwuC,EAAQ,OAEZ,IAAS3uC,EAAI,EAAGA,EAAI8tC,EAAM/yB,MAAM5a,OAAQH,IAAK,CACzC,IAAMkb,GAAAA,EAAO4yB,EAAM/yB,MAAM/a,cACLytC,GAEhBkB,GAAgBzzB,EAAK2zB,mBAIrBF,EAAQA,EAAQ,IAAMzzB,EAAK0xB,UAAY,IAAM1xB,EAAK8U,SAAW,IAAM9U,EAAKjZ,MAGxEjC,IAAM8tC,EAAM/yB,MAAM5a,OAAS,GAAc,OAATwuC,IAChCA,EAAQA,EAAQ,IAAMb,EAAMpc,WAIhCoc,EAAM/yB,MAAM5a,OAAS,IACrBwuC,GAAgB,OAY5B,OAAOA,4CAhIgBnO,UAA+BhN,gIADjD8a,EAAqBhuC,EAAA,CADjCiN,EAAAA,WAAW,CAAEC,WAAY,gCAEKgzB,GAA+BhN,MADjD8a,oBC2BT,SAAAQ,EAAoBC,GAAAvvC,KAAAuvC,GAAAA,EAfpBvvC,KAAA43B,WAAqB,EAMrB53B,KAAAmsC,OAAgB,GAKhBnsC,KAAAwvC,iBAA2D,IAAItoC,EAAAA,aAE/DlH,KAAAyvC,oBAA8B,EAyFlC,OArFIH,EAAApvC,UAAA8S,SAAA,aAEAs8B,EAAApvC,UAAAwvC,WAAA,SAAW9sC,GACP5C,KAAKsuC,MAAM/yB,MAAQvb,KAAKsuC,MAAM/yB,MAAM7H,QAAO,SAAAvS,GAAK,OAAAA,IAAMyB,EAAE2Y,SACxDvb,KAAKqsC,YAAY,OAErBiD,EAAApvC,UAAAgtC,kBAAA,WAAA,IAAAtmC,EAAA5G,KACIA,KAAK2vC,OAAOp0B,MAAQvb,KAAK2vC,OAAOp0B,MAAM7H,QAAO,SAAAvS,GAAK,OAAAA,IAAMyF,EAAK0nC,SAC7DtuC,KAAKwvC,iBAAiBnoC,KAAK,CAAEstB,OAAQ30B,KAAKsuC,MAAOhiC,UAAWtM,QAEhEsvC,EAAApvC,UAAA4sC,SAAA,aAKAwC,EAAApvC,UAAA2E,QAAA,WACI,IAAM6W,EAA2B,IAAIsyB,GACjChuC,KAAKmsC,OAAOxrC,OAQhB+a,EAAK8U,SAAW,QAEM,WAAlB9U,EAAKyW,WACLzW,EAAKjZ,MAAQ,IAEK,WAAlBiZ,EAAKyW,WACLzW,EAAKjZ,MAAQ,GAGO2G,MAApBpJ,KAAKsuC,MAAM/yB,QACXvb,KAAKsuC,MAAM/yB,MAAQ,IAEvBvb,KAAKsuC,MAAM/yB,MAAMnX,KAAKsX,GACtB1b,KAAKqsC,YAAY,OAErBiD,EAAApvC,UAAA0vC,SAAA,WACI5vC,KAAKyvC,oBAAqB,GAE9BH,EAAApvC,UAAA2vC,WAAA,WACI7vC,KAAK8vC,UAAU,OAEnBR,EAAApvC,UAAA6vC,YAAA,WACI/vC,KAAK8vC,UAAU,QAEnBR,EAAApvC,UAAA4vC,UAAA,SAAUE,GACN,IAAI5uC,EAAyB,IAAI6sC,GACjC7sC,EAAE8wB,UAAY8d,EACd5uC,EAAEma,MAAQ,GACVna,EAAEguC,YAAc,GACQhmC,MAApBpJ,KAAKsuC,MAAM/yB,QACXvb,KAAKsuC,MAAM/yB,MAAQ,IAEvBvb,KAAKsuC,MAAM/yB,MAAMnX,KAAKhD,GACtBpB,KAAKyvC,oBAAqB,EAC1BzvC,KAAKqsC,YAAY,OAErBiD,EAAApvC,UAAA+vC,iBAAA,WAEIjwC,KAAK43B,WAAa53B,KAAK43B,WAK3B0X,EAAApvC,UAAAgwC,kBAAA,WACgC,MAAxBlwC,KAAKsuC,MAAMpc,UACXlyB,KAAKsuC,MAAMpc,UAAY,MAEvBlyB,KAAKsuC,MAAMpc,UAAY,KAE3BlyB,KAAKqsC,YAAY,OAIrBiD,EAAApvC,UAAAmsC,YAAA,SAAYzpC,GACR5C,KAAKsuC,MAAMc,YAAcpvC,KAAKuvC,GAAGL,eAAelvC,KAAKsuC,MAAO,UAC5DtuC,KAAKsuC,MAAMe,mBAAqBrvC,KAAKuvC,GAAGL,eAAelvC,KAAKsuC,MAAM,WAClEtuC,KAAKwvC,iBAAiBnoC,KAAK,CAAEstB,OAAQ30B,KAAKsuC,MAAOhiC,UAAWtM,iDAnFxC8uC,MApBAhuC,EAAA,CAAvBoM,EAAAA,UAAU,6BAAwB++B,qCACGnrC,EAAA,CAArCoM,EAAAA,UAAUiwB,oBAAiCA,gCAE5Cr8B,EAAA,CADCuF,EAAAA,wBACM4nC,iCAKPntC,EAAA,CADCuF,EAAAA,wBACO4nC,kCAGRntC,EAAA,CADCuF,EAAAA,6DAMDvF,EAAA,CADC8G,EAAAA,yBACiBV,EAAAA,sDAlBTooC,EAA4BxuC,EAAA,CANxCwF,EAAAA,UAAU,CACPC,SAAU,iBACVC,SAAA,w2FACA2L,KAAM,CAAEoc,MAAO,qBACfjY,cAAeC,EAAAA,kBAAkBC,8BAwBTs4B,MAtBfQ,qBCwBT,SAAAa,EAAoBnlC,EAAyB0pB,GAA7C,IAAA9tB,EACII,EAAApG,KAAAZ,OAAOA,YADS4G,EAAAoE,IAAAA,EAAyBpE,EAAA8tB,MAAAA,EAX7C9tB,EAAAwpC,UAAiC,IAAInC,GAgBrCrnC,EAAAulC,OAAgB,GAMhBvlC,EAAAypC,cAAwD,IAAInpC,EAAAA,aAE5DN,EAAA0pC,OAAiB,IA0LrB,OAzN6CxwC,EAAAqwC,EAAAnpC,GAUzCmpC,EAAAjwC,UAAA8S,SAAA,WAGIhT,KAAKowC,UAAUle,UAAYlyB,KAAKmvC,MAAMjd,UAAYlyB,KAAKmvC,MAAMjd,UAAY,MACzElyB,KAAKowC,UAAU70B,MAAQvb,KAAKmvC,MAAM5zB,MAAQvb,KAAKmvC,MAAM5zB,MAAQ,IAoB1D40B,EAAAjwC,UAAAqwC,gBAAP,WACI,MAAA,CAAU5b,OAAQ30B,KAAKowC,YAG3BD,EAAAjwC,UAAAmsC,YAAA,SAAYzpC,GACR5C,KAAKqwC,cAAchpC,KAAK,CAAEiF,UAAWtM,KAAM20B,OAAQ30B,KAAKowC,aAKrDD,EAAAjwC,UAAA4sC,SAAP,WAAA,IAAAlmC,EAAA5G,KAEI,OAAO,IAAIqC,SAAQ,SAACC,EAASC,GACzBqE,EAAK0pC,OAAQ,EACb,IAAK,IAAI9vC,EAAI,EAAGA,EAAIoG,EAAKwpC,UAAU70B,MAAM5a,OAAQH,IAC3B,GAAdoG,EAAK0pC,OACL1pC,EAAKioC,cAAcjoC,EAAKwpC,UAAU70B,MAAM/a,IAG9B,GAAdoG,EAAK0pC,MACLhuC,EAAQsE,EAAKwpC,WAEb7tC,QAMZ4tC,EAAAjwC,UAAA2uC,cAAA,SAAcF,GACV,GAAkB,GAAd3uC,KAAKswC,MACL,GAAI3B,EAAGzc,UACH,IAAK,IAAI1xB,EAAI,EAAGA,EAAImuC,EAAGpzB,MAAM5a,OAAQH,IACjCR,KAAK6uC,cAAcF,EAAGpzB,MAAM/a,QAIR,SAApBmuC,EAAG9B,gBACH7sC,KAAKswC,OAAQ,EACbtwC,KAAK00B,MAAMjwB,MAAM,wFAtDR4I,EAAAA,kBAA2B2mB,MAhB3BlzB,EAAA,CAAxBoM,EAAAA,UAAU,8BAA0BoiC,sCAGrCxuC,EAAA,CADCuF,EAAAA,wBACM4nC,iCAkBPntC,EAAA,CADCuF,EAAAA,6DAODvF,EAAA,CADC8G,EAAAA,yBACcV,EAAAA,mDA7BNipC,EAAuBrvC,EAAA,CANnCwF,EAAAA,UAAU,CACPC,SAAU,mBACVC,SAAA,mIAEA8P,cAAeC,EAAAA,kBAAkBC,6hMAoBRnJ,EAAAA,WAA2B2mB,MAlB3Cmc,IAAgC9nC,iBCD7C,SAAAmoC,KAAiC,OAApBA,EAAiB1vC,EAAA,CAN7B+V,EAAAA,SAAS,CACRC,aAAc,CAAC+wB,IACf9wB,QAAS,CAACJ,EAAAA,aAAckmB,GAAiBjmB,GAAgB+lB,GAAmB6C,EAAAA,mBAAoB1R,EAAAA,aAChG9W,QAAS,CAAC6wB,IACV//B,UAAW,MAEA0oC,qBCSb,SAAAC,IAAA,IAAA7pC,EAAA,OAAAI,GAAAA,EAAAnG,MAAAb,KAAAU,YAAAV,YAGI4G,EAAAijC,aAAuB,IAG3B,OANkD/pC,EAAA2wC,EAAAzpC,GAMlDypC,GANkDtoC,kBAuF9C,SAAAuoC,EAAoB3lC,EAAgCC,EAAyByS,GAA7E,IAAA7W,EACII,EAAApG,KAAAZ,OAAOA,YADS4G,EAAAmE,IAAAA,EAAgCnE,EAAAoE,IAAAA,EAAyBpE,EAAA6W,KAAAA,EA5CpE7W,EAAA8G,oBAA8B,EAC9B9G,EAAAsE,UAAoB,EACpBtE,EAAAoZ,IAAe3I,EAAAA,SAASpS,IAAI,cAG5B2B,EAAAwE,KAAsB,KACtBxE,EAAAuhC,WAAqB,EACrBvhC,EAAAuE,UAAqC,KACrCvE,EAAAwhC,WAAqB,GACrBxhC,EAAAyhC,iBAA2B,EAC3BzhC,EAAA8hC,aAAuB,EACvB9hC,EAAAoqB,UAAoB,OACpBpqB,EAAAmC,WAAqB,QACrBnC,EAAA+pC,cAAuC,SACvC/pC,EAAAgqC,kBAAsC,QAE/ChqC,EAAA0hC,qBAA+B,EAC/B1hC,EAAA2hC,aAAuB,EACvB3hC,EAAA4hC,MAAgB,EAChB5hC,EAAAojB,WAAqB,GACrBpjB,EAAAiT,KAAe,GACfjT,EAAA6hC,WAAqB,EACrB7hC,EAAAkiC,cAAuB,GAEfliC,EAAAijC,aAAuB,EA2DvBjjC,EAAAmZ,OAAgB,GAcxBnZ,EAAAgiC,YAAmC,IAAI1hC,EAAAA,aAGvCN,EAAA2E,OAA4B,IAAIrE,EAAAA,aAGhCN,EAAA4E,QAA6B,IAAItE,EAAAA,aAG1BN,EAAA8E,YAAiC,IAAIxE,EAAAA,aAGrCN,EAAA6E,eAA6D,IAAIvE,EAAAA,qBAya5E,OAjjB2CpH,EAAA4wC,EAAA1pC,KAA9B0pC,EAuDTlxC,OAAAgC,eAAWkvC,EAAAxwC,UAAA,aAAU,KAArB,WACI,OAAOF,KAAK4+B,YAAc5+B,KAAK4+B,YAAc5+B,KAAK6+B,wBAEtD,SAAsB76B,GAClBhE,KAAK4+B,YAAc56B,mCAKvBxE,OAAAgC,eAAWkvC,EAAAxwC,UAAA,aAAU,KAArB,WACI,OAAOF,KAAKkM,YAAclM,KAAKkM,YAAclM,KAAKmM,wBAEtD,SAAsBnI,GAClBhE,KAAKkM,YAAclI,mCAUvBxE,OAAAgC,eAAWkvC,EAAAxwC,UAAA,QAAK,KAAhB,WACI,OAAOF,KAAKoM,YAEhB,SAAiBpI,GAAjB,IAAA4C,EAAA5G,KACI,GAAIgE,IAAMhE,KAAKoM,OAAQ,CACnB,IAAMG,EAAWskC,EAAAA,aAAaC,cAAc9wC,KAAKoM,QACtB,aAAvBpM,KAAK2wC,cACL3wC,KAAKoM,OAASzM,MAAMkG,QAAQ7B,GAAKA,EAAKA,EAAI,CAACA,GAAK,GAEhDhE,KAAKoM,OAASzM,MAAMkG,QAAQ7B,GAAKA,EAAE,GAAKA,EAE5ChE,KAAK0L,YAAYrE,KAAKrH,KAAKoM,QAC3BpM,KAAKyL,eAAepE,KAAK,CACrBiF,UAAWtM,KACX+M,YAAa/M,KAAKgL,IAAI9B,cACtB2gC,YAAa7pC,KAAK6pC,YAClBt9B,SAAQA,EACR9J,MAAOzC,KAAKoM,OACZ2kC,aAAc/wC,KAAKmxB,cAAcrqB,KAAI,SAAA3F,GAAK,OAAAA,EAAEyF,EAAKmC,eACjDooB,cAAenxB,KAAKmxB,cAAc1U,UAEtCzc,KAAK6pC,aAAc,EACnB7pC,KAAKgxC,oDAMbxxC,OAAAgC,eAAWkvC,EAAAxwC,UAAA,gBAAa,KAAxB,WACI,OAAOF,KAAK+wB,gBAAkB,oCAKlCvxB,OAAAgC,eAAWkvC,EAAAxwC,UAAA,QAAK,KAAhB,WACI,OAAOF,KAAK+f,YAEhB,SAAiB/b,GACbhE,KAAK+f,OAAS/b,EACVhE,KAAK4oC,aACL5oC,KAAK4oC,YAAYvhC,KAAKrD,GAE1BhE,KAAKgxC,mDAoBTN,EAAAxwC,UAAA8S,SAAA,WACoB,MAAZhT,KAAKggB,MACLhgB,KAAKggB,IAA8F,QAAxFC,OAAOC,iBAAiBlgB,KAAKgL,IAAI9B,cAAe,MAAMiX,iBAAiB,eAI1FuwB,EAAAxwC,UAAAqpC,SAAA,SAAS3mC,GACL,GAAI5C,KAAKqoC,iBAAmBroC,KAAKyoC,WAAazoC,KAAKub,MAAM5a,QAA2D,GAAjDX,KAAKwpC,cAActgC,cAAcugC,cAC7FzpC,KAAKwpC,cAActgC,cAAcugC,aAAezpC,KAAKwpC,cAActgC,cAAc6jB,UAAY,IAAM,KACtG/sB,KAAKuoC,aAAc,EAEfvoC,KAAKwoC,OAASxoC,KAAKub,MAAM5a,QAAQ,CACjCX,KAAKwoC,KAAOxoC,KAAKub,MAAM5a,OAEvB,IAAM8nB,EAAiC,GACvCA,EAAO+f,KAAOxoC,KAAKub,MAAM5a,OACzB8nB,EAAOihB,KAAO1pC,KAAKooC,YAAcnsB,KAAKC,MAAMlc,KAAKub,MAAM5a,OAASX,KAAKooC,YAAc,GAC/EpoC,KAAK2pC,QACLlhB,EAAOuB,WAAahqB,KAAK6Z,KAEzB4O,EAAOuB,WAAa,KAExBhqB,KAAKwoB,MAAMC,KAKvBioB,EAAAxwC,UAAA4nC,YAAA,SAAYllC,GAER,GADA5C,KAAKsoC,qBAAuB,EACxBtoC,KAAKqoC,gBAAiB,CACtBroC,KAAKgqB,WAAahqB,KAAK6Z,KACvB7Z,KAAKub,MAAQ,GACb,IAAMkN,EAAiC,GACvCA,EAAOuB,WAAahqB,KAAK6Z,KACzB4O,EAAO+f,KAAO,EACd/f,EAAOihB,KAAO1pC,KAAKooC,WACnBpoC,KAAKwoB,MAAMC,KAIXioB,EAAAxwC,UAAA8wC,gBAAR,WAAA,IAAApqC,EAAA5G,KAuDIA,KAAK+wB,eAtDQ,iBACT,IAAKnqB,EAAKnE,MACN,MAAO,GAEX,IAAe,QAAV8E,EAAAX,EAAK2U,aAAK,IAAAhU,OAAA,EAAAA,EAAE5G,QAAS,GAAgC,SAA1BiG,EAAKgqC,kBAA8B,CAC/D,IAAMK,EAASrqC,EAAK2U,MAAM7H,QAAO,SAAAlT,GAC7B,OAAIb,MAAMkG,QAAQe,EAAKnE,OACZmE,EAAKnE,MAAMowB,MAAK,SAAAqe,GACnB,MAAkB,iBAAPA,EACA1wC,EAAEoG,EAAKmC,cAAgBmoC,EAAGtqC,EAAKmC,YAG/BvI,EAAEoG,EAAKmC,cAAgBmoC,KAKZ,iBAAftqC,EAAKnE,MACLjC,EAAEoG,EAAKmC,cAAgBnC,EAAKnE,MAAMmE,EAAKmC,YAGvCvI,EAAEoG,EAAKmC,cAAgBnC,EAAKnE,SAI/C,GAAIwuC,EAAOtwC,OAAS,EAChB,OAAOswC,EAGf,GAAItxC,MAAMkG,QAAQe,EAAKnE,OACnB,OAAOmE,EAAKnE,MAAMqE,KAAI,SAAAoqC,GAClB,GAAkB,iBAAPA,GAAmBA,EAAGtqC,EAAKoqB,WAClC,OAAOkgB,EAGP,IAAMC,EAAY,GAGlB,OAFAA,EAAKvqC,EAAKmC,YAAcnC,EAAKnE,MAC7B0uC,EAAKvqC,EAAKoqB,WAAaprB,EAAAA,aAAaX,IAAI,kBACjCksC,KAKf,GAA0B,iBAAfvqC,EAAKnE,OAAsBmE,EAAKnE,MAAMmE,EAAKoqB,WAClD,MAAO,CAACpqB,EAAKnE,OAGb,IAAM0uC,EAAY,GAGlB,OAFAA,EAAKvqC,EAAKmC,YAAcnC,EAAKnE,MAC7B0uC,EAAKvqC,EAAKoqB,WAAaprB,EAAAA,aAAaX,IAAI,kBACjC,CAACksC,GAIEC,GACtBpxC,KAAK+K,IAAI4vB,gBAGb+V,EAAAxwC,UAAA2L,gBAAA,WACQ7L,KAAKooC,WAAa,KAClBpoC,KAAKooC,WAAa,IAEjBpoC,KAAKqoC,iBACNroC,KAAK2pB,WAIb+mB,EAAAxwC,UAAAm4B,eAAA,SAAez1B,GACP5C,KAAKk6B,SAAS/b,QACdne,KAAKsoC,oBAAsBtoC,KAAKurC,WAAWnnB,QAAQpkB,KAAKmxB,cAAcnxB,KAAKmxB,cAAcxwB,OAAS,IAClGX,KAAKqxC,mBACLrxC,KAAKsxC,8BAGLtxC,KAAK0M,SAIbgkC,EAAAxwC,UAAAoH,mBAAA,WAAA,IAAAV,EAAA5G,KACIA,KAAK6I,eAAe7I,KAAKgL,IAAK,QAAShL,KAAKgJ,YACxChJ,KAAK+pB,cACoB,IAArB/pB,KAAK0oC,aACL1oC,KAAKwoB,QAETxoB,KAAK+pB,WAAWzB,eAAe5V,WAAU,SAACvR,GACtCyF,EAAK2hC,aAAc,EACnB3hC,EAAKo3B,aAAa78B,EAAEyT,KAAK9R,YAGjC9C,KAAK+K,IAAI4vB,eACT36B,KAAK+K,IAAI0B,iBAGLikC,EAAAxwC,UAAA89B,aAAR,SAAqBppB,GAArB,IAAAhO,EAAA5G,KACQA,KAAKqoC,gBACDroC,KAAKgqB,YAAiC,MAAnBhqB,KAAKgqB,YAA0C,KAApBhqB,KAAKgqB,WAC/CpV,EAAK6zB,YACLzoC,KAAKub,MAAQ3G,EAAK2G,MAClBvb,KAAKyoC,WAAa7zB,EAAK6zB,aAEvBzoC,KAAKub,MAAQ3G,EAAK2G,MAClBvb,KAAKyoC,WAA2Br/B,MAAdwL,EAAK2G,MAAqB,EAAI3G,EAAK2G,MAAM5a,QAI1DiU,EAAK2G,OAAS3G,EAAK2G,MAAM5a,SAAWiU,EAAK6zB,YAC9CzoC,KAAKub,MAAQ3G,EAAK2G,MAClBvb,KAAKyoC,WAAa7zB,EAAK2G,MAAM5a,QAExBiU,EAAK6zB,YACV7zB,EAAK2G,MAAMC,SAAQ,SAAAgH,GACf5b,EAAK2U,MAAMnX,KAAKoe,MAEpBxiB,KAAKyoC,WAAa7zB,EAAK6zB,aAEvB7zB,EAAK4G,SAAQ,SAAAgH,GACT5b,EAAK2U,MAAMnX,KAAKoe,MAEpBxiB,KAAKyoC,WAAa7zB,EAAKjU,QAG3BX,KAAKub,MAAQ3G,EAEjB5U,KAAKgxC,kBACLhxC,KAAK+K,IAAI4vB,eACT36B,KAAK+K,IAAI0B,iBAIbikC,EAAAxwC,UAAAsoB,MAAA,SAAMC,QAAA,IAAAA,IAAAA,EAAA,IACEzoB,KAAK+pB,aACL/pB,KAAKuoC,aAAc,EACnBvoC,KAAK+pB,WAAWvB,MAAMC,KAI9BioB,EAAAxwC,UAAAypB,QAAA,WACI,IAAMlB,EAAiC,GACnCzoB,KAAKqoC,kBACL5f,EAAO+f,KAAO,EACdxoC,KAAKwoC,KAAO,EACZ/f,EAAOihB,KAAO1pC,KAAKooC,iBAECh/B,IAApBpJ,KAAK+pB,aACL/pB,KAAKub,MAAQ,GACbvb,KAAKwoB,MAAMC,KAInBioB,EAAAxwC,UAAAgrC,sBAAA,SAAsBxvB,GAAtB,IAAA9U,EAAA5G,KACIA,KAAK6Z,KAAO,GACZ7Z,KAAK6pC,aAAc,EACflqC,MAAMkG,QAAQ7F,KAAKyC,OACnBzC,KAAKyC,MAAQzC,KAAKyC,MAAMiR,QAAO,SAAAvS,GAAK,MAAc,iBAANA,EAAkBA,EAAEyF,EAAKmC,cAAgB2S,EAAK9U,EAAKmC,YAAc5H,IAAMua,EAAK9U,EAAKmC,eAG7H/I,KAAKyC,MAAQ,KAEjBzC,KAAK+K,IAAI4vB,gBAKb+V,EAAAxwC,UAAAkrC,eAAA,SAAexoC,IACW,IAAlB5C,KAAKiL,WAAwC,IAAlBjL,KAAKkL,UAChClL,KAAKke,QAIbwyB,EAAAxwC,UAAAkgB,gBAAA,SAAgBxd,EAAe8Y,GAA/B,IAAA9U,EAAA5G,KACIA,KAAK6pC,aAAc,EACQ,WAAvB7pC,KAAK2wC,eACL3wC,KAAKuxC,YAAY71B,GACjB1b,KAAKsU,SAGD3U,MAAMkG,QAAQ7F,KAAKyC,QAAUzC,KAAKyC,MAAM9B,OAAS,GAC7CX,KAAKyC,MAAMowB,MAAK,SAAA1xB,GAAK,OAAAyF,EAAK4qC,qBAAqBrwC,KAAOyF,EAAK4qC,qBAAqB91B,MAChF1b,KAAKyxC,cAAc/1B,GAOvB1b,KAAKuxC,YAAY71B,GAGzB1b,KAAK+K,IAAI4vB,eACT36B,KAAKqxC,oBAGDX,EAAAxwC,UAAAwxC,0BAAR,SAAkCh2B,GAC9B,MAAkC,SAA3B1b,KAAK4wC,kBAA+Bl1B,EAAOA,EAAK1b,KAAK+I,aAGxD2nC,EAAAxwC,UAAAsxC,qBAAR,SAA6B91B,GACzB,MAAuB,iBAATA,EAAoBA,EAAK1b,KAAK+I,YAAc2S,GAI9Dg1B,EAAAxwC,UAAA0lC,cAAA,SAAchjC,GACV,GAAc,WAAVA,EAAE3B,KAAoBjB,KAAKiL,UAAYjL,KAAKkL,SAG5C,OAFAlL,KAAKsU,aACL1R,EAAEsT,iBAGN,IAAMy7B,EAAW,IAAI5rC,OAAO,iBAAiBC,KAAKq1B,OAAOC,aAAa14B,EAAE4iC,UACxE,GAAIxlC,KAAK2pC,QAAQh9B,YAAa,CAC1B,GAAc,cAAV/J,EAAE3B,KAAkC,YAAX2B,EAAEyC,QACN,IAAnBrF,KAAKmoC,WAAsBnoC,KAAKmxB,cAAcxwB,OAAS,IACjC,IAAnBX,KAAKmoC,WAAuBnoC,KAAKmxB,cAAcxwB,OAAS,GAI7D,OAHAX,KAAK6pC,aAAc,EACnB7pC,KAAKyxC,cAAczxC,KAAKmxB,cAAchtB,YACtCvB,EAAEsT,iBAGD,IAAe,cAAVtT,EAAE3B,KAAiC,YAAV2B,EAAE3B,MAAsBjB,KAAKurC,WAAW5qC,OAAS,IAAMX,KAAKk6B,SAAS/b,QAAqB,YAAXvb,EAAEyC,KAYhH,MAX2B,WAAvBrF,KAAK2wC,eACL3wC,KAAK6pC,aAAc,EACnB7pC,KAAKwrC,oBAAoBxrC,KAAKsoC,qBAAiC,cAAV1lC,EAAE3B,IAAsB,GAAK,IAC9E2B,EAAEipC,SACF7rC,KAAKke,QAITle,KAAKke,YAETtb,EAAEsT,iBAGD,GAAIy7B,EAIL,OAHA3xC,KAAK6Z,KAAOjX,EAAE3B,IACdjB,KAAKke,YACLtb,EAAEsT,iBAIV,GAAIlW,KAAKk6B,SAAS/b,OAAQ,CACtB,IAAe,cAAVvb,EAAE3B,KAAiC,YAAV2B,EAAE3B,MAAsBjB,KAAKurC,WAAW5qC,OAAS,EAI3E,OAHAX,KAAK6pC,aAAc,EACnB7pC,KAAK4xC,gBAA2B,cAAVhvC,EAAE3B,IAAsB,GAAK,QACnD2B,EAAEsT,iBAGN,GAAe,UAAVtT,EAAE3B,KAA8B,UAAX2B,EAAEgpC,KAAmB,CAC3C,IAAMiG,EAAc7xC,KAAKurC,WAAWvrC,KAAKsoC,qBAczC,OAbIuJ,IAE2B,WAAvB7xC,KAAK2wC,eACL3wC,KAAK6pC,aAAc,EACnB7pC,KAAKuxC,YAAYM,GACjB7xC,KAAKsU,UAGLtU,KAAK6pC,aAAc,EACnB7pC,KAAK8xC,aAAaD,UAG1BjvC,EAAEsT,oBAMdw6B,EAAAxwC,UAAAuxC,cAAA,eAAA,IAAA7qC,EAAA5G,KAAcub,EAAA,GAAAonB,EAAA,EAAAA,EAAAjiC,UAAAC,OAAAgiC,IAAApnB,EAAAonB,GAAAjiC,UAAAiiC,GACLpnB,GAA0B,IAAjBA,EAAM5a,QAGXhB,MAAMkG,QAAQ7F,KAAKyC,OACxBzC,KAAKyC,MAAQzC,KAAKyC,MAAMiR,QAAO,SAAAvS,GAAK,OAACoa,EAAMsX,MAAK,SAAAvzB,GAC5C,OAAAsH,EAAK4qC,qBAAqBrwC,KAAOyF,EAAK4qC,qBAAqBlyC,SAJ/DU,KAAKyC,MAAQ,KAUjBzC,KAAK+K,IAAI4vB,gBAGb+V,EAAAxwC,UAAAqxC,YAAA,eAAA,IAAA3qC,EAAA5G,KAAYub,EAAA,GAAAonB,EAAA,EAAAA,EAAAjiC,UAAAC,OAAAgiC,IAAApnB,EAAAonB,GAAAjiC,UAAAiiC,GACJpnB,GAASA,EAAM5a,SACY,WAAvBX,KAAK2wC,cACL3wC,KAAKyC,MAAQzC,KAAK0xC,0BAA0Bn2B,EAAM,IAGlDvb,KAAKyC,OAASzC,KAAKyC,OAAS,IAAIkC,OAAO4W,EAAMzU,KAAI,SAAA3F,GAAK,OAAAyF,EAAK8qC,0BAA0BvwC,SAMjGuvC,EAAAxwC,UAAA4xC,aAAA,eAAA,IAAAlrC,EAAA5G,KAAaub,EAAA,GAAAonB,EAAA,EAAAA,EAAAjiC,UAAAC,OAAAgiC,IAAApnB,EAAAonB,GAAAjiC,UAAAiiC,GACLpnB,GAASA,EAAM5a,QACf4a,EAAMC,SAAQ,SAAAE,GACV9U,EAAKuqB,cAAcrB,SAASpU,GAAQ9U,EAAK6qC,cAAc/1B,GAAQ9U,EAAK2qC,YAAY71B,OAM5Fg1B,EAAAxwC,UAAAoU,MAAA,WACItU,KAAKk6B,SAAS5lB,SAGlBo8B,EAAAxwC,UAAAge,KAAA,WACIle,KAAKk6B,SAAShc,QAGlBwyB,EAAAxwC,UAAAwM,MAAA,WACI1M,KAAK6Z,KAAO,KACZ7Z,KAAK2pC,QAAQj9B,SAGTgkC,EAAAxwC,UAAAmxC,iBAAR,WAAA,IAAAzqC,EAAA5G,KACU+xC,EAAa/xC,KAAK6Z,MACC,IAArB7Z,KAAK0oC,YACLr2B,YAAW,WACHzL,EAAKorC,YACLprC,EAAKorC,UAAUvvC,MAAQsvC,EACvBnrC,EAAKorC,UAAUtlC,WAEpB,GAGH1M,KAAK2pC,QAAQj9B,SAIrBgkC,EAAAxwC,UAAAqrC,SAAA,WAAA,IAAA3kC,EAAA5G,KACI,OAAkB,MAAdA,KAAKub,MACE,IAEFvb,KAAKqoC,iBAAmBroC,KAAK6Z,MAAsB,KAAd7Z,KAAK6Z,KAAe7Z,KAAKub,MAAM7H,QAAO,SAACvS,GACjF,OAACA,EAAEyF,EAAKoqB,WAAsBkZ,cAAcpa,SAASlpB,EAAKiT,KAAKqwB,kBAAkBlqC,KAAKub,OAG9Fm1B,EAAAxwC,UAAA4rC,eAAA,SAAepwB,GAAf,IAAA9U,EAAA5G,KACI,OAAOA,KAAKmxB,cAAc0B,MAAK,SAAA1xB,GAAK,OAAAA,EAAEyF,EAAKmC,cAAgB2S,EAAK9U,EAAKmC,gBAGjE2nC,EAAAxwC,UAAA0xC,gBAAR,SAAwB3H,QAAA,IAAAA,IAAAA,EAAA,MACR,MAARA,EACAjqC,KAAKsoC,oBAAsBtoC,KAAKurC,WAAWnnB,QAAQpkB,KAAKmxB,cAAcnxB,KAAKmxB,cAAcxwB,OAAS,KAGxF,IAAVspC,EAAcjqC,KAAKsoC,sBAAwBtoC,KAAKsoC,sBAEhDtoC,KAAKsoC,oBAAsB,IAC3BtoC,KAAKsoC,oBAAsB,GAE3BtoC,KAAKsoC,oBAAsBtoC,KAAKurC,WAAW5qC,OAAS,IACpDX,KAAKsoC,oBAAsBtoC,KAAKurC,WAAW5qC,OAAS,GAIxDX,KAAKsxC,8BAGDZ,EAAAxwC,UAAAoxC,2BAAR,WAAA,IAAA1qC,EAAA5G,KACQA,KAAKwpC,eACLxpC,KAAKyd,KAAKiI,mBAAkB,WACxB,IAAMykB,EAAUvjC,EAAK4iC,cAActgC,cAAcU,cAAc,wBAAwBhD,EAAK0hC,oBAAmB,KAC3G6B,GACAA,EAAQC,eAAe,CAAEC,SAAU,aAMnDqG,EAAAxwC,UAAAsrC,oBAAA,SAAoBpuB,GACZA,EAAQ,IACRA,EAAQ,GAERA,EAAQpd,KAAKurC,WAAW5qC,OAAS,IACjCyc,EAAQpd,KAAKurC,WAAW5qC,OAAS,GAErCX,KAAKuxC,YAAYvxC,KAAKurC,WAAWnuB,IACjCpd,KAAKsoC,oBAAsBlrB,4CAxeNnJ,EAAAA,yBAAgC5G,EAAAA,kBAA0BmC,EAAAA,UApEnF1O,EAAA,CADCoM,EAAAA,UAAU+lB,GAAoB,CAAE9lB,QAAQ,oBACnCE,EAAAA,wCAGNvM,EAAA,CADCoM,EAAAA,UAAU+lB,GAAoB,CAAE9lB,QAAQ,oBAChC8lB,mCAGTnyB,EAAA,CADCoM,EAAAA,UAAU,gBAAiB,CAAEC,QAAQ,oBACvBE,EAAAA,iDAGfvM,EAAA,CADCoM,EAAAA,UAAU,YAAa,CAAEC,QAAQ,oBACvB06B,qCAGX/mC,EAAA,CADCoM,EAAAA,UAAU,mBAAoB,CAAEC,QAAQ,oBACvB8lB,4CAGlBnyB,EAAA,CADCsM,EAAAA,aAAaib,GAAuB,CAAElb,QAAQ,oBACnBkb,8CAG5BvnB,EAAA,CADCsM,EAAAA,aAAa3G,EAAc,CAAE0G,QAAQ,oBACV1G,6CAG5B3F,EAAA,CADCoM,EAAAA,UAAU,IAAK,CAAEC,QAAQ,oBAChBirB,oCAGDt3B,EAAA,CAARuF,EAAAA,2EACQvF,EAAA,CAARuF,EAAAA,iEACQvF,EAAA,CAARuF,EAAAA,4DACQvF,EAAA,CAARuF,EAAAA,iEACQvF,EAAA,CAARuF,EAAAA,mEACQvF,EAAA,CAARuF,EAAAA,4DACQvF,EAAA,CAARuF,EAAAA,kEACQvF,EAAA,CAARuF,EAAAA,iEACQvF,EAAA,CAARuF,EAAAA,kEACQvF,EAAA,CAARuF,EAAAA,wEACQvF,EAAA,CAARuF,EAAAA,oEACQvF,EAAA,CAARuF,EAAAA,iEACQvF,EAAA,CAARuF,EAAAA,kEACQvF,EAAA,CAARuF,EAAAA,qEACQvF,EAAA,CAARuF,EAAAA,yEAcDvF,EAAA,CADCuF,EAAAA,wBAIwBgiB,2BAAAA,qCAMzBvnB,EAAA,CADCuF,EAAAA,wBAIwBI,0BAAAA,oCAWzB3F,EAAA,CADCuF,EAAAA,2FAmCDvF,EAAA,CADCuF,EAAAA,yFAaDvF,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAGbpG,EAAA,CADC8G,EAAAA,yBACOV,EAAAA,4CAGRpG,EAAA,CADC8G,EAAAA,yBACQV,EAAAA,6CAGTpG,EAAA,CADC8G,EAAAA,yBACmBV,EAAAA,iDAGpBpG,EAAA,CADC8G,EAAAA,yBACsBV,EAAAA,oDAsPvBpG,EAAA,CADCsV,EAAAA,aAAa,mBAAoB,CAAC,4DAClBC,iFA9XRq6B,EAAqBuB,EAAAnxC,EAAA,CARjCwF,EAAAA,UAAU,CACPC,SAAU,iBACVC,SAAA,60IACA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,OACzCpL,KAAM,CAAEwH,MAAO,sBACf7R,UAAW,CAAC,CAAEC,QAASW,EAAwBV,YAAaiqC,6BAyEnCh+B,EAAAA,kBAAgC5G,EAAAA,WAA0BmC,EAAAA,UAvE1EkhC,IAA8BhoC,GC7BrC+N,GAAY,CAACwxB,GAAsByI,IACnCh6B,GAAU,CACZC,EAAAA,aACAomB,GACAF,GACA2C,EAAAA,mBACA0S,EAAAA,eACArkB,GACAyV,GACAkN,kBASJ,SAAA2B,KAAiC,OAApBA,EAAiBrxC,EAAA,CAN7B+V,EAAAA,SAAS,CACNC,aAAYpS,EAAM+R,IAClBM,QAAOrS,EAAMgS,IACbM,QAAOtS,EAAM+R,IACb3O,UAAW,MAEFqqC,MCXPC,GAAU,CACZz7B,EAAAA,aACAC,GACAuhB,GACAga,GACA/S,GACAvC,GACAiK,GACAnK,GACA6C,EAAAA,mBACA4D,GACAvV,GACA+P,kBAWJ,SAAAyU,KAAoC,OAAvBA,EAAoBvxC,EAAA,CARhC+V,EAAAA,SAAS,CACNC,aAAc,CAACq5B,GAAyBb,GAA8BrD,GAA6BiC,IACnGn3B,QAAS,CAACq7B,IACVp7B,QAAS,CAACm5B,IACVroC,UAAW,CAACgnC,IACZrhB,gBAAiB,CAACygB,OAGTmE,qBCSX,SAAAC,EAAsBvnC,GAAtB,IAAAnE,EACEI,EAAApG,KAAAZ,OAAOA,YADa4G,EAAAmE,IAAAA,EApCtBnE,EAAA6E,eAAsD,IAAIvE,EAAAA,aAG1DN,EAAA8E,YAAqC,IAAIxE,EAAAA,aAGzCN,EAAAgC,SAAmB,EA4BnBhC,EAAAwE,KAAsB,OAOxB,OA7CuCtL,EAAAwyC,EAAAtrC,GAcrCxH,OAAAgC,eAAW8wC,EAAApyC,UAAA,QAAK,KAAhB,WACE,OAAOF,KAAKoM,YAEd,SAAiBpI,GACf,GAAIhE,KAAKoM,SAAWpI,EAAG,CACrB,IAAMuI,EAAWvM,KAAKoM,OACtBpM,KAAKoM,OAASpI,EACdhE,KAAK0L,YAAYrE,KAAKrD,GACtBhE,KAAKyL,eAAepE,KAAK,CACvBiF,UAAWtM,KACXuM,SAAQA,EACR9J,MAAOuB,sCAmBbsuC,EAAApyC,UAAAwM,MAAA,sDAJ2BuH,EAAAA,qBApC3BnT,EAAA,CADC8G,EAAAA,yBACeV,EAAAA,oDAGhBpG,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAGbpG,EAAA,CADCuF,EAAAA,gEAKDvF,EAAA,CADCuF,EAAAA,6FAmBDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,4DArCUisC,EAAiBxxC,EAAA,CAP7BwF,EAAAA,UAAU,CACTC,SAAU,YACVC,SAAA,2MAEA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,4vBA0CdtJ,EAAAA,qBAxChBq+B,IAA0BjqC,iBCCvC,SAAAkqC,KAEA,OAFaA,EAAczxC,EAAA,CAP1B+V,EAAAA,SAAS,CACNC,aAAc,CAACw7B,IACfv7B,QAAS,CAACJ,EAAAA,aAAcmX,EAAAA,aACxB9W,QAAS,CAACs7B,IACV7kB,gBAAiB,CAAC6kB,IAClBxqC,UAAW,MAEFyqC,oBCgBX,SAAAC,IARAxyC,KAAAyyC,KAAoB,IAAI9yC,MACxBK,KAAA0yC,OAAS,IAAIv9B,EAAAA,QACbnV,KAAA2yC,UAAY,IAAIx9B,EAAAA,QAChBnV,KAAA4yC,OAAS,IAAIz9B,EAAAA,QACbnV,KAAA8pC,QAAU,IAAI30B,EAAAA,eAUdq9B,EAAAtyC,UAAAge,KAAA,SAAKgjB,EAAMC,EAAO0R,GAAlB,IACMC,EADNlsC,EAAA5G,KAEE,GAAoB,iBAATkhC,EAAmB,CAC5B,IAAM/M,EAAU30B,OAAOa,OAAO,CAAEy/B,UAAU,GAAQoB,GAClD4R,EAAS,CACPtuB,MAAO2P,EAAQ3P,MACfsb,SAAU3L,EAAQ2L,SAClB1vB,QAAS+jB,EAAQ/jB,QACjBwE,KAAMuf,EAAQvf,KACdm+B,OAAQ5e,EAAQ4e,aAGlBD,EAAS,CACPtuB,MAAO2c,EACPrB,UAAU,EACV1vB,QAAS8wB,EACTtsB,KAAMi+B,GAGVC,EAAmB,SAAI,GACvBA,EAAmB,SAAExqC,IAAMC,EAAAA,WAAWC,SAEtC,IAAMwqC,EAAWhzC,KAAKyyC,KAAKttC,MAAK,SAAChE,GAAM,OAAA2xC,EAAmB,SAAExqC,KAAOnH,EAAc,SAAEmH,MAAQwqC,EAAmB,SAAExqC,QAC9GtI,KAAKizC,aAAaH,EAAO1iC,QAAS0iC,EAAOl+B,MAE3C,GAAIo+B,EACF,OAAO3wC,QAAQC,QAAQtC,KAAK4wB,OAAOoiB,IAErChzC,KAAKyyC,KAAKruC,KAAK0uC,GACf9yC,KAAKyyC,KACF/+B,QAAO,SAACvS,GAAM,OAAAA,EAAc,SAAEmH,MAAQwqC,EAAmB,SAAExqC,OAC3DkT,SAAQ,SAAClb,GACRA,EAAc,SAAEswB,QAAS,KAE7B5wB,KAAK0yC,OAAO/vC,KAAKmwC,GACjB9yC,KAAK4wB,OAAOkiB,GACZ,IAAMxR,EAAU,IAAIltB,GAAoB,SAAC9R,GACvCwwC,EAAmB,SAAEx+B,MAAQ,SAAC1R,GACxBN,WACKM,EAAEuR,OACT7R,EAAQM,QAKd,OADA0+B,EAAqB,YAAI,WAAQ16B,EAAK0N,MAAMw+B,IACrCxR,GAGTkR,EAAAtyC,UAAAoU,MAAA,SAAM4+B,GAAN,MAAAtsC,EAAA5G,KACQ4C,EAAI,CAAEuR,QAAQ,GACdstB,EAAyC,QAA9Bl6B,EAAG2rC,EAAgB,SAAE5mC,iBAAS,IAAA/E,OAAA,EAAAA,EAAEsN,UACjD,GAAI4sB,EAAa,CACf,IAAMC,EAAMD,EAAY7+B,GACpB8+B,aAAer/B,QACjBq/B,EAAI1+B,MAAK,WACE,MAALJ,IAA0B,IAAbA,EAAEuR,QACjBvN,EAAKusC,cAAcD,EAAKtwC,MAKnB,MAALA,IAA0B,IAAbA,EAAEuR,QACjBnU,KAAKmzC,cAAcD,EAAKtwC,QAI5B5C,KAAKmzC,cAAcD,EAAKtwC,IAIpB4vC,EAAAtyC,UAAAizC,cAAR,SAAsBD,EAAgBtwC,GACpC,IAAMwwC,EAAapzC,KAAKyyC,KAAKttC,MAAK,SAAChE,GAAM,OAAAA,EAAc,SAAEmH,KAAO4qC,EAAgB,SAAE5qC,OAClF,GAAK8qC,EAAL,CAGA,IAAMh2B,EAAQpd,KAAKyyC,KAAKruB,QAAQgvB,GAChCpzC,KAAKyyC,KAAOzyC,KAAKyyC,KAAK/+B,QAAO,SAAAvS,GAAK,OAAAA,GAAKiyC,KACvC,IAAMj5B,EAAOiD,EAAQ,EAAIpd,KAAKyyC,KAAKr1B,EAAQ,GAAKpd,KAAKyyC,KAAK,GACtDt4B,GACFna,KAAK4wB,OAAOzW,GAEdna,KAAK4yC,OAAOjwC,KAAKywC,GACjBpzC,KAAK8pC,QAAQnnC,OACTywC,EAAuB,SAAE9+B,OAC3B8+B,EAAuB,SAAE9+B,MAAM1R,KAOnC4vC,EAAAtyC,UAAA0wB,OAAA,SAAOsQ,GACL,IAAKA,EACH,MAAO,CACLmS,OAAQrzC,KAAKyyC,KAAKttC,MAAK,SAAChE,GAAM,OAA2B,IAA3BA,EAAc,SAAEyvB,WAGlD,GAAoB,iBAATsQ,EAAmB,CAC5B,IAAMoS,EAAiBpS,EASvB,OARAoS,EAAgB,SAAE1iB,QAAS,EAC3B5wB,KAAKyyC,KACF/+B,QAAO,SAACvS,GAAM,OAAAA,EAAc,SAAEmH,MAAQgrC,EAAgB,SAAEhrC,OACxDkT,SAAQ,SAAClb,GACRA,EAAc,SAAEswB,QAAS,KAE7B5wB,KAAK2yC,UAAUhwC,KAAK2wC,GACpBtzC,KAAK8pC,QAAQnnC,OACN,CACL0wC,OAAQC,GAEL,GAAoB,iBAATpS,EAAmB,CACnC,IAAMgS,EAAMlzC,KAAKyyC,KAAKttC,MAAK,SAAChE,GAAM,OAAAA,EAAc,SAAEmH,MAAQ44B,KAC1D,OAAIgS,EACKlzC,KAAK4wB,OAAOsiB,GAEd,OAIXV,EAAAtyC,UAAAsJ,MAAA,WAAA,IAAA5C,EAAA5G,KACEA,KAAKyyC,KAAKj3B,SAAQ,SAACra,GACjByF,EAAK0N,MAAMnT,MAEbnB,KAAKyyC,KAAO,IAGND,EAAAtyC,UAAA+yC,aAAR,SAAqB3mC,EAAgBsI,GACnC,IASE,OARKA,IACHA,EAAO,IAEM5U,KAAKyyC,KAAKttC,MAAK,SAAChE,GAC7B,OAAAA,EAAEiP,UAAY9D,KACXnL,EAAEyT,MACHyc,KAAKC,UAAU1c,KAAUyc,KAAKC,UAAUnwB,EAAEyT,UAG9C,MAAOnQ,GACP,OAAO,kGA5JA+tC,EAAgB1xC,EAAA,CAD5BiN,EAAAA,WAAW,CAAEC,WAAY,oCACbwkC,oBCcT,SAAAe,EACY7T,EACA10B,EACA20B,EACA6T,EACA1/B,EACA/I,GALA/K,KAAA0/B,SAAAA,EACA1/B,KAAAgL,IAAAA,EACAhL,KAAA2/B,gBAAAA,EACA3/B,KAAAwzC,WAAAA,EACAxzC,KAAA8T,eAAAA,EACA9T,KAAA+K,IAAAA,EAkEhB,OA7DIwoC,EAAArzC,UAAA8S,SAAA,WACIhT,KAAK2U,WAAY,GAGf4+B,EAAArzC,UAAA2L,gBAAN,uIACI7L,KAAKgU,WAAahU,KAAK8T,eAAe3D,KAAKnQ,KAAKgL,IAAI9B,cAAcU,cAAc,gCAE5EgL,EAAY,GAGgB,iBAArB5U,KAAKkzC,IAAI9iC,QAAhB,CAAA,EAAA,GACc,CAAA,EAAMpQ,KAAK2/B,gBAAgBO,2BAA2BlgC,KAAKkzC,IAAI9iC,QAAS,mBAAhF+vB,EAAQr2B,EAAAtG,OACd8I,EAAiB,QAAR/E,EAAG44B,SAAK,IAAA54B,OAAA,EAAAA,EAAE+E,UACnBsI,EAAOpV,OAAOa,OAAOuU,EAAMurB,EAAMvrB,mBAEA,mBAArB5U,KAAKkzC,IAAI9iC,UACrB9D,EAAYtM,KAAKkzC,IAAI9iC,0BAEzB,GAAiB,MAAb9D,EAIA,OAFAtM,KAAK2U,WAAY,EACjBqrB,QAAQv7B,MAAM,2BAA2BzE,KAAKkzC,IAAI9iC,SAClD,CAAA,GAGJwE,EAAOpV,OAAOa,OAAOuU,EAAM5U,KAAKkzC,IAAIt+B,MAEpC,IAGI,GAFMya,EAAUrvB,KAAK0/B,SAASpQ,wBAAwBhjB,GACtDtM,KAAKuvB,aAAevvB,KAAKmW,UAAUqZ,gBAAgBH,IAC9CrvB,KAAKuvB,aAAaze,SAAS2D,SAC5B,MAAMg/B,MAAM,6DAEhBzzC,KAAKuvB,aAAaze,SAAS2D,SAAS/B,WAAU,SAAC9P,GAC3CgE,EAAK4sC,WAAWl/B,MAAM1N,EAAKssC,QAGzB7/B,EAAMrT,KAAKuvB,aAAaze,SAE9BtR,OAAOa,OAAOgT,EAAKuB,GAEnB5U,KAAKkzC,IAAgB,SAAE5mC,UAAY+G,EACnCrT,KAAK2U,WAAY,EACjB3U,KAAK8T,eAAeL,KAAKzT,KAAKgU,YAC9BhU,KAAKuvB,aAAajd,kBAAkB7F,gBACtC,MAAOhI,GAELu7B,QAAQv7B,MAAMA,qBAMtB8uC,EAAArzC,UAAA4U,YAAA,WACQ9U,KAAKuvB,eACLvvB,KAAKuvB,aAAamkB,SAAS9S,UAC3B5gC,KAAKuvB,aAAaqR,UAClB5gC,KAAKmW,UAAU3M,SAEnBxJ,KAAK8T,eAAeL,KAAKzT,KAAKgU,sDArEZ5E,EAAAA,gCACL/B,EAAAA,kBACYsG,EAAAA,uBACL6+B,UACIv/B,SACXgB,EAAAA,qBARjBnT,EAAA,CADCoM,EAAAA,UAAU,YAAa,CAAE6zB,KAAMtV,EAAAA,iBAAkBte,QAAQ,oBACvCse,EAAAA,mDATV8nB,EAAsBzyC,EAAA,CAblCwF,EAAAA,UAAU,CACPC,SAAU,mBACVC,SAAU,qVAuBY4I,EAAAA,yBACL/B,EAAAA,WACYsG,EAAAA,gBACL6+B,GACIv/B,EACXgB,EAAAA,qBAjBRs/B,oBCCT,SAAAI,EACYjU,EACA8T,EACAzoC,GAHZ,IAAAnE,EAAA5G,KACYA,KAAA0/B,SAAAA,EACA1/B,KAAAwzC,WAAAA,EACAxzC,KAAA+K,IAAAA,EATZ/K,KAAA4zC,OAAiD,GAIzC5zC,KAAA6zC,cAAgC,GAOpC7zC,KAAK6zC,cAAczvC,KAAKovC,EAAWb,UAAUjgC,WAAU,SAAAwgC,GACnDtsC,EAAKgtC,OAAOp4B,SAAQ,SAACxX,GACjBA,EAAEsO,kBAAkBkX,SACpBxlB,EAAEoP,SAASlK,cAAc4qC,QAAS,KAEtC,IAAM9vC,EAAI4C,EAAKgtC,OAAOzuC,MAAK,SAAA7E,GAAK,OAACA,EAAUgI,MAAQ4qC,EAAgB,SAAE5qC,OACrE,GAAItE,EACAA,EAAEoP,SAASlK,cAAc4qC,QAAS,EAClC9vC,EAAEsO,kBAAkByhC,gBAGpB,IACI,IAAM1kB,EAAUzoB,EAAK84B,SAASpQ,wBAAwBikB,IAChDS,EAAeptC,EAAKuP,UAAUqZ,gBAAgBH,GACnD2kB,EAAqB1rC,IAAM4qC,EAAgB,SAAE5qC,IACjC0rC,EAAaljC,SACrBoiC,IAAMA,EACXtsC,EAAKgtC,OAAOxvC,KAAK4vC,GACjB3hC,YAAW,WACP2hC,EAAa1hC,kBAAkB7F,kBAChC,IACL,MAAOhI,GACLu7B,QAAQv7B,MAAMA,QAK1BzE,KAAK6zC,cAAczvC,KAAKovC,EAAWZ,OAAOlgC,WAAU,SAAAwgC,GAChD,IAAMe,EAAUrtC,EAAKgtC,OAAOzuC,MAAK,SAAAhE,GAAK,OAACA,EAAUmH,MAAQ4qC,EAAgB,SAAE5qC,OACvE2rC,GACAA,EAAQrT,UAEZh6B,EAAKgtC,OAAShtC,EAAKgtC,OAAOlgC,QAAO,SAAAvS,GAAK,OAACA,EAAUmH,MAAQ4qC,EAAgB,SAAE5qC,WAUvF,OANIqrC,EAAAzzC,UAAA4U,YAAA,WACI9U,KAAKwzC,WAAWhqC,QAChBxJ,KAAK6zC,cAAcr4B,SAAQ,SAAAjb,GACvBA,EAAEwU,2DA3CY3F,EAAAA,gCACEojC,UACPv+B,EAAAA,qBAPmCnT,EAAA,CAAnDoM,EAAAA,UAAU,YAAa,CAAE6zB,KAAMtV,EAAAA,mCAA+BA,EAAAA,mDAJtDkoB,EAA0B7yC,EAAA,CALtCwF,EAAAA,UAAU,CACPC,SAAU,uBACVC,SAAU,mCACV2L,KAAM,CAAEoc,MAAS,iDAWKnf,EAAAA,yBACEojC,GACPv+B,EAAAA,qBAXR0/B,oBCEb,SAAAO,KAA+B,OAAlBA,EAAepzC,EAAA,CAP3B+V,EAAAA,SAAS,CACNC,aAAc,CAAC68B,GAA4BJ,IAC3Cx8B,QAAS,CAACJ,EAAAA,aAAc2sB,IACxBtsB,QAAS,CAAC28B,IACVlmB,gBAAiB,CAACkmB,GAA4BJ,IAC9CzrC,UAAW,CAAC0qC,OAEH0B,qBCEb,SAAAC,mDAEA,OAF4Cr0C,EAAAq0C,EAAAntC,GAE5CmtC,GAF4CjsC,iBAS1C,SAAAksC,EAAoBppC,GAAAhL,KAAAgL,IAAAA,EAKpBhL,KAAAub,MAA0B,GAG1Bvb,KAAAq0C,aAAqD,IAAIntC,EAAAA,aAW3D,OAjBEktC,EAAAl0C,UAAA8S,SAAA,aAQAohC,EAAAl0C,UAAA6V,YAAA,SAAYvV,GACVR,KAAKub,MAAMC,SAAQ,SAACra,GAAM,OAACA,EAAEyvB,QAAS,KACtCpwB,EAAEowB,QAAS,EACX5wB,KAAKq0C,aAAahtC,KAAK,CACrBiF,UAAWtM,KACXs0C,YAAa9zC,EACbuM,YAAa/M,KAAKgL,IAAI9B,0DAhBDmE,EAAAA,cAKzBvM,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADC8G,EAAAA,yBACaV,EAAAA,kDATHktC,EAAmBtzC,EAAA,CAJ/BwF,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,wOAGyB6G,EAAAA,cADd+mC,oBCdb,SAAAG,KAA+B,OAAlBA,EAAgBzzC,EAAA,CAN5B+V,EAAAA,SAAS,CACRC,aAAc,CAACs9B,IACfr9B,QAAS,CAACJ,EAAAA,cACVK,QAAS,CAACo9B,IACVtsC,UAAW,MAEAysC,oBCKX,SAAAC,EAAmBC,GAAAz0C,KAAAy0C,cAAAA,EACrB,gDADoChpB,EAAAA,oBADvB+oB,EAAoB1zC,EAAA,CAHhCwhB,EAAAA,UAAU,CACT/b,SAAU,0CAGwBklB,EAAAA,oBADvB+oB,oBCRb,SAAAE,IAGW10C,KAAA4wB,QAAS,EACT5wB,KAAA20C,aAAc,EAIzB,OAPW7zC,EAAA,CAARuF,EAAAA,+DACQvF,EAAA,CAARuF,EAAAA,4DACQvF,EAAA,CAARuF,EAAAA,8DACQvF,EAAA,CAARuF,EAAAA,mEACQvF,EAAA,CAARuF,EAAAA,gEACQvF,EAAA,CAARuF,EAAAA,mEACQvF,EAAA,CAARuF,EAAAA,4DAPUquC,EAAc5zC,EAAA,CAL1BwF,EAAAA,UAAU,CACTC,SAAU,SACVC,SAAA,wPACA8P,cAAeC,EAAAA,kBAAkBC,QAEtBk+B,oBCuCX,SAAAE,EACU5pC,EACAqD,EACuBwmC,QAAA,IAAAA,IAAAA,GAAA,GAFvB70C,KAAAgL,IAAAA,EACAhL,KAAAqO,0BAAAA,EACuBrO,KAAA60C,UAAAA,EAlBjC70C,KAAA80C,YAAgC,GAOhC90C,KAAA+0C,YAA8C,IAAI7tC,EAAAA,aA2FpD,OA5EE0tC,EAAA10C,UAAAoH,mBAAA,WAK4B,IAHPtH,KAAKyyC,KAAK/+B,QAAO,SAACw/B,GAAQ,OAAAA,EAAItiB,UAGlCjwB,QAAgBX,KAAKyyC,KAAKuC,OACvCh1C,KAAKi1C,UAAUj1C,KAAKyyC,KAAKuC,QAI7BJ,EAAA10C,UAAAg1C,QAAA,SAAQ1wB,EAAehe,EAAUmuC,EAAqBhpC,EAAaiJ,QAAlC,IAAA+/B,IAAAA,GAAA,QAAqB,IAAAhpC,IAAAA,EAAA,WAAa,IAAAiJ,IAAAA,EAAA,MAEjE,IAAMugC,EAAmBn1C,KAAKqO,0BAA0BihB,wBAAwBolB,IAS1EnlB,EANmBvvB,KAAKo1C,sBAAsBX,cAMdjlB,gBAAgB2lB,GAGhDrkC,EAA2Bye,EAAaze,SAC9CA,EAAS8N,QAAU4F,EACnB1T,EAAStK,SAAWA,EACpBsK,EAASukC,YAAczgC,EACvB9D,EAAS6jC,YAAcA,EACvB7jC,EAASnF,KAAOA,EAIhB3L,KAAK80C,YAAY1wC,KAAKmrB,EAAaze,UAKnC9Q,KAAKi1C,UAAUj1C,KAAK80C,YAAY90C,KAAK80C,YAAYn0C,OAAS,KAG5Di0C,EAAA10C,UAAA+0C,UAAA,SAAU/B,GAERlzC,KAAKyyC,KAAKhrC,UAAU+T,SAAQ,SAAC03B,GAAQ,OAACA,EAAItiB,QAAS,KACnD5wB,KAAK80C,YAAYt5B,SAAQ,SAAC03B,GAAQ,OAACA,EAAItiB,QAAS,KAGhDsiB,EAAItiB,QAAS,EACb5wB,KAAK+0C,YAAY1tC,KAAK,CAAEiF,UAAWtM,KAAM4U,KAAMs+B,EAAKnmC,YAAa/M,KAAKgL,IAAI9B,iBAG5E0rC,EAAA10C,UAAAo1C,SAAA,SAASpC,GACP,IAAK,IAAI1yC,EAAI,EAAGA,EAAIR,KAAK80C,YAAYn0C,OAAQH,IAC3C,GAAIR,KAAK80C,YAAYt0C,KAAO0yC,EAAK,CAE/BlzC,KAAK80C,YAAYz5B,OAAO7a,EAAG,GAGFR,KAAKo1C,sBAAsBX,cAEnCtqC,OAAO3J,GAGxBR,KAAKi1C,UAAUj1C,KAAKyyC,KAAKuC,OACzB,QAKNJ,EAAA10C,UAAAq1C,eAAA,WACE,IAAMC,EAAax1C,KAAK80C,YAAYphC,QAAO,SAACw/B,GAAQ,OAAAA,EAAItiB,UACpD4kB,EAAW70C,OAAS,GAEtBX,KAAKs1C,SAASE,EAAW,8CA/EdnoC,EAAAA,kBACsB+B,EAAAA,0DAClC0P,EAAAA,UAASpP,KAAA,CAAC,kBAhBoB5O,EAAA,CAAhC4G,EAAAA,gBAAgBgtC,oBAAsB/sC,EAAAA,uCAEN7G,EAAA,CAAhCoM,EAAAA,UAAUsnC,oBAA6CA,iDAGxD1zC,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDARF0tC,EAAkB9zC,EAAA,CAN9BwF,EAAAA,UAAU,CACTC,SAAU,cACVC,SAAA,01BAEA8P,cAAeC,EAAAA,kBAAkBC,mBAqB9B/U,EAAA,EAAAqd,EAAAA,UAAU,qCAFEzR,EAAAA,WACsB+B,EAAAA,yBAAwBqmC,WAlBlDb,oBClBb,SAAAc,KAA8B,OAAjBA,EAAe50C,EAAA,CAN3B+V,EAAAA,SAAS,CACRC,aAAc,CAAC49B,GAAgBE,GAAoBJ,IACnDz9B,QAAS,CAACJ,EAAAA,cACVK,QAAS,CAAC09B,GAAgBE,GAAoBJ,IAC9C1sC,UAAW,MAEA4tC,qBCCX,SAAAC,EAAsB5qC,EAAwBC,GAA9C,IAAApE,EACEI,EAAApG,KAAAZ,KAAM+K,EAAKC,IAAIhL,YADK4G,EAAAmE,IAAAA,EAKtBnE,EAAAie,KAAe,EAEfje,EAAA2V,KAAe,EAGf3V,EAAAgvC,UAAoB,aACtB,OAZyC91C,EAAA61C,EAAA3uC,KAA5B2uC,2CACgB1hC,EAAAA,yBAAwB5G,EAAAA,cAKnDvM,EAAA,CADCuF,EAAAA,4DAGDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,iEAVUsvC,EAAmBE,EAAA/0C,EAAA,CAR/BwF,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,ypBACA8P,cAAeC,EAAAA,kBAAkBC,KACjC6G,gBAAiBC,EAAAA,wBAAwBC,OACzCpL,KAAM,CAAEwH,MAAO,sBACf7R,UAAW,CAAC,CAAEC,QAASW,EAAwBV,YAAa6tC,6BAGjC5hC,EAAAA,kBAAwB5G,EAAAA,cADxCsoC,IAA4B7qC,GCPnC2L,GAAY,CAACk/B,IACbj/B,GAAU,CAACC,EAAAA,4BAQjB,SAAAm/B,KAAgC,OAAnBA,EAAgBh1C,EAAA,CAN5B+V,EAAAA,SAAS,CACNC,aAAYpS,EAAM+R,IAClBM,QAAOrS,EAAMgS,IACbM,QAAOtS,EAAM+R,IACb3O,UAAW,MAEFguC,SCKb,4BAOA,SAAAC,mDAA2F,OAA7Cj2C,EAAAi2C,EAAA/uC,GAA6C+uC,GAA7C5tC,kBAiP5C,SAAA6tC,EAAsBjrC,EAAwBC,GAA9C,IAAApE,EACEI,EAAApG,KAAAZ,KAAM+K,EAAKC,IAAIhL,YADK4G,EAAAmE,IAAAA,EAtOtBnE,EAAA6E,eAAyD,IAAIvE,EAAAA,aAS7DN,EAAAvB,KAAe,OAEfuB,EAAAqvC,gBAA0B,EAE1BrvC,EAAAsvC,eAAyB,EACzBtvC,EAAAuvC,OAAc,CAAC,QAAS,QAAS,IAAK,QAAS,QAAS,IAAK,QAAS,SACtEvvC,EAAAwvC,KAAY,CAAC,QAAS,QAAS,IAAK,QAAS,SAC7CxvC,EAAAyvC,GAAU,CAAC,QAAS,SACpBzvC,EAAA0vC,OAAc,CAAC,QAAS,QAAS,IAAK,QAAS,QAAS,IAAK,QAAS,SACtE1vC,EAAA2vC,KAAY,CAAC,QAAS,QAAS,IAAK,QAAS,SAC7C3vC,EAAA4vC,GAAU,CAAC,QAAS,SAEpB5vC,EAAA6vC,SAAgB,CAAC,QAAS,QAAS,IAAK,QAAS,QAAS,IAAK,QAAS,QAAS,IAAK,YAAa7wC,EAAAA,aAAaX,IAAI,uBACpH2B,EAAA8vC,OAAc,CAAC,QAAS,QAAS,IAAK,QAAS,QAAS,IAAK,YAAa9wC,EAAAA,aAAaX,IAAI,uBAC3F2B,EAAA+vC,KAAY,CAAC,QAAS,QAAS,IAAK,YAAa/wC,EAAAA,aAAaX,IAAI,uBAClE2B,EAAA49B,UAAoB,GAEpB59B,EAAAgwC,SAAmB,MAAQhxC,EAAAA,aAAaX,IAAI,uBAC5C2B,EAAAiwC,SAAmB,SAAWjxC,EAAAA,aAAaX,IAAI,uBAC/C2B,EAAAkwC,SAAmB,YAAclxC,EAAAA,aAAaX,IAAI,uBAwMlD2B,EAAA+yB,eAAyB,EAKvB/yB,EAAKmwC,SAAW,eA6tBpB,OAx8B2Cj3C,EAAAk2C,EAAAhvC,KAA9BgvC,EAkCXx2C,OAAAgC,eAAWw0C,EAAA91C,UAAA,QAAK,KAAhB,WACE,OAAOF,KAAKukC,aAEd,SAAiBvgC,GAAjB,IAAA4C,EAAA5G,KACE,GAAU,KAANgE,GAAiB,MAALA,GAAmB,aAANA,GAA0B,UAANA,GAAuB,OAANA,GAAcA,IAAMhE,KAAK82C,UAAY9yC,IAAMhE,KAAK62C,UAAY7yC,IAAMhE,KAAK42C,SAAU,CACjJ52C,KAAKk2C,eAAgB,EAErB,IAAM7pC,EAAMrM,KAAKukC,QACjB,OAAQvkC,KAAKqF,MACX,IAAK,SACHrF,KAAKwkC,UAAY,WACjB,MACF,IAAK,OACHxkC,KAAKwkC,UAAY,QACjB,MACF,IAAK,KACHxkC,KAAKwkC,UAAY,KACjB,MACF,IAAK,SACHxkC,KAAKwkC,UAAY,WACjB,MACF,IAAK,OACHxkC,KAAKwkC,UAAY,QACjB,MACF,IAAK,KACHxkC,KAAKwkC,UAAY,KACjB,MACF,IAAK,WACHxkC,KAAKwkC,UAAYxkC,KAAK82C,SACtB,MACF,IAAK,SACH92C,KAAKwkC,UAAYxkC,KAAK62C,SACtB,MACF,IAAK,OACH72C,KAAKwkC,UAAYxkC,KAAK42C,SAI1B52C,KAAKukC,QAAU,KACXvgC,IAAMqI,IACRrM,KAAK0L,YAAYrE,KAAK,MACtBrH,KAAKyL,eAAepE,KAAK,CACvBiF,UAAWtM,KACXyC,MAAO,CAAEshB,KAAM,KAAMizB,OAAQ,KAAMC,OAAQ,KAAMv1B,KAAM,MACvDnV,SAAU,CAAEmV,KAAMrV,GAClBU,YAAa/M,KAAKgL,IAAI9B,qBAGrB,CAEL,GADAlJ,KAAKk2C,eAAgB,EACjBl2C,KAAKukC,SAAWvgC,EAAG,CACfqI,EAAMrM,KAAKukC,QAAjB,IACM/I,EAAOx3B,EAAEy3B,OAAO,GAChBC,EAAO13B,EAAEy3B,OAAO,GAChBE,EAAO33B,EAAEy3B,OAAO,GAChBG,EAAO53B,EAAEy3B,OAAO,GAChBI,EAAO73B,EAAEy3B,OAAO,GAChBK,EAAO93B,EAAEy3B,OAAO,GAChBM,EAAO/3B,EAAEy3B,OAAO,GAChBO,EAAOh4B,EAAEy3B,OAAO,GAChBQ,EAAOj4B,EAAEy3B,OAAO,GAChBS,EAAQl4B,EAAEy3B,OAAO,GAEjByb,EAAU7qC,EAAIovB,OAAO,GACrB0b,EAAU9qC,EAAIovB,OAAO,GACrB2b,EAAW/qC,EAAIovB,OAAO,GAGf,MAATD,GAAyB,MAATE,GAAgB17B,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,WAC9Dz2C,KAAKwkC,UAAY,IAAM9I,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAQt2B,EAAAA,aAAaX,IAAI,sBACxGoN,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAEQ,MAATiC,GAAyB,MAATC,GAAgB77B,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,WAC9Dz2C,KAAKwkC,UAAYhJ,EAAOE,EAAOC,EAAO,IAAME,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAQt2B,EAAAA,aAAaX,IAAI,sBACxGoN,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAEQ,MAAToC,GAAyB,MAATC,GAAgBh8B,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,WAC9Dz2C,KAAKwkC,UAAYhJ,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAO,IAAME,EAAOC,EAAOC,EAAQt2B,EAAAA,aAAaX,IAAI,sBACxGoN,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAEY,MAAbyd,GAAoBp3C,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,WAClDz2C,KAAKwkC,UAAYhJ,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOr2B,EAAAA,aAAaX,IAAI,wBAItF,MAATu2B,GAAyB,MAATE,GAAgB17B,KAAK+2C,SAASxc,OAASv6B,KAAK02C,SAC9D12C,KAAKwkC,UAAY,IAAM9I,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOn2B,EAAAA,aAAaX,IAAI,sBAClFoN,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAEQ,MAATiC,GAAyB,MAATC,GAAgB77B,KAAK+2C,SAASxc,OAASv6B,KAAK02C,SAC9D12C,KAAKwkC,UAAYhJ,EAAOE,EAAOC,EAAO,IAAME,EAAOC,EAAOC,EAAOn2B,EAAAA,aAAaX,IAAI,sBAClFoN,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAEW,MAAZwd,GAAmBn3C,KAAK+2C,SAASxc,OAASv6B,KAAK02C,SACjD12C,KAAKwkC,UAAYhJ,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOl2B,EAAAA,aAAaX,IAAI,wBAIjE,MAATu2B,GAAyB,MAATE,GAAgB17B,KAAK+2C,SAASxc,OAASv6B,KAAK22C,OAC9D32C,KAAKwkC,UAAY,IAAM9I,EAAOC,EAAOC,EAAOh2B,EAAAA,aAAaX,IAAI,sBAC7DoN,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAEW,MAAZud,GAAmBl3C,KAAK+2C,SAASxc,OAASv6B,KAAK22C,OACjD32C,KAAKwkC,UAAYhJ,EAAOE,EAAOC,EAAO/1B,EAAAA,aAAaX,IAAI,wBAI5C,MAATu2B,GAAyB,MAATE,GAAiB17B,KAAK+2C,SAASxc,OAASv6B,KAAKs2C,QAAUt2C,KAAK+2C,SAASxc,OAASv6B,KAAKm2C,SACrGn2C,KAAKwkC,UAAY,IAAM9I,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EACjE3pB,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAEQ,MAATiC,GAAyB,MAATC,GAAiB77B,KAAK+2C,SAASxc,OAASv6B,KAAKs2C,QAAUt2C,KAAK+2C,SAASxc,OAASv6B,KAAKm2C,SACrGn2C,KAAKwkC,UAAYhJ,EAAOE,EAAOC,EAAO,IAAME,EAAOC,EAAOC,EAAOC,EACjE3pB,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAEQ,MAAToC,GAAyB,MAATC,GAAiBh8B,KAAK+2C,SAASxc,OAASv6B,KAAKs2C,QAAUt2C,KAAK+2C,SAASxc,OAASv6B,KAAKm2C,SACrGn2C,KAAKwkC,UAAYhJ,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAO,IAAME,EACjE3pB,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAIQ,MAAT6B,GAAyB,MAATE,GAAiB17B,KAAK+2C,SAASxc,OAASv6B,KAAKu2C,MAAQv2C,KAAK+2C,SAASxc,OAASv6B,KAAKo2C,OACnGp2C,KAAKwkC,UAAY,IAAM9I,EAAOC,EAAOC,EAAOC,EAC5CxpB,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAEQ,MAATiC,GAAyB,MAATC,GAAiB77B,KAAK+2C,SAASxc,OAASv6B,KAAKu2C,MAAQv2C,KAAK+2C,SAASxc,OAASv6B,KAAKo2C,OACnGp2C,KAAKwkC,UAAYhJ,EAAOE,EAAOC,EAAO,IAAME,EAC5CxpB,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAIQ,MAAT6B,GAAyB,MAATE,GAAiB17B,KAAK+2C,SAASxc,OAASv6B,KAAKw2C,IAAMx2C,KAAK+2C,SAASxc,OAASv6B,KAAKq2C,KACjGr2C,KAAKwkC,UAAY,IAAM9I,EACvBrpB,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAGP,GAAI31B,IAAMhE,KAAKukC,QAAS,CAChBl4B,EAAMrM,KAAKukC,QACjBvkC,KAAKwkC,UAAYxgC,EACjBhE,KAAKukC,QAAWvgC,IAAyB,IAApBA,EAAEogB,QAAQ,KAAepgB,EAAI,MAC1B,IAApBA,EAAEogB,QAAQ,OACZpkB,KAAK0L,YAAYrE,KAAKrD,GACtBhE,KAAKyL,eAAepE,KAAK,CACvBiF,UAAWtM,KACXyC,MAAO,CACLif,KAAM1d,EACN+f,KAAM3H,OAAOpY,EAAE,GAAKA,EAAE,IACtBgzC,OAAQhzC,EAAE,IAAMA,EAAE,KAAO4B,EAAAA,aAAaX,IAAI,uBAAyBjB,EAAE,KAAO4B,EAAAA,aAAaX,IAAI,sBAAwBmX,OAAOpY,EAAE,GAAKA,EAAE,IAAM,KAC3IizC,OAAQjzC,EAAE,IAAMA,EAAE,KAAO4B,EAAAA,aAAaX,IAAI,uBAAyBjB,EAAE,KAAO4B,EAAAA,aAAaX,IAAI,sBAAwBmX,OAAOpY,EAAE,GAAKA,EAAE,IAAM,MAE7IuI,SAAU,CAAEmV,KAAMrV,GAClBU,YAAa/M,KAAKgL,IAAI9B,gBAExBlJ,KAAK+K,IAAI0B,gBACTzM,KAAKqJ,qBAAqBrJ,KAAK8L,MAAM5C,mDAa7C8sC,EAAA91C,UAAAm3C,WAAA,WACEr3C,KAAKwJ,QACLxJ,KAAKiN,oBAGP+oC,EAAA91C,UAAA8S,SAAA,WACE,OAAQhT,KAAK+2C,UACX,IAAK,SACH/2C,KAAKqF,KAAO,SACZrF,KAAK+2C,SAAW,CACdnc,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKm2C,OACXtb,mBAAmB,EACnByc,gBAAiB,KAEnBt3C,KAAKwkC,UAAYxkC,KAAKyC,MAAQzC,KAAKyC,MAAQ,WAC3C,MACF,IAAK,OACHzC,KAAKqF,KAAO,OACZrF,KAAK+2C,SAAW,CACdnc,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKo2C,KACXvb,mBAAmB,EACnByc,gBAAiB,KAEnBt3C,KAAKwkC,UAAYxkC,KAAKyC,MAAQzC,KAAKyC,MAAQ,QAC3C,MACF,IAAK,KACHzC,KAAKqF,KAAO,KACZrF,KAAK+2C,SAAW,CACdnc,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKq2C,GACXxb,mBAAmB,EACnByc,gBAAiB,KAEnBt3C,KAAKwkC,UAAYxkC,KAAKyC,MAAQzC,KAAKyC,MAAQ,KAC3C,MACF,IAAK,SACHzC,KAAKqF,KAAO,SACZrF,KAAK+2C,SAAW,CACdnc,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKs2C,OACXzb,mBAAmB,EACnByc,gBAAiB,KAEnBt3C,KAAKwkC,UAAYxkC,KAAKyC,MAAQzC,KAAKyC,MAAQ,WAC3C,MACF,IAAK,OACHzC,KAAKqF,KAAO,OACZrF,KAAK+2C,SAAW,CACdnc,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKu2C,KACX1b,mBAAmB,EACnByc,gBAAiB,KAEnBt3C,KAAKwkC,UAAYxkC,KAAKyC,MAAQzC,KAAKyC,MAAQ,QAC3C,MACF,IAAK,KACHzC,KAAKqF,KAAO,KAEZrF,KAAK+2C,SAAW,CACdnc,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKw2C,GACX3b,mBAAmB,EACnByc,gBAAiB,KAEnBt3C,KAAKwkC,UAAYxkC,KAAKyC,MAAQzC,KAAKyC,MAAQ,KAC3C,MACF,IAAK,WACHzC,KAAKqF,KAAO,WAEZrF,KAAK+2C,SAAW,CACdnc,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKy2C,SACX5b,mBAAmB,EACnByc,gBAAiB,KAEnBt3C,KAAKwkC,UAAYxkC,KAAKyC,MAAQzC,KAAKyC,MAAQzC,KAAK82C,SAChD,MACF,IAAK,SACH92C,KAAKqF,KAAO,SAEZrF,KAAK+2C,SAAW,CACdnc,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAK02C,OACX7b,mBAAmB,EACnByc,gBAAiB,KAEnBt3C,KAAKwkC,UAAYxkC,KAAKyC,MAAQzC,KAAKyC,MAAQzC,KAAK62C,SAEhD,MACF,IAAK,OACH72C,KAAKqF,KAAO,OAEZrF,KAAK+2C,SAAW,CACdnc,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAK22C,KACX9b,mBAAmB,EACnByc,gBAAiB,KAEnBt3C,KAAKwkC,UAAYxkC,KAAKyC,MAAQzC,KAAKyC,MAAQzC,KAAK42C,SAChD,MACF,QACE52C,KAAKqF,KAAO,OACZrF,KAAK+2C,SAAW,CACdnc,OAAO,EACP1H,UAAU,EACVqH,KAAMv6B,KAAKo2C,KACXvb,mBAAmB,EACnByc,gBAAiB,KAEnBt3C,KAAKwkC,UAAYxkC,KAAKyC,MAAQzC,KAAKyC,MAAQ,QAI/C,IAA4B,IAAxBzC,KAAKi2C,eAAyB,CAChC,IAAMlyB,GAAO,IAAIxQ,MAAOgkC,WAAa,IAAK,IAAIhkC,MAAOgkC,WAAa,KAAM,IAAIhkC,MAAOgkC,WAC/EC,OAAM,EAKJA,GAHF,IAAIjkC,MAAOgkC,WAAa,IACtB,IAAIhkC,MAAOgkC,WAAa,KACtB,IAAIhkC,MAAOgkC,WAAa,GAAK,GACtB,MAAO,IAAIhkC,MAAOgkC,WAAa,KAKjC,IAAIhkC,MAAOgkC,WAGb,KAAM,IAAIhkC,MAAOgkC,WAG5B,IAAM1+B,GAAM,IAAItF,MAAOkkC,aAAe,GAAI,IAAIlkC,MAAOkkC,aAAe,KAAM,IAAIlkC,MAAOkkC,aAC/EC,GAAM,IAAInkC,MAAOokC,aAAe,GAAI,IAAIpkC,MAAOokC,aAAe,KAAM,IAAIpkC,MAAOokC,aACnE,OAAd33C,KAAKqF,MAA+B,SAAdrF,KAAKqF,MAAiC,WAAdrF,KAAKqF,MAAmC,aAAdrF,KAAKqF,KAE7ErF,KAAKyC,MADHshB,GAAQ,GACGyzB,EAAS,IAAM3+B,EAAM,IAAM6+B,EAAM,IAAM9xC,EAAAA,aAAaX,IAAI,uBAExDuyC,EAAS,IAAM3+B,EAAM,IAAM6+B,EAAM,IAAM9xC,EAAAA,aAAaX,IAAI,uBAEhD,SAAdjF,KAAKqF,KAEZrF,KAAKyC,MADHshB,GAAQ,GACGyzB,EAAS,IAAM5xC,EAAAA,aAAaX,IAAI,uBAEhCuyC,EAAS,IAAM5xC,EAAAA,aAAaX,IAAI,uBAExB,WAAdjF,KAAKqF,KAEZrF,KAAKyC,MADHshB,GAAQ,GACGyzB,EAAS,IAAM3+B,EAAM,IAAMjT,EAAAA,aAAaX,IAAI,uBAE5CuyC,EAAS,IAAM3+B,EAAM,IAAMjT,EAAAA,aAAaX,IAAI,uBAG3DjF,KAAKyC,MAAQshB,EAAO,IAAMlL,EAAM,IAAM6+B,IAK5C1B,EAAA91C,UAAA46B,aAAA,WAAA,IAAAl0B,EAAA5G,KACEA,KAAK8L,MAAM5C,cAAcyQ,MAAMohB,WAAa,cAC5C1oB,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,EACtB/yB,EAAKkF,MAAM5C,cAAcyQ,MAAMohB,WAAa,SAC3C,IAGLib,EAAA91C,UAAA+M,iBAAA,WACEjN,KAAK86B,eACL96B,KAAK8L,MAAM5C,cAAcwD,SAE3BspC,EAAA91C,UAAA4M,gBAAA,SAAgBlK,GACd,IAAqC,IAAjC5C,KAAKwkC,UAAUpgB,QAAQ,KACzB,OAAQpkB,KAAKqF,MACX,IAAK,SACHrF,KAAKwkC,UAAY,WACjB,MACF,IAAK,OACHxkC,KAAKwkC,UAAY,QACjB,MACF,IAAK,KACHxkC,KAAKwkC,UAAY,KACjB,MACF,IAAK,SACHxkC,KAAKwkC,UAAY,WACjB,MACF,IAAK,OACHxkC,KAAKwkC,UAAY,QACjB,MACF,IAAK,KACHxkC,KAAKwkC,UAAY,KACjB,MACF,IAAK,WACHxkC,KAAKwkC,UAAYxkC,KAAK82C,SACtB,MACF,IAAK,SACH92C,KAAKwkC,UAAYxkC,KAAK62C,SACtB,MACF,IAAK,OACH72C,KAAKwkC,UAAYxkC,KAAK42C,WAM9BZ,EAAA91C,UAAAg7B,eAAA,SAAeve,GAAf,IAAA/V,EAAA5G,KACQo7B,EAAYC,OAAOC,aAAa3e,EAAM4e,UACtCqc,EAAY53C,KAAKwkC,UAAU/I,OAAO,GAClCoc,EAAa73C,KAAKwkC,UAAU/I,OAAO,GAEzCppB,YAAW,YACLzL,EAAKkF,MAAM5C,cAAciyB,gBAA8D,IAA5Cv0B,EAAKkF,MAAM5C,cAAciyB,kBACtEv0B,EAAK+yB,eAAiB/yB,EAAKkF,MAAM5C,cAAciyB,kBAGhD,GAEe,MAAdyc,IACiB,KAAfC,GAAqB73C,KAAKwkC,UAAU/I,OAAO,IAAM,KAAOz7B,KAAK25B,eAAiB,IAC5EyB,GAAa,KACfze,EAAMzG,iBAKVlW,KAAK+2C,SAASxc,OAASv6B,KAAKs2C,QAC5Bt2C,KAAK+2C,SAASxc,OAASv6B,KAAKu2C,MAC5Bv2C,KAAK+2C,SAASxc,OAASv6B,KAAKw2C,IAC5Bx2C,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,UAC5Bz2C,KAAK+2C,SAASxc,OAASv6B,KAAK02C,QAC5B12C,KAAK+2C,SAASxc,OAASv6B,KAAK22C,MAEV,MAAdiB,IACiB,KAAfC,GAAqB73C,KAAKwkC,UAAU/I,OAAO,IAAM,KAAOz7B,KAAK25B,eAAiB,IAC5EyB,GAAa,KACfze,EAAMzG,iBAKI,MAAdklB,GACFze,EAAMzG,kBAIV8/B,EAAA91C,UAAAylC,YAAA,SAAYhpB,GAAZ,IAAA/V,EAAA5G,KAaE,GAZkB,YAAd2c,EAAM1b,KAAmC,cAAd0b,EAAM1b,MACnCjB,KAAK8L,MAAM5C,cAAcyQ,MAAMohB,WAAa,OAC5Cpe,EAAMzG,iBACNyG,EAAM3G,mBAGU,YAAd2G,EAAM1b,KACRjB,KAAKm8B,WAEW,cAAdxf,EAAM1b,KACRjB,KAAKm8B,WAEW,YAAdxf,EAAM1b,KAAmC,cAAd0b,EAAM1b,IAEnC,OADA0b,EAAMzG,kBACC,EA6CT,GAzCkB,cAAdyG,EAAM1b,KAAqC,eAAd0b,EAAM1b,MACjCjB,KAAK8L,MAAM5C,cAAciyB,gBAA8D,IAA5Cn7B,KAAK8L,MAAM5C,cAAciyB,kBACtEn7B,KAAK25B,eAAiB35B,KAAK8L,MAAM5C,cAAciyB,gBAKjC,SAAdxe,EAAM1b,MACRjB,KAAK25B,eAAiB,GAIN,QAAdhd,EAAM1b,MACJjB,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,UAAYz2C,KAAK+2C,SAASxc,OAASv6B,KAAK02C,QAAU12C,KAAK+2C,SAASxc,OAASv6B,KAAK22C,MACxG32C,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,WAC9Bz2C,KAAK25B,eAAiB,EACtBtnB,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAetC,EAAK+yB,gBACrD/yB,EAAKkF,MAAM5C,cAAcyQ,MAAMohB,WAAa,SAC3C,IAED/6B,KAAK+2C,SAASxc,OAASv6B,KAAK02C,SAC9B12C,KAAK25B,eAAiB,EACtBtnB,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAetC,EAAK+yB,gBACrD/yB,EAAKkF,MAAM5C,cAAcyQ,MAAMohB,WAAa,SAC3C,IAED/6B,KAAK+2C,SAASxc,OAASv6B,KAAK22C,OAC9B32C,KAAK25B,eAAiB,EACtBtnB,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAetC,EAAK+yB,gBACrD/yB,EAAKkF,MAAM5C,cAAcyQ,MAAMohB,WAAa,SAC3C,KAGL/6B,KAAK25B,eAAiB35B,KAAKwkC,UAAU7jC,QAKvB,cAAdgc,EAAM1b,IAAqB,CAC7B,IAAMu6B,EAAOx7B,KAAKwkC,UAAU/I,OAAO,GAC7BC,EAAO17B,KAAKwkC,UAAU/I,OAAO,GAC7BE,EAAO37B,KAAKwkC,UAAU/I,OAAO,GAC7BG,EAAO57B,KAAKwkC,UAAU/I,OAAO,GAC7BI,EAAO77B,KAAKwkC,UAAU/I,OAAO,GAC7BK,EAAO97B,KAAKwkC,UAAU/I,OAAO,GAC7BM,EAAO/7B,KAAKwkC,UAAU/I,OAAO,GAC7BO,EAAOh8B,KAAKwkC,UAAU/I,OAAO,GAC7BQ,EAAOj8B,KAAKwkC,UAAU/I,OAAO,GAC7BS,EAAQl8B,KAAKwkC,UAAU/I,OAAO,GAChCz7B,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,UAChB,MAAVva,IACFl8B,KAAKwkC,UAAYhJ,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOr2B,EAAAA,aAAaX,IAAI,uBACjGoN,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAGH35B,KAAK+2C,SAASxc,OAASv6B,KAAK02C,QACjB,MAAT3a,IACF/7B,KAAKwkC,UAAYhJ,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOl2B,EAAAA,aAAaX,IAAI,uBAC5EoN,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAGH35B,KAAK+2C,SAASxc,OAASv6B,KAAK22C,MACjB,MAAT/a,IACF57B,KAAKwkC,UAAYhJ,EAAOE,EAAOC,EAAO/1B,EAAAA,aAAaX,IAAI,uBACvDoN,YAAW,WACTzL,EAAKo0B,iBAAiBp0B,EAAKkF,MAAM5C,cAAe,GAChDtC,EAAK+yB,eAAiB,IACrB,IAIH35B,KAAKwkC,UAAU7jC,QAAU,EAC3BX,KAAK25B,eAAiB,EAEtB35B,KAAK25B,gBAAkB,IAK7Bqc,EAAA91C,UAAA0lC,cAAA,SAAcjpB,GACM,QAAdA,EAAM1b,MACJjB,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,UAAYz2C,KAAK+2C,SAASxc,OAASv6B,KAAK02C,QAAU12C,KAAK+2C,SAASxc,OAASv6B,KAAK22C,KAC5G32C,KAAK8L,MAAM5C,cAAcyQ,MAAMohB,WAAa,cAE5C/6B,KAAK8L,MAAM5C,cAAcyQ,MAAMohB,WAAa,QAIhD,IAAI8P,EAAW7qC,KAAKwkC,UAEdhJ,EAAOqP,EAASpP,OAAO,GACvBC,EAAOmP,EAASpP,OAAO,GACvBE,EAAO37B,KAAKwkC,UAAU/I,OAAO,GAC7BG,EAAO57B,KAAKwkC,UAAU/I,OAAO,GAC7BI,EAAO77B,KAAKwkC,UAAU/I,OAAO,GAC7BK,EAAO97B,KAAKwkC,UAAU/I,OAAO,GAC7BM,EAAO/7B,KAAKwkC,UAAU/I,OAAO,GAC7BO,EAAOh8B,KAAKwkC,UAAU/I,OAAO,GAC7BQ,EAAOj8B,KAAKwkC,UAAU/I,OAAO,GAC7BS,EAAQl8B,KAAKwkC,UAAU/I,OAAO,GAC9Bqc,EAAQ93C,KAAKwkC,UAAU/I,OAAO,IAGpC,GAAkB,YAAd9e,EAAM1b,IAAmB,CAE3B,GAAIjB,KAAK25B,gBAAkB,EAAG,CAG5BkR,KAFMkN,EAAUvc,EAAOE,GACI,GACR3W,WAEjB/kB,KAAK+2C,SAASxc,OAASv6B,KAAKs2C,QAC5Bt2C,KAAK+2C,SAASxc,OAASv6B,KAAKu2C,MAC5Bv2C,KAAK+2C,SAASxc,OAASv6B,KAAKw2C,IAC5Bx2C,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,UAC5Bz2C,KAAK+2C,SAASxc,OAASv6B,KAAK02C,QAC5B12C,KAAK+2C,SAASxc,OAASv6B,KAAK22C,MAEZ,OAAZoB,IACFlN,EAAW,KAEA,MAATrP,GAAgBuc,IAAYvc,EAAO,MACrCqP,EAAW,KAEA,MAATnP,GAAgBqc,IAAY,IAAMrc,IACpCmP,EAAW,MAERA,EAAW,GACdA,EAAW,MACDA,EAAW,KACrBA,EAAW,IAAMA,KAGH,OAAZkN,IACFlN,EAAW,KAEA,MAATrP,GAAgBuc,IAAYvc,EAAO,MACrCqP,EAAW,KAEA,MAATnP,GAAgBqc,IAAY,IAAMrc,IACpCmP,EAAW,MAERA,EAAW,GACdA,EAAW,MACDA,EAAW,KACrBA,EAAW,IAAMA,IAGrB,IAAMmN,EAAerc,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAQ4b,EACxE/zB,EAAO8mB,EAAS9lB,WAAaizB,EACnCh4C,KAAKwkC,UAAYzgB,EAGnB,GAAI/jB,KAAK25B,gBAAkB,GAAK35B,KAAK25B,gBAAkB,EAAG,CAIxDkR,KAHMkN,EAAUnc,EAAOC,GACI,GAER9W,WACH,OAAZgzB,IACFlN,EAAW,KAEA,MAATjP,GAAgBmc,IAAYnc,EAAO,MACrCiP,EAAW,KAEA,MAAThP,GAAgBkc,IAAY,IAAMlc,IACpCgP,EAAW,MAERA,EAAW,GACdA,EAAW,MACDA,EAAW,KACrBA,EAAW,IAAMA,GAGbmN,EAAelc,EAAOC,EAAOC,EAAOC,EAAOC,EAAQ4b,EADzD,IAEMd,GAFAiB,EAAgBzc,EAAOE,EAAOC,GAELkP,EAAS9lB,WAAaizB,EACrDh4C,KAAKwkC,UAAYwS,EAInB,GAAIh3C,KAAK25B,gBAAkB,GAAK35B,KAAK25B,gBAAkB,EAAG,CACxD,IAAMue,EAAYnc,EAAOC,EAGzB6O,IAFmBqN,EAAY,GAEVnzB,WACH,OAAdmzB,IACFrN,EAAW,KAEA,MAAT9O,GAAgBmc,IAAcnc,EAAO,MACvC8O,EAAW,KAEA,MAAT7O,GAAgBkc,IAAc,IAAMlc,IACtC6O,EAAW,MAERA,EAAW,GACdA,EAAW,MACDA,EAAW,KACrBA,EAAW,IAAMA,GAGbmN,EAAe/b,EAAOC,EAAQ4b,EADpC,IAEMb,GAFAgB,EAAgBzc,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,GAE1B+O,EAAS9lB,WAAaizB,EACrDh4C,KAAKwkC,UAAYyS,EAInB,GAAIj3C,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,UAC1Bz2C,KAAK25B,eAAiB,EAAG,CAC3B,IAAIwe,EAAUjc,EAAMnX,WAEdkzB,EAAgBzc,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EACxE+b,EAAeF,EAEjB5b,IAAUt2B,EAAAA,aAAaX,IAAI,sBAC7BkzC,EAAUvyC,EAAAA,aAAaX,IAAI,sBAClBi3B,IAAUt2B,EAAAA,aAAaX,IAAI,wBACpCkzC,EAAUvyC,EAAAA,aAAaX,IAAI,uBAE7BjF,KAAKwkC,UAAYyT,EAAgBE,EAAUH,EAG/C,GAAIh4C,KAAK+2C,SAASxc,OAASv6B,KAAK02C,QAC1B12C,KAAK25B,gBAAkB,EAAG,CACxBwe,EAAUpc,EAAKhX,WAEbkzB,EAAgBzc,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EACnDkc,EAAehc,EAEjBD,IAASn2B,EAAAA,aAAaX,IAAI,sBAC5BkzC,EAAUvyC,EAAAA,aAAaX,IAAI,sBAClB82B,IAASn2B,EAAAA,aAAaX,IAAI,wBACnCkzC,EAAUvyC,EAAAA,aAAaX,IAAI,uBAE7BjF,KAAKwkC,UAAYyT,EAAgBE,EAAUH,EAG/C,GAAIh4C,KAAK+2C,SAASxc,OAASv6B,KAAK22C,MAC1B32C,KAAK25B,gBAAkB,EAAG,CAC5B,IAAIye,EAAWxc,EAAK7W,WAEdkzB,EAAgBzc,EAAOE,EAAOC,EAC9Bqc,EAAenc,EAEjBD,IAASh2B,EAAAA,aAAaX,IAAI,sBAC5BmzC,EAAWxyC,EAAAA,aAAaX,IAAI,sBACnB22B,IAASh2B,EAAAA,aAAaX,IAAI,wBACnCmzC,EAAWxyC,EAAAA,aAAaX,IAAI,uBAE9BjF,KAAKwkC,UAAYyT,EAAgBG,EAAWJ,GAMlD,GAAkB,cAAdr7B,EAAM1b,IAAqB,CAE7B,GAAIjB,KAAK25B,gBAAkB,EAAG,CAC5B,IAAMoe,EAGNlN,KAHMkN,EAAUvc,EAAOE,GACI,GAER3W,WAEjB/kB,KAAK+2C,SAASxc,OAASv6B,KAAKs2C,QAC5Bt2C,KAAK+2C,SAASxc,OAASv6B,KAAKu2C,MAC5Bv2C,KAAK+2C,SAASxc,OAASv6B,KAAKw2C,IAC5Bx2C,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,UAC5Bz2C,KAAK+2C,SAASxc,OAASv6B,KAAK02C,QAC5B12C,KAAK+2C,SAASxc,OAASv6B,KAAK22C,MAEZ,OAAZoB,IACFlN,EAAW,KAEA,MAATrP,GAAgBuc,IAAYvc,EAAO,MACrCqP,EAAW,KAEA,MAATnP,GAAgBqc,IAAY,IAAMrc,IACpCmP,EAAW,MAERA,EAAW,EACdA,EAAW,MACDA,EAAW,KACrBA,EAAW,IAAMA,KAGH,OAAZkN,IACFlN,EAAW,KAEA,MAATrP,GAAgBuc,IAAYvc,EAAO,MACrCqP,EAAW,KAEA,MAATnP,GAAgBqc,IAAY,IAAMrc,IACpCmP,EAAW,MAERA,EAAW,EACdA,EAAW,MACDA,EAAW,KACrBA,EAAW,IAAMA,IAGrB,IAAMwN,EAAiB1c,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAQ4b,EAC1E/zB,EAAO8mB,EAAS9lB,WAAaszB,EACnCr4C,KAAKwkC,UAAYzgB,EAGnB,GAAI/jB,KAAK25B,gBAAkB,GAAK35B,KAAK25B,gBAAkB,EAAG,CACxD,IAAM2e,EAAY1c,EAAOC,EAGzBgP,IAFmByN,EAAY,GAEVvzB,WACH,OAAduzB,IACFzN,EAAW,KAEA,MAATjP,GAAgB0c,IAAc1c,EAAO,MACvCiP,EAAW,KAEA,MAAThP,GAAgByc,IAAc,IAAMzc,IACtCgP,EAAW,KAEK,OAAdyN,IACFzN,EAAW,MAERA,EAAW,EACdA,EAAW,MACDA,EAAW,KACrBA,EAAW,IAAMA,GAEnB,IACM0N,EAAmBzc,EAAOC,EAAOC,EAAOC,EAAOC,EAAQ4b,EACvDd,EAFoBxb,EAAOE,EAAOC,EAELkP,EAAS9lB,WAAawzB,EACzDv4C,KAAKwkC,UAAYwS,EAInB,GAAIh3C,KAAK25B,gBAAkB,GAAK35B,KAAK25B,gBAAkB,EAAG,CACxD,IAAM6e,EAAczc,EAAOC,EAG3B6O,IAFmB2N,EAAc,GAEZzzB,WACD,OAAhByzB,IACF3N,EAAW,KAEA,MAAT9O,GAAgByc,IAAgBzc,EAAO,MACzC8O,EAAW,KAEA,MAAT7O,GAAgBwc,IAAgB,IAAMxc,IACxC6O,EAAW,KAEO,OAAhB2N,IACF3N,EAAW,MAERA,EAAW,EACdA,EAAW,MACDA,EAAW,KACrBA,EAAW,IAAMA,GAEnB,IACM4N,EAAmBxc,EAAOC,EAAQ4b,EAClCb,EAFoBzb,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAE1B+O,EAAS9lB,WAAa0zB,EACzDz4C,KAAKwkC,UAAYyS,EAInB,GAAIj3C,KAAK+2C,SAASxc,OAASv6B,KAAKy2C,UAC1Bz2C,KAAK25B,eAAiB,EAAG,CACvBwe,EAAUjc,EAAMnX,WAEdkzB,EAAgBzc,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EAAOC,EACxE+b,EAAeF,EAEjB5b,IAAUt2B,EAAAA,aAAaX,IAAI,sBAC7BkzC,EAAUvyC,EAAAA,aAAaX,IAAI,sBAClBi3B,IAAUt2B,EAAAA,aAAaX,IAAI,wBACpCkzC,EAAUvyC,EAAAA,aAAaX,IAAI,uBAE7BjF,KAAKwkC,UAAYyT,EAAgBE,EAAUH,EAG/C,GAAIh4C,KAAK+2C,SAASxc,OAASv6B,KAAK02C,QAC1B12C,KAAK25B,gBAAkB,EAAG,CACxBwe,EAAUpc,EAAKhX,WAEbkzB,EAAgBzc,EAAOE,EAAOC,EAAOC,EAAOC,EAAOC,EACnDkc,EAAehc,EAEjBD,IAASn2B,EAAAA,aAAaX,IAAI,sBAC5BkzC,EAAUvyC,EAAAA,aAAaX,IAAI,sBAClB82B,IAASn2B,EAAAA,aAAaX,IAAI,wBACnCkzC,EAAUvyC,EAAAA,aAAaX,IAAI,uBAE7BjF,KAAKwkC,UAAYyT,EAAgBE,EAAUH,EAG/C,GAAIh4C,KAAK+2C,SAASxc,OAASv6B,KAAK22C,MAC1B32C,KAAK25B,gBAAkB,EAAG,CACxBye,EAAWxc,EAAK7W,WAEdkzB,EAAgBzc,EAAOE,EAAOC,EAC9Bqc,EAAenc,EAEjBD,IAASh2B,EAAAA,aAAaX,IAAI,sBAC5BmzC,EAAWxyC,EAAAA,aAAaX,IAAI,sBACnB22B,IAASh2B,EAAAA,aAAaX,IAAI,wBACnCmzC,EAAWxyC,EAAAA,aAAaX,IAAI,uBAE9BjF,KAAKwkC,UAAYyT,EAAgBG,EAAWJ,GAKlD,GAAkB,YAAdr7B,EAAM1b,KAAmC,cAAd0b,EAAM1b,IAInC,OAHAjB,KAAK8L,MAAM5C,cAAcyQ,MAAMohB,WAAa,cAC5Cpe,EAAMzG,iBACNyG,EAAM3G,mBACC,EAES,WAAd2G,EAAM1b,KACR0b,EAAMzG,kBAIV8/B,EAAA91C,UAAA6V,YAAA,SAAY4G,IACN3c,KAAK8L,MAAM5C,cAAciyB,gBAA8D,IAA5Cn7B,KAAK8L,MAAM5C,cAAciyB,kBACtEn7B,KAAK25B,eAAiB35B,KAAK8L,MAAM5C,cAAciyB,iBAInD6a,EAAA91C,UAAAqmC,mBAAA,SAAmBnK,GAEjB,GAAIA,EAAKjB,gBAA0C,IAAxBiB,EAAKjB,eAE9B,OADWiB,EAAKjB,gBAKpB6a,EAAA91C,UAAA86B,iBAAA,SAAiBoB,EAAMC,GACrB,GAAID,EAAKE,kBACPF,EAAK1vB,QACL0vB,EAAKE,kBAAkBD,EAAKA,QACvB,GAAID,EAAKoK,gBAAiB,CAC/B,IAAMltB,EAAQ8iB,EAAKoK,kBACnBltB,EAAMmtB,UAAS,GACfntB,EAAMotB,QAAQ,YAAarK,GAC3B/iB,EAAMqtB,UAAU,YAAatK,GAC7B/iB,EAAMstB,WAIVoP,EAAA91C,UAAAi8B,SAAA,WACEn8B,KAAKg7B,iBAAiBh7B,KAAK8L,MAAM5C,cAAelJ,KAAK25B,0DA9tB5B1lB,EAAAA,yBAAwB5G,EAAAA,cAtOnDvM,EAAA,CADC8G,EAAAA,yBACeV,EAAAA,oDAOhBpG,EAAA,CADCuF,EAAAA,gEAKDvF,EAAA,CADCuF,EAAAA,uEAZU2vC,EAAqB0C,EAAA53C,EAAA,CAPjCwF,EAAAA,UAAU,CACTC,SAAU,iBACVC,SAAA,4hDACA6W,gBAAiBC,EAAAA,wBAAwBC,OACzCpL,KAAM,CAAEwH,MAAO,sBACf7R,UAAW,CAAC,CAAEC,QAASW,EAAwBV,YAAa0wC,6BA0OjCzkC,EAAAA,kBAAwB5G,EAAAA,cAxOxC2oC,IAA8BlrC,iBCpB3C,SAAA6tC,KAAiC,OAApBA,EAAkB73C,EAAA,CAN9B+V,EAAAA,SAAS,CACNC,aAAc,CAACk/B,IACfj/B,QAAS,CAAEJ,EAAAA,aAAcmX,EAAAA,YAAalX,GAAgBgmB,EAAAA,gBACtD5lB,QAAS,CAACg/B,IACVluC,UAAW,MAEF6wC,SCPb,WAEE34C,KAAA44C,SAAmC,IAAIC,OAIzC,gBASA,4BAMA,SAAAC,mDAEA,OAFyDh5C,EAAAg5C,EAAA9xC,GAEzD8xC,GAFyD3wC,kBAIzD,SAAA4wC,mDAKA,OAL6Cj5C,EAAAi5C,EAAA/xC,GAK7C+xC,GAL6C9wC,kBA4G3C,SAAA+wC,EAAoBhuC,GAApB,IAAApE,EACEI,EAAApG,KAAAZ,OAAOA,YADW4G,EAAAoE,IAAAA,EAvFpBpE,EAAAqyC,SAAkC,SAGlCryC,EAAA+pC,cAAuC,SAGvC/pC,EAAAsyC,eAA8C,MAG9CtyC,EAAAuyC,kBAA4B,KAG5BvyC,EAAAwyC,sBAAgC,EAGhCxyC,EAAAyyC,iBAA0B,GAG1BzyC,EAAA0yC,SAAmB,KAGnB1yC,EAAAoqB,UAAmB,QAGnBpqB,EAAA2yC,cAAwB,QAGxB3yC,EAAA4yC,UAAoB,EAGpB5yC,EAAA6yC,aAAuB,EAGvB7yC,EAAA8yC,WAAqB,EAGrB9yC,EAAAwE,KAAoB,KAGpBxE,EAAA+yC,WAAmB,EAGnB/yC,EAAAgzC,cAAsB,cAGtBhzC,EAAAizC,aAAoB,eAGpBjzC,EAAAoiC,iBAAsE,IAAI9hC,EAAAA,aAG1EN,EAAAkzC,cAAmC,IAAI5yC,EAAAA,aAGvCN,EAAA6Y,YAAqD,IAAIvY,EAAAA,aAGzDN,EAAAmzC,cAAmC,IAAI7yC,EAAAA,aAGvCN,EAAAozC,WAAgC,IAAI9yC,EAAAA,aAGpCN,EAAAqzC,YAA0D,IAAI/yC,EAAAA,aAG9DN,EAAAgoB,uBAAoE,IAAI1nB,EAAAA,aAExEN,EAAAszC,eAAyB,EACzBtzC,EAAAgP,SAAmB,EACnBhP,EAAAuzC,KAAc,GAEdvzC,EAAAuqB,cAAuB,GACvBvqB,EAAAwzC,gBAAyB,GACzBxzC,EAAAyzC,iBAA2B,EAC3BzzC,EAAA0zC,SAAkB,GAGlB1zC,EAAA2zC,WAAqB,EACrB3zC,EAAA4zC,YAAsB,EACtB5zC,EAAA6zC,WAAqB,YACrB7zC,EAAA8zC,iBAA2B,IA0lB7B,OAnrB6C56C,EAAAk5C,EAAAhyC,GAmG3CgyC,EAAA94C,UAAAy6C,wBAAA,SAAwB/3C,GACtB5C,KAAK4uB,uBAAuBvnB,KAAKzE,IAGnCo2C,EAAA94C,UAAAypB,QAAA,WACE3pB,KAAKm6C,KAAO,GACZn6C,KAAK6+B,mBAAmBrW,MAAM,OAGhCwwB,EAAA94C,UAAA06C,mBAAA,SAAmBl/B,EAAMrQ,GAAzB,IAAAzE,EAAA5G,UAAyB,IAAAqL,IAAAA,GAAA,IACU,IAA7BqQ,EAAK1b,KAAKu5C,gBAAmD,WAAvBv5C,KAAK2wC,eAC7Cj1B,EAAKkrB,QAAUlrB,EAAKkrB,OAChBlrB,EAAKm/B,YAAqC,WAAvB76C,KAAK2wC,eAC1B3wC,KAAK86C,mBAAmBp/B,EAAKm/B,aAEX,IAAhBn/B,EAAKkrB,OACoB,WAAvB5mC,KAAK2wC,eACP3wC,KAAKmxB,cAAc3V,SAAQ,SAAC5Y,GAC1BA,EAAEgkC,QAAS,KAEb5mC,KAAKmxB,cAAgB,GACrBnxB,KAAKmxB,cAAc/sB,KAAKsX,IAGxB1b,KAAKmxB,cAAc/sB,KAAKsX,GAI1B1b,KAAKmxB,cAAgBnxB,KAAKmxB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc59B,EAAK9U,EAAK0yC,eAGvF59B,EAAKkrB,QAAUlrB,EAAKkrB,OAEhBlrB,EAAKm/B,YAAsC,aAAvB76C,KAAK2wC,eAC3B3wC,KAAK86C,mBAAmBp/B,EAAKm/B,YAEJ,aAAvB76C,KAAK2wC,eACP3wC,KAAK+6C,kBAAkBr/B,EAAMA,EAAKkrB,QAGjB,GAAflrB,EAAKkrB,OACoB,aAAvB5mC,KAAK2wC,cAEP3wC,KAAKo6C,gBAAgBh2C,KAAKsX,IAE1B1b,KAAKo6C,gBAAgB5+B,SAAQ,SAAA5Y,GAC3BA,EAAEgkC,QAAS,KAEb5mC,KAAKo6C,gBAAkB,GACvBp6C,KAAKo6C,gBAAgBh2C,KAAKsX,IAG5B1b,KAAKo6C,gBAAkBp6C,KAAKo6C,gBAAgB1mC,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc59B,EAAK9U,EAAK0yC,cAIzFjuC,GACFrL,KAAKgpC,iBAAiB3hC,KAAK,CACzBiF,UAAWtM,KACXyC,MAAOzC,KAAKg7C,SAASt/B,GACrB3O,YAAa/M,KAAKgL,IAAI9B,iBAKpB8vC,EAAA94C,UAAA86C,SAAR,SAAiBt/B,EAAMu/B,GAAvB,MAAAr0C,EAAA5G,UAAuB,IAAAi7C,IAAAA,GAAA,GACrB,IAAMC,EAA2B,IAAIC,GACjCF,IACFC,EAAKn4B,cAAqC3Z,IAA1BsS,EAAK1b,KAAKy6C,YAA4B,GAA0B,QAAxBlzC,EAAGmU,EAAK1b,KAAKy6C,mBAAW,IAAAlzC,OAAA,EAAAA,EAAET,KAAI,SAACvC,GAAM,OAAAqC,EAAKo0C,SAASz2C,OAE7G22C,EAAKtC,SAAS3tC,UAA6B,IAAlByQ,EAAKzQ,UAAoByQ,EAAKzQ,SACvDiwC,EAAKtC,SAAS16B,MAAqB,IAAdxC,EAAKwC,MAAgBxC,EAAKwC,KAC/Cg9B,EAAKtC,SAAS33C,IAAMya,EAAK1b,KAAKs5C,UAE9B,IAAMn4C,EAAI,GAEV,IAAK,IAAIi6C,KAAK1/B,EACJ,EAED,UAAL0/B,GACK,YAALA,GACK,WAALA,GACK,aAALA,GACK,YAALA,GACK,QAALA,GACK,cAALA,GACK,UAALA,GACK,UAALA,GACK,iBAALA,GACAA,GAAKp7C,KAAKy6C,aAGVt5C,EAAEi6C,GAAK1/B,EAAK0/B,IAOhB,OAJAF,EAAKtC,SAASl9B,KAAOva,EACrB+5C,EAAKtC,SAAS/iC,UAA2B,IAAhB6F,EAAKkrB,QAAkBlrB,EAAKkrB,OACrDsU,EAAKtC,SAASyC,SAAW3/B,EAAK1b,KAAKu5C,eACnC2B,EAAKvL,YAA6BvmC,IAApBsS,EAAKm/B,WAA2B,KAAO76C,KAAKg7C,SAASt/B,EAAKm/B,YAAY,GAC7EK,GAGDlC,EAAA94C,UAAA66C,kBAAR,SAA0Br/B,EAAMnb,GAAhC,IAAAqG,EAAA5G,KACMA,KAAKo5C,uBACP19B,EAAKkrB,OAASrmC,GACmB,IAA7Bmb,EAAK1b,KAAKu5C,gBAA2B79B,EAAK1b,KAAKy6C,aAAe/+B,EAAK1b,KAAKy6C,YAAY95C,OAAS,EAC/F+a,EAAK1b,KAAKy6C,YAAYj/B,SAAQ,SAACgH,IACG,IAA5BA,EAAI5b,EAAK2yC,gBACX/2B,EAAIokB,OAASrmC,GAGH,IAANA,GAAqC,WAAvBqG,EAAK+pC,gBACrB/pC,EAAKwzC,gBAAkBxzC,EAAKwzC,gBAAgB1mC,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc92B,EAAI5b,EAAK0yC,aACxF1yC,EAAKwzC,gBAAgBh2C,KAAKoe,KAElB,IAANjiB,GAAsC,WAAvBqG,EAAK+pC,gBACtB/pC,EAAKwzC,gBAAkBxzC,EAAKwzC,gBAAgB1mC,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc92B,EAAI5b,EAAK0yC,cAI1F1yC,EAAKm0C,kBAAkBv4B,EAAKjiB,KAE5BiiB,EAAIokB,OAASrmC,GACH,IAANA,GAAqC,WAAvBqG,EAAK+pC,gBACrB/pC,EAAKuqB,cAAgBvqB,EAAKuqB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc92B,EAAI5b,EAAK0yC,aACpF1yC,EAAKuqB,cAAc/sB,KAAKoe,KAEhB,IAANjiB,GAAsC,WAAvBqG,EAAK+pC,gBACtB/pC,EAAKuqB,cAAgBvqB,EAAKuqB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc92B,EAAI5b,EAAK0yC,kBAK1F59B,EAAKkrB,OAASrmC,IAMZy4C,EAAA94C,UAAA46C,mBAAR,SAA2Bp/B,GACzB,GAAI1b,KAAKo5C,qBAAsB,CAC7B,IAAIkC,GAAY,EACZC,GAAc,EACdC,GAAY,EACZC,GAAkB,EAEtB,GAAI//B,EAAK1b,KAAKy6C,YACZ,IAAK,IAAIr9B,EAAQ,EAAGA,EAAQ1B,EAAK1b,KAAKy6C,YAAY95C,OAAQyc,KACZ,IAAxC1B,EAAK1b,KAAKy6C,YAAYr9B,GAAOwpB,SAC/B2U,GAAc,EACdC,GAAY,IAE8B,IAAxC9/B,EAAK1b,KAAKy6C,YAAYr9B,GAAOwpB,aAA4Dx9B,IAAxCsS,EAAK1b,KAAKy6C,YAAYr9B,GAAOwpB,SAChF0U,GAAY,GAE8B,OAAxC5/B,EAAK1b,KAAKy6C,YAAYr9B,GAAOwpB,SAC/B6U,GAAkB,EAClBF,GAAc,EACdC,GAAY,EACZF,GAAY,IAKdE,GAAcC,IAAoBH,KACpC5/B,EAAKkrB,OAAS,OAEE,IAAd0U,IACF5/B,EAAKkrB,QAAS,IAEI,IAAhB2U,IACF7/B,EAAKkrB,QAAS,GAEZlrB,EAAKm/B,YAAcn/B,EAAKm/B,WAAW76C,KAAKy6C,aAAe/+B,EAAKm/B,WAAW76C,KAAKy6C,YAAY95C,OAAS,GACnGX,KAAK86C,mBAAmBp/B,EAAKm/B,cAMnC7B,EAAA94C,UAAA8S,SAAA,WAAA,IAAApM,EAAA5G,KACEA,KAAKyf,YAAY/M,WAAU,SAACkC,GACrBA,EAAKT,QACRvN,EAAK80C,WAAW9mC,EAAK8G,KAAM9G,EAAK+mC,UAKtC3C,EAAA94C,UAAA07C,YAAA,SAAYh5C,EAAe8Y,GACC,UAAtB1b,KAAK2wC,eACP3wC,KAAK67C,kBAAkBj5C,EAAG8Y,GAAM,IAKpCs9B,EAAA94C,UAAA27C,kBAAA,SAAkBj5C,EAAe8Y,EAAMigC,QAAA,IAAAA,IAAAA,GAAA,GACrC37C,KAAKyf,YAAYpY,KAAK,CACpBiF,UAAWtM,KACXgN,UAAWpK,EACX8Y,KAAIA,EACJigC,KAAIA,KAIR3C,EAAA94C,UAAAw7C,WAAA,SAAWhgC,EAAMigC,GAEf,QAFe,IAAAA,IAAAA,GAAA,GAEY,WAAvB37C,KAAK2wC,eAA+BgL,EAOjC,CAaL,GAZ+B,GAA5BjgC,EAAK1b,KAAKu5C,iBACX79B,EAAKqC,QAAUrC,EAAKqC,QAGK,WAAvB/d,KAAK2wC,gBACoB,SAAvB3wC,KAAKk5C,gBAA8C,GAAjBx9B,EAAK2/B,UAGzCr7C,KAAK46C,mBAAmBl/B,KAIK,IAA7BA,EAAK1b,KAAKu5C,iBAA2C,IAAhB79B,EAAKogC,QAAmB97C,KAAKy5C,YAAa,CACjFz5C,KAAK+7C,QAAUrgC,EACf,IAAMpT,EAAM2T,KAAKC,MAAsB,IAAhBD,KAAK+/B,UAC5BtgC,EAAKoN,UAAYxgB,EACjBtI,KAAKs6C,SAASl2C,KAAKsX,GACnB1b,KAAK6+B,mBAAmBrW,MAAM9M,GAC9B1b,KAAKuoC,YAAYvoC,KAAK+7C,SAEpBrgC,EAAKqC,SAAuC,IAA7BrC,EAAK1b,KAAKu5C,gBAC3B79B,EAAKwC,MAAO,EACZle,KAAK85C,cAAczyC,KAAKrH,KAAKg7C,SAASt/B,KAC5BA,EAAKqC,SAAuC,IAA7BrC,EAAK1b,KAAKu5C,iBACnC79B,EAAKwC,MAAO,EACZle,KAAK+5C,cAAc1yC,KAAKrH,KAAKg7C,SAASt/B,SAhCb,SAAvB1b,KAAKk5C,gBAA8C,GAAjBx9B,EAAK2/B,UAGzCr7C,KAAK46C,mBAAmBl/B,IAkC9Bs9B,EAAA94C,UAAAoH,mBAAA,WAAA,IAAAV,EAAA5G,KACEA,KAAK6+B,mBAAmBrW,MAAM,MAC9BxoB,KAAK6+B,mBAAmBvW,eAAe5V,WAAU,SAACkW,GAEhD,GAAyB,IAArBhiB,EAAKuzC,KAAKx5C,OACZiG,EAAKq1C,YAAY,MACjBr1C,EAAKuzC,KAAOvxB,EAAMhU,KAAK9R,OAEvB8D,EAAKuzC,KAAK3+B,SAAQ,SAAC3H,GACjBA,EAAG+yB,QAAS,EAEe,SAAvBhgC,EAAKsyC,gBAAuD,GAA1BrlC,EAAGjN,EAAK2yC,iBAC5C1lC,EAAGqoC,kBAAmB,GAGG,WAAvBt1C,EAAKsyC,gBAAyD,GAA1BrlC,EAAGjN,EAAK2yC,iBAC9C1lC,EAAGqoC,kBAAmB,GAGpBt1C,EAAKyyC,iBAAiB14C,OAAS,EACjCiG,EAAKyyC,iBAAiB79B,SAAQ,SAAC/a,GACzBA,EAAEqvB,SAASjc,EAAGjN,EAAK0yC,aACS,GAA1BzlC,EAAGjN,EAAK2yC,eAEV3yC,EAAKsX,KAAKrK,GAIVjN,EAAKu1C,WAAWtoC,OAIa,MAA1BjN,EAAKuyC,oBACgB,GAA1BtlC,EAAGjN,EAAK2yC,gBAAwD,GAA9B1lC,EAAGjN,EAAKuyC,mBAE5CvyC,EAAKsX,KAAKrK,GAG6B,GAA9BA,EAAGjN,EAAKuyC,oBACjBvyC,EAAKu1C,WAAWtoC,YAYtB,GAFAjN,EAAKm1C,QAAUn1C,EAAK0zC,SAAS5mC,QAAO,SAACvS,GAAM,OAAAA,EAAE2nB,YAAcF,EAAMhU,KAAKkU,aAAW,GACjFliB,EAAK0zC,SAAW1zC,EAAK0zC,SAAS5mC,QAAO,SAACvS,GAAM,OAAAA,EAAE2nB,YAAcF,EAAMhU,KAAKkU,kBAClD1f,IAAjBxC,EAAKm1C,QAAuB,CAC9Bn1C,EAAKq1C,YAAYr1C,EAAKm1C,SACtB,IAAMK,EAASxzB,EAAMhU,KAAK9R,OAE1B,GAAyB,IAArB8D,EAAKuzC,KAAKx5C,OAAc,CAEtBiG,EAAKm1C,QAAQn1C,EAAK6zC,aAAe7zC,EAAKm1C,QAAQn1C,EAAK6zC,YAAY95C,OAAS,EAC1Ey7C,EAAO5gC,SAAQ,SAAC3H,GACdjN,EAAKm1C,QAAQn1C,EAAK6zC,YAAY7zC,EAAKm1C,QAAQn1C,EAAK6zC,YAAY95C,QAAUkT,KAGxEjN,EAAKm1C,QAAQn1C,EAAK6zC,YAAc2B,EAGlC,mBAAS57C,GACoB,SAAvBoG,EAAKsyC,gBAA8D,GAAjCkD,EAAO57C,GAAGoG,EAAK2yC,iBACnD6C,EAAO57C,GAAG07C,kBAAmB,GAGJ,WAAvBt1C,EAAKsyC,gBAAgE,GAAjCkD,EAAO57C,GAAGoG,EAAK2yC,iBACrD6C,EAAO57C,GAAG07C,kBAAmB,GAEJ,WAAvBt1C,EAAK+pC,eAA8B/pC,EAAKwyC,sBAC1CgD,EAAO57C,GAAGomC,OAA+C,OAAtChgC,EAAKm1C,QAAQnV,QAAyChgC,EAAKm1C,QAAQnV,QAG5D,IAAxBhgC,EAAKm1C,QAAQnV,QACU,YAAtBhgC,EAAK+pC,gBAC4B,IAAlCyL,EAAO57C,GAAGoG,EAAK2yC,iBAEf3yC,EAAKuqB,cAAgBvqB,EAAKuqB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc8C,EAAO57C,GAAGoG,EAAK0yC,aAC1F1yC,EAAKuqB,cAAc/sB,KAAKg4C,EAAO57C,MAGjC47C,EAAO57C,GAAGomC,QAAS,EAErBwV,EAAO57C,GAAGq6C,WAAaj0C,EAAKm1C,QAGxBn1C,EAAKyyC,iBAAiB14C,OAAS,EACjCiG,EAAKyyC,iBAAiB79B,SAAQ,SAAC/a,GACzBA,EAAEqvB,SAASssB,EAAO57C,GAAGoG,EAAK0yC,aACS,GAAjC8C,EAAO57C,GAAGoG,EAAK2yC,eAEjB3yC,EAAKsX,KAAKk+B,EAAO57C,IAIjBoG,EAAKu1C,WAAWC,EAAO57C,QAIM,MAA1BoG,EAAKuyC,oBACuB,GAAjCiD,EAAO57C,GAAGoG,EAAK2yC,gBAA+D,GAArC6C,EAAO57C,GAAGoG,EAAKuyC,mBAE1DvyC,EAAKsX,KAAKk+B,EAAO57C,IAG6B,GAArC47C,EAAO57C,GAAGoG,EAAKuyC,oBACxBvyC,EAAKu1C,WAAWC,EAAO57C,MA7CpBA,EAAI,EAAGA,EAAI47C,EAAOz7C,OAAQH,MAA1BA,GAqDToG,EAAKm1C,QAAQD,QAAS,QAOhC9C,EAAA94C,UAAA2L,gBAAA,WAC6B,WAAvB7L,KAAK2wC,gBACP3wC,KAAKk6C,eAAgB,GAEvBl6C,KAAK06C,iBAAkB,GAOzB1B,EAAA94C,UAAAm8C,YAAA,SAAYz5C,EAAUoB,GACfhE,KAAKw6C,aACRx6C,KAAKs8C,SAAWt4C,EAChBhE,KAAKg6C,WAAW3yC,KAAKrD,IAEvBpB,EAAE6oC,4BAGJuN,EAAA94C,UAAAq8C,UAAA,SAAU35C,EAAGoB,GACNhE,KAAKw6C,aACRx6C,KAAKw8C,SAAWx4C,GAElBpB,EAAE6oC,4BAGJuN,EAAA94C,UAAAu8C,KAAA,SAAK75C,GAAL,IAAAgE,EAAA5G,KAEE,IAAKA,KAAKw6C,aACRx6C,KAAKu6C,WAAY,EACjBv6C,KAAK08C,WAAW18C,KAAKs8C,SAAUt8C,KAAKw8C,UAChCx8C,KAAKu6C,WAAav6C,KAAKs8C,SAASt8C,KAAKs5C,YAAct5C,KAAKw8C,SAASx8C,KAAKs5C,WAAat5C,KAAKs8C,SAASzB,aAAe76C,KAAKw8C,UAAU,CACjI,IAAMG,EAA2C,IAAIC,GACrDD,EAAW/2B,OAAS5lB,KAAKg7C,SAASh7C,KAAKs8C,UACvCK,EAAW37C,OAAShB,KAAKg7C,SAASh7C,KAAKw8C,UACvCx8C,KAAKw6C,YAAa,EAClBx6C,KAAKuoC,YAAYvoC,KAAKs8C,UACtBt8C,KAAKuoC,YAAYvoC,KAAKw8C,UACtBG,EAAWr6C,QAAU,SAACG,GACpBmE,EAAKq1C,YAAYr1C,EAAK01C,UACtB11C,EAAKq1C,YAAYr1C,EAAK41C,UAClB/5C,EACFmE,EAAKi2C,aAAaj2C,EAAK01C,SAAU11C,EAAK41C,UAEtC51C,EAAK4zC,YAAa,GAGtBx6C,KAAKi6C,YAAY5yC,KAAKs1C,GAI1B/5C,EAAE6oC,4BAGJuN,EAAA94C,UAAAw8C,WAAA,SAAW/M,EAAQmN,GACjB,GAAInN,EAAO3vC,KAAKy6C,aAAe9K,EAAO3vC,KAAKy6C,YAAY95C,OAAS,EAC9D,IAAK,IAAIyc,EAAQ,EAAGA,EAAQuyB,EAAO3vC,KAAKy6C,YAAY95C,OAAQyc,IACtDuyB,EAAO3vC,KAAKy6C,YAAYr9B,GAAOpd,KAAKs5C,WAAawD,EAAM98C,KAAKs5C,YAC9Dt5C,KAAKu6C,WAAY,GAEf5K,EAAO3vC,KAAKy6C,YAAYr9B,GAAOpd,KAAKy6C,aAAe9K,EAAO3vC,KAAKy6C,YAAYr9B,GAAOpd,KAAKy6C,YAAY95C,OAAS,GAC9GX,KAAK08C,WAAW/M,EAAO3vC,KAAKy6C,YAAYr9B,GAAQ0/B,QAG3CnN,EAAO3vC,KAAKs5C,WAAawD,EAAM98C,KAAKs5C,YAC7Ct5C,KAAKu6C,WAAY,IAIrBvB,EAAA94C,UAAA28C,aAAA,SAAaE,EAAWC,GAAxB,IAAAp2C,EAAA5G,KAC6B,SAAvBA,KAAKk5C,iBACP8D,EAAWd,kBAAmB,GAG5Ba,EAAUlC,WACZkC,EAAUlC,WAAW76C,KAAKy6C,YAAcsC,EAAUlC,WAAW76C,KAAKy6C,YAAY/mC,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAcyD,EAAUn2C,EAAK0yC,aAEhIt5C,KAAKm6C,KAAOn6C,KAAKm6C,KAAKzmC,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAcyD,EAAUn2C,EAAK0yC,aAE1EyD,EAAUlC,WAAamC,EACnBA,EAAWh9C,KAAKy6C,aAAeuC,EAAWh9C,KAAKy6C,YAAY95C,OAAS,EACtEq8C,EAAWh9C,KAAKy6C,YAAYuC,EAAWh9C,KAAKy6C,YAAY95C,QAAUo8C,GAElEC,EAAWh9C,KAAKy6C,YAAc,GAC9BuC,EAAWh9C,KAAKy6C,YAAY,GAAKsC,GACM,IAAnCC,EAAWh9C,KAAKu5C,eAClBv5C,KAAK07C,WAAWsB,IAEhBA,EAAWj/B,QAAUi/B,EAAWj/B,OAChCi/B,EAAWlB,QAAS,GAEtBkB,EAAWh9C,KAAKu5C,gBAAiB,GAE/BwD,EAAUlC,YAAqC,WAAvB76C,KAAK2wC,eAC/B3wC,KAAK86C,mBAAmBiC,EAAUlC,YAEpC76C,KAAKw6C,YAAa,GAIZxB,EAAA94C,UAAA+8C,WAAR,SAAmBxsB,EAAOhuB,GACxB,IAAK,IAAI2a,EAAQ,EAAGA,EAAQpd,KAAKm6C,KAAKx5C,OAAQyc,IAC5Cpd,KAAKk9C,aAAal9C,KAAKm6C,KAAK/8B,GAAQqT,EAAOhuB,GAE7CzC,KAAKq6C,iBAAkB,GAGjBrB,EAAA94C,UAAAg9C,aAAR,SAAqBxhC,EAAM+U,EAAOhuB,GAAlC,IAAAmE,EAAA5G,KACgB,WAAVywB,IAAuC,IAAhB/U,EAAKogC,aAAoC1yC,IAAhBsS,EAAKogC,QAMvDpgC,EAAK+U,GAAShuB,EACA,WAAVguB,IAAmD,IAA7B/U,EAAK1b,KAAKu5C,iBAAsC,IAAV92C,GAC9DzC,KAAKmxB,cAAc/sB,KAAKsX,KAPG,IAAzB1b,KAAKq6C,kBACPr6C,KAAK07C,WAAWhgC,GAChBA,EAAK+U,GAAShuB,GAQJ,WAAVguB,IACF/U,EAAKkS,eAAgB,IAEU,IAA7BlS,EAAK1b,KAAKu5C,gBAA2B79B,EAAK1b,KAAKy6C,aAAe/+B,EAAK1b,KAAKy6C,YAAY95C,OAAS,GAC/F+a,EAAK1b,KAAKy6C,YAAYj/B,SAAQ,SAACjS,GAC7B3C,EAAKs2C,aAAa3zC,EAASknB,EAAOhuB,OAKhCu2C,EAAA94C,UAAAqoC,YAAR,SAAoB7sB,GAClBA,EAAK9F,SAAU,GAGTojC,EAAA94C,UAAA+7C,YAAR,SAAoBvgC,GACN,MAARA,IACFA,EAAK9F,SAAU,IAIZojC,EAAA94C,UAAAi9C,QAAP,SAAeC,QAAA,IAAAA,IAAAA,GAAA,GAKbp9C,KAAKi9C,WAAW,UAAU,IAIrBjE,EAAA94C,UAAAi8C,WAAP,SAAkBzgC,GACM,GAAlBA,EAAa,QACf1b,KAAK46C,mBAAmBl/B,GAAM,IAK3Bs9B,EAAA94C,UAAAge,KAAP,SAAYxC,IAEa,IAAnBA,EAAa,QACf1b,KAAK07C,WAAWhgC,GAAM,IAMnBs9B,EAAA94C,UAAAm9C,cAAP,SAAqB3hC,GACLhR,SAASd,cAAc,eAAe8R,EAAK1b,KAAKs5C,UAAS,MAC/DlP,kBAGH4O,EAAA94C,UAAAo9C,SAAP,WACEt9C,KAAKi9C,WAAW,UAAU,IAGrBjE,EAAA94C,UAAAw2B,UAAP,WAC6B,WAAvB12B,KAAK2wC,eACP3wC,KAAKi9C,WAAW,UAAU,IAIvBjE,EAAA94C,UAAAq9C,YAAP,WAC6B,WAAvBv9C,KAAK2wC,eACP3wC,KAAKi9C,WAAW,UAAU,GAE5Bj9C,KAAKmxB,cAAgB,IAGhB6nB,EAAA94C,UAAAs9C,iBAAP,WAAA,IAAA52C,EAAA5G,KACQy9C,EAAkB,GAIxB,OAHAz9C,KAAKmxB,cAAc3V,SAAQ,SAAC5Y,GAC1B66C,EAAgBr5C,KAAKwC,EAAKo0C,SAASp4C,OAE9B66C,GAGFzE,EAAA94C,UAAAw9C,mBAAP,WAAA,IAAA92C,EAAA5G,KACQ29C,EAAoB,GAI1B,OAHA39C,KAAKo6C,gBAAgB5+B,SAAQ,SAAC5Y,GAC5B+6C,EAAkBv5C,KAAKwC,EAAKo0C,SAASp4C,OAEhC+6C,GAGT3E,EAAA94C,UAAA09C,aAAA,SAAaliC,GACX,IAAImiC,EAAY,GAMhB,OALAA,EAAUz5C,KAAKsX,EAAK1b,KAAKs5C,WACrB59B,EAAKm/B,YACPgD,EAAUz5C,KAAIvD,MAAdg9C,EAASn5C,EAAS1E,KAAK49C,aAAaliC,EAAKm/B,cAGpCgD,GAGF7E,EAAA94C,UAAA49C,qBAAP,WAAA,IAAAl3C,EAAA5G,KACM69C,EAAY,GAOhB,OANA79C,KAAKmxB,cAAc3V,SAAQ,SAAAgH,GACzB,IAAIu7B,EAAMn3C,EAAKg3C,aAAap7B,GACxBu7B,GACFF,EAAUz5C,KAAK25C,MAGZF,4CAjlBgBxwC,EAAAA,cA7FzBvM,EAAA,CADCsM,EAAAA,aAAa2D,EAAAA,YAAa,CAAE5D,QAAQ,oBACvB4D,EAAAA,iDAGdjQ,EAAA,CADCsM,EAAAA,aAAaib,GAAuB,CAAElb,QAAQ,oBACnBkb,8CAG5BvnB,EAAA,CADCuF,EAAAA,gEAIDvF,EAAA,CADCuF,EAAAA,qEAIDvF,EAAA,CADCuF,EAAAA,sEAIDvF,EAAA,CADCuF,EAAAA,yEAIDvF,EAAA,CADCuF,EAAAA,6EAIDvF,EAAA,CADCuF,EAAAA,uEAIDvF,EAAA,CADCuF,EAAAA,gEAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,qEAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,oEAIDvF,EAAA,CADCuF,EAAAA,kEAIDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,kEAIDvF,EAAA,CADCuF,EAAAA,qEAIDvF,EAAA,CADCuF,EAAAA,oEAIDvF,EAAA,CADC8G,EAAAA,yBACiBV,EAAAA,sDAGlBpG,EAAA,CADC8G,EAAAA,yBACcV,EAAAA,mDAGfpG,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAGbpG,EAAA,CADC8G,EAAAA,yBACcV,EAAAA,mDAGfpG,EAAA,CADC8G,EAAAA,yBACWV,EAAAA,gDAGZpG,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAGbpG,EAAA,CADC8G,EAAAA,yBACuBV,EAAAA,4DAiBxBpG,EAAA,CADCuF,EAAAA,wEA1FU2yC,EAAuBl4C,EAAA,CANnCwF,EAAAA,UAAU,CACTC,SAAU,oBACVC,SAAA,4jEACA8P,cAAeC,EAAAA,kBAAkBC,8BAkGRnJ,EAAAA,cA/Fd2rC,IAAgC3wC,iBC3B7C,SAAA21C,KAAmC,OAAtBA,EAAoBl9C,EAAA,CAXhC+V,EAAAA,SAAS,CACRC,aAAc,CAACkiC,IACfjiC,QAAS,CACPqoB,GACAzoB,EAAAA,aACAkX,GACAyC,IAEFtZ,QAAS,CAACgiC,IACVlxC,UAAW,MAEAk2C,SCXb,WAEEh+C,KAAA44C,SAA+B,IAAIqF,OAIrC,gBASA,4BAMA,SAAAC,mDAEA,OAFqDp+C,EAAAo+C,EAAAl3C,GAErDk3C,GAFqD/1C,kBAIrD,SAAAg2C,mDAEA,OAF4Dr+C,EAAAq+C,EAAAn3C,GAE5Dm3C,GAF4Dh2C,kBAI5D,SAAAi2C,mDAKA,OALyCt+C,EAAAs+C,EAAAp3C,GAKzCo3C,GALyCn2C,kBAkGvC,SAAAo2C,EAAoBrzC,GAApB,IAAApE,EACEI,EAAApG,KAAAZ,OAAOA,YADW4G,EAAAoE,IAAAA,EA9EpBpE,EAAA+pC,cAAuC,SAGvC/pC,EAAAsyC,eAA8C,MAM9CtyC,EAAAuyC,kBAA4B,KAG5BvyC,EAAAwyC,sBAAgC,EAGhCxyC,EAAAyyC,iBAA0B,GAG1BzyC,EAAA0yC,SAAmB,KAGnB1yC,EAAA2yC,cAAwB,QAGxB3yC,EAAA4yC,UAAoB,EAGpB5yC,EAAA6yC,aAAuB,EAGvB7yC,EAAA8yC,WAAqB,EAGrB9yC,EAAAwE,KAAoB,KAGpBxE,EAAAoiC,iBAAkE,IAAI9hC,EAAAA,aAGtEN,EAAA03C,wBAAgF,IAAIp3C,EAAAA,aAGpFN,EAAAkzC,cAAmC,IAAI5yC,EAAAA,aAGvCN,EAAA6Y,YAAiD,IAAIvY,EAAAA,aAGrDN,EAAAmzC,cAAmC,IAAI7yC,EAAAA,aAGvCN,EAAAozC,WAAgC,IAAI9yC,EAAAA,aAGpCN,EAAAqzC,YAAsD,IAAI/yC,EAAAA,aAG1DN,EAAAgoB,uBAAoE,IAAI1nB,EAAAA,aAExEN,EAAAszC,eAAyB,EACzBtzC,EAAAgP,SAAmB,EACnBhP,EAAAuzC,KAAc,GAEdvzC,EAAAuqB,cAAuB,GACvBvqB,EAAAwzC,gBAAyB,GACzBxzC,EAAAyzC,iBAA2B,EAC3BzzC,EAAA0zC,SAAkB,GAGlB1zC,EAAA2zC,WAAqB,EACrB3zC,EAAA4zC,YAAsB,EACtB5zC,EAAA6zC,WAAqB,YACrB7zC,EAAA8zC,iBAA2B,EAC3B9zC,EAAA23C,gBAA0B,EAC1B33C,EAAA43C,OAAiB,IA+jBnB,OAjpByC1+C,EAAAu+C,EAAAr3C,GA0FvCq3C,EAAAn+C,UAAAy6C,wBAAA,SAAwB/3C,GACtB5C,KAAK4uB,uBAAuBvnB,KAAKzE,IAGnCy7C,EAAAn+C,UAAAypB,QAAA,WACE3pB,KAAKm6C,KAAO,GACZn6C,KAAK6+B,mBAAmBrW,MAAM,OAGhC61B,EAAAn+C,UAAA06C,mBAAA,SAAmBl/B,EAAMrQ,GAAzB,IAAAzE,EAAA5G,UAAyB,IAAAqL,IAAAA,GAAA,IACU,IAA7BqQ,EAAK1b,KAAKu5C,gBAAmD,WAAvBv5C,KAAK2wC,eAC7Cj1B,EAAKkrB,QAAUlrB,EAAKkrB,OAChBlrB,EAAKm/B,YAAqC,WAAvB76C,KAAK2wC,eAC1B3wC,KAAK86C,mBAAmBp/B,EAAKm/B,aAEX,IAAhBn/B,EAAKkrB,OACoB,WAAvB5mC,KAAK2wC,eACP3wC,KAAKmxB,cAAc3V,SAAQ,SAAC5Y,GAC1BA,EAAEgkC,QAAS,KAEb5mC,KAAKmxB,cAAgB,GACrBnxB,KAAKmxB,cAAc/sB,KAAKsX,IAExB1b,KAAKmxB,cAAc/sB,KAAKsX,GAG1B1b,KAAKmxB,cAAgBnxB,KAAKmxB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc59B,EAAK9U,EAAK0yC,eAGvF59B,EAAKkrB,QAAUlrB,EAAKkrB,OAEhBlrB,EAAKm/B,YAAqC,aAAvB76C,KAAK2wC,eAC1B3wC,KAAK86C,mBAAmBp/B,EAAKm/B,YAEJ,aAAvB76C,KAAK2wC,eACP3wC,KAAK+6C,kBAAkBr/B,EAAMA,EAAKkrB,QAGjB,GAAflrB,EAAKkrB,OACoB,aAAvB5mC,KAAK2wC,cACP3wC,KAAKo6C,gBAAgBh2C,KAAKsX,IAE1B1b,KAAKo6C,gBAAgB5+B,SAAQ,SAAC5Y,GAC5BA,EAAEgkC,QAAS,KAEb5mC,KAAKo6C,gBAAkB,GACvBp6C,KAAKo6C,gBAAgBh2C,KAAKsX,IAG5B1b,KAAKo6C,gBAAkBp6C,KAAKo6C,gBAAgB1mC,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc59B,EAAK9U,EAAK0yC,cAGzFjuC,GACFrL,KAAKgpC,iBAAiB3hC,KAAK,CACzBiF,UAAWtM,KACXyC,MAAOzC,KAAKg7C,SAASt/B,GACrB3O,YAAa/M,KAAKgL,IAAI9B,iBAKpBm1C,EAAAn+C,UAAA86C,SAAR,SAAiBt/B,EAAMu/B,GAAvB,MAAAr0C,EAAA5G,UAAuB,IAAAi7C,IAAAA,GAAA,GACrB,IAAMC,EAAuB,IAAIuD,GAC7BxD,IACFC,EAAKn4B,cAAqC3Z,IAA1BsS,EAAK1b,KAAKy6C,YAA4B,GAA0B,QAAxBlzC,EAAGmU,EAAK1b,KAAKy6C,mBAAW,IAAAlzC,OAAA,EAAAA,EAAET,KAAI,SAACvC,GAAM,OAAAqC,EAAKo0C,SAASz2C,OAE7G22C,EAAKtC,SAAS3tC,UAA6B,IAAlByQ,EAAKzQ,UAAoByQ,EAAKzQ,SACvDiwC,EAAKtC,SAAS16B,MAAqB,IAAdxC,EAAKwC,MAAgBxC,EAAKwC,KAC/Cg9B,EAAKtC,SAAS33C,IAAMya,EAAK1b,KAAKs5C,UAE9B,IAAMn4C,EAAI,GAEV,IAAK,IAAIi6C,KAAK1/B,EACJ,EAED,UAAL0/B,GACK,YAALA,GACK,WAALA,GACK,aAALA,GACK,YAALA,GACK,QAALA,GACK,cAALA,GACK,UAALA,GACK,UAALA,GACK,iBAALA,GACAA,GAAKp7C,KAAKy6C,aAGVt5C,EAAEi6C,GAAK1/B,EAAK0/B,IAOhB,OAJAF,EAAKtC,SAASl9B,KAAOva,EACrB+5C,EAAKtC,SAAS/iC,UAA2B,IAAhB6F,EAAKkrB,QAAkBlrB,EAAKkrB,OACrDsU,EAAKtC,SAASyC,SAAW3/B,EAAK1b,KAAKu5C,eACnC2B,EAAKvL,YAA6BvmC,IAApBsS,EAAKm/B,WAA2B,KAAO76C,KAAKg7C,SAASt/B,EAAKm/B,YAAY,GAC7EK,GAGDmD,EAAAn+C,UAAA66C,kBAAR,SAA0Br/B,EAAMnb,GAAhC,IAAAqG,EAAA5G,KACMA,KAAKo5C,uBACP19B,EAAKkrB,OAASrmC,GACmB,IAA7Bmb,EAAK1b,KAAKu5C,gBAA2B79B,EAAK1b,KAAKy6C,aAAe/+B,EAAK1b,KAAKy6C,YAAY95C,OAAS,EAC/F+a,EAAK1b,KAAKy6C,YAAYj/B,SAAQ,SAACgH,IACG,IAA5BA,EAAI5b,EAAK2yC,gBACX/2B,EAAIokB,OAASrmC,GAEH,IAANA,GAAqC,WAAvBqG,EAAK+pC,gBACrB/pC,EAAKwzC,gBAAkBxzC,EAAKwzC,gBAAgB1mC,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc92B,EAAI5b,EAAK0yC,aACxF1yC,EAAKwzC,gBAAgBh2C,KAAKoe,KAElB,IAANjiB,GAAsC,WAAvBqG,EAAK+pC,gBACtB/pC,EAAKwzC,gBAAkBxzC,EAAKwzC,gBAAgB1mC,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc92B,EAAI5b,EAAK0yC,cAG1F1yC,EAAKm0C,kBAAkBv4B,EAAKjiB,KAE5BiiB,EAAIokB,OAASrmC,GACH,IAANA,GAAqC,WAAvBqG,EAAK+pC,gBACrB/pC,EAAKuqB,cAAgBvqB,EAAKuqB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc92B,EAAI5b,EAAK0yC,aACpF1yC,EAAKuqB,cAAc/sB,KAAKoe,KAEhB,IAANjiB,GAAsC,WAAvBqG,EAAK+pC,gBACtB/pC,EAAKuqB,cAAgBvqB,EAAKuqB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc92B,EAAI5b,EAAK0yC,kBAK1F59B,EAAKkrB,OAASrmC,IAKZ89C,EAAAn+C,UAAA46C,mBAAR,SAA2Bp/B,GACzB,GAAI1b,KAAKo5C,qBAAsB,CAC7B,IAAIkC,GAAY,EACZC,GAAc,EACdC,GAAY,EACZC,GAAkB,EAEtB,GAAI//B,EAAK1b,KAAKy6C,YACZ,IAAK,IAAIr9B,EAAQ,EAAGA,EAAQ1B,EAAK1b,KAAKy6C,YAAY95C,OAAQyc,KACZ,IAAxC1B,EAAK1b,KAAKy6C,YAAYr9B,GAAOwpB,SAC/B2U,GAAc,EACdC,GAAY,IAE8B,IAAxC9/B,EAAK1b,KAAKy6C,YAAYr9B,GAAOwpB,aAA4Dx9B,IAAxCsS,EAAK1b,KAAKy6C,YAAYr9B,GAAOwpB,SAChF0U,GAAY,GAE8B,OAAxC5/B,EAAK1b,KAAKy6C,YAAYr9B,GAAOwpB,SAC/B6U,GAAkB,EAClBF,GAAc,EACdC,GAAY,EACZF,GAAY,IAKdE,GAAcC,IAAoBH,KACpC5/B,EAAKkrB,OAAS,OAEE,IAAd0U,IACF5/B,EAAKkrB,QAAS,IAEI,IAAhB2U,IACF7/B,EAAKkrB,QAAS,GAEZlrB,EAAKm/B,YAAcn/B,EAAKm/B,WAAW76C,KAAKy6C,aAAe/+B,EAAKm/B,WAAW76C,KAAKy6C,YAAY95C,OAAS,GACnGX,KAAK86C,mBAAmBp/B,EAAKm/B,cAKnCwD,EAAAn+C,UAAA8S,SAAA,WAAA,IAAApM,EAAA5G,KACEA,KAAKyf,YAAY/M,WAAU,SAACkC,GACrBA,EAAKT,QACRvN,EAAK80C,WAAW9mC,EAAK8G,KAAM9G,EAAK+mC,UAKtC0C,EAAAn+C,UAAA07C,YAAA,SAAYh5C,EAAe8Y,GACC,UAAtB1b,KAAK2wC,eACP3wC,KAAK67C,kBAAkBj5C,EAAG8Y,GAAM,IAIpC2iC,EAAAn+C,UAAA27C,kBAAA,SAAkBj5C,EAAe8Y,EAAMigC,QAAA,IAAAA,IAAAA,GAAA,GAErC37C,KAAKyf,YAAYpY,KAAK,CACpBiF,UAAWtM,KACXgN,UAAWpK,EACX8Y,KAAIA,EACJigC,KAAIA,KAIR0C,EAAAn+C,UAAAw7C,WAAA,SAAWhgC,EAAMigC,GAEf,QAFe,IAAAA,IAAAA,GAAA,GAEY,WAAvB37C,KAAK2wC,eAA+BgL,EAKjC,CASL,GARAjgC,EAAKqC,QAAUrC,EAAKqC,OACO,WAAvB/d,KAAK2wC,gBACoB,SAAvB3wC,KAAKk5C,gBAA8C,GAAjBx9B,EAAK2/B,UAEzCr7C,KAAK46C,mBAAmBl/B,KAIK,IAA7BA,EAAK1b,KAAKu5C,iBAA2C,IAAhB79B,EAAKogC,QAAmB97C,KAAKy5C,YAAa,CACjFz5C,KAAK+7C,QAAUrgC,EACf,IAAMpT,EAAM2T,KAAKC,MAAsB,IAAhBD,KAAK+/B,UAC5BtgC,EAAKoN,UAAYxgB,EACjBtI,KAAKs6C,SAASl2C,KAAKsX,GACnB1b,KAAK6+B,mBAAmBrW,MAAM9M,GAC9B1b,KAAKuoC,YAAYvoC,KAAK+7C,SAEpBrgC,EAAKqC,SAAuC,IAA7BrC,EAAK1b,KAAKu5C,gBAC3B79B,EAAKwC,MAAO,EACZle,KAAK85C,cAAczyC,KAAKrH,KAAKg7C,SAASt/B,KAC5BA,EAAKqC,SAAuC,IAA7BrC,EAAK1b,KAAKu5C,iBACnC79B,EAAKwC,MAAO,EACZle,KAAK+5C,cAAc1yC,KAAKrH,KAAKg7C,SAASt/B,SA1Bb,SAAvB1b,KAAKk5C,gBAA8C,GAAjBx9B,EAAK2/B,UAEzCr7C,KAAK46C,mBAAmBl/B,IA6B9B2iC,EAAAn+C,UAAAoH,mBAAA,WAAA,IAAAV,EAAA5G,KACEA,KAAK6+B,mBAAmBrW,MAAM,MAC9BxoB,KAAK6+B,mBAAmBvW,eAAe5V,WAAU,SAACkW,GAChD,GAAyB,IAArBhiB,EAAKuzC,KAAKx5C,OACZiG,EAAKq1C,YAAY,MACjBr1C,EAAKuzC,KAAOvxB,EAAMhU,KAAK9R,OAEvB8D,EAAKuzC,KAAK3+B,SAAQ,SAAC3H,GACjBA,EAAGqoC,kBAAmB,EACtBroC,EAAG+yB,QAAS,EAEe,SAAvBhgC,EAAKsyC,gBAAuD,GAA1BrlC,EAAGjN,EAAK2yC,iBAC5C1lC,EAAGqoC,kBAAmB,GAGG,WAAvBt1C,EAAKsyC,gBAAyD,GAA1BrlC,EAAGjN,EAAK2yC,iBAC9C1lC,EAAGqoC,kBAAmB,GAGpBt1C,EAAKyyC,iBAAiB14C,OAAS,EACjCiG,EAAKyyC,iBAAiB79B,SAAQ,SAAC/a,GACzBA,EAAEqvB,SAASjc,EAAGjN,EAAK0yC,aACS,GAA1BzlC,EAAGjN,EAAK2yC,eAEV3yC,EAAKsX,KAAKrK,IAGVjN,EAAKu1C,WAAWtoC,GAChBjN,EAAK23C,gBAAiB,OAIO,MAA1B33C,EAAKuyC,oBACgB,GAA1BtlC,EAAGjN,EAAK2yC,gBAAwD,GAA9B1lC,EAAGjN,EAAKuyC,mBAE5CvyC,EAAKsX,KAAKrK,GAE6B,GAA9BA,EAAGjN,EAAKuyC,qBACjBvyC,EAAKu1C,WAAWtoC,GAChBjN,EAAK23C,gBAAiB,YAO5B,GAFA33C,EAAKm1C,QAAUn1C,EAAK0zC,SAAS5mC,QAAO,SAACvS,GAAM,OAAAA,EAAE2nB,YAAcF,EAAMhU,KAAKkU,aAAW,GACjFliB,EAAK0zC,SAAW1zC,EAAK0zC,SAAS5mC,QAAO,SAACvS,GAAM,OAAAA,EAAE2nB,YAAcF,EAAMhU,KAAKkU,kBAClD1f,IAAjBxC,EAAKm1C,QAAuB,CAC9Bn1C,EAAKq1C,YAAYr1C,EAAKm1C,SACtB,IAAMK,EAASxzB,EAAMhU,KAAK9R,OAE1B,GAAyB,IAArB8D,EAAKuzC,KAAKx5C,OAAc,CACtBiG,EAAKm1C,QAAQn1C,EAAK6zC,aAAe7zC,EAAKm1C,QAAQn1C,EAAK6zC,YAAY95C,OAAS,EAC1Ey7C,EAAO5gC,SAAQ,SAAC3H,GACdA,EAAGqoC,kBAAmB,EACtBt1C,EAAKm1C,QAAQn1C,EAAK6zC,YAAY7zC,EAAKm1C,QAAQn1C,EAAK6zC,YAAY95C,QAAUkT,KAGxEjN,EAAKm1C,QAAQn1C,EAAK6zC,YAAc2B,EAGlC,mBAAS57C,GACoB,SAAvBoG,EAAKsyC,gBAA8D,GAAjCkD,EAAO57C,GAAGoG,EAAK2yC,iBACnD6C,EAAO57C,GAAG07C,kBAAmB,GAGJ,WAAvBt1C,EAAKsyC,gBAAgE,GAAjCkD,EAAO57C,GAAGoG,EAAK2yC,iBACrD6C,EAAO57C,GAAG07C,kBAAmB,GAEJ,WAAvBt1C,EAAK+pC,eAA8B/pC,EAAKwyC,sBAC1CgD,EAAO57C,GAAGomC,OAA+C,OAAtChgC,EAAKm1C,QAAQnV,QAAyChgC,EAAKm1C,QAAQnV,QAE1D,IAAxBhgC,EAAKm1C,QAAQnV,QAAyC,YAAtBhgC,EAAK+pC,gBAAiE,IAAlCyL,EAAO57C,GAAGoG,EAAK2yC,iBACrF3yC,EAAKuqB,cAAgBvqB,EAAKuqB,cAAczd,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAc8C,EAAO57C,GAAGoG,EAAK0yC,aAC1F1yC,EAAKuqB,cAAc/sB,KAAKg4C,EAAO57C,MAGjC47C,EAAO57C,GAAGomC,QAAS,EAErBwV,EAAO57C,GAAGq6C,WAAaj0C,EAAKm1C,QAExBn1C,EAAKyyC,iBAAiB14C,OAAS,EACjCiG,EAAKyyC,iBAAiB79B,SAAQ,SAAC/a,GACzBA,EAAEqvB,SAASssB,EAAO57C,GAAGoG,EAAK0yC,aACS,GAAjC8C,EAAO57C,GAAGoG,EAAK2yC,eAEjB3yC,EAAKsX,KAAKk+B,EAAO57C,KAGjBoG,EAAKu1C,WAAWC,EAAO57C,IACvBoG,EAAK23C,gBAAiB,OAIO,MAA1B33C,EAAKuyC,oBACuB,GAAjCiD,EAAO57C,GAAGoG,EAAK2yC,gBAA+D,GAArC6C,EAAO57C,GAAGoG,EAAKuyC,mBAE1DvyC,EAAKsX,KAAKk+B,EAAO57C,IAE6B,GAArC47C,EAAO57C,GAAGoG,EAAKuyC,qBACxBvyC,EAAKu1C,WAAWC,EAAO57C,IACvBoG,EAAK23C,gBAAiB,KAxCnB/9C,EAAI,EAAGA,EAAI47C,EAAOz7C,OAAQH,MAA1BA,GA6CToG,EAAKm1C,QAAQD,QAAS,GAKD,GAAvBl1C,EAAK23C,gBAA2B33C,EAAK43C,QACvC53C,EAAK43C,OAAQ,EACb53C,EAAK03C,wBAAwBj3C,KAAK,CAChCiF,UAAW1F,EAEXmG,YAAanG,EAAKoE,IAAI9B,qBAM9Bm1C,EAAAn+C,UAAA2L,gBAAA,WAC6B,WAAvB7L,KAAK2wC,gBACP3wC,KAAKk6C,eAAgB,GAEvBl6C,KAAK06C,iBAAkB,GAOzB2D,EAAAn+C,UAAAm8C,YAAA,SAAYz5C,EAAUoB,GACfhE,KAAKw6C,aACRx6C,KAAKs8C,SAAWt4C,EAChBhE,KAAKg6C,WAAW3yC,KAAKrD,IAEvBpB,EAAE6oC,4BAGJ4S,EAAAn+C,UAAAq8C,UAAA,SAAU35C,EAAGoB,GACNhE,KAAKw6C,aACRx6C,KAAKw8C,SAAWx4C,GAElBpB,EAAE6oC,4BAGJ4S,EAAAn+C,UAAAu8C,KAAA,SAAK75C,GAAL,IAAAgE,EAAA5G,KAEE,IAAKA,KAAKw6C,aACRx6C,KAAKu6C,WAAY,EACjBv6C,KAAK08C,WAAW18C,KAAKs8C,SAAUt8C,KAAKw8C,UAChCx8C,KAAKu6C,WAAav6C,KAAKs8C,SAASt8C,KAAKs5C,YAAct5C,KAAKw8C,SAASx8C,KAAKs5C,WAAat5C,KAAKs8C,SAASzB,aAAe76C,KAAKw8C,UAAU,CACjI,IAAMG,EAAuC,IAAI+B,GACjD/B,EAAW/2B,OAAS5lB,KAAKg7C,SAASh7C,KAAKs8C,UACvCK,EAAW37C,OAAShB,KAAKg7C,SAASh7C,KAAKw8C,UACvCx8C,KAAKw6C,YAAa,EAClBx6C,KAAKuoC,YAAYvoC,KAAKs8C,UACtBt8C,KAAKuoC,YAAYvoC,KAAKw8C,UACtBG,EAAWr6C,QAAU,SAACG,GACpBmE,EAAKq1C,YAAYr1C,EAAK01C,UACtB11C,EAAKq1C,YAAYr1C,EAAK41C,UAClB/5C,EACFmE,EAAKi2C,aAAaj2C,EAAK01C,SAAU11C,EAAK41C,UAEtC51C,EAAK4zC,YAAa,GAGtBx6C,KAAKi6C,YAAY5yC,KAAKs1C,GAI1B/5C,EAAE6oC,4BAGJ4S,EAAAn+C,UAAAw8C,WAAA,SAAW/M,EAAQmN,GACjB,GAAInN,EAAO3vC,KAAKy6C,aAAe9K,EAAO3vC,KAAKy6C,YAAY95C,OAAS,EAC9D,IAAK,IAAIyc,EAAQ,EAAGA,EAAQuyB,EAAO3vC,KAAKy6C,YAAY95C,OAAQyc,IACtDuyB,EAAO3vC,KAAKy6C,YAAYr9B,GAAOpd,KAAKs5C,WAAawD,EAAM98C,KAAKs5C,YAC9Dt5C,KAAKu6C,WAAY,GAEf5K,EAAO3vC,KAAKy6C,YAAYr9B,GAAOpd,KAAKy6C,aAAe9K,EAAO3vC,KAAKy6C,YAAYr9B,GAAOpd,KAAKy6C,YAAY95C,OAAS,GAC9GX,KAAK08C,WAAW/M,EAAO3vC,KAAKy6C,YAAYr9B,GAAQ0/B,QAG3CnN,EAAO3vC,KAAKs5C,WAAawD,EAAM98C,KAAKs5C,YAC7Ct5C,KAAKu6C,WAAY,IAIrB8D,EAAAn+C,UAAA28C,aAAA,SAAaE,EAAWC,GAAxB,IAAAp2C,EAAA5G,KAC6B,SAAvBA,KAAKk5C,iBACP8D,EAAWd,kBAAmB,GAG5Ba,EAAUlC,WACZkC,EAAUlC,WAAW76C,KAAKy6C,YAAcsC,EAAUlC,WAAW76C,KAAKy6C,YAAY/mC,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAcyD,EAAUn2C,EAAK0yC,aAEhIt5C,KAAKm6C,KAAOn6C,KAAKm6C,KAAKzmC,QAAO,SAACvS,GAAM,OAAAA,EAAEyF,EAAK0yC,YAAcyD,EAAUn2C,EAAK0yC,aAE1EyD,EAAUlC,WAAamC,EACnBA,EAAWh9C,KAAKy6C,aAAeuC,EAAWh9C,KAAKy6C,YAAY95C,OAAS,EACtEq8C,EAAWh9C,KAAKy6C,YAAYuC,EAAWh9C,KAAKy6C,YAAY95C,QAAUo8C,GAElEC,EAAWh9C,KAAKy6C,YAAc,GAC9BuC,EAAWh9C,KAAKy6C,YAAY,GAAKsC,GACM,IAAnCC,EAAWh9C,KAAKu5C,eAClBv5C,KAAK07C,WAAWsB,IAEhBA,EAAWj/B,QAAUi/B,EAAWj/B,OAChCi/B,EAAWlB,QAAS,GAEtBkB,EAAWh9C,KAAKu5C,gBAAiB,GAE/BwD,EAAUlC,YAAqC,WAAvB76C,KAAK2wC,eAC/B3wC,KAAK86C,mBAAmBiC,EAAUlC,YAEpC76C,KAAKw6C,YAAa,GAGZ6D,EAAAn+C,UAAA+8C,WAAR,SAAmBxsB,EAAOhuB,GACxB,IAAK,IAAI2a,EAAQ,EAAGA,EAAQpd,KAAKm6C,KAAKx5C,OAAQyc,IAC5Cpd,KAAKk9C,aAAal9C,KAAKm6C,KAAK/8B,GAAQqT,EAAOhuB,GAE7CzC,KAAKq6C,iBAAkB,GAGjBgE,EAAAn+C,UAAAg9C,aAAR,SAAqBxhC,EAAM+U,EAAOhuB,GAAlC,IAAAmE,EAAA5G,KACgB,WAAVywB,IAAuC,IAAhB/U,EAAKogC,aAAoC1yC,IAAhBsS,EAAKogC,QAMvDpgC,EAAK+U,GAAShuB,EACA,WAAVguB,IAAmD,IAA7B/U,EAAK1b,KAAKu5C,iBAAsC,IAAV92C,GAC9DzC,KAAKmxB,cAAc/sB,KAAKsX,KAPG,IAAzB1b,KAAKq6C,kBACPr6C,KAAK07C,WAAWhgC,GAChBA,EAAK+U,GAAShuB,GAQJ,WAAVguB,IACF/U,EAAKkS,eAAgB,IAEU,IAA7BlS,EAAK1b,KAAKu5C,gBAA2B79B,EAAK1b,KAAKy6C,aAAe/+B,EAAK1b,KAAKy6C,YAAY95C,OAAS,GAC/F+a,EAAK1b,KAAKy6C,YAAYj/B,SAAQ,SAACjS,GAC7B3C,EAAKs2C,aAAa3zC,EAASknB,EAAOhuB,OAKhC47C,EAAAn+C,UAAAqoC,YAAR,SAAoB7sB,GAClBA,EAAK9F,SAAU,GAGTyoC,EAAAn+C,UAAA+7C,YAAR,SAAoBvgC,GACN,MAARA,IACFA,EAAK9F,SAAU,IAIZyoC,EAAAn+C,UAAAi9C,QAAP,SAAeC,QAAA,IAAAA,IAAAA,GAAA,GAKbp9C,KAAKi9C,WAAW,UAAU,IAIrBoB,EAAAn+C,UAAAi8C,WAAP,SAAkBzgC,GACM,GAAlBA,EAAa,QACf1b,KAAK46C,mBAAmBl/B,GAAM,IAI3B2iC,EAAAn+C,UAAAge,KAAP,SAAYxC,IACa,IAAnBA,EAAa,QACf1b,KAAK07C,WAAWhgC,GAAM,IAInB2iC,EAAAn+C,UAAAm9C,cAAP,SAAqB3hC,GACLhR,SAASd,cAAc,eAAe8R,EAAK1b,KAAKs5C,UAAS,MAC/DlP,kBAGHiU,EAAAn+C,UAAAo9C,SAAP,WACEt9C,KAAKi9C,WAAW,UAAU,IAGrBoB,EAAAn+C,UAAAw2B,UAAP,WAC6B,WAAvB12B,KAAK2wC,eACP3wC,KAAKi9C,WAAW,UAAU,IAIvBoB,EAAAn+C,UAAAq9C,YAAP,WAC6B,WAAvBv9C,KAAK2wC,eACP3wC,KAAKi9C,WAAW,UAAU,GAE5Bj9C,KAAKmxB,cAAgB,IAGhBktB,EAAAn+C,UAAAs9C,iBAAP,WAAA,IAAA52C,EAAA5G,KACQy9C,EAAkB,GAIxB,OAHAz9C,KAAKmxB,cAAc3V,SAAQ,SAAC5Y,GAC1B66C,EAAgBr5C,KAAKwC,EAAKo0C,SAASp4C,OAE9B66C,GAGFY,EAAAn+C,UAAAw9C,mBAAP,WAAA,IAAA92C,EAAA5G,KACQ29C,EAAoB,GAI1B,OAHA39C,KAAKo6C,gBAAgB5+B,SAAQ,SAAC5Y,GAC5B+6C,EAAkBv5C,KAAKwC,EAAKo0C,SAASp4C,OAEhC+6C,GAGTU,EAAAn+C,UAAA09C,aAAA,SAAaliC,GACX,IAAImiC,EAAY,GAKhB,OAJAA,EAAUz5C,KAAKsX,EAAK1b,KAAKs5C,WACrB59B,EAAKm/B,YACPgD,EAAUz5C,KAAIvD,MAAdg9C,EAASn5C,EAAS1E,KAAK49C,aAAaliC,EAAKm/B,cAEpCgD,GAGFQ,EAAAn+C,UAAA49C,qBAAP,WAAA,IAAAl3C,EAAA5G,KACM69C,EAAY,GAOhB,OANA79C,KAAKmxB,cAAc3V,SAAQ,SAACgH,GAC1B,IAAIu7B,EAAMn3C,EAAKg3C,aAAap7B,GACxBu7B,GACFF,EAAUz5C,KAAK25C,MAGZF,4CAzjBgBxwC,EAAAA,cApFzBvM,EAAA,CADCsM,EAAAA,aAAa2D,EAAAA,YAAa,CAAE5D,QAAQ,oBACvB4D,EAAAA,iDAGdjQ,EAAA,CADCsM,EAAAA,aAAaib,GAAuB,CAAElb,QAAQ,oBACnBkb,8CAG5BvnB,EAAA,CADCuF,EAAAA,qEAIDvF,EAAA,CADCuF,EAAAA,sEAODvF,EAAA,CADCuF,EAAAA,yEAIDvF,EAAA,CADCuF,EAAAA,6EAIDvF,EAAA,CADCuF,EAAAA,uEAIDvF,EAAA,CADCuF,EAAAA,gEAIDvF,EAAA,CADCuF,EAAAA,qEAIDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,oEAIDvF,EAAA,CADCuF,EAAAA,kEAIDvF,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADC8G,EAAAA,yBACiBV,EAAAA,sDAGlBpG,EAAA,CADC8G,EAAAA,yBACwBV,EAAAA,6DAGzBpG,EAAA,CADC8G,EAAAA,yBACcV,EAAAA,mDAGfpG,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAGbpG,EAAA,CADC8G,EAAAA,yBACcV,EAAAA,mDAGfpG,EAAA,CADC8G,EAAAA,yBACWV,EAAAA,gDAGZpG,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAGbpG,EAAA,CADC8G,EAAAA,yBACuBV,EAAAA,4DAmBxBpG,EAAA,CADCuF,EAAAA,wEAnFUg4C,EAAmBv9C,EAAA,CAL/BwF,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAA,48EACA8P,cAAeC,EAAAA,kBAAkBC,8BAwFRnJ,EAAAA,cAtFdgxC,IAA4Bh2C,iBCjCzC,SAAAs2C,KAAgC,OAAnBA,EAAgB79C,EAAA,CAP5B+V,EAAAA,SAAS,CACNC,aAAc,CAACunC,IACftnC,QAAS,CAACqoB,GAAoBzoB,EAAAA,aAAckX,GAAkByC,IAC9DtZ,QAAS,CAACqnC,IACVv2C,UAAW,MAGF62C,qBC0CX,SAAAC,EACU/qC,EACAogB,EACA4qB,EACE9zC,GAJZ,IAAAnE,EAMEI,EAAApG,KAAAZ,OAAOA,YALC4G,EAAAiN,GAAAA,EACAjN,EAAAqtB,iBAAAA,EACArtB,EAAAi4C,QAAAA,EACEj4C,EAAAmE,IAAAA,EAzBZnE,EAAAwE,KAAsB,KAKtBxE,EAAAvB,KAAoC,SAK3BuB,EAAAqE,UAAoB,EAE7BrE,EAAAk4C,OAA8C,IAAI53C,EAAAA,aAGlDN,EAAAm4C,WAAsD,IAAI73C,EAAAA,aAE1DN,EAAAo4C,MAAgB,GAGhBp4C,EAAAq4C,SAAmB,KAoIrB,OArK2Cn/C,EAAA8+C,EAAA53C,GA+BzC43C,EAAA1+C,UAAAwM,MAAA,aAaAkyC,EAAA1+C,UAAAg/C,cAAA,SAAct8C,GACZA,EAAEoT,mBAGJ4oC,EAAA1+C,UAAAi/C,aAAA,SAAav8C,GACX,IAAMo8C,EAAQp8C,EAAE5B,OAAOg+C,MACvBh/C,KAAKo/C,QAAQJ,EAAM,IAClBh/C,KAAKq/C,UAAUn2C,cAAmCzG,MAAQ,MAG7Dm8C,EAAA1+C,UAAAge,KAAA,WACEle,KAAKq/C,UAAUn2C,cAAcqE,SAE/BqxC,EAAA1+C,UAAAiK,OAAA,WACEnK,KAAKg/C,MAAQ,IAEfJ,EAAA1+C,UAAA2L,gBAAA,WACsB,MAAhB7L,KAAKs/C,UAEPt/C,KAAKs/C,QAAUt/C,KAAK6T,GAAG3K,eAGD,MAApBlJ,KAAKu/C,cAEPv/C,KAAKu/C,YAAcv/C,KAAK6T,GAAG3K,eAGX,WAAdlJ,KAAKqF,MAAmC,QAAdrF,KAAKqF,OACjCrF,KAAKw/C,WAAax/C,KAAK6+C,QAAQl0C,cAAc,OAC7C3K,KAAKw/C,WAAWt1C,UAAUI,IAAI,WAC9BtK,KAAKw/C,WAAWh6B,UAAY,wJAM5BxlB,KAAKw/C,WAAWlhC,iBAAiB,OAAQte,KAAKy/C,uBAC9Cz/C,KAAKw/C,WAAWlhC,iBAAiB,WAAYte,KAAKy/C,uBAClDz/C,KAAKw/C,WAAWlhC,iBAAiB,YAAate,KAAKy/C,uBACnDz/C,KAAK6+C,QAAQh0C,YAAY7K,KAAKs/C,QAASt/C,KAAKw/C,aAG9Cx/C,KAAKs/C,QAAQp1C,UAAUI,IAAI,uBAC3BtK,KAAKs/C,QAAQhhC,iBAAiB,WAAYte,KAAK0/C,eAAe7sC,KAAK7S,OACnEA,KAAKs/C,QAAQhhC,iBAAiB,YAAate,KAAK2/C,gBAAgB9sC,KAAK7S,OACrEA,KAAKs/C,QAAQhhC,iBAAiB,OAAQte,KAAK4/C,WAAW/sC,KAAK7S,QAGrD4+C,EAAA1+C,UAAAu/C,sBAAR,SAA8B78C,GAG5B,OAFAA,EAAEsT,iBACFtT,EAAEoT,mBACK,GAGD4oC,EAAA1+C,UAAAw/C,eAAR,SAAuB98C,GAIrB,OAHAA,EAAEsT,iBACFtT,EAAEoT,kBACFhW,KAAKw/C,WAAWt1C,UAAUI,IAAI,SACvB,GAGDs0C,EAAA1+C,UAAAy/C,gBAAR,SAAwB/8C,GAItB,OAHAA,EAAEsT,iBACFtT,EAAEoT,kBACFhW,KAAKw/C,WAAWt1C,UAAUC,OAAO,SAC1B,GAGTy0C,EAAA1+C,UAAA0/C,WAAA,SAAWh9C,GACT5C,KAAK2/C,gBAAgB/8C,GACrB,IAAK,IAAIpC,EAAI,EAAGA,EAAIoC,EAAEi9C,aAAab,MAAMr+C,OAAQH,IAAK,CACpD,IAAMs/C,EAAOl9C,EAAEi9C,aAAab,MAAMx+C,GAClCR,KAAKo/C,QAAQU,KAITlB,EAAA1+C,UAAAk/C,QAAR,SAAgBU,GAAhB,IAAAl5C,EAAA5G,KACQ+/C,EAAc//C,KAAK6+C,QAAQl0C,cAAc,OAC/Co1C,EAAY71C,UAAUI,IAAI,4BAC1B,IAAM01C,EAAgBhgD,KAAK6+C,QAAQl0C,cAAc,SACjDq1C,EAAcp1C,UAAYk1C,EAAKh7C,KAC/B9E,KAAKi/C,SAAWa,EAAKh7C,KACrB9E,KAAK6+C,QAAQh0C,YAAY7K,KAAKu/C,YAAaQ,GAC3C,IAAM1sC,EAAMrT,KAAKi0B,iBAAiBM,gBAAgBiT,GAAwB,CAAEC,SAAU,GAAKsY,GAAajvC,SACxG9Q,KAAK6+C,QAAQh0C,YAAYk1C,EAAaC,GAEtC,IAAMC,EAAS,IAAIC,WACnBD,EAAO3hC,iBAAiB,QAAQ,SAAC1b,GAC/BgE,EAAKk4C,OAAOz3C,KAAK,CACfy4C,KAAIA,EACJlrC,KAAOhS,EAAU5B,OAAO8B,SAI1B,IAAIq9C,EAAK,EACLC,EAAW,EACTC,EAAOvsB,aAAY,YACvBssB,GAAY,QACGx9C,EAAEihB,QACfu8B,EAAWx9C,EAAEihB,OAEfs8B,EAAKlkC,KAAKO,KAAM4jC,EAAWx9C,EAAEihB,MAAS,KACtCxQ,EAAIo0B,SAAW0Y,EACfv5C,EAAKm4C,WAAW13C,KAAK,CACnBy4C,KAAIA,EACJj8B,MAAOjhB,EAAEihB,MACTu8B,SAAQA,EACR39C,MAAO09C,IAGL9sC,EAAIo0B,UAAY,MAClB1T,cAAcssB,GACdhuC,YAAW,WACTzL,EAAKi4C,QAAQt0C,YAAY3D,EAAK24C,YAAaQ,KAC1C,QAEJ,QAELE,EAAOK,cAAcR,GACrB9/C,KAAKg/C,MAAM56C,KAAK07C,6CAhIJzyC,EAAAA,kBACcsG,EAAAA,uBACTsZ,EAAAA,iBACFhZ,EAAAA,qBAlCjBnT,EAAA,CADCuF,EAAAA,wBACQk6C,4CAGTz/C,EAAA,CADCuF,EAAAA,wBACYk6C,gDAGbz/C,EAAA,CADCuF,EAAAA,6DAIDvF,EAAA,CADCuF,EAAAA,4DAGuBvF,EAAA,CAAvBoM,EAAAA,UAAU,6BAAwBG,EAAAA,6CAGnCvM,EAAA,CADCuF,EAAAA,4DAIDvF,EAAA,CADCuF,EAAAA,wBACgB0K,EAAAA,6CAERjQ,EAAA,CAARuF,EAAAA,iEAEDvF,EAAA,CADC8G,EAAAA,yBACOV,EAAAA,4CAGRpG,EAAA,CADC8G,EAAAA,yBACWV,EAAAA,gDA5BD03C,EAAqB99C,EAAA,CANjCwF,EAAAA,UAAU,CACTC,SAAU,iBACVC,SAAA,+vBACA8P,cAAeC,EAAAA,kBAAkBC,KACjCrE,KAAM,CAAEwH,MAAO,2EAqCDtM,EAAAA,WACcsG,EAAAA,gBACTsZ,EAAAA,UACFhZ,EAAAA,qBAtCN2qC,IAA8Bv2C,iBCR3C,SAAAm4C,KAAiC,OAApBA,EAAkB1/C,EAAA,CAN9B+V,EAAAA,SAAS,CACRC,aAAc,CAAC8nC,IACf7nC,QAAS,CAACJ,EAAAA,aAAcC,GAAgBimB,GAAiB6K,GAAqBtE,GAAezG,IAC7F3lB,QAAS,CAAC4nC,IACV92C,UAAW,MAEA04C,qBCCX,SAAAC,IAAA,IAAA75C,EACEI,EAAApG,KAAAZ,OAAOA,YAHT4G,EAAA85C,UAAoB,IA4BtB,OAlC0C5gD,EAAA2gD,EAAAz5C,GAYxCy5C,EAAAvgD,UAAAoH,mBAAA,WAAA,IAAAV,EAAA5G,KACEA,KAAK2gD,OAAOnlC,SAAQ,SAAA5b,GACG,GAAjBgH,EAAK85C,WACP9gD,EAAEg4B,WAAY,GAChBh4B,EAAE63B,gBAAgB/kB,WAAU,SAAC1O,GAC3B4C,EAAKg6C,uBAAuBhhD,EAAGoE,SAGd,GAAjBhE,KAAK0gD,WACP1gD,KAAK2gD,OAAO3L,MAAMpd,WAAY,IAG1B6oB,EAAAvgD,UAAA0gD,uBAAR,SAA+BtrB,EAA4B7yB,GAC5C,GAATA,GAAmC,GAAjBzC,KAAK0gD,UACzB1gD,KAAK2gD,OAAOnlC,SAAQ,SAAA5b,GACdA,GAAK01B,IACP11B,EAAEg4B,WAAY,OAzBtB92B,EAAA,CADC4G,EAAAA,gBAAgB6vB,oBACT5vB,EAAAA,yCAGR7G,EAAA,CADCuF,EAAAA,iEALUo6C,EAAoB3/C,EAAA,CAJhCwF,EAAAA,UAAU,CACTC,SAAU,eACVC,SAAU,yDAECi6C,IAA6Bp4C,iBCE1C,SAAAw4C,KAAiC,OAApBA,EAAiB//C,EAAA,CAN7B+V,EAAAA,SAAS,CACNC,aAAc,CAAC2pC,IACf1pC,QAAS,CAACJ,EAAAA,aAAcwhB,IACxBnhB,QAAS,CAACypC,IACV34C,UAAW,MAEF+4C,oBCoET,SAAAC,EAAsB/1C,GAAA/K,KAAA+K,IAAAA,EA7BtB/K,KAAAkL,UAAoB,EACpBlL,KAAA+gD,WAAqB,EAGrB/gD,KAAAghD,+BAAkE,IAAI7rC,EAAAA,QAStEnV,KAAA0L,YAA+B,IAAIxE,EAAAA,aA8BvC,OApCI45C,EAAA5gD,UAAA+gD,0BAAA,SAA0B30C,GACtBtM,KAAKghD,+BAA+Br+C,KAAK2J,IAS7C9M,OAAAgC,eAAWs/C,EAAA5gD,UAAA,QAAK,KAAhB,WACI,OAAOF,KAAKoM,YAGhB,SAAiBpI,GACTA,IAAMhE,KAAKoM,SACXpM,KAAKoM,OAASpI,EACdhE,KAAK0L,YAAYrE,KAAKrD,GACtBhE,KAAK+K,IAAI0B,kDASjBq0C,EAAA5gD,UAAAghD,kBAAA,SAAkBl9C,GACdhE,KAAKyC,MAAQuB,GAGjB88C,EAAA5gD,UAAAihD,QAAA,aAzBArgD,EAAA,CADC8G,EAAAA,yBACYV,EAAAA,iDAIbpG,EAAA,CADCuF,EAAAA,2FA2BLy6C,QASI,SACIM,EACAC,EACAltB,GACAn0B,KAAKohD,IAAMA,EACXphD,KAAKqhD,SAAWA,EAChBrhD,KAAKm0B,QAAUA,iBAMvB,SAAAmtB,KAyCA,OAtCWA,EAAAC,SAAP,SAAgBH,EAAaC,EAAkBltB,GAC3C,IAAMzY,EAAO4lC,EAAqBE,SAASr8C,MAAK,SAAAhE,GAAK,OAAAA,EAAEigD,MAAQA,GAAOjgD,EAAEkgD,WAAaA,KACjF3lC,EACAA,EAAKyY,QAAUA,EAGfmtB,EAAqBE,SAASp9C,KAAK,IAAIq9C,GAAoBL,EAAKC,EAAUltB,KAM3EmtB,EAAAI,IAAP,SAAWN,EAAaC,GACpB,OAAOC,EAAqBE,SAAS3uB,MAAK,SAAA1xB,GAAK,OAAAA,EAAEigD,MAAQA,GAAOjgD,EAAEkgD,WAAaA,MAG5EC,EAAAr8C,IAAP,SAAWm8C,EAAaC,GACpB,OAAOC,EAAqBE,SAASr8C,MAAK,SAAAhE,GAAK,OAAAA,EAAEigD,MAAQA,GAAOjgD,EAAEkgD,WAAaA,MAG5EC,EAAAK,QAAP,SAAeN,GACX,QAAIA,GACOC,EAAqBE,SAAS3uB,MAAK,SAAA1xB,GAAK,OAAAA,EAAEkgD,WAAaA,MAK/DC,EAAAM,cAAP,SAAqB5gD,GAIjB,IAHA,IAAMm5C,EAA8B,GAC9Bv6C,EAAWD,QACbkiD,EAAariD,OAAOsiD,eAAe9gD,GACA,WAAhC6gD,EAAW5hD,YAAY6E,MAC1BlF,EAAEwE,KAAKy9C,EAAW5hD,aAClB4hD,EAAariD,OAAOsiD,eAAeD,GAGvC,OADA1H,EAAK/1C,KAAIvD,MAATs5C,EAAIz1C,EAAS48C,EAAqBE,SAAS9tC,QAAO,SAAAvS,GAAK,OAAAvB,EAAEkwB,SAAS3uB,EAAEigD,IAAInhD,kBACjEk6C,GAtCImH,EAAAE,SAAW,IAAI7hD,MAwClC2hD,uBC3GI,SAAAS,EACY/gD,EACAghD,EACAC,GAFAjiD,KAAAgB,OAAAA,EACAhB,KAAAgiD,yBAAAA,EACAhiD,KAAAiiD,cAAAA,EA/BZjiD,KAAAkL,UAAoB,EAwBpBlL,KAAAi1B,cAA+D,IAAI/tB,EAAAA,aAyFvE,OAxGI1H,OAAAgC,eAAWugD,EAAA7hD,UAAA,UAAO,KAAlB,WACI,OAAOF,KAAKkiD,cAEhB,SAAmBl+C,GACfhE,KAAKkiD,SAAWl+C,EACZA,GAAKhE,KAAK8Q,UACV9Q,KAAKmiD,+CAsBbJ,EAAA7hD,UAAAsJ,MAAA,WACIxJ,KAAK8Q,SAASrO,MAAQ,MAG1Bs/C,EAAA7hD,UAAA8S,SAAA,WACIhT,KAAKwvB,mBAKTuyB,EAAA7hD,UAAAsvB,gBAAA,WAAA,IAAA5oB,EAAA5G,KACIA,KAAKiiD,cAAc/hB,2BAA2BlgC,KAAKqhD,SAASA,SAASe,aAAap/C,MAAK,SAAA7B,GACnF,GAAIA,EAAG,CACH,IAAMkuB,EAAUzoB,EAAKo7C,yBAAyB1yB,wBAAwBnuB,EAAEmL,WAClE+1C,EAASz7C,EAAK5F,OAAOwuB,gBAAgBH,GAC3CzoB,EAAKkK,SAAWuxC,EAAOvxC,SACvBlK,EAAK07C,aAAe17C,EAAKkK,SAASpF,YAAYgH,WAAU,SAAAjQ,IACpB,IAA5BmE,EAAKkK,SAASiwC,YACdn6C,EAAKy6C,SAAS5+C,MAAQA,EACtBmE,EAAKquB,cAAc5tB,KAAKT,EAAKy6C,cAIjCz6C,EAAK27C,gBACL37C,EAAKkK,SAASkwC,+BAA+BtuC,WAAU,SAAA1O,GACnD4C,EAAK27C,eAAe9kB,UAAUz5B,MAKlC4C,EAAKkK,SAAS5F,SAAWtE,EAAKsE,SAC9BtE,EAAKu7C,cACLv7C,EAAKkK,SAASrO,MAAQmE,EAAKy6C,SAAS5+C,MACpCmE,EAAKkK,SAASqwC,UACdkB,EAAO/vC,kBAAkBqoB,oBAOjConB,EAAA7hD,UAAAiiD,YAAR,WAAA,IAAAv7C,EAAA5G,KACUm0B,EAAUn0B,KAAKqhD,SAASA,SAASmB,cACvC,GAAKruB,EAAL,gBAGWv0B,GACP,GAAIu0B,EAAQt0B,eAAeD,GAAI,CAC3B,IAAM00B,EAAMH,EAAQv0B,GACpB,GAAmB,iBAAR00B,GAAoBA,EAAImuB,WAAW,MAAO,CACjD,IAAMxhD,EAAMqzB,EAAIouB,UAAU,GACpBx8C,EAAMy8C,EAAAA,cAAcC,EAAKvyC,QAASpP,GACpCiF,IACA08C,EAAK9xC,SAASlR,GAAoB,mBAARsG,EAAqBA,EAAI,CAAE0O,KAAMguC,EAAKvyC,QAAS8B,KAAMywC,EAAKzwC,MAAQywC,EAAKvB,UAAYn7C,OAGhH,CACD,IAAMw7B,EAAqB,mBAARpN,EAAqBA,EAAI,CAAE1f,KAAMguC,EAAKvyC,QAAS8B,KAAMywC,EAAKzwC,MAAQywC,EAAKvB,UAAY/sB,EAClGoN,aAAer/B,QACfq/B,EAAI1+B,MAAK,SAAAgB,GACL4C,EAAKkK,SAASlR,GAAKoE,KAIvB4+C,EAAK9xC,SAASlR,GAAK8hC,YAlBnC,IAAK,IAAM9hC,KAAKu0B,IAALv0B,KAyBfmiD,EAAA7hD,UAAA4U,YAAA,WACQ9U,KAAKsiD,cACLtiD,KAAKsiD,aAAavtC,wDAjFN0W,EAAAA,wBACkBrc,EAAAA,gCACXuE,EAAAA,mBAnC3B7S,EAAA,CADCuF,EAAAA,gEAKDvF,EAAA,CADCuF,EAAAA,iEAIDvF,EAAA,CADCuF,EAAAA,wBACe82B,0CAMhBr8B,EAAA,CADCuF,EAAAA,6FAYDvF,EAAA,CADCuF,EAAAA,4DAKDvF,EAAA,CADC8G,EAAAA,yBACcV,EAAAA,mDAlCN66C,EAAiCjhD,EAAA,CAH7CwhB,EAAAA,UAAU,CACP/b,SAAU,yDAyCUklB,EAAAA,iBACkBrc,EAAAA,yBACXuE,EAAAA,mBAzClBouC,qBCUT,SAAAc,EAAsB93C,GAAtB,IAAAnE,EACII,EAAApG,KAAAZ,KAAM+K,IAAI/K,YADQ4G,EAAAmE,IAAAA,EAHtBnE,EAAAk8C,aAAuB,IAkB3B,OA1BmDhjD,EAAA+iD,EAAA77C,GAgB/C67C,EAAA3iD,UAAAghD,kBAAA,SAAkBt+C,GACdoE,EAAA9G,UAAMghD,kBAAiBtgD,KAAAZ,KAAC4C,EAAEH,QAI9BogD,EAAA3iD,UAAA2L,gBAAA,WACI7L,KAAKihD,0BAA0BjhD,KAAK+iD,SACpC/iD,KAAK+gD,WAAY,4CAZM9sC,EAAAA,qBAP3BnT,EAAA,CADCoM,EAAAA,UAAU+lB,oBACMA,mCAJR4vB,EAA6B/hD,EAAA,CAHzCwF,EAAAA,UAAU,CACPE,SAAA,oPAa2ByN,EAAAA,qBAXlB4uC,IAAsC/B,kBCU/C,SAAAkC,KAEJ,OAHaA,EAA0BliD,EAAA,CAPtC+V,EAAAA,SAAS,CACNC,aAAc,CAAC+rC,IACf9rC,QAAS,CAACJ,EAAAA,aAAcmX,EAAAA,YAAa+O,GAAiBe,IACtD5mB,QAAS,CAAC6rC,IACVp1B,gBAAiB,CAACo1B,IAClB/6C,UAAW,gCAEFk7C,qBCgBT,SAAAC,EAAsBl4C,GAAtB,IAAAnE,EACII,EAAApG,KAAAZ,KAAM+K,IAAI/K,YADQ4G,EAAAmE,IAAAA,EAVtBnE,EAAA68B,eAAyB,EACzB78B,EAAAy9B,cAAwB,EACxBz9B,EAAAs8C,SAAoB,KACpBt8C,EAAAu8C,SAAoB,KAEpBv8C,EAAAk8C,aAAuB,IAkB3B,OA1BwDhjD,EAAAmjD,EAAAj8C,GAiBpDi8C,EAAA/iD,UAAAghD,kBAAA,SAAkBt+C,GACdoE,EAAA9G,UAAMghD,kBAAiBtgD,KAAAZ,KAAC4C,EAAEH,QAG9BwgD,EAAA/iD,UAAA2L,gBAAA,WACI7L,KAAK+gD,WAAY,EACjB/gD,KAAKihD,0BAA0BjhD,KAAK+iD,mDAVb9uC,EAAAA,qBAF3BnT,EAAA,CADCoM,EAAAA,UAAUs2B,oBACMA,mCAXRyf,EAAkCniD,EAAA,CAf9CwF,EAAAA,UAAU,CACPE,SAAU,8bA2BiByN,EAAAA,qBAblBgvC,IAA2CnC,kBCFpD,SAAAsC,KAEJ,OAHaA,EAA+BtiD,EAAA,CAP3C+V,EAAAA,SAAS,CACNC,aAAc,CAACmsC,IACflsC,QAAS,CAACJ,EAAAA,aAAcmX,EAAAA,YAAagZ,GAAkBlJ,IACvD5mB,QAAS,CAACisC,IACVx1B,gBAAiB,CAACw1B,IAClBn7C,UAAW,gCAEFs7C,qBCQT,SAAAC,EAAsBt4C,GAAtB,IAAAnE,EACII,EAAApG,KAAAZ,KAAM+K,IAAI/K,YADQ4G,EAAAmE,IAAAA,EAdtBnE,EAAAmC,WAAqB,KACrBnC,EAAAoqB,UAAoB,OACpBpqB,EAAA+pC,cAAwB,SACxB/pC,EAAAgqC,kBAA4B,QAC5BhqC,EAAA8hC,aAAuB,EACvB9hC,EAAAuhC,WAAqB,EACrBvhC,EAAA2U,MAAa,GACb3U,EAAAyhC,iBAAkB,EAoBlBzhC,EAAA8hB,YAAc,SAAC9lB,GACX,OAAO,IAAIP,SAAQ,SAACC,GAChB,IAWMghD,EAASxvB,aAAY,WACnBltB,EAAKm6C,YAXLphD,MAAMkG,QAAQe,EAAK2U,OACnBjZ,EAAQsE,EAAK2U,OAEc,mBAAf3U,EAAK2U,MACjBjZ,EAAQsE,EAAK2U,MAAM3Y,IAGnBN,EAAQ,IAMRyxB,cAAcuvB,MAEpB,UAOd,OAvDwDxjD,EAAAujD,EAAAr8C,GAqBpDq8C,EAAAnjD,UAAAghD,kBAAA,SAAkBt+C,GACdoE,EAAA9G,UAAMghD,kBAAiBtgD,KAAAZ,KAAC4C,EAAEH,QAG9B4gD,EAAAnjD,UAAA2L,gBAAA,WACI7L,KAAKutC,UAAU5jB,UACf3pB,KAAKihD,0BAA0BjhD,KAAKutC,YAyBxC8V,EAAAnjD,UAAAihD,QAAA,WACInhD,KAAK+gD,WAAY,4CApCM9sC,EAAAA,qBAF3BnT,EAAA,CADCoM,EAAAA,UAAUwjC,GAAuB,CAAEvjC,QAAQ,oBACjCujC,qCAfF2S,EAAkCviD,EAAA,CAH9CwF,EAAAA,UAAU,CACPE,SAAA,qoBAmB2ByN,EAAAA,qBAjBlBovC,IAA2CvC,kBCWpD,SAAAyC,KAEJ,OAHaA,EAA+BziD,EAAA,CAP3C+V,EAAAA,SAAS,CACNC,aAAc,CAACusC,IACftsC,QAAS,CAACJ,EAAAA,aAAcmX,EAAAA,YAAaqkB,GAAmB/S,GAAoBxB,IAC5E5mB,QAAS,CAACqsC,IACV51B,gBAAiB,CAAC41B,IAClBv7C,UAAW,gCAEFy7C,qBCkBT,SAAAC,EAAsBz4C,EAAgCy3B,GAAtD,IAAA57B,EACII,EAAApG,KAAAZ,KAAM+K,IAAI/K,YADQ4G,EAAAmE,IAAAA,EAAgCnE,EAAA47B,aAAAA,EAPtD57B,EAAA68C,OAAyB,GAIzB78C,EAAA68B,eAAyB,EACzB78B,EAAAy9B,cAAwB,IAsH5B,OAnIoDvkC,EAAA0jD,EAAAx8C,GAoBhDw8C,EAAAtjD,UAAA8S,SAAA,WACIhT,KAAKyjD,OAASzjD,KAAKyC,MAAQ4uB,KAAKmd,MAAMnd,KAAKC,UAAUtxB,KAAKyC,QAAU,GACpEzC,KAAK+K,IAAI0B,iBAIb+2C,EAAAtjD,UAAA2L,gBAAA,WACI7L,KAAK+gD,WAAY,GAOrByC,EAAAtjD,UAAAwjD,WAAA,SAAW9gD,GACP5C,KAAK+sC,KAAOnqC,EAAE0J,WAIlBk3C,EAAAtjD,UAAA8sC,gBAAA,SAAgBtxB,GAAhB,IAAA9U,EAAA5G,KACIA,KAAK2jD,QAAUnkD,OAAOa,OAAO,GAAIqb,GACjC,IAAM0lB,EAAQphC,KAAKwiC,aAAatkB,KAAKle,KAAK4jD,QAAS,CAC/Cx4C,KAAM,KACNmK,cAAe,CACX,CACIzQ,KAAM,UACN+U,KAAMjU,EAAAA,aAAaX,IAAI,kBACvB0U,MAAO,UACPjE,gBAAgB,EAChBC,gBAAgB,EAChBuC,QAAS,WACLtR,EAAKmmC,KAAKxnC,WAAWvC,MAAK,SAAA7B,GAClBA,EAAE2B,SACFkE,EAAA9G,UAAMghD,kBAAiBtgD,KAAAgG,EAACA,EAAK68C,QAC7BjkD,OAAOa,OAAOqb,EAAM9U,EAAK+8C,SACzBviB,EAAM9sB,QACN1N,EAAK+8C,QAAU,KACf/8C,EAAKmE,IAAI0B,sBAKzB,CACI3H,KAAM,SACN+U,KAAMjU,EAAAA,aAAaX,IAAI,iBACvB0U,MAAO,eACPjE,gBAAgB,EAChBC,gBAAgB,EAChBuC,QAAS,WACLkpB,EAAM9sB,QACN1N,EAAK+8C,QAAU,KACf/8C,EAAKmE,IAAI0B,mBAIrB+X,MAAO5e,EAAAA,aAAaX,IAAI,kBAIhCu+C,EAAAtjD,UAAA2jD,eAAA,WAAA,MAAAj9C,EAAA5G,KACU6Y,GAAiB,QAAXtR,EAAAvH,KAAKyjD,cAAM,IAAAl8C,OAAA,EAAAA,EAAE5G,QAASsb,KAAKrD,IAAG/X,MAARob,KAAIvX,EAAQ1E,KAAKyjD,OAAO38C,KAAI,SAAA3F,GAAK,OAAAA,EAAEgiD,cAAa,EAClFnjD,KAAK2jD,QAAU,CACXn/B,MAAO,GACP0+B,SAAUrqC,EACVsqC,SAAUtqC,EAAM,EAChBirC,MAAO,MAEX,IAAM1iB,EAAQphC,KAAKwiC,aAAatkB,KAAKle,KAAK4jD,QAAS,CAC/Cp/B,MAAO5e,EAAAA,aAAaX,IAAI,mBACxBmG,KAAM,KACNmK,cAAe,CACX,CACIzQ,KAAM,UACN+U,KAAMjU,EAAAA,aAAaX,IAAI,kBACvB0U,MAAO,UACPjE,gBAAgB,EAChBC,gBAAgB,EAChBuC,QAAS,WACLtR,EAAKmmC,KAAKxnC,WAAWvC,MAAK,SAAA7B,GAClBA,EAAE2B,SACFkE,EAAA9G,UAAMghD,kBAAiBtgD,KAAAgG,EAACA,EAAK68C,QAC7B78C,EAAK68C,OAAOr/C,KAAKwC,EAAK+8C,SACtBviB,EAAM9sB,QACN1N,EAAK+8C,QAAU,KACf/8C,EAAKmE,IAAI0B,sBAKzB,CACI3H,KAAM,SACN+U,KAAMjU,EAAAA,aAAaX,IAAI,iBACvB0U,MAAO,eACPjE,gBAAgB,EAChBC,gBAAgB,EAChBuC,QAAS,WACLkpB,EAAM9sB,QACN1N,EAAK+8C,QAAU,KACf/8C,EAAKmE,IAAI0B,qBAKzBzM,KAAK+K,IAAI0B,iBAGb+2C,EAAAtjD,UAAAgtC,kBAAA,SAAkBxxB,GACd1b,KAAKyjD,OAASzjD,KAAKyjD,OAAO/vC,QAAO,SAAAvS,GAAK,OAAAA,EAAE+hD,WAAaxnC,EAAKwnC,YAC1Dl8C,EAAA9G,UAAMghD,kBAAiBtgD,KAAAZ,KAACA,KAAKyjD,kDAjHNxvC,EAAAA,yBAAyC+sB,MATpElgC,EAAA,CADCoM,EAAAA,UAAU,2BACF6D,EAAAA,4CANAyyC,EAA8B1iD,EAAA,CAL1CwF,EAAAA,UAAU,CACPE,SAAA,85GAEA6W,gBAAiBC,EAAAA,wBAAwBC,yiCAiBdtJ,EAAAA,kBAAyC+sB,MAf3DwiB,IAAuC1C,mBCLhD,SAAAiD,IAAA,IAAAn9C,EACII,EAAApG,KAAAZ,OAAOA,YAHX4G,EAAAo9C,YAA6B,MAO7Bp9C,EAAAq9C,cAAsC,IAAI/8C,EAAAA,aAG1CN,EAAA8E,YAAoC,IAAIxE,EAAAA,aAsCxCN,EAAAs9C,OAAiB,EACjBt9C,EAAAu9C,OAAiB,EACjBv9C,EAAAw9C,OAAiB,EAGjBx9C,EAAAy9C,OAAoB,CAEhB,CACIzY,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAGV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAGV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAGV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAGV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAGV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAYV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAGV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAIV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,K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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AXValidationRuleResult, AXValidationRule, AXValidationRuleTypes } from './validation.class';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\n\r\n// @dynamic\r\nexport class AXValidationRules {\r\n private static registredRules: { name: string, rule: AXValidationRule }[] = [];\r\n\r\n public static addRule(name: string, rule: AXValidationRule) {\r\n const exists = AXValidationRules.get(name);\r\n if (exists) {\r\n exists.rule = rule;\r\n }\r\n else {\r\n AXValidationRules.registredRules.push({\r\n name,\r\n rule\r\n });\r\n }\r\n }\r\n\r\n public static get(name: string) {\r\n return this.registredRules.find(c => c.name === name);\r\n }\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'ax-validation-rule',\r\n template: ''\r\n})\r\nexport class AXValidationRuleComponent implements AXValidationRule {\r\n @Input()\r\n type: AXValidationRuleTypes = 'required';\r\n @Input()\r\n message: string;\r\n @Input()\r\n value: any;\r\n\r\n @Input()\r\n enabled: boolean = true;\r\n\r\n validate(value: any): Promise<AXValidationRuleResult> {\r\n if (this.enabled === false) {\r\n return Promise.resolve({ result: true });\r\n }\r\n const regRule = AXValidationRules.get(this.type);\r\n if (regRule) {\r\n return this.internalValidate(regRule.rule.type, value, this.message || regRule.rule.message, regRule.rule.value);\r\n }\r\n else {\r\n return this.internalValidate(this.type, value, this.message, this.value);\r\n }\r\n }\r\n\r\n\r\n private internalValidate(type: string, value?: any, message?: string, ruleValue?: any): Promise<AXValidationRuleResult> {\r\n return new Promise<AXValidationRuleResult>(resolve => {\r\n switch (type) {\r\n case 'required':\r\n resolve({\r\n message: message || AXTranslator.get('validation.messages.required'),\r\n result: value != null && value != '' && (!Array.isArray(value) || (Array.isArray(value) && value.length > 0))\r\n });\r\n break;\r\n case 'regex':\r\n const ex = new RegExp(ruleValue);\r\n resolve({\r\n message: message || AXTranslator.get('validation.messages.regex'),\r\n result: ex.test(value)\r\n });\r\n break;\r\n case 'custom':\r\n case 'callback':\r\n if (typeof ruleValue === 'function') {\r\n const res: any = {};\r\n res.message = message;\r\n const val = ruleValue({ value, message });\r\n if (val instanceof Promise) {\r\n val.then(c => {\r\n res.result = c;\r\n }).catch(c => {\r\n res.result = false;\r\n }).finally(() => {\r\n resolve(res);\r\n });\r\n }\r\n else {\r\n res.result = val;\r\n resolve(res);\r\n }\r\n }\r\n else {\r\n resolve({ result: true });\r\n }\r\n break;\r\n default:\r\n resolve({ result: true });\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, ContentChildren, QueryList, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXValidationRuleComponent } from './validation-rule.widget';\r\nimport { AXValidationRule, AXValidationRuleResult } from './validation.class';\r\n\r\n\r\n\r\nexport class AXValidation {\r\n\r\n rules: AXValidationRule[] = [];\r\n validateOn: 'blur' | 'change' | 'submit' = 'submit';\r\n showMessage: boolean;\r\n\r\n validate(value: any): Promise<AXValidationRuleResult> {\r\n if (!this.rules || this.rules.length === 0) {\r\n return Promise.resolve({ result: true });\r\n }\r\n return new Promise<AXValidationRuleResult>(resolve => {\r\n Promise.all(\r\n this.rules.map(c => {\r\n if (c instanceof AXValidationRuleComponent) {\r\n return c.validate(value);\r\n }\r\n else {\r\n const v = new AXValidationRuleComponent();\r\n Object.assign(v, c);\r\n return v.validate(value);\r\n }\r\n })\r\n ).then(d => {\r\n const error = d.find(c => c.result === false);\r\n if (error) {\r\n resolve(error);\r\n } else {\r\n resolve({ result: true });\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'ax-validation',\r\n template: '<ng-content></ng-content>',\r\n providers: [{ provide: AXValidation, useExisting: AXValidationComponent }]\r\n})\r\nexport class AXValidationComponent extends AXValidation {\r\n\r\n @ContentChildren(AXValidationRuleComponent)\r\n private contentItems: QueryList<AXValidationRuleComponent>;\r\n\r\n\r\n @Output()\r\n rulesChange: EventEmitter<AXValidationRule[]> = new EventEmitter<AXValidationRule[]>();\r\n\r\n @Output()\r\n showMessage: boolean = true;\r\n\r\n private _rules: AXValidationRule[];\r\n\r\n @Input()\r\n public get rules(): AXValidationRule[] {\r\n return this._rules;\r\n }\r\n public set rules(v: AXValidationRule[]) {\r\n this._rules = v;\r\n if (this.rulesChange) {\r\n this.rulesChange.emit(v);\r\n }\r\n }\r\n\r\n @Input()\r\n validateOn: 'blur' | 'change' | 'submit' = null;\r\n\r\n\r\n ngAfterContentInit() {\r\n if (this.rules && this.rules.length === 0) {\r\n this.rules.push(...this.contentItems.toArray());\r\n }\r\n }\r\n}\r\n","export class AXBaseEvent {\r\n component: any;\r\n htmlElement?: HTMLElement;\r\n}\r\n\r\nexport class AXHtmlEvent<E extends Event> extends AXBaseEvent {\r\n\r\n htmlEvent?: E;\r\n}\r\n\r\nexport class AXValueEvent<T> extends AXBaseEvent {\r\n value?: T;\r\n oldValue?: T;\r\n}\r\n\r\nexport class AXDataEvent<T> extends AXBaseEvent {\r\n data?: T;\r\n}\r\n\r\nexport class AXEvent<T, E extends Event>\r\n{\r\n\r\n}\r\nexport interface AXEvent<T, E extends Event> extends AXDataEvent<T>, AXHtmlEvent<E> {\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Input, Output, EventEmitter, ChangeDetectorRef, ViewChild, ElementRef, ContentChild } from '@angular/core';\r\nimport { AXValidationComponent, AXValidation } from '../validation/validation.component';\r\nimport { AXValidationRuleResult } from '../validation/validation.class';\r\nimport { AXHtmlUtil } from '@acorex/core';\r\nimport { AXEvent, AXHtmlEvent, AXValueEvent } from './events.class';\r\n\r\nexport type AXElementSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport abstract class AXBaseComponent {\r\n @Input() cssClass: string;\r\n uid: string = AXHtmlUtil.getUID();\r\n constructor() {\r\n }\r\n}\r\n\r\n\r\nexport class AXBaseInputChangeEvent extends AXValueEvent<any> {\r\n isUserChange?: boolean;\r\n}\r\n\r\nexport interface AXBaseSizableComponent {\r\n size: AXElementSize;\r\n}\r\n\r\nexport interface AXBaseInteractiveComponent {\r\n disabled: boolean;\r\n tabIndex: number;\r\n}\r\n\r\nexport interface AXBaseInputComponent extends AXBaseInteractiveComponent {\r\n readonly: boolean;\r\n focus(): void;\r\n}\r\n\r\n\r\nexport interface AXBaseValueComponent<T> extends AXBaseInputComponent {\r\n onValueChanged?: EventEmitter<AXValueEvent<T>>;\r\n valueChange?: EventEmitter<T>;\r\n value: T;\r\n}\r\n\r\nexport interface AXBaseClickableComponent extends AXBaseInteractiveComponent {\r\n click: EventEmitter<AXHtmlEvent<MouseEvent>>;\r\n}\r\n\r\nexport abstract class AXValidatableComponent extends AXBaseComponent {\r\n\r\n private __valueField: string = 'value';\r\n private __nativeElement: HTMLElement;\r\n private __validation: AXValidation;\r\n\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n protected initValidation(\r\n elementRef: ElementRef,\r\n valueField: string,\r\n validation: AXValidation\r\n ) {\r\n this.__nativeElement = elementRef.nativeElement;\r\n this.__valueField = valueField;\r\n this.__validation = validation;\r\n const value = this[this.__valueField]\r\n if ((!Array.isArray(value) && value) || (Array.isArray(value) && value.length > 0))\r\n this.validate();\r\n }\r\n\r\n get validation() {\r\n return this.__validation;\r\n }\r\n\r\n validate(): Promise<AXValidationRuleResult> {\r\n if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {\r\n const result = this.__validation.validate(this[this.__valueField]);\r\n result.then(c => {\r\n if (c.result) {\r\n this.clearValidationStyle(this.__nativeElement);\r\n }\r\n else {\r\n this.applyValidationStyle(this.__nativeElement, c);\r\n }\r\n });\r\n return result;\r\n }\r\n else {\r\n return Promise.resolve({ result: true });\r\n }\r\n }\r\n\r\n\r\n protected clearValidationStyle(element: HTMLElement, clear: boolean = false) {\r\n if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {\r\n const formGroup = element.closest('.form-group');\r\n const formItem = formGroup?.querySelector('.form-item') || element.closest('.form-item') || element.querySelector('.form-item');;\r\n const label = formGroup?.querySelector('.form-group-label');\r\n const parent = formItem?.parentElement || element.parentElement;\r\n\r\n formItem?.classList.remove('success-state');\r\n formItem?.classList.remove('error-state');\r\n //formItem?.classList.remove('required-state');\r\n if (!clear) {\r\n formItem?.classList.add('success-state');\r\n }\r\n // label?.classList.remove('error-text');\r\n if (parent.querySelector('span.error-text')) {\r\n parent.removeChild(parent.querySelector('span.error-text'));\r\n }\r\n }\r\n }\r\n\r\n protected applyValidationStyle(element: HTMLElement, v: AXValidationRuleResult): void {\r\n if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {\r\n const formGroup = element.closest('.form-group');\r\n const formItem = formGroup?.querySelector('.form-item') || element.closest('.form-item') || element.querySelector('.form-item');\r\n const label = formGroup?.querySelector('.form-group-label');\r\n const parent = formItem?.parentElement || element.parentElement;\r\n formItem?.classList.add('error-state');\r\n formItem?.classList.remove('success-state');\r\n if (parent.querySelector('span.error-text')) {\r\n parent.removeChild(parent.querySelector('span.error-text'));\r\n }\r\n if (this.__validation.showMessage) {\r\n const span = document.createElement('span');\r\n span.innerText = v.message;\r\n span.classList.add('ax', 'error-text');\r\n parent.appendChild(span);\r\n }\r\n // label?.classList.add('error-text');\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexport abstract class AXBaseTextComponent extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseValueComponent<string> {\r\n\r\n ngAfterViewInit() {\r\n if (this.input) {\r\n this.input.nativeElement.onkeyup = (e) => {\r\n this.userChange = true;\r\n this.value = (e.target as any).value;\r\n this.onkey.emit(e);\r\n };\r\n this.input.nativeElement.onkeydown = (e) => {\r\n this.userChange = true;\r\n\r\n this.value = (e.target as any).value;\r\n this.onkey.emit(e);\r\n };\r\n this.input.nativeElement.onkeypress = (e) => {\r\n this.userChange = true;\r\n\r\n this.value = (e.target as any).value;\r\n this.onkey.emit(e);\r\n };\r\n }\r\n }\r\n\r\n\r\n ngAfterContentInit(): void {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n }\r\n\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n @ViewChild('input', { static: true })\r\n @ContentChild('input', { static: true })\r\n input: ElementRef<HTMLInputElement>;\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n this.initValidation(this.ref, 'value', v);\r\n }\r\n\r\n\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n textAlign: 'right' | 'left' | null = null;\r\n\r\n @Input()\r\n size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\r\n\r\n @Input()\r\n placeholder: string;\r\n\r\n userChange: boolean = false;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, protected ref: ElementRef) {\r\n super();\r\n }\r\n\r\n @Output()\r\n public onkey: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\r\n\r\n @Output()\r\n public onBlur: EventEmitter<AXHtmlEvent<Event>> = new EventEmitter<AXHtmlEvent<Event>>();\r\n\r\n @Output()\r\n public onFocus: EventEmitter<AXHtmlEvent<Event>> = new EventEmitter<AXHtmlEvent<Event>>();\r\n\r\n @Output()\r\n public onValueChanged: EventEmitter<AXBaseInputChangeEvent> = new EventEmitter<AXBaseInputChangeEvent>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\r\n @Input()\r\n icon: string = '';\r\n\r\n @Input()\r\n allowClear: boolean = false;\r\n\r\n private _value: string;\r\n @Input()\r\n public get value(): string {\r\n return this._value;\r\n }\r\n public set value(v: string) {\r\n if (v !== this._value) {\r\n const old = this._value;\r\n this._value = v;\r\n\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old,\r\n isUserChange: this.userChange\r\n });\r\n this.userChange = false;\r\n this.clearValidationStyle(this.input.nativeElement, v ? false : true);\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n focus() {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n clear() {\r\n this.userChange = true;\r\n\r\n this.value = null;\r\n this.input.nativeElement.value = null;\r\n }\r\n\r\n isFocused(): boolean {\r\n return this.input.nativeElement === document.activeElement;\r\n }\r\n\r\n setTextAlign() {\r\n if (this.textAlign === 'left') {\r\n return 'text-left';\r\n }\r\n if (this.textAlign === 'right') {\r\n return 'text-right';\r\n }\r\n }\r\n\r\n handleInputBlur(e: Event) {\r\n this.onBlur.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e\r\n });\r\n }\r\n\r\n handleInputFocus(e: Event) {\r\n this.onFocus.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e\r\n });\r\n }\r\n}\r\n\r\nexport abstract class AXBaseButtonComponent extends AXBaseComponent implements AXBaseClickableComponent, AXBaseSizableComponent {\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Output()\r\n click: EventEmitter<AXHtmlEvent<MouseEvent>> = new EventEmitter<AXHtmlEvent<MouseEvent>>();\r\n\r\n @Input()\r\n size: AXElementSize;\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n}\r\n\r\nexport abstract class AXBaseDropdownComponent extends AXBaseComponent implements AXBaseInteractiveComponent, AXBaseSizableComponent {\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n size: AXElementSize;\r\n\r\n @Input()\r\n fitParent: boolean = true;\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n @Input()\r\n showDropDownButton: boolean = true;\r\n\r\n abstract close();\r\n abstract open();\r\n}\r\n","import {\r\n Overlay,\r\n OverlayKeyboardDispatcher,\r\n OverlayPositionBuilder,\r\n ScrollStrategyOptions,\r\n OverlayContainer,\r\n OverlayRef,\r\n OverlayConfig\r\n} from '@angular/cdk/overlay';\r\nimport {\r\n ComponentFactoryResolver,\r\n Inject,\r\n Injector,\r\n NgZone,\r\n Renderer2,\r\n RendererFactory2,\r\n Injectable\r\n} from '@angular/core';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicOverlayContainer extends OverlayContainer {\r\n public setContainerElement(containerElement: HTMLElement): void {\r\n this._containerElement = containerElement;\r\n }\r\n}\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicOverlay extends Overlay {\r\n private readonly _dynamicOverlayContainer: DynamicOverlayContainer;\r\n private renderer: Renderer2;\r\n\r\n constructor(\r\n scrollStrategies: ScrollStrategyOptions,\r\n _overlayContainer: DynamicOverlayContainer,\r\n _componentFactoryResolver: ComponentFactoryResolver,\r\n _positionBuilder: OverlayPositionBuilder,\r\n _keyboardDispatcher: OverlayKeyboardDispatcher,\r\n _injector: Injector,\r\n _ngZone: NgZone,\r\n @Inject(DOCUMENT) _document: any,\r\n _directionality: Directionality,\r\n rendererFactory: RendererFactory2\r\n ) {\r\n super(\r\n scrollStrategies,\r\n _overlayContainer,\r\n _componentFactoryResolver,\r\n _positionBuilder,\r\n _keyboardDispatcher,\r\n _injector,\r\n _ngZone,\r\n _document,\r\n _directionality\r\n );\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n\r\n this._dynamicOverlayContainer = _overlayContainer;\r\n }\r\n\r\n private setContainerElement(containerElement: HTMLElement): void {\r\n this.renderer.setStyle(containerElement, 'transform', 'translateZ(0)');\r\n this._dynamicOverlayContainer.setContainerElement(containerElement);\r\n }\r\n\r\n public createOn(containerElement: HTMLElement, config?: OverlayConfig): OverlayRef {\r\n this.setContainerElement(containerElement);\r\n return super.create(config);\r\n }\r\n}","import { Injectable, ApplicationRef, ViewContainerRef, TemplateRef, EventEmitter } from '@angular/core';\r\nimport { Overlay, PositionStrategy, ScrollStrategy } from '@angular/cdk/overlay';\r\nimport { TemplatePortal, Portal, ComponentPortal } from '@angular/cdk/portal';\r\nimport { AXConnectedPosition } from '@acorex/core';\r\nimport { merge } from 'rxjs';\r\nimport { DynamicOverlay } from './custom-cdk-overlay.service';\r\n\r\nexport interface AXOverlayViewRef {\r\n instance: any;\r\n dispose: () => void;\r\n}\r\n\r\nexport interface AXOverlayConfigs {\r\n position?: AXConnectedPosition | AXConnectedPosition[];\r\n hasBackdrop?: boolean;\r\n transparentBackdrop?: boolean;\r\n closeOnClickOutside?: boolean;\r\n targetElement?: HTMLElement;\r\n containerElement?: HTMLElement;\r\n onBackdropClick?: () => void;\r\n panelClass?: string[] | string;\r\n backdropClass?: string[] | string;\r\n scroll?: 'auto' | 'block';\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXOverlayService {\r\n constructor(\r\n private overlayService: DynamicOverlay,\r\n private overlayService2: Overlay,\r\n private appRef: ApplicationRef) {\r\n\r\n }\r\n\r\n show(content: any, context?: any, configs?: AXOverlayConfigs): AXOverlayViewRef {\r\n configs = Object.assign({\r\n hasBackdrop: true,\r\n transparentBackdrop: true,\r\n closeOnClickOutside: true\r\n }, configs || {});\r\n // get root viewref\r\n const viewRef: ViewContainerRef = this.appRef.components[0].instance.viewRef;\r\n\r\n let portal: Portal<any>;\r\n // get component by route\r\n if (typeof content === 'string') {\r\n // TODO\r\n }\r\n // create portal from component\r\n else if (content instanceof TemplateRef) {\r\n portal = new TemplatePortal(content, viewRef, context);\r\n }\r\n else if (typeof content === 'function') {\r\n portal = new ComponentPortal(content, viewRef);\r\n }\r\n let positionStrategy: PositionStrategy;\r\n if (configs.position && configs.targetElement) {\r\n positionStrategy = this.overlayService.position()\r\n .flexibleConnectedTo(configs.targetElement)\r\n .withPositions(\r\n Array.isArray(configs.position) ? configs.position : [configs.position]\r\n )\r\n .withPush(true);\r\n }\r\n else {\r\n positionStrategy = this.overlayService.position().global().centerHorizontally().centerVertically();\r\n }\r\n let scrollStrategy: ScrollStrategy = this.overlayService.scrollStrategies.reposition({ autoClose: true });\r\n if (configs.scroll === 'block') {\r\n scrollStrategy = this.overlayService.scrollStrategies.block();\r\n }\r\n\r\n const config = {\r\n positionStrategy,\r\n scrollStrategy,\r\n hasBackdrop: configs.hasBackdrop,\r\n disposeOnNavigation: true,\r\n backdropClass: configs.backdropClass ? configs.backdropClass : (configs.transparentBackdrop ? 'cdk-overlay-transparent-backdrop' : undefined),\r\n panelClass: configs.panelClass ? configs.panelClass : ['animate__animated', 'animate__fadeIn']\r\n };\r\n // joon nanat dorost sho\r\n let overlayRef = configs.containerElement ? this.overlayService.createOn(configs.containerElement, config) : this.overlayService2.create(config);\r\n\r\n const host = overlayRef.attach(portal);\r\n if (host.instance) {\r\n Object.assign(host.instance, context);\r\n setTimeout(() => {\r\n host.changeDetectorRef.detectChanges();\r\n }, 0);\r\n }\r\n if (configs.closeOnClickOutside) {\r\n merge(\r\n overlayRef.backdropClick(),\r\n overlayRef.detachments(),\r\n ).subscribe(() => {\r\n overlayRef.dispose();\r\n overlayRef = undefined;\r\n if (configs.onBackdropClick) {\r\n configs.onBackdropClick();\r\n }\r\n });\r\n\r\n }\r\n return {\r\n instance: host.instance,\r\n dispose: overlayRef.dispose.bind(overlayRef)\r\n };\r\n }\r\n\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-loading-indicator',\r\n templateUrl: './loading-indicator.component.html'\r\n})\r\nexport class AXLoadingIndicatorComponent implements OnInit {\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.size = 80;\r\n }\r\n\r\n @Input()\r\n size: number;\r\n}\r\n","import { Injectable, ComponentRef, EventEmitter } from '@angular/core';\r\nimport { AXRenderService } from '@acorex/core';\r\nimport { AXLoadingPanelComponent } from './loading-panel.component';\r\nimport { AXOverlayService, AXOverlayViewRef } from '../popover/overlay.service';\r\nimport { AXLoadingIndicatorComponent } from './loading-indicator.component';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXLoadingService {\r\n\r\n private _stack: { id: number, component: AXOverlayViewRef }[] = [];\r\n\r\n\r\n constructor(private injection: AXRenderService, private overlayService: AXOverlayService) {\r\n\r\n }\r\n\r\n show(location?: Element): number {\r\n let host: Element;\r\n if (location) {\r\n host = location.closest('.ax-loading-host');\r\n }\r\n const containerElement = (host || location) as HTMLDivElement;\r\n const com = this.overlayService.show(AXLoadingIndicatorComponent, {},\r\n {\r\n closeOnClickOutside: false,\r\n containerElement,\r\n hasBackdrop: true,\r\n backdropClass: ['ax-loading-overlay'],\r\n scroll: 'block'\r\n });\r\n const id = new Date().getTime();\r\n this._stack.push({ id, component: com });\r\n return id;\r\n }\r\n\r\n hide(id): void {\r\n const f = this._stack.find(c => c.id === id);\r\n if (f) {\r\n f.component.dispose();\r\n this._stack = this._stack.filter(c => c.id !== id);\r\n }\r\n }\r\n}","import { Component, ElementRef, ChangeDetectorRef } from '@angular/core';\r\nimport { AXLoadingService } from '../loading/loading.service';\r\n\r\n@Component({\r\n selector: 'ax-page',\r\n template: `\r\n <div class=\"page-content-wrap\">\r\n <div class=\"ax-page-toolbar\">\r\n <ng-content select=\"ax-toolbar\"></ng-content>\r\n </div>\r\n <ng-content select=\"ax-page-content\"></ng-content>\r\n <ng-content select=\"ax-page-footer\"></ng-content>\r\n </div>\r\n`\r\n})\r\nexport class AXPageComponent {\r\n constructor(\r\n private el: ElementRef<HTMLElement>,\r\n private loadingService: AXLoadingService,\r\n private cdr: ChangeDetectorRef,\r\n ) { }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n private _loadingId: number;\r\n\r\n private _isLoading: boolean = false;\r\n public get isLoading(): boolean {\r\n return this._isLoading;\r\n }\r\n public set isLoading(v: boolean) {\r\n this._isLoading = v;\r\n if (this._loadingId && !v) {\r\n this.loadingService.hide(this._loadingId);\r\n this._loadingId = null;\r\n }\r\n if (v) {\r\n this._loadingId = this.loadingService.show(this.el.nativeElement);\r\n }\r\n }\r\n}\r\n","import { EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXDataEvent } from './events.class';\r\nimport { AXMenuItemClickEvent } from '../menu/menu.component';\r\nimport { AXButtonItem } from '@acorex/core';\r\nimport { AXPageComponent } from '../page/page.component';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport const TAB_META_KEY = '__meta__';\r\n\r\nexport class AXPageCloseEvent extends AXDataEvent<any> {\r\n}\r\nexport class AXPageClosing {\r\n cancel: boolean = false;\r\n data?: any;\r\n}\r\n\r\nexport class AXPageResult {\r\n sender: any;\r\n data?: any;\r\n}\r\n\r\nexport class AXPageClosedPromise extends Promise<AXPageResult> {\r\n\r\n private closeMethod: () => void;\r\n constructor(\r\n executor: (resolve: (value?: AXPageResult | PromiseLike<AXPageResult>) => void,\r\n reject: (reason?: any) => void) => void\r\n ) {\r\n super(executor);\r\n }\r\n\r\n public close() {\r\n if (this.closeMethod) {\r\n this.closeMethod();\r\n }\r\n }\r\n}\r\n\r\nexport abstract class AXBasePageComponent {\r\n\r\n @ViewChild(AXPageComponent, { static: true })\r\n private pageContainer: AXPageComponent;\r\n\r\n private _isLoading: boolean = false;\r\n public get isLoading(): boolean {\r\n return this._isLoading;\r\n }\r\n public set isLoading(v: boolean) {\r\n this._isLoading = v;\r\n if (this.pageContainer) {\r\n this.pageContainer.isLoading = this.isLoading;\r\n }\r\n }\r\n\r\n\r\n onClosed: EventEmitter<AXPageCloseEvent> = new EventEmitter<AXPageCloseEvent>();\r\n\r\n close(data?: any) {\r\n this.onClosed.emit({\r\n component: this,\r\n data: data\r\n });\r\n }\r\n\r\n onClosing(e: AXPageClosing): void | Promise<void> {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.onClosed.unsubscribe();\r\n }\r\n}\r\n\r\nexport abstract class AXBasePopupPageComponent extends AXBasePageComponent {\r\n\r\n\r\n\r\n\r\n\r\n\r\n constructor() {\r\n super();\r\n setTimeout(() => {\r\n this.configFooterButtons(this.getFooterButtons());\r\n });\r\n }\r\n\r\n\r\n private _footerButtons: AXButtonItem[] = [];\r\n onFooterButtonsChanged = new Subject<AXButtonItem[]>();\r\n\r\n protected get footerButtons(): AXButtonItem[] {\r\n return this._footerButtons || [];\r\n }\r\n\r\n protected configFooterButtons(buttons?: AXButtonItem[]) {\r\n if (buttons) {\r\n this._footerButtons = buttons;\r\n this.onFooterButtonsChanged.next(buttons);\r\n }\r\n else {\r\n this.onFooterButtonsChanged.next(this.footerButtons);\r\n }\r\n }\r\n\r\n onFooterButtonClick(e: AXMenuItemClickEvent) {\r\n }\r\n\r\n getFooterButtons(): AXButtonItem[] {\r\n return [];\r\n }\r\n}\r\n\r\n\r\n","import { Component, Input, ViewEncapsulation, ElementRef, ViewChild, HostListener } from '@angular/core';\r\nimport { AXBaseButtonComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-button',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: './button.component.html'\r\n})\r\nexport class AXButtonComponent extends AXBaseButtonComponent {\r\n\r\n constructor(private el: ElementRef) {\r\n super();\r\n }\r\n\r\n @ViewChild('container', { static: true }) container: ElementRef<HTMLButtonElement>;\r\n\r\n @Input()\r\n type: string = 'primary';\r\n\r\n @Input()\r\n icon: string;\r\n\r\n @Input()\r\n submitBehavior: boolean = false;\r\n\r\n @Input()\r\n cancelBehavior: boolean = false;\r\n\r\n @Input()\r\n block: boolean = false;\r\n\r\n @Input()\r\n loading: boolean = false;\r\n\r\n @Input()\r\n selected: boolean = false;\r\n\r\n ngAfterViewInit(): void {\r\n if (this.submitBehavior) {\r\n setTimeout(() => {\r\n this.focusButton();\r\n }, 10);\r\n }\r\n }\r\n\r\n\r\n\r\n handleClick(e: MouseEvent) {\r\n if (this.disabled === true) {\r\n this.click.emit({\r\n component: this,\r\n htmlElement: this.el.nativeElement,\r\n htmlEvent: e,\r\n });\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(e: KeyboardEvent) {\r\n if (this.cancelBehavior) {\r\n this.handleClick(null);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n focusButton() {\r\n this.container.nativeElement.focus();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXButtonComponent } from './button.component';\r\n\r\nconst COMPONENT = [AXButtonComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXButtonModule { }\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewEncapsulation, ElementRef } from '@angular/core';\r\nimport { AXDateTime, AXDateTimeRange, AXCalendarType, AXTranslator } from '@acorex/core';\r\nimport { AXBaseSizableComponent, AXElementSize } from '../../base/element.class';\r\nimport { AXValueEvent } from '../../base/events.class';\r\nimport { AXConfig } from '@acorex/core';\r\n\r\nexport type AXCalendarViewType = 'year' | 'month' | 'day';\r\n\r\nexport type AXCalendarHolidays = AXCalendarHoliday[];\r\nexport type AXCalendarHolidaysFunc = (start: Date, end: Date, type: AXCalendarType) => AXCalendarHoliday[];\r\nexport interface AXCalendarHoliday {\r\n date: Date;\r\n title: string;\r\n description?: string;\r\n}\r\n\r\nexport type AXCalendarWeekends = AXCalendarWeekend[];\r\nexport type AXCalendarWeekendsFunc = (start: Date, end: Date, type: AXCalendarType) => AXCalendarWeekend[];\r\n\r\nexport interface AXCalendarWeekend {\r\n indexDay: number;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-calendar-box',\r\n templateUrl: './calendar-box.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXCalendarBoxComponent implements AXBaseSizableComponent {\r\n weekdays: string[] = [];\r\n\r\n private d = {\r\n jalali: {\r\n locale: AXConfig.get('dateTime.jalali.locale') || 'fa',\r\n dir: 'rtl',\r\n number: 1\r\n },\r\n gregorian: {\r\n locale: AXConfig.get('dateTime.gregorian.locale') || 'en',\r\n dir: 'ltr',\r\n number: 0\r\n }\r\n };\r\n\r\n numRotate: number;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n type: AXCalendarType;\r\n\r\n @Input()\r\n locale: string;\r\n\r\n @Input()\r\n dir: string;\r\n\r\n @Input()\r\n min: Date;\r\n\r\n @Input()\r\n max: Date;\r\n\r\n @Input()\r\n selectableHoliday: boolean = true;\r\n\r\n @Input()\r\n dayStyle = [];\r\n\r\n private getHoliday: AXCalendarHolidays | AXCalendarHolidaysFunc;\r\n\r\n private getWeekend: AXCalendarWeekends | AXCalendarWeekendsFunc;\r\n\r\n @Input('showTodayButton')\r\n public showTodayButton: boolean = false;\r\n\r\n matrix: any[] = [];\r\n rotated: boolean = false;\r\n private _view: AXCalendarViewType = 'day';\r\n @Input()\r\n public get view(): AXCalendarViewType {\r\n return this._view;\r\n }\r\n public set view(v: AXCalendarViewType) {\r\n this._view = v;\r\n this.navigate(0);\r\n }\r\n\r\n private _depth: AXCalendarViewType = 'day';\r\n\r\n @Input()\r\n public get depth(): AXCalendarViewType {\r\n return this._depth;\r\n }\r\n public set depth(v: AXCalendarViewType) {\r\n this._depth = v;\r\n this.view = v;\r\n }\r\n\r\n viewRange: AXDateTimeRange;\r\n private holidays: AXCalendarHoliday[] = [];\r\n private weekends: AXCalendarWeekend[] = [];\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<Date>> = new EventEmitter<AXValueEvent<Date>>();\r\n\r\n @Output()\r\n onClick: EventEmitter<AXValueEvent<Date>> = new EventEmitter<AXValueEvent<Date>>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\r\n private _value: AXDateTime;\r\n @Input()\r\n public get value(): Date {\r\n return this._value?.date;\r\n }\r\n public set value(v: Date) {\r\n let vv: AXDateTime;\r\n if (v) {\r\n vv = AXDateTime.convert(v);\r\n }\r\n let unValidDate = false;\r\n if (this.max || this.min) {\r\n unValidDate = this.isInMInMaxRange(vv);\r\n }\r\n if (!unValidDate) {\r\n if (vv && !vv.equal(this._value)) {\r\n this._value = vv;\r\n this._value.type = this.type;\r\n this.setFocus(this._value.clone());\r\n this.valueChange.emit(vv.date);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: this._value?.date,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n if (v == undefined) {\r\n this._value = null;\r\n this.focusedValue = this.today;\r\n this.viewRange = this.today.month.range;\r\n this.navigate(0);\r\n }\r\n this.onClick.emit({\r\n component: this,\r\n value: this._value?.date,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n focusedValue: AXDateTime;\r\n get today(): AXDateTime {\r\n return new AXDateTime(new Date(), this.type);\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef) {\r\n // set defaults\r\n this.getHoliday = AXConfig.get('dateTime.holidays');\r\n this.getWeekend = AXConfig.get('dateTime.weekends');\r\n }\r\n findDay(date: AXDateTime) {\r\n if (this.dayStyle.find((c) => c.date == date.toISOString().split('T')[0])) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n getStyle(date: AXDateTime) {\r\n if (this.dayStyle.find((c) => c.date == date.toISOString().split('T')[0])) {\r\n return this.dayStyle.find((c) => c.date == date.toISOString().split('T')[0]).style;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n getTitle(date: AXDateTime) {\r\n if (this.dayStyle.find((c) => c.date == date.toISOString().split('T')[0])) {\r\n return this.dayStyle.find((c) => c.date == date.toISOString().split('T')[0]).text;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.focusedValue = new AXDateTime(new Date(), this.type);\r\n //\r\n this.initLayout();\r\n //\r\n this.viewRange = this.today.month.range;\r\n if (this.value) {\r\n this.setFocus(new AXDateTime(this.value, this.type));\r\n } else {\r\n this.setFocus(this.today);\r\n }\r\n\r\n this.view = 'day';\r\n }\r\n\r\n getViewCompaire(view: AXCalendarViewType) {\r\n switch (view) {\r\n case 'day':\r\n return 'YMD';\r\n case 'month':\r\n return 'YM';\r\n case 'year':\r\n return 'Y';\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.navigate(0);\r\n }\r\n\r\n private initLayout() {\r\n if (!this.type) {\r\n this.type = AXConfig.get('dateTime.type') || 'gregorian';\r\n }\r\n if (!this.locale) {\r\n this.locale = this.d[this.type]?.locale || this.locale;\r\n }\r\n if (!this.dir) {\r\n this.dir = this.d[this.type]?.dir || 'ltr';\r\n }\r\n this.numRotate = this.d[this.type]?.number || 0;\r\n const path = 'dateTime.weekdaysShort';\r\n this.weekdays = [\r\n AXTranslator.get(`${path}.sun`, this.locale),\r\n AXTranslator.get(`${path}.mon`, this.locale),\r\n AXTranslator.get(`${path}.tue`, this.locale),\r\n AXTranslator.get(`${path}.wed`, this.locale),\r\n AXTranslator.get(`${path}.thu`, this.locale),\r\n AXTranslator.get(`${path}.fri`, this.locale),\r\n AXTranslator.get(`${path}.sat`, this.locale)\r\n ];\r\n }\r\n\r\n getTodayName() {\r\n return AXTranslator.get('dateTime.today', this.locale);\r\n }\r\n\r\n prev() {\r\n this.navigate(-1);\r\n }\r\n\r\n next() {\r\n this.navigate(1);\r\n }\r\n\r\n rotate(array, n) {\r\n const len = array.length;\r\n return !(n % len) ? array : n > 0 ? array.map((e, i, a) => a[(i + n) % len]) : array.map((e, i, a) => a[(len - ((len - i - n) % len)) % len]);\r\n }\r\n\r\n navigate(value: number | AXDateTime) {\r\n let start: AXDateTime;\r\n let end: AXDateTime;\r\n if (this.view === 'day') {\r\n let fd: AXDateTime;\r\n if (value instanceof AXDateTime) {\r\n fd = value.startOf('month');\r\n } else {\r\n fd = this.viewRange.startTime.add('day', 15).add('month', value).startOf('month');\r\n }\r\n\r\n start = fd.firstDayOfWeek;\r\n end = fd.endOf('month').endDayOfWeek;\r\n\r\n start = start.add('day', -this.numRotate);\r\n end = end.add('day', 7).add('day', -this.numRotate);\r\n\r\n // TODO: apply start of week\r\n if (!this.rotated && this.weekdays.length > 0) {\r\n if (this.type === 'jalali') {\r\n this.weekdays = this.rotate(this.weekdays, -this.numRotate);\r\n } else {\r\n this.weekdays = this.rotate(this.weekdays, this.numRotate);\r\n }\r\n\r\n this.rotated = true;\r\n }\r\n } else if (this.view === 'month') {\r\n let fd: AXDateTime;\r\n if (value instanceof AXDateTime) {\r\n fd = value.startOf('year');\r\n } else {\r\n fd = this.viewRange.startTime.add('day', 15).add('year', value).startOf('year');\r\n }\r\n start = fd;\r\n end = fd.endOf('year');\r\n } else if (this.view === 'year') {\r\n let fd: AXDateTime;\r\n if (value instanceof AXDateTime) {\r\n fd = value.startOf('year');\r\n } else {\r\n fd = this.viewRange.startTime\r\n .add('day', 15)\r\n .add('year', value * 10)\r\n .startOf('year');\r\n }\r\n start = fd.add('year', -4);\r\n end = start.add('year', 8).endOf('year');\r\n }\r\n this.viewRange = new AXDateTimeRange(start, end);\r\n //\r\n if (this.getHoliday && typeof this.getHoliday === 'function') {\r\n this.holidays = this.getHoliday(start.date, end.date, this.type);\r\n }\r\n\r\n if (this.getWeekend && typeof this.getWeekend === 'function') {\r\n this.weekends = this.getWeekend(start.date, end.date, this.type);\r\n }\r\n\r\n //\r\n if (this.view === 'day') {\r\n this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('day', this.type)), 7);\r\n if (this.matrix.length > 0 && this.matrix[0].find((c) => c.nextMonth === false) === undefined) {\r\n this.matrix.splice(0, 1);\r\n }\r\n if (this.matrix[this.matrix.length - 1].find((c) => c.nextMonth === false) === undefined) {\r\n this.matrix.splice(this.matrix.length - 1, 1);\r\n }\r\n } else if (this.view === 'month') {\r\n this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('month', this.type)), 3);\r\n } else if (this.view === 'year') {\r\n this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('year', this.type)), 3);\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private applyStyle(dates: AXDateTime[]): any[] {\r\n const items: any[] = [];\r\n dates.forEach((d, i, j) => {\r\n const item: any = {};\r\n item.date = d;\r\n\r\n item.selected = d.compaireNew(new AXDateTime(this.value, this.type), this.getViewCompaire(this.view), this.type) === 0;\r\n item.focused = d.compaireNew(this.focusedValue, this.getViewCompaire(this.view), this.type) === 0;\r\n item.today = this.today && d.compaireNew(this.today, this.getViewCompaire(this.view), this.type) === 0;\r\n if (this.view === 'day') {\r\n // item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM') !== 0;\r\n item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM', this.type) !== 0;\r\n\r\n item.unselect = this.isInMInMaxRange(d);\r\n this.holidays.forEach((h) => {\r\n const comp = d.compaireNew(new AXDateTime(h.date, this.type), 'YMD', this.type);\r\n if (comp === 0) {\r\n item.holiday = true;\r\n if (this.selectableHoliday === false) {\r\n item.unselect = true;\r\n }\r\n }\r\n });\r\n\r\n const indexDay = i - Math.floor(i / 7) * 7;\r\n this.weekends.forEach((cc) => {\r\n if (Number(cc) === indexDay) {\r\n item.holiday = true;\r\n if (this.selectableHoliday === false) {\r\n item.unselect = true;\r\n }\r\n }\r\n });\r\n }\r\n items.push(item);\r\n });\r\n return items;\r\n }\r\n\r\n changeView() {\r\n if (this.view === 'day') {\r\n this.view = 'month';\r\n } else if (this.view === 'month') {\r\n this.view = 'year';\r\n }\r\n }\r\n\r\n matrixify(arr: any[], cols) {\r\n const rows = Math.ceil(arr.length / cols);\r\n const matrix = [];\r\n if (rows * cols === arr.length) {\r\n for (let i = 0; i < arr.length; i += cols) {\r\n matrix.push(arr.slice(i, cols + i));\r\n }\r\n }\r\n return matrix;\r\n }\r\n\r\n setDayClick(event: MouseEvent, item) {\r\n if (item.unselect !== true) {\r\n this.value = item.date.date;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n isInMInMaxRange(d) {\r\n let r = false;\r\n if (d !== undefined) {\r\n if (this.min && !this.max) {\r\n r = d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1;\r\n }\r\n if (this.max && !this.min) {\r\n r = d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;\r\n }\r\n if (this.min && this.max) {\r\n r =\r\n d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1 ||\r\n d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n setMonthClick(event: MouseEvent, date: AXDateTime) {\r\n if (this.depth === 'month') {\r\n this.value = date.date;\r\n } else {\r\n this.view = 'day';\r\n this.setFocus(new AXDateTime(this.value, this.type).set('year', date.year).set('month', date.monthOfYear));\r\n }\r\n event.stopPropagation();\r\n }\r\n\r\n setYearClick(event: MouseEvent, date: AXDateTime) {\r\n if (this.depth === 'year') {\r\n this.value = date.date;\r\n } else {\r\n this.view = 'month';\r\n this.setFocus(new AXDateTime(this.value, this.type).set('year', date.year));\r\n }\r\n event.stopPropagation();\r\n }\r\n\r\n setFocus(date: AXDateTime) {\r\n this.focusedValue = date;\r\n this.navigate(this.focusedValue);\r\n }\r\n\r\n setToday() {\r\n this.value = this.today.date;\r\n this.view = 'day';\r\n }\r\n\r\n trackByFn(index, item: any) {\r\n return item.date.date.getTime();\r\n }\r\n}\r\n","import { Component, Input, NgZone, ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, TemplateRef } from '@angular/core';\r\nimport { ElementRef } from '@angular/core';\r\nimport { AXOverlayService, AXOverlayViewRef } from './overlay.service';\r\nimport { AXConnectedPosition } from '@acorex/core';\r\n\r\n\r\n@Component({\r\n selector: 'ax-popover',\r\n templateUrl: './popover.component.html',\r\n styleUrls: ['./popover.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AXPopoverComponent {\r\n constructor(\r\n private overlayService: AXOverlayService,\r\n private zone: NgZone,\r\n private cdr: ChangeDetectorRef) {\r\n\r\n }\r\n //\r\n private targetEl: HTMLElement;\r\n private overlay: AXOverlayViewRef;\r\n @ViewChild('tpl')\r\n private template: TemplateRef<any>;\r\n //\r\n @Input('target') target: string | HTMLElement;\r\n //\r\n @Input('position') position: AXConnectedPosition;\r\n //\r\n @Input('openMode') openMode: 'manual' | 'click' | 'hover' = 'manual';\r\n //\r\n @Input('closeMode') closeMode: 'manual' | 'clickout' | 'mouseout' = 'clickout';\r\n //\r\n private _visible: boolean = false;\r\n @Input()\r\n public get visible(): boolean {\r\n return this._visible;\r\n }\r\n public set visible(v: boolean) {\r\n if (v !== this._visible) {\r\n if (v) {\r\n this.internalShow();\r\n } else {\r\n this.internalHide();\r\n }\r\n this._visible = v;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n //\r\n toggle() {\r\n this.visible = !this.visible;\r\n }\r\n\r\n close() {\r\n this.zone.run(() => {\r\n this.visible = false;\r\n });\r\n }\r\n\r\n open() {\r\n this.zone.run(() => {\r\n this.visible = true;\r\n });\r\n }\r\n\r\n private internalShow() {\r\n if (this.isOpen) {\r\n return;\r\n }\r\n this.overlay = this.overlayService.show(this.template, {}, {\r\n closeOnClickOutside: this.closeMode === 'clickout',\r\n targetElement: this.targetEl,\r\n hasBackdrop: this.closeMode === 'clickout',\r\n position: this.position,\r\n onBackdropClick: () => {\r\n this._visible = false;\r\n }\r\n });\r\n }\r\n\r\n private internalHide() {\r\n if (this.overlay) {\r\n this.overlay.dispose();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.targetEl = typeof this.target === 'string' ? document.querySelector<HTMLElement>(this.target) : this.target;\r\n //\r\n if (this.closeMode === 'mouseout') {\r\n this.targetEl.addEventListener('mouseout', this.close.bind(this));\r\n }\r\n if (this.openMode === 'hover' && this.targetEl) {\r\n this.targetEl.addEventListener('mouseover', this.open.bind(this));\r\n }\r\n //\r\n if (this.openMode === 'click' && this.targetEl) {\r\n this.targetEl.addEventListener('click', this.open.bind(this));\r\n }\r\n }, 100);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.openMode === 'click' && this.targetEl) {\r\n this.targetEl.removeEventListener('mouseover', this.open.bind(this));\r\n this.targetEl.removeEventListener('click', this.open.bind(this));\r\n this.targetEl.removeEventListener('mouseout', this.open.bind(this));\r\n }\r\n }\r\n\r\n get isOpen(): boolean {\r\n return this.visible;\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AXPopoverComponent } from \"./popover.component\";\r\n\r\n@NgModule({\r\n declarations: [AXPopoverComponent],\r\n imports: [CommonModule],\r\n exports: [AXPopoverComponent],\r\n providers: []\r\n})\r\nexport class AXPopoverModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXCalendarBoxComponent } from './calendar-box.component';\r\nimport { AXCoreModule } from '@acorex/core';\r\nimport { AXPopoverModule } from '../../popover/popover.module';\r\nimport { AXButtonModule } from '../../button/button.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXCalendarBoxComponent],\r\n imports: [CommonModule, AXButtonModule, AXPopoverModule, AXCoreModule],\r\n exports: [AXCalendarBoxComponent],\r\n providers: []\r\n})\r\nexport class AXCalendarBoxModule {\r\n}\r\n","import { Component, ContentChildren, QueryList, Input, Attribute } from '@angular/core';\r\nimport { AXSchedulerViewType } from './scheduler.class';\r\n\r\n@Component({\r\n selector: 'ax-scheduler-view',\r\n template: ``\r\n})\r\nexport class AXSchedulerViewProperty {\r\n\r\n constructor(\r\n @Attribute('type') public type: AXSchedulerViewType,\r\n @Attribute('caption') public caption: string,\r\n @Attribute('name') public name: string,\r\n ) {\r\n\r\n }\r\n\r\n @Input()\r\n public interval: number;\r\n\r\n\r\n ngOnInit(): void {\r\n if (!this.interval) {\r\n this.interval = 1;\r\n }\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ax-scheduler-views',\r\n template: `\r\n <ng-content>\r\n </ng-content>`,\r\n})\r\nexport class AXSchedulerViewsProperty {\r\n @ContentChildren(AXSchedulerViewProperty) views: QueryList<AXSchedulerViewProperty>;\r\n constructor() { }\r\n}\r\n","import { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\nimport { EventEmitter } from '@angular/core';\r\n\r\n\r\n\r\n\r\nexport type AXSchedulerViewType = 'day' | 'week' | 'month' | 'timeline' | 'agenda';\r\n\r\nexport interface AXSchedulerRequestDataArge {\r\n startTime: AXDateTime;\r\n endTime: AXDateTime;\r\n events: AXSchedulerEvent[];\r\n}\r\n\r\nexport abstract class AXAsyncEventArgs {\r\n onComplete: EventEmitter<any> = new EventEmitter<any>(true);\r\n complete(): void {\r\n if (this.onComplete) {\r\n this.onComplete.emit(this);\r\n }\r\n }\r\n}\r\n\r\nexport class AXSchedulerEventChangeArgs extends AXAsyncEventArgs {\r\n canceled: boolean = false;\r\n event: AXSchedulerEvent;\r\n oldSlot: AXSchedulerSlot;\r\n newSlot: AXSchedulerSlot;\r\n}\r\n\r\nexport interface AXSchedulerSlot {\r\n range: AXDateTimeRange;\r\n events?: AXSchedulerEvent[];\r\n uid?: string;\r\n}\r\n\r\nexport interface AXSchedulerEvent {\r\n range: AXDateTimeRange;\r\n title: string;\r\n description?: string;\r\n uid: string;\r\n color: string;\r\n}\r\n\r\nexport interface AXSchedulerOccasion {\r\n range: AXDateTimeRange;\r\n title: string;\r\n description?: string;\r\n blocked?: boolean;\r\n}\r\n","export abstract class AXToolbarItem\r\n{\r\n alignment:\"start\"|\"end\"|\"center\"=\"center\";\r\n}","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ElementRef,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n NgZone,\r\n ChangeDetectorRef,\r\n TemplateRef,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { AXPlacement, AXMenuItem } from '@acorex/core';\r\nimport { AXBaseSizableComponent, AXElementSize } from '../base/element.class';\r\nimport { AXEvent } from '../base/events.class';\r\n\r\nexport class AXMenuItemClickEvent extends AXEvent<AXMenuItem, MouseEvent> {\r\n name: string;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-menu',\r\n templateUrl: './menu.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXMenuComponent implements AXBaseSizableComponent {\r\n\r\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) {\r\n }\r\n\r\n @ContentChild(TemplateRef, { static: true })\r\n _contentMenuTemplate: TemplateRef<any>;\r\n\r\n private _menuTemplate: TemplateRef<any>;\r\n @Input()\r\n public get menuTemplate(): TemplateRef<any> {\r\n return this._menuTemplate ? this._menuTemplate : this._contentMenuTemplate;\r\n }\r\n public set menuTemplate(v: TemplateRef<any>) {\r\n this._menuTemplate = v;\r\n }\r\n\r\n resizeChangeObserver: any;\r\n\r\n @Input()\r\n rtl: boolean;\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXMenuItemClickEvent> = new EventEmitter<AXMenuItemClickEvent>();\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n public selection: 'none' | 'single' | 'multiple' = 'none';\r\n\r\n @Input()\r\n public mode: 'click' | 'context' | 'visible' | 'manual' = 'visible';\r\n\r\n @Input()\r\n public target: string;\r\n\r\n @Input()\r\n public floatAlignment: AXPlacement;\r\n\r\n @Input()\r\n public floatPlacemnet: AXPlacement;\r\n\r\n public currentTarget: HTMLElement;\r\n\r\n @Input()\r\n public direction: 'vertical' | 'horizontal' = 'horizontal';\r\n\r\n private _items: AXMenuItem[];\r\n @Input()\r\n public get items(): AXMenuItem[] {\r\n return this._items;\r\n }\r\n public set items(v: AXMenuItem[]) {\r\n this._items = v;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n\r\n handleItemClick(e: MouseEvent, item?: AXMenuItem) {\r\n e.stopPropagation();\r\n if (item && (!item.items || !item.items.filter((c) => c.visible !== false).length) && !item.disable) {\r\n const m = {\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e,\r\n data: item,\r\n name: item?.name\r\n };\r\n if (item.onClick) {\r\n item.onClick();\r\n }\r\n else {\r\n this.onItemClick.emit(m);\r\n }\r\n\r\n return;\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ElementRef,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n NgZone,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ContentChild,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { AXToolbarItem } from '../toolbar-item';\r\nimport { AXMenuComponent, AXMenuItemClickEvent } from '../../menu/menu.component';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-toolbar-menu',\r\n templateUrl: './toolbar-menu.component.html',\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarMenuComponent }],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AXToolbarMenuComponent extends AXToolbarItem {\r\n \r\n constructor(\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n @ViewChild('menu', { static: true }) menu: AXMenuComponent\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXMenuItemClickEvent> = new EventEmitter<AXMenuItemClickEvent>();\r\n\r\n @ContentChild(TemplateRef, { static: true })\r\n _contentMenuTemplate: TemplateRef<any>;\r\n\r\n\r\n private _menuTemplate: TemplateRef<any>;\r\n @Input()\r\n public get menuTemplate(): TemplateRef<any> {\r\n return this._menuTemplate ? this._menuTemplate : this._contentMenuTemplate;\r\n }\r\n public set menuTemplate(v: TemplateRef<any>) {\r\n this._menuTemplate = v;\r\n }\r\n\r\n\r\n @Input()\r\n public selection: 'none' | 'single' | 'multiple' = 'none';\r\n\r\n private _items: AXMenuItem[];\r\n @Input()\r\n public get items(): AXMenuItem[] {\r\n return this._items;\r\n }\r\n public set items(v: AXMenuItem[]) {\r\n this._items = v;\r\n this.update();\r\n }\r\n\r\n\r\n handleItemClick(item?: AXMenuItemClickEvent) {\r\n this.onItemClick.emit(item);\r\n }\r\n\r\n\r\n public close(): void {\r\n // this.menu.close();\r\n }\r\n\r\n update() {\r\n //this.menu.update();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n}\r\n","import { Component, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\nimport { AXToolbarItem } from '../../../toolbar/toolbar-item';\r\nimport { AXToolbarMenuComponent } from '../../../toolbar/menu/toolbar-menu.component';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-scheduler-view',\r\n template: `\r\n <ax-toolbar-menu [items]=\"items\" selection=\"single\" (onItemClick)=\"onItemClick($event)\"></ax-toolbar-menu>\r\n `,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarSchedulerViewsComponent }]\r\n})\r\nexport class AXToolbarSchedulerViewsComponent {\r\n constructor() { }\r\n\r\n @ViewChild(AXToolbarMenuComponent, { static: true }) menu: AXToolbarMenuComponent;\r\n items: AXMenuItem[] = [];\r\n\r\n update(): void {\r\n this.menu.update();\r\n }\r\n\r\n @Output()\r\n onViewChanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n onItemClick(e: AXMenuItem) {\r\n this.onViewChanged.emit(e.name);\r\n }\r\n\r\n}\r\n","import { Input, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { AXDateTime, AXDateTimeRange, TimeUnit } from '@acorex/core';\r\nimport { Output, Directive } from '@angular/core';\r\nimport { AXSchedulerSlot, AXSchedulerEventChangeArgs, AXSchedulerEvent, AXSchedulerViewType } from '../scheduler.class';\r\n\r\n\r\n\r\n\r\n\r\n@Directive()\r\nexport abstract class AXSchedulerBaseViewComponent implements OnDestroy {\r\n\r\n type: AXSchedulerViewType;\r\n timeSlot: number = 1;\r\n\r\n interval: number = 1;\r\n\r\n abstract updateSize(): void;\r\n\r\n abstract next(): void;\r\n\r\n abstract prev(): void;\r\n\r\n abstract navigate(date: AXDateTime): void;\r\n\r\n get dateRange(): AXDateTimeRange {\r\n if (this.slots && this.slots.length) {\r\n return new AXDateTimeRange(this.slots[0].range.startTime, this.slots[this.slots.length - 1].range.startTime);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n today: AXDateTime = new AXDateTime();\r\n\r\n\r\n\r\n @Output()\r\n onNavigatorDateChanged: EventEmitter<AXDateTime> = new EventEmitter<AXDateTime>();\r\n\r\n private _navigatorDate: AXDateTime;\r\n public get navigatorDate(): AXDateTime {\r\n return this._navigatorDate;\r\n }\r\n public set navigatorDate(v: AXDateTime) {\r\n this._navigatorDate = v;\r\n this.onNavigatorDateChanged.emit(v);\r\n }\r\n\r\n events: AXSchedulerEvent[] = [];\r\n\r\n slots: AXSchedulerSlot[] = [];\r\n\r\n getEvents(range: AXDateTimeRange, unit: TimeUnit) {\r\n return this.events.filter(c => c.range.startTime.equal(range.startTime, unit))\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.updateSize();\r\n }\r\n\r\n @Output()\r\n onEventChanged: EventEmitter<AXSchedulerEventChangeArgs> = new EventEmitter<AXSchedulerEventChangeArgs>(true);\r\n\r\n\r\n ngOnDestroy(): void {\r\n if (this.onEventChanged) {\r\n this.onEventChanged.unsubscribe();\r\n }\r\n if (this.onNavigatorDateChanged) {\r\n this.onEventChanged.unsubscribe();\r\n }\r\n if (this.slots) {\r\n this.slots = null;\r\n }\r\n if (this.events) {\r\n this.events = null;\r\n }\r\n }\r\n\r\n\r\n onDragDropOnDay(e, time?: number) {\r\n const el = e.item.element.nativeElement as HTMLElement;\r\n if (e.previousContainer !== e.container) {\r\n el.style.opacity = '0';\r\n const r: AXSchedulerEventChangeArgs = new AXSchedulerEventChangeArgs();\r\n r.event = e.item.data;\r\n r.oldSlot = e.previousContainer.data;\r\n r.newSlot = e.container.data;\r\n //\r\n r.onComplete.subscribe((er: AXSchedulerEventChangeArgs) => {\r\n el.style.opacity = '1';\r\n if (!er.canceled) {\r\n const slotTime = er.newSlot.range.startTime.startOf();\r\n const z = er.event.range.startTime.clone();\r\n const durDay = slotTime.duration(z.startOf(), 'days');\r\n const durTime = slotTime.duration(z, 'hours');\r\n const eventRange = er.event.range;\r\n //\r\n // if (time && slotTime.add('hour', time).hour + eventRange.duration('hours') > 24) {\r\n // return;\r\n // }\r\n if (time) {\r\n return;\r\n }\r\n er.event.range.startTime = er.event.range.startTime.add('day', durDay);\r\n er.event.range.endTime = er.event.range.endTime.add('day', durDay);\r\n er.oldSlot.events = er.oldSlot.events.filter(c => c.uid !== er.event.uid);\r\n if (time) {\r\n er.event.range.startTime = er.event.range.startTime.set('hour', time);\r\n let durTime = er.event.range.startTime.duration(z, 'hours') % 24;\r\n er.event.range.endTime = er.event.range.endTime.add('hour', durTime);\r\n }\r\n er.newSlot.events.push(er.event);\r\n\r\n }\r\n });\r\n this.onEventChanged.emit(r);\r\n }\r\n }\r\n\r\n}","import { Component, ElementRef, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXSchedulerSlot, AXSchedulerEvent } from '../../scheduler.class';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\n\r\n@Component({\r\n templateUrl: './scheduler-daytime-view.component.html',\r\n styleUrls: ['./scheduler-daytime-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerDayTimeViewComponent }]\r\n})\r\nexport class AXSchedulerDayTimeViewComponent extends AXSchedulerBaseViewComponent {\r\n constructor(private elm: ElementRef<HTMLDivElement>, private cdr: ChangeDetectorRef) { super(); }\r\n times: any[] = [];\r\n private vScroll: HTMLElement;\r\n private container: HTMLElement;\r\n private view: HTMLElement;\r\n private header: HTMLElement;\r\n private body: HTMLElement;\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.vScroll = this.elm.nativeElement.querySelector<HTMLElement>('.v-scroll');\r\n this.header = this.elm.nativeElement.querySelector<HTMLElement>('.header');\r\n this.body = this.elm.nativeElement.querySelector<HTMLElement>('.body');\r\n this.view = this.elm.nativeElement.querySelector<HTMLElement>('.view');\r\n this.container = this.elm.nativeElement.closest('.view-container') as HTMLElement;\r\n }\r\n\r\n updateSize(): void {\r\n const firstTr = this.body.querySelector('tr');\r\n if (firstTr) {\r\n let index = 0;\r\n this.header.querySelectorAll('th').forEach(c => {\r\n const td = firstTr.children.item(index++) as HTMLElement;\r\n td.style.width = `${c.offsetWidth}px`;\r\n });\r\n this.vScroll.style.height = `calc(100% - ${this.header.clientHeight}px)`;\r\n if (this.container) {\r\n this.view.style.height = `${this.container.clientHeight}px`;\r\n }\r\n }\r\n this.arrangeEvents();\r\n }\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n this.times = [];\r\n this.slots = [];\r\n for (let i = 0; i < this.interval; i++) {\r\n const d = date.addDay(i);\r\n const range = new AXDateTimeRange(d, d);\r\n const slot: AXSchedulerSlot = {\r\n range,\r\n events: this.getEvents(range, 'day')\r\n };\r\n this.slots.push(slot);\r\n }\r\n for (let i = 0; i < 24; i++) {\r\n this.times.push({\r\n display: ('0' + i).slice(-2) + ':00',\r\n value: i\r\n });\r\n }\r\n this.navigatorDate = date;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addDay(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addDay(-this.interval));\r\n }\r\n\r\n arrangeEvents() {\r\n const events = this.elm.nativeElement.querySelectorAll<HTMLElement>('.event');\r\n if (events.length) {\r\n const height = events[0].closest('td').offsetHeight;\r\n events.forEach(e => {\r\n const uid = e.attributes.getNamedItem('data-uid').value;\r\n const event = this.events.find(c => c.uid === uid);\r\n const dur = Math.ceil(Math.abs(event.range.duration('hours')));\r\n let total = dur + 1;\r\n if (event.range.startTime.hour + total > 23) {\r\n total = 24 - event.range.startTime.hour;\r\n }\r\n e.style.height = (total * height) + 'px';\r\n });\r\n }\r\n }\r\n\r\n findEventIndex(event: AXSchedulerEvent): number {\r\n const a = this.events.filter(c =>\r\n c.range.startTime.equal(event.range.startTime, 'day')\r\n ).sort((d1, d2) => {\r\n return d1.range.startTime.compaireNew(d2.range.startTime);\r\n });\r\n\r\n return a.indexOf(event);\r\n }\r\n}\r\n","import { Component, ElementRef, ChangeDetectorRef, ViewEncapsulation, HostListener, NgZone } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXSchedulerEvent, AXSchedulerEventChangeArgs } from '../../scheduler.class';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\n\r\n@Component({\r\n templateUrl: './scheduler-month-view.component.html',\r\n styleUrls: ['./scheduler-month-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerMonthViewComponent }]\r\n})\r\nexport class AXSchedulerMonthViewComponent extends AXSchedulerBaseViewComponent {\r\n\r\n\r\n constructor(\r\n private elm: ElementRef<HTMLDivElement>,\r\n private zone: NgZone,\r\n private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n @HostListener('wheel', ['$event'])\r\n onKeydownHandler(e: MouseWheelEvent) {\r\n if (e.deltaY > 0) {\r\n this.navigate(this.navigatorDate.addMonth(1))\r\n }\r\n else if (e.deltaY < 0) {\r\n this.navigate(this.navigatorDate.addMonth(-1))\r\n }\r\n }\r\n\r\n weekDays: any[] = [\r\n {\r\n index: 0, title: 'Sunday'\r\n },\r\n {\r\n index: 1, title: 'Moday'\r\n },\r\n {\r\n index: 2, title: 'Tuesday'\r\n },\r\n {\r\n index: 3, title: 'Wednesday'\r\n },\r\n {\r\n index: 4, title: 'Thursday'\r\n },\r\n {\r\n index: 5, title: 'Friday'\r\n },\r\n {\r\n index: 6, title: 'Saturday'\r\n }];\r\n startDayOfWeek = 'Moday';\r\n\r\n\r\n\r\n private container: HTMLElement;\r\n private view: HTMLElement;\r\n private header: HTMLElement;\r\n private body: HTMLElement;\r\n\r\n\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.header = this.elm.nativeElement.querySelector<HTMLElement>('.header');\r\n this.body = this.elm.nativeElement.querySelector<HTMLElement>('.body');\r\n this.view = this.elm.nativeElement.querySelector<HTMLElement>('.view');\r\n this.container = this.elm.nativeElement.closest('.view-container') as HTMLElement;\r\n\r\n }\r\n\r\n\r\n updateSize(): void {\r\n const firstTr = this.body.querySelector('tr');\r\n if (firstTr) {\r\n let index = 0;\r\n this.header.querySelectorAll('th').forEach(c => {\r\n const td = firstTr.children.item(index++) as HTMLElement;\r\n td.style.width = `${c.offsetWidth}px`;\r\n });\r\n this.body.style.height = `calc(100% - ${this.header.clientHeight}px)`;\r\n if (this.container) {\r\n this.view.style.height = `${this.container.clientHeight}px`;\r\n }\r\n }\r\n this.arrangeEvents();\r\n }\r\n\r\n matrixify(arr, rows, cols) {\r\n const matrix = [];\r\n if (rows * cols === arr.length) {\r\n for (let i = 0; i < arr.length; i += cols) {\r\n matrix.push(arr.slice(i, cols + i));\r\n }\r\n }\r\n return matrix;\r\n }\r\n\r\n matrixSlots: any;\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n\r\n const start = date.month.range.startTime.firstDayOfWeek;\r\n const end = date.month.range.startTime.endDayOfWeek;\r\n const dur = end.duration(start);\r\n this.slots = [];\r\n for (let i = 0; i < dur; i++) {\r\n const d = start.addDay(i);\r\n const range: AXDateTimeRange = new AXDateTimeRange(d, d);\r\n this.slots.push({\r\n range,\r\n events: this.getEvents(range, 'day'),\r\n uid: range.startTime.date.getTime().toString()\r\n });\r\n }\r\n const dayInWeek = 7;\r\n const rows = Math.floor(dur / dayInWeek);\r\n this.matrixSlots = this.matrixify(this.slots, rows, dayInWeek);\r\n this.navigatorDate = date;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addMonth(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addMonth(-this.interval));\r\n }\r\n\r\n arrangeEvents() {\r\n this.slots.forEach(slot => {\r\n const slotTd = this.elm.nativeElement.querySelector<HTMLElement>(`[data-uid='` + slot.uid + `']`);\r\n const viewMoreDiv = slotTd.querySelector<HTMLElement>('.view-more');\r\n let viewMore = 0;\r\n viewMoreDiv.style.display = 'none';\r\n const width = slotTd.offsetWidth;\r\n slot.events.forEach(event => {\r\n const e = slotTd.querySelector<HTMLElement>(`[data-uid='` + event.uid + `']`);\r\n if (e) {\r\n const dur = Math.ceil(Math.abs(event.range.duration()));\r\n e.style.visibility = 'unset';\r\n e.style.width = (dur * width) + 'px';\r\n e.style.top = ((this.findEventIndex(event)) * 25) + 'px';\r\n if (e.getBoundingClientRect().bottom >= slotTd.getBoundingClientRect().bottom) {\r\n viewMore++;\r\n e.style.visibility = 'hidden';\r\n viewMoreDiv.style.display = 'unset';\r\n viewMoreDiv.innerHTML = `+${viewMore} more`;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n findEventIndex(event: AXSchedulerEvent): number {\r\n const a = this.events.filter(c =>\r\n c.range.startTime.equal(event.range.startTime, 'days')\r\n ).sort((d1, d2) => {\r\n const v = d1.range.startTime.compaireNew(d2.range.startTime, 'YMDhm');\r\n return v;\r\n });\r\n return a.indexOf(event);\r\n }\r\n\r\n private dragEnterSlot: HTMLElement;\r\n private dragPreview: HTMLElement;\r\n private dragHour: number = null;\r\n onDragStarted(event) {\r\n this.zone.runOutsideAngular(() => {\r\n this.dragEnterSlot = event.source.dropContainer.element.nativeElement;\r\n this.elm.nativeElement.addEventListener('mousemove', this.drageMouseMove.bind(this));\r\n });\r\n }\r\n onDragEntered(event) {\r\n this.dragPreview = document.querySelector<HTMLElement>('.cdk-drag-preview');\r\n this.dragEnterSlot = event.container.element.nativeElement;\r\n }\r\n onDragEnded(event) {\r\n this.dragEnterSlot = null;\r\n this.dragPreview = null;\r\n this.zone.runOutsideAngular(() => {\r\n this.elm.nativeElement.removeEventListener('mousemove', this.drageMouseMove.bind(this));\r\n });\r\n }\r\n\r\n private drageMouseMove(e: MouseEvent) {\r\n this.zone.runOutsideAngular(() => {\r\n if (!this.dragPreview) {\r\n this.dragPreview = document.querySelector<HTMLElement>('.cdk-drag-preview');\r\n }\r\n if (this.dragEnterSlot && this.dragPreview) {\r\n const diff = this.dragPreview.getBoundingClientRect().top - this.dragEnterSlot.getBoundingClientRect().top;\r\n const hour = Math.round((diff / this.dragEnterSlot.getBoundingClientRect().height) * 24);\r\n this.dragPreview.querySelector('.ax-sch-str').innerHTML = `${hour > 0 ? hour : 0}:00`;\r\n this.dragHour = hour;\r\n }\r\n });\r\n }\r\n\r\n onDragDropOnDay(e) {\r\n const el = e.item.element.nativeElement as HTMLElement;\r\n if (e.previousContainer !== e.container) {\r\n el.style.opacity = '0';\r\n const r: AXSchedulerEventChangeArgs = new AXSchedulerEventChangeArgs();\r\n r.event = e.item.data;\r\n r.oldSlot = e.previousContainer.data;\r\n r.newSlot = e.container.data;\r\n //\r\n r.onComplete.subscribe((er: AXSchedulerEventChangeArgs) => {\r\n el.style.opacity = '1';\r\n if (!er.canceled) {\r\n const slotTime = er.newSlot.range.startTime.startOf();\r\n const z = er.event.range.startTime.clone();\r\n const durDay = slotTime.duration(z.startOf(), 'days');\r\n er.event.range.startTime = er.event.range.startTime.add('day', durDay);\r\n if (this.dragHour != null) {\r\n er.event.range.startTime = er.event.range.startTime.set('hour', this.dragHour);\r\n er.event.range.startTime = er.event.range.startTime.set('minute', 0);\r\n }\r\n er.event.range.endTime = er.event.range.endTime.add('day', durDay);\r\n er.oldSlot.events = er.oldSlot.events.filter(c => c.uid !== er.event.uid);\r\n er.newSlot.events.push(er.event);\r\n }\r\n });\r\n this.onEventChanged.emit(r);\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\nimport { Component, OnInit, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild } from '@angular/core';\r\n\r\nimport { AXSchedulerViewType } from '../scheduler.class';\r\nimport { AXCalendarBoxComponent } from '../../calendar-box/calendar-box.component';\r\n\r\nimport { AXMenuItem, AXDateTime, AXDateTimeRange } from '@acorex/core';\r\nimport { AXToolbarItem } from '../../../toolbar/toolbar-item';\r\nimport { AXToolbarMenuComponent } from '../../../toolbar/menu/toolbar-menu.component';\r\nimport { AXPopoverComponent } from '../../../popover/popover.component';\r\nimport { AXValueEvent } from '../../../base/events.class';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-scheduler-navigator',\r\n template: `\r\n <div id=\"nav\">\r\n <ax-toolbar-menu [items]=\"items\" (onItemClick)=\"onItemClick($event)\"></ax-toolbar-menu>\r\n <ax-popover target=\"#nav\" placement=\"bottom-end\" alignment=\"top-end\" #pop>\r\n <ax-calendar-box (onValueChanged)=\"onDateChange($event)\" [depth]=\"viewDepth\" #cal></ax-calendar-box>\r\n </ax-popover>\r\n</div>`,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarSchedulerNavigatorComponent }],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXToolbarSchedulerNavigatorComponent {\r\n constructor(private cdr: ChangeDetectorRef) { }\r\n\r\n @ViewChild(AXToolbarMenuComponent, { static: true })\r\n toolbar: AXToolbarMenuComponent;\r\n\r\n @ViewChild('pop', { static: true })\r\n pop: AXPopoverComponent;\r\n\r\n @ViewChild('cal', { static: true })\r\n cal: AXCalendarBoxComponent;\r\n\r\n viewDepth: string = 'day';\r\n\r\n\r\n items: AXMenuItem[] = [];\r\n\r\n ngAfterViewInit(): void {\r\n this.items = [\r\n {\r\n name: 'prev',\r\n startIcon: 'fas fa-angle-left',\r\n tooltip: 'Prev'\r\n },\r\n {\r\n name: 'today',\r\n text: 'Today',\r\n tooltip: 'Today'\r\n },\r\n {\r\n name: 'next',\r\n startIcon: 'fas fa-angle-right',\r\n tooltip: 'Next'\r\n },\r\n {\r\n name: 'current',\r\n\r\n }];\r\n }\r\n\r\n\r\n @Output()\r\n onNavigate: EventEmitter<'next' | 'back' | AXDateTime> = new EventEmitter<'next' | 'back' | AXDateTime>();\r\n\r\n onItemClick(e: AXMenuItem) {\r\n if (e.name === 'current') {\r\n this.pop.toggle();\r\n }\r\n else if (e.name === 'today') {\r\n this.goto(new AXDateTime());\r\n }\r\n else {\r\n this.onNavigate.emit(e.name as any);\r\n this.pop.close();\r\n }\r\n }\r\n\r\n\r\n onDateChange(e: AXValueEvent<AXDateTime>) {\r\n this.goto(e.value);\r\n }\r\n\r\n goto(date: AXDateTime) {\r\n this.onNavigate.emit(date);\r\n this.pop.close();\r\n }\r\n\r\n\r\n set(range: AXDateTimeRange, type: AXSchedulerViewType) {\r\n if (range) {\r\n let text: string = '';\r\n const calDate: AXDateTime = range.startTime;\r\n const sameDay = range.startTime.compaireNew(range.endTime, 'YMD') === 0;\r\n const sameMonth = range.startTime.compaireNew(range.endTime, 'YM') === 0;\r\n const sameYear = range.startTime.compaireNew(range.endTime, 'Y') === 0;\r\n if (type !== 'month' && sameDay) {\r\n text = range.startTime.format('MMMM DD, YYYY');\r\n }\r\n //\r\n else if (type !== 'month' && sameMonth && sameYear) {\r\n text = `${range.startTime.format('MMMM DD')} - ${range.endTime.format('DD, YYYY')}`;\r\n }\r\n else if (type !== 'month' && sameYear) {\r\n text = `${range.startTime.format('MMM DD')} - ${range.endTime.format('MMM DD, YYYY')}`;\r\n }\r\n else if (type !== 'month') {\r\n text = `${range.startTime.format('MMM DD, YYYY')} - ${range.endTime.format('MMM DD, YYYY')}`;\r\n }\r\n else if (type === 'month') {\r\n text = range.startTime.add('day', 15).format('MMMM YYYY');\r\n }\r\n this.items[3].text = text;\r\n if (type === 'month') {\r\n this.viewDepth = 'month';\r\n }\r\n else {\r\n this.viewDepth = 'day';\r\n }\r\n //\r\n this.cal.focusedValue = calDate;\r\n this.cal.navigate(calDate);\r\n this.pop.close();\r\n //\r\n this.toolbar.update();\r\n }\r\n }\r\n\r\n}\r\n","import { Component, ElementRef, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXSchedulerSlot } from '../../scheduler.class';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\n\r\n@Component({\r\n templateUrl: './scheduler-agenda-view.component.html',\r\n styleUrls: ['./scheduler-agenda-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerAgendaViewComponent }]\r\n})\r\nexport class AXSchedulerAgendaViewComponent extends AXSchedulerBaseViewComponent {\r\n constructor(\r\n private elm: ElementRef<HTMLDivElement>,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n hideEmptyDays: boolean = true;\r\n\r\n updateSize() {\r\n }\r\n\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n this.slots = [];\r\n for (let i = 0; i < this.interval; i++) {\r\n let d = date.addDay(i);\r\n const range = new AXDateTimeRange(d, d);\r\n const slot: AXSchedulerSlot = {\r\n range,\r\n events: this.getEvents(range, 'day')\r\n }\r\n if (this.hideEmptyDays && slot.events.length === 0) {\r\n continue;\r\n }\r\n this.slots.push(slot);\r\n }\r\n this.navigatorDate = date;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addDay(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addDay(-this.interval));\r\n }\r\n}\r\n","import { Component, OnInit, Input, ElementRef, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\nimport { AXSchedulerSlot } from '../../scheduler.class';\r\n\r\n@Component({\r\n templateUrl: './scheduler-timeline-view.component.html',\r\n styleUrls:['./scheduler-timeline-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerTimelineViewComponent }]\r\n})\r\nexport class AXSchedulerTimelineViewComponent extends AXSchedulerBaseViewComponent {\r\n constructor(private elm: ElementRef<HTMLDivElement>, private cdr: ChangeDetectorRef) { super(); }\r\n\r\n\r\n\r\n\r\n times: any[] = []\r\n\r\n //private hScroll: HTMLElement;\r\n private vScroll: HTMLElement;\r\n private container: HTMLElement;\r\n private view: HTMLElement;\r\n private header: HTMLElement;\r\n private body: HTMLElement;\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.vScroll = this.elm.nativeElement.querySelector<HTMLElement>(\".v-scroll\");\r\n //this.hScroll = this.elm.nativeElement.querySelector<HTMLElement>(\".h-scroll\");\r\n this.header = this.elm.nativeElement.querySelector<HTMLElement>(\".header\");\r\n this.body = this.elm.nativeElement.querySelector<HTMLElement>(\".body\");\r\n this.view = this.elm.nativeElement.querySelector<HTMLElement>(\".view\");\r\n\r\n this.container = this.elm.nativeElement.closest(\".view-container\") as HTMLElement;\r\n // this.hScroll.addEventListener(\"scroll\", () => {\r\n // this.updateSize();\r\n // });\r\n }\r\n\r\n\r\n updateSize(): void {\r\n // let firstTr = this.body.querySelector('tr');\r\n // if (firstTr) {\r\n // let index = 0;\r\n // this.header.querySelectorAll('th').forEach(c => {\r\n // let td = firstTr.children.item(index++) as HTMLElement;\r\n // td.style.width = `${c.offsetWidth}px`;\r\n // })\r\n // this.vScroll.style.height = `calc(100% - ${this.header.clientHeight}px)`;\r\n // //this.vScroll.style.width = `${this.hScroll.clientWidth + this.hScroll.scrollLeft}px`;\r\n // if (this.container)\r\n // this.view.style.height = `${this.container.clientHeight}px`;\r\n // }\r\n }\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n this.navigatorDate = date;\r\n this.times=[];\r\n this.slots = [];\r\n for (let i = 0; i < this.interval; i++) {\r\n let d = date.addDay(i);\r\n let range = new AXDateTimeRange(d, d);\r\n let slot: AXSchedulerSlot = {\r\n range: range,\r\n events: this.getEvents(range, \"day\")\r\n }\r\n this.slots.push(slot);\r\n }\r\n for (let i = 0; i < 24; i++) {\r\n this.times.push({\r\n display:('0' + i).slice(-2) + \":00\",\r\n value:i\r\n });\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addDay(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addDay(-this.interval));\r\n }\r\n\r\n arrangeEvents()\r\n {\r\n \r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, ElementRef, ViewChild } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXToolbarItem } from '../toolbar-item';\r\nimport { AXValueEvent } from '../../base/events.class';\r\nimport { AXBaseInputComponent } from '../../base/element.class';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-search',\r\n templateUrl: './toolbar-search.component.html',\r\n styleUrls: ['./toolbar-search.component.scss'],\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarSearchComponent }]\r\n})\r\n\r\nexport class AXToolbarSearchComponent {\r\n constructor() { }\r\n\r\n private searchChangeObserver: any;\r\n\r\n @ViewChild('input', { static: true }) inputSearch: ElementRef;\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<string>> = new EventEmitter<AXValueEvent<string>>();\r\n\r\n private _text: string;\r\n @Input()\r\n public get text(): string {\r\n return this._text;\r\n }\r\n public set text(v: string) {\r\n if (v !== this._text) {\r\n const old = this._text;\r\n this._text = v;\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n public focus() {\r\n this.inputSearch.nativeElement.focus();\r\n }\r\n\r\n onSearchChanged(text: string) {\r\n if (!this.searchChangeObserver) {\r\n Observable.create(observer => {\r\n\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(500))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.text = c;\r\n });\r\n }\r\n this.searchChangeObserver.next(text);\r\n }\r\n}\r\n","import { EventEmitter } from '@angular/core';\r\n\r\n\r\n\r\nexport interface AXSortParams {\r\n field?: string;\r\n sort?: 'asc' | 'desc';\r\n}\r\nexport interface AXGroups {\r\n field?: string;\r\n}\r\n\r\nexport interface AXFilterParams {\r\n field?: string;\r\n filters?: AXFilterConditionParams[];\r\n}\r\n\r\nexport interface AXFilterConditionParams {\r\n dataType?: 'text' | 'number' | 'date';\r\n type?: 'contains' | 'equal' | 'notEqual';\r\n value?: any;\r\n}\r\n\r\nexport interface AXDataSourceReadParams {\r\n skip?: number;\r\n take?: number;\r\n sort?: AXSortParams;\r\n filter?: AXFilterParams[];\r\n searchText?: string;\r\n group?: AXDataSourceGroupParams;\r\n requestId?: any;\r\n extra?: any;\r\n}\r\n\r\nexport class AXDataSourceReceivedResult {\r\n result?: any;\r\n requestId?: any;\r\n}\r\n\r\nexport interface AXDataSourceGroupParams {\r\n parentData: any;\r\n keys: string[];\r\n fields: string[];\r\n}\r\n\r\n\r\nexport abstract class AXDataSourceRead {\r\n abstract fetch(params: AXDataSourceReadParams): void;\r\n abstract dataReceived: EventEmitter<any>;\r\n}","import { Component, ContentChild, EventEmitter, Input } from \"@angular/core\";\r\nimport { AXDataSourceReadParams, AXDataSourceRead, AXDataSourceReceivedResult } from './read-param';\r\nimport { AXBaseEvent, AXValueEvent } from '../base/events.class';\r\nimport { AXDataEvent } from '../base/events.class';\r\n\r\n\r\nexport class AXDataSourceReceivedEvent extends AXDataEvent<AXDataSourceReceivedResult>\r\n{\r\n\r\n}\r\n\r\n\r\n@Component({\r\n selector: \"ax-data-source\",\r\n template: \"<ng-content></ng-content>\"\r\n})\r\nexport class AXDataSourceComponent {\r\n\r\n onDataReceived: EventEmitter<AXDataSourceReceivedEvent> = new EventEmitter<AXDataSourceReceivedEvent>();\r\n onFetchStart: EventEmitter<AXBaseEvent> = new EventEmitter<AXBaseEvent>();\r\n\r\n @Input()\r\n provideData: (params: AXDataSourceReadParams) => Promise<any>;\r\n\r\n @Input()\r\n params: any;\r\n\r\n fetch(params: AXDataSourceReadParams) {\r\n this.onFetchStart.emit({ component: this });\r\n if (this.provideData) {\r\n if (params === null) {\r\n params = this.params === undefined ? null : this.params;\r\n } else {\r\n params.extra = this.params;\r\n }\r\n\r\n //\r\n this.provideData(params).then(_data => {\r\n const data: AXDataSourceReceivedResult = new AXDataSourceReceivedResult();\r\n data.result = _data;\r\n data.requestId = params == null ? null : params.requestId;\r\n this.onDataReceived.emit({\r\n component: this,\r\n data: data\r\n });\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ContentChild,\r\n Input,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ViewChild,\r\n ComponentRef,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n NgZone,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { AXSchedulerViewsProperty, AXSchedulerViewProperty } from './scheduler-views.property';\r\nimport { AXToolbarSchedulerViewsComponent } from './toolbars/scheduler-toolbar-views';\r\nimport { AXSchedulerDayTimeViewComponent } from './views/daytime/scheduler-daytime-view.component';\r\nimport { ComponentPortal, CdkPortalOutlet } from '@angular/cdk/portal';\r\nimport { AXSchedulerBaseViewComponent } from './views/scheduler-view.component';\r\nimport { AXSchedulerMonthViewComponent } from './views/month/scheduler-month-view.component';\r\nimport { AXToolbarSchedulerNavigatorComponent } from './toolbars/scheduler-toolbar-navigator';\r\nimport { AXSchedulerAgendaViewComponent } from './views/agenda/scheduler-agenda-view.component';\r\nimport { AXSchedulerTimelineViewComponent } from './views/timeline/scheduler-timeline-view.component';\r\nimport { AXSchedulerEventChangeArgs, AXSchedulerEvent } from './scheduler.class';\r\nimport { AXMenuItem, AXDateTime } from '@acorex/core';\r\nimport { AXToolbarSearchComponent } from '../../toolbar/search/toolbar-search.component';\r\nimport { AXDataSourceComponent } from '../../data-source/datasource.component';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-scheduler',\r\n templateUrl: './scheduler.component.html',\r\n styleUrls: ['./scheduler.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXSchedulerComponent {\r\n constructor(\r\n private elm: ElementRef<HTMLDivElement>,\r\n private zone: NgZone,\r\n private cdr: ChangeDetectorRef\r\n ) { }\r\n\r\n @ViewChild(CdkPortalOutlet, { static: true })\r\n private portalOutlet: CdkPortalOutlet\r\n\r\n\r\n @ViewChild('container', { static: true })\r\n private container: ElementRef<HTMLElement>;\r\n\r\n @ContentChild(AXSchedulerViewsProperty, { static: true })\r\n private viewManager: AXSchedulerViewsProperty;\r\n\r\n @ContentChild(AXToolbarSchedulerViewsComponent, { static: true })\r\n private toolbarView: AXToolbarSchedulerViewsComponent;\r\n @ContentChild(AXToolbarSchedulerNavigatorComponent, { static: true })\r\n private toolbarNavigator: AXToolbarSchedulerNavigatorComponent;\r\n\r\n @ContentChild(AXToolbarSearchComponent, { static: true })\r\n searchInput: AXToolbarSearchComponent;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private dataSource: AXDataSourceComponent;\r\n\r\n view: AXSchedulerBaseViewComponent;\r\n\r\n\r\n private _currentView: string;\r\n @Input()\r\n public get currentView(): string {\r\n return this._currentView;\r\n }\r\n public set currentView(v: string) {\r\n this.setView(v);\r\n }\r\n\r\n private viewItems: AXMenuItem[] = [];\r\n private today = new AXDateTime();\r\n private navigatorDate = new AXDateTime();\r\n searchText: string;\r\n\r\n @Input()\r\n events: AXSchedulerEvent[] = [];\r\n\r\n @Output()\r\n onEventChanged: EventEmitter<AXSchedulerEventChangeArgs> = new EventEmitter<AXSchedulerEventChangeArgs>();\r\n\r\n setView(name: string) {\r\n this._currentView = name;\r\n if (this.viewManager.views) {\r\n this.viewItems.forEach(c => {\r\n c.selected = false;\r\n });\r\n this.viewItems.find(c => c.name == name).selected = true;\r\n const selected = this.viewManager.views.find(c => c.name == name);\r\n this.createView(selected);\r\n }\r\n }\r\n\r\n\r\n private createView(selected: AXSchedulerViewProperty) {\r\n this.startAnim();\r\n if (this.view) {\r\n this.view.ngOnDestroy();\r\n }\r\n let portal: ComponentPortal<AXSchedulerBaseViewComponent>;\r\n this.portalOutlet.detach();\r\n let interval = selected.interval;\r\n if (selected.type === 'day') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerDayTimeViewComponent);\r\n }\r\n if (selected.type === 'week') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerDayTimeViewComponent);\r\n interval = selected.interval * 7;\r\n }\r\n if (selected.type === 'month') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerMonthViewComponent);\r\n }\r\n if (selected.type === 'agenda') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerAgendaViewComponent);\r\n }\r\n if (selected.type === 'timeline') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerTimelineViewComponent);\r\n }\r\n const compRef: ComponentRef<AXSchedulerBaseViewComponent> = this.portalOutlet.attach(portal);\r\n this.view = compRef.instance;\r\n this.view.type = selected.type;\r\n this.view.interval = interval;\r\n //\r\n this.view.onEventChanged.subscribe(e => {\r\n this.onEventChanged.emit(e);\r\n });\r\n this.view.onNavigatorDateChanged.subscribe((e) => {\r\n this.navigatorDate = e;\r\n this.setNavigatorText();\r\n this.startAnim();\r\n });\r\n this.refresh();\r\n }\r\n\r\n private setNavigatorText() {\r\n if (this.toolbarNavigator) {\r\n this.toolbarNavigator.set(this.view.dateRange, this.view.type);\r\n }\r\n }\r\n\r\n private startAnim() {\r\n this.container.nativeElement.classList.remove('ax-anim-fade-in-fwd');\r\n this.container.nativeElement.style.opacity = '0';\r\n setTimeout(() => {\r\n this.container.nativeElement.classList.add('ax-anim-fade-in-fwd');\r\n }, 250);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(_ => {\r\n this.viewManager.views.forEach(v => {\r\n this.viewItems.push({\r\n groupName: 'view',\r\n name: v.name,\r\n text: v.caption\r\n });\r\n });\r\n //\r\n this.dataSource.onDataReceived.subscribe(e => {\r\n this.events = e;\r\n this.view.events = this.events;\r\n if (this.searchText && this.view.events && this.view.events.length) {\r\n this.navigatorDate = this.view.events[0].range.startTime;\r\n }\r\n if (this.navigatorDate) {\r\n this.view.navigate(this.navigatorDate);\r\n }\r\n else {\r\n this.view.navigate(this.today);\r\n }\r\n });\r\n //\r\n if (this.toolbarView) {\r\n this.toolbarView.onViewChanged.subscribe(c => {\r\n this.currentView = c;\r\n });\r\n this.toolbarView.items = this.viewItems;\r\n }\r\n //\r\n if (this.toolbarNavigator) {\r\n this.toolbarNavigator.onNavigate.subscribe(c => {\r\n if (c === 'next') {\r\n this.view.next();\r\n }\r\n else if (c === 'prev') {\r\n this.view.prev();\r\n }\r\n else {\r\n this.view.navigate(c);\r\n }\r\n });\r\n }\r\n if (this.searchInput) {\r\n this.searchInput.onValueChanged.subscribe(c => {\r\n this.searchText = c;\r\n if (c) {\r\n this.viewItems.forEach(c => { c.visible = false; });\r\n const x: AXSchedulerViewProperty = new AXSchedulerViewProperty('agenda', 'Search', 'VIEW_SEARCH');\r\n x.interval = 100;\r\n this.createView(x);\r\n this.refresh();\r\n }\r\n else {\r\n this.viewItems.forEach(c => { c.visible = true; });\r\n this.setView(this._currentView);\r\n }\r\n this.toolbarView.update();\r\n });\r\n }\r\n //\r\n this.setView(this.currentView);\r\n this.refresh();\r\n });\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.updateSize();\r\n }\r\n\r\n private updateSize() {\r\n this.zone.runOutsideAngular(() => {\r\n const toolbar = this.elm.nativeElement.querySelector<HTMLElement>(\r\n '.ax-scheduler-toolbar'\r\n );\r\n if (toolbar) {\r\n this.container.nativeElement.style.height = `calc(100% - ${toolbar.clientHeight}px)`;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.portalOutlet.detach();\r\n }\r\n\r\n refresh() {\r\n this.dataSource.fetch({\r\n searchText: this.searchText,\r\n });\r\n }\r\n\r\n}\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n styleUrls: ['./toolbar.component.scss'],\r\n encapsulation:ViewEncapsulation.None\r\n})\r\nexport class AXToolbarComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n \r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXToolbarItem } from '../toolbar-item';\r\n\r\n@Component({\r\n selector: 'ax-toolbar-title',\r\n template: `\r\n <ng-container *ngIf=\"text; else elseTemplate\">\r\n <div class=\"title\">{{text}}</div>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <ng-content></ng-content>\r\n </ng-template>`,\r\n styles: [`\r\n .title{\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n }\r\n `],\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarTitleComponent }]\r\n})\r\nexport class AXToolbarTitleComponent {\r\n constructor() { }\r\n\r\n private _text: string;\r\n @Input()\r\n public get text(): string {\r\n return this._text;\r\n }\r\n public set text(v: string) {\r\n if (v !== this._text) {\r\n this._text = v;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { AXToolbarItem } from \"../toolbar-item\";\r\nimport { AXBaseMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: \"ax-toolbar-group-button\",\r\n template: `\r\n <div class=\"btn-group\" role=\"group\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let item of items\"\r\n class=\"btn btn-sm {{ item.style }}\"\r\n [class.active]=\"item.selected\"\r\n (click)=\"onClick(item)\"\r\n [title]=\"item.tooltip\"\r\n >\r\n <i class=\"{{ item.icon }}\"></i>\r\n {{ item.text }}\r\n </button>\r\n </div>\r\n `,\r\n providers: [\r\n { provide: AXToolbarItem, useExisting: AXToolbarButtonGroupComponent }\r\n ]\r\n})\r\nexport class AXToolbarButtonGroupComponent {\r\n constructor() { }\r\n\r\n @Input()\r\n items: AXBaseMenuItem[] = [];\r\n\r\n @Output()\r\n itemClick: EventEmitter<AXBaseMenuItem> = new EventEmitter<AXBaseMenuItem>();\r\n\r\n @Input()\r\n mode: \"single\" | \"multiple\" = \"single\";\r\n\r\n onClick(item: AXBaseMenuItem) {\r\n if (this.mode == \"single\") {\r\n this.items.forEach(c => {\r\n c.selected = false;\r\n });\r\n item.selected = true;\r\n this.itemClick.emit(item);\r\n } else {\r\n if (item.selected) {\r\n item.selected = false;\r\n } else {\r\n item.selected = true;\r\n this.itemClick.emit(item);\r\n }\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SubItemsEvent } from './menu-item.component';\r\nimport { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-menu2',\r\n template: `\r\n <div class=\"ax ax-menu ax-menu-vertical\" [attr.data-level]=\"level\">\r\n <ax-menu-item\r\n *ngFor=\"let item of items\"\r\n [level]=\"level\"\r\n [item]=\"item\"\r\n (showSubMenu)=\"showSubmenu($event)\">\r\n </ax-menu-item>\r\n </div>\r\n `,\r\n styleUrls: ['./menu2.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXMenu2Component implements OnDestroy {\r\n subItemsOverlays = new Array<OverlayRef>();\r\n level: number = 0;\r\n\r\n @Input() items: AXMenuItem[];\r\n @Output() selected = new EventEmitter<AXMenuItem>();\r\n //@ViewChild(TemplateRef) template;\r\n\r\n constructor(\r\n private overlay: Overlay,\r\n private viewContainerRef: ViewContainerRef,\r\n private elementRef: ElementRef\r\n ) { }\r\n\r\n showSubmenu(event: SubItemsEvent) {\r\n const position: ConnectedPosition[] = [];\r\n if (event.level === 0) {\r\n position.push({\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n });\r\n } else {\r\n position.push({\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n });\r\n }\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(event.element)\r\n .withPositions(position);\r\n const overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: false,\r\n backdropClass: 'cdk-overlay-transparent-backdrop'\r\n });\r\n this.subItemsOverlays.push(overlayRef);\r\n const portal = new ComponentPortal(AXMenu2Component, this.viewContainerRef);\r\n\r\n const com = overlayRef.attach(portal);\r\n com.instance.level = event.level + 1;\r\n com.instance.items = event.item.items;\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onDocumentClick(target) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.hideOverlays();\r\n }\r\n }\r\n\r\n hideOverlays() {\r\n this.subItemsOverlays.forEach((o) => o.dispose());\r\n this.subItemsOverlays.length = 0;\r\n }\r\n ngOnDestroy() {\r\n this.hideOverlays();\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-menu-item',\r\n template: `\r\n <div class=\"ax-menu-item {{item.style}}\" [attr.data-level]=\"level\" (click)=\"showSubItems($event)\" [ngClass]=\"{'disabled': item.disable}\" >\r\n <i *ngIf=\"item.startIcon\" class=\"icon {{item.startIcon}}\"></i>\r\n <span class=\"text\">{{ item.text }}</span>\r\n <i *ngIf=\"item.endIcon\" class=\"icon {{item.endIcon}}\"></i>\r\n <i class=\"far fa-angle-down icon drop-icon\" *ngIf=\"item?.items?.length && item.text\"></i>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXMenuItemComponent {\r\n @Input() item: AXMenuItem;\r\n @Input() level: number;\r\n @Output() showSubMenu = new EventEmitter<SubItemsEvent>();\r\n\r\n constructor(private element: ElementRef) { }\r\n\r\n showSubItems(event: Event) {\r\n event.stopPropagation();\r\n if (this.item?.items?.length) {\r\n this.showSubMenu.emit({ item: this.item, element: this.element, level: this.level });\r\n }\r\n }\r\n}\r\nexport interface SubItemsEvent {\r\n element: ElementRef;\r\n item: AXMenuItem;\r\n level: number;\r\n}\r\n","import { Directive, Input, ElementRef, HostListener, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[axTooltip]'\r\n})\r\nexport class AXTooltipDirective {\r\n @Input('tooltip') tooltipTitle: string;\r\n @Input() placement: string = 'top';\r\n @Input() delay: number = 500;\r\n tooltip: HTMLElement;\r\n offset = 17;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n \r\n }\r\n\r\n\r\n @HostListener('mouseenter') onMouseEnter() {\r\n if (!this.tooltip) {\r\n this.show();\r\n }\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave() {\r\n if (this.tooltip) {\r\n this.hide();\r\n }\r\n }\r\n\r\n show() {\r\n this.create();\r\n this.setPosition();\r\n this.renderer.addClass(this.tooltip, 'ax-tooltip-show');\r\n }\r\n\r\n hide() {\r\n if (this.tooltip) {\r\n try {\r\n this.renderer.removeClass(this.tooltip, 'ax-tooltip-show');\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip = null;\r\n } catch (error) {}\r\n }\r\n }\r\n\r\n create() {\r\n if(this.tooltipTitle){\r\n this.tooltip = this.renderer.createElement('span');\r\n\r\n this.renderer.appendChild(\r\n this.tooltip,\r\n this.renderer.createText(this.tooltipTitle) // textNode\r\n );\r\n\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n\r\n this.renderer.addClass(this.tooltip, 'ax-tooltip');\r\n this.renderer.addClass(this.tooltip, `ax-tooltip-${this.placement}`);\r\n this.renderer.setStyle(this.tooltip, '-webkit-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-moz-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-o-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, 'transition', `opacity ${this.delay}ms`);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.hide();\r\n }\r\n\r\n setPosition() {\r\n const hostPos = this.el.nativeElement.getBoundingClientRect();\r\n\r\n const tooltipPos = this.tooltip.getBoundingClientRect();\r\n\r\n const scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\r\n\r\n let top;\r\n let left;\r\n\r\n if (this.placement === 'top') {\r\n top = hostPos.top - tooltipPos.height - this.offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n }\r\n\r\n if (this.placement === 'bottom') {\r\n top = hostPos.bottom + this.offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n }\r\n\r\n if (this.placement === 'left') {\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.left - tooltipPos.width - this.offset;\r\n }\r\n\r\n if (this.placement === 'right') {\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.right + this.offset;\r\n }\r\n\r\n this.renderer.setStyle(this.tooltip, 'top', `${top + scrollPos}px`);\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTooltipDirective } from './tooltip.directive';\r\n\r\n@NgModule({\r\n declarations: [AXTooltipDirective],\r\n imports: [ CommonModule ],\r\n exports: [AXTooltipDirective],\r\n providers: [],\r\n})\r\nexport class AXTooltipModule {}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXMenuComponent } from './menu.component';\r\nimport { AXMenu2Component } from './menu2.component';\r\nimport { AXMenuItemComponent } from './menu-item.component';\r\nimport { AXTooltipModule } from '../tooltip/tooltip.module';\r\n@NgModule({\r\n declarations: [AXMenuComponent, AXMenu2Component, AXMenuItemComponent],\r\n imports: [CommonModule,AXTooltipModule],\r\n exports: [AXMenuComponent, AXMenu2Component, AXMenuItemComponent],\r\n providers: []\r\n})\r\nexport class AXMenuModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToolbarComponent } from './toolbar.component';\r\nimport { AXToolbarMenuComponent } from './menu/toolbar-menu.component';\r\nimport { AXToolbarSearchComponent } from './search/toolbar-search.component';\r\nimport { AXToolbarTitleComponent } from './title/toolbar-title.component';\r\nimport { AXToolbarButtonGroupComponent } from './group-button/toolbar-group-button.component';\r\nimport { AXPopoverModule } from '../popover/popover.module';\r\nimport { AXMenuModule } from '../menu/menu.module';\r\n\r\nconst COMPONENTS = [\r\n AXToolbarComponent,\r\n AXToolbarMenuComponent,\r\n AXToolbarSearchComponent,\r\n AXToolbarTitleComponent,\r\n AXToolbarButtonGroupComponent\r\n]\r\n\r\n@NgModule({\r\n declarations: [COMPONENTS],\r\n imports: [CommonModule, AXPopoverModule, AXMenuModule],\r\n exports: [COMPONENTS],\r\n providers: [],\r\n})\r\nexport class AXToolbarModule { }","import { NgModule } from '@angular/core';\r\nimport { AXSchedulerComponent } from './scheduler.component';\r\nimport { AXSchedulerViewsProperty, AXSchedulerViewProperty } from './scheduler-views.property';\r\nimport { AXSchedulerDayTimeViewComponent } from './views/daytime/scheduler-daytime-view.component';\r\nimport { AXToolbarSchedulerViewsComponent } from './toolbars/scheduler-toolbar-views';\r\nimport { AXCoreModule } from '@acorex/core';\r\nimport { AXSchedulerMonthViewComponent } from './views/month/scheduler-month-view.component';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { AXToolbarSchedulerNavigatorComponent } from './toolbars/scheduler-toolbar-navigator';\r\nimport { AXSchedulerAgendaViewComponent } from './views/agenda/scheduler-agenda-view.component';\r\nimport { AXSchedulerTimelineViewComponent } from './views/timeline/scheduler-timeline-view.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { AXCalendarBoxModule } from '../calendar-box/calendar-box.module';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToolbarModule } from '../../toolbar/toolbar.module';\r\nimport { AXPopoverModule } from '../../popover/popover.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n AXSchedulerComponent,\r\n AXSchedulerViewsProperty,\r\n AXSchedulerViewProperty,\r\n AXSchedulerDayTimeViewComponent,\r\n AXSchedulerMonthViewComponent,\r\n AXSchedulerAgendaViewComponent,\r\n AXSchedulerTimelineViewComponent,\r\n AXToolbarSchedulerViewsComponent,\r\n AXToolbarSchedulerNavigatorComponent\r\n ],\r\n imports: [CommonModule,AXCoreModule, AXCalendarBoxModule, AXToolbarModule, AXPopoverModule, PortalModule, DragDropModule],\r\n exports: [\r\n AXSchedulerComponent,\r\n AXSchedulerViewsProperty,\r\n AXSchedulerViewProperty,\r\n AXSchedulerDayTimeViewComponent,\r\n AXSchedulerMonthViewComponent,\r\n AXSchedulerAgendaViewComponent,\r\n AXSchedulerTimelineViewComponent,\r\n AXToolbarSchedulerViewsComponent,\r\n AXToolbarSchedulerNavigatorComponent\r\n ],\r\n entryComponents: [\r\n AXSchedulerMonthViewComponent,\r\n AXSchedulerDayTimeViewComponent,\r\n AXSchedulerAgendaViewComponent,\r\n AXSchedulerTimelineViewComponent\r\n ],\r\n providers: [],\r\n})\r\nexport class AXSchedulerModule { }","import {\r\n Component,\r\n ViewEncapsulation,\r\n Output,\r\n EventEmitter,\r\n Input,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n ViewChild,\r\n ElementRef\r\n} from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXBaseValueComponent, AXElementSize } from '../base/element.class';\r\nimport { AXValueEvent, AXHtmlEvent } from '../base/events.class';\r\n\r\nexport class AXCheckBoxItemClick extends AXHtmlEvent<MouseEvent> {\r\n value?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-check-box',\r\n templateUrl: './checkbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXCheckBoxComponent extends AXBaseComponent implements AXBaseSizableComponent, AXBaseValueComponent<boolean> {\r\n @ViewChild('input', { static: true }) input: ElementRef<HTMLInputElement>;\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n label: string = '';\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n @Input()\r\n indeterminate: boolean = false;\r\n\r\n focus(): void {}\r\n constructor(protected cdr: ChangeDetectorRef, private ref: ElementRef) {\r\n super();\r\n }\r\n // Value\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<boolean>> = new EventEmitter<AXValueEvent<boolean>>();\r\n @Output()\r\n valueChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n //\r\n @Output()\r\n onClick: EventEmitter<AXCheckBoxItemClick> = new EventEmitter<AXCheckBoxItemClick>();\r\n\r\n private _value?: boolean = false;\r\n public get value(): boolean {\r\n return this._value;\r\n }\r\n\r\n @Input()\r\n public set value(v: boolean) {\r\n if (v != this._value || v !== undefined) {\r\n const old = this._value;\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n // handelChange(e) {\r\n // const val = e.target.checked;\r\n // this.value = val;\r\n // }\r\n\r\n ngOnInit(): void {\r\n if (!this.indeterminate && this.value == null) {\r\n this.value = false;\r\n }\r\n }\r\n\r\n handleClick(e: MouseEvent) {\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n setTimeout(() => {\r\n if (!this.disabled && !this.readonly) {\r\n //TODO: check intermddiate;\r\n // this.value = !this.value;\r\n this.onClick.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e,\r\n value: this.value\r\n });\r\n }\r\n }, 100);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXCheckBoxComponent } from './checkbox.component';\r\n@NgModule({\r\n declarations: [AXCheckBoxComponent],\r\n imports: [CommonModule, FormsModule],\r\n exports: [AXCheckBoxComponent],\r\n providers: []\r\n})\r\nexport class AXCheckBoxModule { }\r\n","import { Component, Input, ElementRef, HostListener, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\nimport { AXElementSize } from '../base/element.class';\r\nimport { AXBaseEvent } from '../base/events.class';\r\n\r\n@Component({\r\n selector: 'ax-context-menu',\r\n templateUrl: './context-menu.component.html',\r\n host: { class: 'ax context-menu-container' }\r\n})\r\nexport class AXContextMenuComponent {\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n width: number;\r\n\r\n @Input()\r\n items: AXMenuItem[] = [];\r\n\r\n @Output()\r\n onItemClick: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClosed: EventEmitter<AXBaseEvent> = new EventEmitter<AXBaseEvent>();\r\n\r\n @ViewChild('contex')\r\n contex: ElementRef<HTMLUListElement>;\r\n\r\n\r\n\r\n show: boolean = false;\r\n\r\n constructor(private container: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n close() {\r\n this.show = false;\r\n this.onClosed.emit({\r\n component: this\r\n });\r\n }\r\n\r\n\r\n\r\n open(_left, _top, _rtl = false) {\r\n this.show = true;\r\n setTimeout(() => {\r\n const containRec = this.container.nativeElement.getBoundingClientRect();\r\n let left = _rtl === false ? _left : _left - containRec.width;\r\n let top = _top;\r\n if (_rtl === false && _left + containRec.width > window.innerWidth) {\r\n left = window.innerWidth - containRec.width;\r\n } else if (_rtl === true && _left - containRec.width < 0) {\r\n left = 0;\r\n }\r\n if (top + containRec.height > window.innerHeight) {\r\n top = _top - containRec.height;\r\n }\r\n this.container.nativeElement.style.left = left + 'px';\r\n this.container.nativeElement.style.top = top + 'px';\r\n\r\n }, 5);\r\n\r\n\r\n }\r\n\r\n\r\n\r\n handleClickItem(item: AXMenuItem) {\r\n if (!item.disable || item.disable === undefined) {\r\n this.onItemClick.emit(item);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input, Output, EventEmitter, ComponentFactoryResolver, Injector, ViewContainerRef } from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\nimport { AXBaseEvent } from '../base/events.class';\r\nimport { AXContextMenuComponent } from './context-menu.component';\r\nimport { Subscription } from 'rxjs';\r\n\r\nexport type AXContextMenuPromiseFunction = (item: any) => Promise<AXMenuItem[]>;\r\nexport type AXContextMenuFunction = (item: any) => AXMenuItem[];\r\nexport class AXContextMenuItemClickEvent extends AXBaseEvent {\r\n dataItem?: any;\r\n menuItem: AXMenuItem;\r\n}\r\n\r\n@Directive({\r\n selector: '[axContextMenu]'\r\n})\r\nexport class AXContextMenuDirective {\r\n @Input()\r\n contextMenu: AXContextMenuComponent;\r\n\r\n @Input()\r\n contextDataItem: any;\r\n\r\n @Input()\r\n contextMenuItems: AXMenuItem[] | AXContextMenuPromiseFunction | AXContextMenuFunction;\r\n\r\n @Output()\r\n onContextMenuItemClick: EventEmitter<AXContextMenuItemClickEvent> = new EventEmitter<AXContextMenuItemClickEvent>();\r\n\r\n @Input()\r\n rtl: boolean = false;\r\n\r\n internalItems: AXMenuItem[] = [];\r\n\r\n private clickSubscribe: Subscription;\r\n private closeSubscribe: Subscription;\r\n\r\n @HostListener('contextmenu', ['$event'])\r\n onContextMenu(e: MouseEvent) {\r\n this.getMenuItems().then(items => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this.createContextMenu();\r\n this.contextMenu.items = items;\r\n\r\n\r\n this.contextMenu.open(e.x, e.y, this.rtl);\r\n\r\n\r\n });\r\n }\r\n\r\n\r\n\r\n constructor(\r\n private ref: ElementRef,\r\n private factoryResolver: ComponentFactoryResolver,\r\n private viewContainerRef: ViewContainerRef,\r\n private injector: Injector\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n createContextMenu(): void {\r\n const wrapper = document.createElement('div');\r\n wrapper.classList.add('ax-overlay-wrapper');\r\n wrapper.addEventListener('click', this.wrapperClick.bind(this));\r\n wrapper.addEventListener('contextmenu', this.wrapperRClick.bind(this));\r\n //\r\n document.body.appendChild(wrapper);\r\n const factory = this.factoryResolver.resolveComponentFactory(AXContextMenuComponent);\r\n const componentRef = this.viewContainerRef.createComponent(factory);\r\n this.contextMenu = componentRef.instance;\r\n wrapper.appendChild(componentRef.location.nativeElement);\r\n //\r\n this.clearComponentSubscriptions();\r\n this.createComponentSubscriptions();\r\n }\r\n\r\n wrapperClick(e: MouseEvent) {\r\n this.remove();\r\n }\r\n\r\n wrapperRClick(e: MouseEvent) {\r\n if (document.elementsFromPoint(e.clientX, e.clientY).includes(this.ref.nativeElement)) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n this.contextMenu.open(e.x, e.y, this.rtl);\r\n }\r\n else {\r\n e.preventDefault();\r\n this.remove();\r\n }\r\n }\r\n\r\n\r\n\r\n private clearComponentSubscriptions() {\r\n if (this.clickSubscribe) {\r\n this.clickSubscribe.unsubscribe();\r\n this.clickSubscribe = undefined;\r\n }\r\n if (this.closeSubscribe) {\r\n this.closeSubscribe.unsubscribe();\r\n this.closeSubscribe = undefined;\r\n }\r\n }\r\n\r\n private createComponentSubscriptions() {\r\n this.clickSubscribe = this.contextMenu.onItemClick.subscribe(c => {\r\n this.remove();\r\n this.onContextMenuItemClick.emit({\r\n component: this,\r\n dataItem: this.contextDataItem,\r\n htmlElement: this.ref.nativeElement,\r\n menuItem: c\r\n });\r\n });\r\n this.closeSubscribe = this.contextMenu.onClosed.subscribe(c => {\r\n this.clearComponentSubscriptions();\r\n });\r\n }\r\n\r\n private remove() {\r\n this.viewContainerRef.clear();\r\n this.clearComponentSubscriptions();\r\n document.querySelector('.ax-overlay-wrapper')?.remove();\r\n }\r\n\r\n private getMenuItems(): Promise<AXMenuItem[]> {\r\n return new Promise<AXMenuItem[]>((resolve, reject) => {\r\n if (typeof (this.contextMenuItems) === 'function') {\r\n const val = this.contextMenuItems(this.contextDataItem);\r\n if (val instanceof Promise) {\r\n val.then(_data => {\r\n resolve(_data);\r\n });\r\n } else {\r\n resolve(val);\r\n }\r\n } else if (Array.isArray(this.contextMenuItems)) {\r\n resolve(this.contextMenuItems);\r\n }\r\n else {\r\n resolve([]);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.clearComponentSubscriptions();\r\n }\r\n}\r\n","import { NgModule, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXContextMenuComponent } from './context-menu.component';\r\nimport { AXContextMenuDirective } from './context-menu.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXContextMenuComponent, AXContextMenuDirective],\r\n imports: [CommonModule],\r\n exports: [AXContextMenuComponent, AXContextMenuDirective],\r\n providers: [],\r\n})\r\nexport class AXContextMenuModule {\r\n\r\n}","import { Input, ChangeDetectorRef, EventEmitter, Output, Directive } from '@angular/core';\r\n\r\nexport interface AXFilterColumn {\r\n field: string;\r\n caption: string;\r\n type?: 'text' | 'selection' | 'date' | 'number';\r\n options?: any;\r\n}\r\n\r\nexport interface AXFilterColumnGroup {\r\n caption?: string;\r\n columns: AXFilterColumn[];\r\n}\r\n\r\nexport interface AXFilterCondition {\r\n field: string;\r\n condition: string;\r\n dataType: 'string' | 'date' | 'datetime' | 'time' | 'number';\r\n value: any;\r\n}\r\n\r\nexport interface AXFilterPredefined {\r\n name: string;\r\n title: string;\r\n value: AXFilterCondition[];\r\n}\r\n\r\n@Directive()\r\nexport abstract class AXFilterColumnComponent {\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n\r\n }\r\n operator: string = 'equal';\r\n value: any = null;\r\n @Input()\r\n field: string = null;\r\n\r\n @Output()\r\n valueChange: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\r\n @Output()\r\n activeChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n private _active: boolean;\r\n @Input()\r\n public get active(): boolean {\r\n return this._active;\r\n }\r\n public set active(v: boolean) {\r\n this._active = v;\r\n this.activeChange.emit(v);\r\n }\r\n\r\n\r\n abstract get condition(): AXFilterCondition;\r\n\r\n clear() {\r\n this.active = false;\r\n this.value = null;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setFilter(value: any, operator: string) {\r\n this.active = true;\r\n this.operator = operator;\r\n this.value = value;\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n\r\n\r\n","import { Component, Input, ChangeDetectionStrategy, ChangeDetectorRef, ViewEncapsulation, EventEmitter } from '@angular/core';\r\nimport { Output } from '@angular/core';\r\nimport { AXSelectionList } from '@acorex/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXBaseValueComponent, AXElementSize } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-selection-list',\r\n templateUrl: './selection-list.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXSelectionListComponent extends AXBaseComponent\r\n implements AXBaseSizableComponent {\r\n private _selectedItems: any[] = [];\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n value: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n direction: string = 'horizontal';\r\n\r\n @Input()\r\n items: Array<AXSelectionList> = [];\r\n\r\n @Input()\r\n mode: string = 'single';\r\n\r\n @Input()\r\n textField: string = 'text';\r\n\r\n @Input()\r\n valueField: string = 'value';\r\n\r\n @Output()\r\n selectedItemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Input()\r\n public get selectedItems(): any[] {\r\n return this._selectedItems || [];\r\n }\r\n public set selectedItems(v: any[]) {\r\n this._selectedItems = v;\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n @Output()\r\n selectedValuesChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Input()\r\n public get selectedValues(): any[] {\r\n return this._selectedItems.map(c => c[this.valueField]) || [];\r\n }\r\n public set selectedValues(v: any[]) {\r\n const old = this.selectedValues;\r\n if (v == null) {\r\n v = [];\r\n }\r\n if (JSON.stringify(old) != JSON.stringify(v)) {\r\n this.selectedItems = this.items.filter(c => v.includes(c[this.valueField]));\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n onCheckValueChange(value: any, checked: boolean) {\r\n if(!this.disabled){\r\n if (this.mode === 'single') {\r\n this.selectedValues = [value];\r\n } else {\r\n if (checked) {\r\n if (!this.selectedValues.includes(value)) {\r\n this.selectedValues = [...this.selectedValues, ...[value]];\r\n }\r\n } else {\r\n this.selectedValues = this.selectedValues.filter(c => c !== value);\r\n }\r\n }\r\n }\r\n \r\n }\r\n focus(): void {\r\n }\r\n\r\n onvalueChanged(e) {\r\n if(!this.disabled){\r\n this.selectedItemsChange.emit([e]);\r\n\r\n }\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, EventEmitter, Output } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { AXDateTime } from '@acorex/core';\r\nimport { AXSelectionListComponent } from '../../selection-list/selection-list.component';\r\n\r\n@Component({\r\n selector: 'ax-filter-column-date',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <ax-selection-list [items]=\"items\" mode=\"single\" direction=\"vertical\" (selectedItemsChange)=\"onSelectedChanged($event)\">\r\n </ax-selection-list>\r\n </div>\r\n <div class=\"ax-filter-section-value\" [hidden]=\"!showCustom\">\r\n <ax-date-picker label=\"From\" [(value)]=\"fromDate\" (onValueChanged)=\"dateChange($event)\"></ax-date-picker>\r\n <ax-date-picker label=\"To\" [(value)]=\"toDate\" (onValueChanged)=\"dateChange($event)\"></ax-date-picker>\r\n </div>\r\n <div class=\"ax-filter-section-value\" [hidden]=\"!showSpecific\">\r\n <ax-date-picker label=\"Date\" [(value)]=\"fromDate\" (onValueChanged)=\"dateChange($event)\"></ax-date-picker> \r\n </div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnDateComponent }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXFilterColumnDateComponent extends AXFilterColumnComponent {\r\n @ViewChild(AXSelectionListComponent, { static: true }) selection: AXSelectionListComponent;\r\n\r\n items: any = [\r\n {\r\n text: 'Today',\r\n value: 'today'\r\n },\r\n {\r\n text: 'This Week',\r\n value: 'this-week'\r\n },\r\n {\r\n text: 'This Month',\r\n value: 'this-month'\r\n },\r\n {\r\n text: 'This Year',\r\n value: 'this-year'\r\n },\r\n {\r\n text: 'Specific',\r\n value: 'specific'\r\n },\r\n {\r\n text: 'Range',\r\n value: 'range'\r\n }\r\n ];\r\n\r\n fromDate: AXDateTime = new AXDateTime();\r\n toDate: AXDateTime = new AXDateTime();\r\n\r\n selectedItem: any = null;\r\n\r\n showCustom: boolean = false;\r\n showSpecific: boolean = false;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.selection.selectedItems = [this.items[0]];\r\n }\r\n dateChange(e) {\r\n this.valueChange.emit();\r\n }\r\n onSelectedChanged(items: any[]) {\r\n\r\n this.selectedItem = items[0];\r\n this.showCustom = this.selectedItem && this.selectedItem.value == 'range';\r\n this.showSpecific = this.selectedItem && this.selectedItem.value == 'specific';\r\n this.cdr.detectChanges();\r\n this.valueChange.emit();\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n let today = new AXDateTime();\r\n switch (this.selectedItem.value) {\r\n case 'today':\r\n this.fromDate = this.toDate = today;\r\n\r\n return {\r\n condition: 'equal',\r\n field: this.field,\r\n dataType: 'date',\r\n value: this.fromDate.toISOString()\r\n }\r\n case 'specific':\r\n return {\r\n condition: 'equal',\r\n field: this.field,\r\n dataType: 'date',\r\n value: this.fromDate.toISOString()\r\n }\r\n case 'this-week':\r\n this.toDate = today.endOf('week');\r\n this.fromDate = today.startOf('week');\r\n break;\r\n case 'this-month':\r\n this.toDate = today.endOf('month')\r\n this.fromDate = today.startOf('month');\r\n break;\r\n case 'this-year':\r\n this.toDate = today.endOf('year')\r\n this.fromDate = today.startOf('year');\r\n break;\r\n }\r\n\r\n return {\r\n condition: 'between',\r\n field: this.field,\r\n dataType: 'date',\r\n value: [this.fromDate.toISOString(), this.toDate.toISOString()]\r\n }\r\n }\r\n}\r\n","import { Component, ChangeDetectorRef } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'ax-filter-column-number',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <div>\r\n <select (ngModelChange)=\"onOperatorChange($event)\" class=\"form-control form-control-sm\" [(ngModel)]=\"operator\">\r\n <option *ngFor=\"let o of operators\" value=\"{{o.value}}\">\r\n {{o.title}}\r\n </option>\r\n </select>\r\n </div>\r\n <div>\r\n <ax-text-box placeholder=\"Type here\" (textChange)=\"onTextChange($event)\" [(value)]=\"value\" *ngIf=\"operator!='is-not-empty' && operator!='is-empty'\">\r\n </ax-text-box>\r\n </div>\r\n</div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnNumberComponent }\r\n ]\r\n})\r\nexport class AXFilterColumnNumberComponent extends AXFilterColumnComponent {\r\n\r\n operator: string = 'equal';\r\n\r\n operators: any[] = [\r\n {\r\n title: 'is',\r\n value: 'equal'\r\n },\r\n {\r\n title: `isn't`,\r\n value: 'not-equal'\r\n },\r\n {\r\n title: 'less than',\r\n value: 'less-than'\r\n },\r\n {\r\n title: 'less than or equal',\r\n value: 'less-than-equal'\r\n },\r\n {\r\n title: 'greater than',\r\n value: 'greater-than'\r\n },\r\n {\r\n title: 'greater than or equal',\r\n value: 'greater-than-equal'\r\n },\r\n {\r\n title: 'is empty',\r\n value: 'is-empty'\r\n },\r\n {\r\n title: `isn't empty`,\r\n value: 'is-not-empty'\r\n }\r\n ];\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n private searchChangeObserver: any;\r\n onOperatorChange(e) {\r\n\r\n this.valueChange.emit();\r\n\r\n }\r\n onTextChange(e) {\r\n // TODO: Check this method work correctly\r\n if (!this.searchChangeObserver) {\r\n return new Observable(observer => {\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(500))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.valueChange.emit();\r\n });\r\n }\r\n this.searchChangeObserver.next(e);\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n return {\r\n condition: this.operator,\r\n field: this.field,\r\n dataType: 'number',\r\n value: this.value\r\n };\r\n }\r\n\r\n}\r\n","import { Component, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { AXCheckItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-filter-column-selection',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <ax-selection-list [items]=\"items\" (selectedItemsChange)=\"onSelectChange($event)\" [mode]=\"mode\" direction=\"vertical\" [(selectedItems)]=\"selectedItems\">\r\n </ax-selection-list>\r\n </div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnSelectionComponent }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXFilterColumnSelectionComponent extends AXFilterColumnComponent {\r\n\r\n\r\n selectedItems: any[] = [];\r\n\r\n @Input()\r\n items: AXCheckItem[] = [];\r\n\r\n @Input()\r\n mode = 'single';\r\n\r\n @Input()\r\n dataType: any = 'number';\r\n\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n const values = this.selectedItems.map(c => c.value);\r\n if (values.length === 0) {\r\n return null;\r\n\r\n }\r\n return {\r\n condition: this.mode === 'single' ? 'equal' : 'contains',\r\n field: this.field,\r\n dataType: this.dataType,\r\n value: this.mode === 'single' ? values[0] : values\r\n }\r\n }\r\n clear() {\r\n this.selectedItems = [];\r\n super.clear();\r\n }\r\n onSelectChange(e) {\r\n this.valueChange.emit();\r\n\r\n }\r\n\r\n setFilter(value: any, operator: string) {\r\n if (value instanceof Array) {\r\n this.selectedItems = this.items.filter(c => value.some(z => z === c.value));\r\n }\r\n else {\r\n this.selectedItems = [this.items.find(c => c.value === value)];\r\n }\r\n super.setFilter(value, operator);\r\n }\r\n}\r\n","import { Component,ChangeDetectorRef } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\n@Component({\r\n selector: 'ax-filter-column-string',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <div>\r\n <select (ngModelChange)=\"onOperatorChange($event)\" class=\"form-control form-control-sm\" [(ngModel)]=\"operator\">\r\n <option *ngFor=\"let o of operators\" value=\"{{o.value}}\">\r\n {{o.title}}\r\n </option>\r\n </select>\r\n </div>\r\n <div>\r\n <ax-text-box placeholder=\"Type here\" (textChange)=\"onTextChange($event)\" [(value)]=\"value\" *ngIf=\"operator!='is-not-empty' && operator!='is-empty'\">\r\n </ax-text-box>\r\n </div>\r\n</div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnStringComponent }\r\n ]\r\n})\r\nexport class AXFilterColumnStringComponent extends AXFilterColumnComponent {\r\n\r\n\r\n operator: string = 'contains';\r\n operators: any[] = [\r\n {\r\n title: 'is',\r\n value: 'equal'\r\n },\r\n {\r\n title: `isn't`,\r\n value: 'not-equal'\r\n },\r\n {\r\n title: 'contains',\r\n value: 'contains'\r\n },\r\n {\r\n title: 'not contains',\r\n value: 'not-contains'\r\n },\r\n {\r\n title: 'start with',\r\n value: 'start-with'\r\n },\r\n {\r\n title: 'end with',\r\n value: 'end-with'\r\n },\r\n {\r\n title: 'is empty',\r\n value: 'is-empty'\r\n },\r\n {\r\n title: `isn't empty`,\r\n value: 'is-not-empty'\r\n }\r\n ];\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n private searchChangeObserver: any;\r\n\r\n onOperatorChange(e) {\r\n\r\n this.valueChange.emit();\r\n\r\n }\r\n\r\n // TODO: Check this method work correctly\r\n onTextChange(e) {\r\n if (!this.searchChangeObserver) {\r\n return new Observable(observer => {\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(500))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.valueChange.emit();\r\n });\r\n }\r\n this.searchChangeObserver.next(e);\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n return {\r\n condition: this.operator,\r\n field: this.field,\r\n dataType: 'string',\r\n value: this.value\r\n }\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ViewChild, ElementRef, Input } from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-text-box',\r\n templateUrl: './textbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXTextBoxComponent }]\r\n})\r\nexport class AXTextBoxComponent extends AXBaseTextComponent {\r\n\r\n @Input()\r\n mask: any;\r\n\r\n @Input()\r\n type: 'text' | 'number' | 'tel' | 'url' | 'password' | 'search' = 'text';\r\n\r\n @Input()\r\n showMask: boolean = true;\r\n\r\n @Input()\r\n maxLength: number;\r\n\r\n @Input()\r\n maskGuid: boolean = false;\r\n\r\n @Input()\r\n maskPlaceholder: string = '_';\r\n\r\n @Input()\r\n maskKeepCharPositions: boolean = false;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n}\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-toast-wrapper',\r\n template: '',\r\n styleUrls: ['./toast-wrapper.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXToastWrapperComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { Component, OnInit, Input, ElementRef, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './toast-message.component.html',\r\n styleUrls: ['./toast-message.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXToastMessageComponent implements OnInit {\r\n constructor(private elRef: ElementRef) { }\r\n\r\n @Input() title: string = '';\r\n @Input() message: string;\r\n @Input() timeOut: number = 6000;\r\n @Input() closeable: boolean = false;\r\n\r\n @Input() type: 'info' | 'success' | 'warning' | 'error' = 'info';\r\n\r\n style: string = 'info';\r\n icon: string = '';\r\n toastWidth: number = 100;\r\n\r\n ngOnInit(): void {\r\n if (this.timeOut) {\r\n const interval = setInterval(() => {\r\n --this.toastWidth;\r\n if (this.toastWidth === 0) {\r\n clearInterval(interval);\r\n this.close();\r\n }\r\n }, this.timeOut / 100);\r\n }\r\n switch (this.type) {\r\n case 'success':\r\n this.style = 'success';\r\n break;\r\n case 'warning':\r\n this.style = 'warning';\r\n break;\r\n case 'error':\r\n this.style = 'error';\r\n break;\r\n default:\r\n this.style = 'info';\r\n break;\r\n }\r\n switch (this.type) {\r\n case 'success':\r\n this.icon = 'fas fa-check-circle';\r\n break;\r\n case 'warning':\r\n this.icon = 'fas fa-exclamation-triangle';\r\n break;\r\n case 'error':\r\n this.icon = 'fas fa-exclamation-circle';\r\n break;\r\n default:\r\n this.icon = 'fas fa-info-circle';\r\n break;\r\n }\r\n }\r\n close() {\r\n this.elRef.nativeElement.parentElement.removeChild(this.elRef.nativeElement);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AXRenderService } from '@acorex/core';\r\nimport { AXToastWrapperComponent } from './toast-wrapper/toast-wrapper.component';\r\nimport { AXToastMessageComponent } from './toast-message/toast-message.component';\r\n\r\nexport interface IToastOptions {\r\n timeOut?: number;\r\n title?: string;\r\n closeable?: boolean;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXToastService {\r\n\r\n constructor(private injectionService: AXRenderService) { }\r\n\r\n info(message: string, options?: IToastOptions) {\r\n this.show(message, 'info', options);\r\n }\r\n\r\n success(message: string, options?: IToastOptions) {\r\n this.show(message, 'success', options);\r\n }\r\n\r\n warning(message: string, options?: IToastOptions) {\r\n this.show(message, 'warning', options);\r\n }\r\n\r\n error(message: string, options?: IToastOptions) {\r\n this.show(message, 'error', options);\r\n }\r\n\r\n private show(\r\n message: string,\r\n type: 'success' | 'info' | 'error' | 'warning',\r\n options?: IToastOptions\r\n ) {\r\n const opt = Object.assign(\r\n {\r\n message,\r\n type\r\n },\r\n options\r\n );\r\n\r\n const wrapper = document.querySelector('ax-toast-wrapper');\r\n if (!wrapper) {\r\n const toastWrapper = this.injectionService.appendComponent(\r\n AXToastWrapperComponent\r\n );\r\n this.injectionService.appendComponent(\r\n AXToastMessageComponent,\r\n opt,\r\n toastWrapper.location.nativeElement\r\n );\r\n } else {\r\n this.injectionService.appendComponent(\r\n AXToastMessageComponent,\r\n opt,\r\n wrapper\r\n );\r\n }\r\n }\r\n}\r\n","import { Component, Input, ViewChild, ViewChildren, QueryList, ViewEncapsulation, ChangeDetectionStrategy, Output, EventEmitter, ChangeDetectorRef, ElementRef, ViewContainerRef } from '@angular/core';\r\nimport { AXFilterColumnGroup, AXFilterColumnComponent, AXFilterCondition, AXFilterPredefined } from '../filter.class';\r\nimport { AXMenuItem, AXHtmlUtil, AXKeyboardEvent } from '@acorex/core';\r\nimport { AXMenuComponent } from '../../menu/menu.component';\r\nimport { AXTextBoxComponent } from '../../textbox/textbox.component';\r\nimport { AXToastService } from '../../toast/toast.service';\r\nimport { AXValueEvent } from '../../base/events.class';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-filter-panel',\r\n templateUrl: './filter-panel.component.html',\r\n styleUrls: ['./filter-panel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXFilterPanelComponent {\r\n\r\n @ViewChild('panel', { static: true }) panel: ElementRef<HTMLDivElement>;\r\n @ViewChild('footer', { static: true }) footer: ElementRef<HTMLDivElement>;\r\n @ViewChild('savedList', { static: true }) savedList: ElementRef<HTMLDivElement>;\r\n @ViewChild('body', { static: true }) body: ElementRef<HTMLDivElement>;\r\n @ViewChild('menu', { static: false }) menu: AXMenuComponent;\r\n @ViewChild('tbxName', { static: true }) tbxName: AXTextBoxComponent;\r\n\r\n @ViewChildren(AXFilterColumnComponent) filters: QueryList<AXFilterColumnComponent>;\r\n\r\n @Input()\r\n groups: AXFilterColumnGroup[] = [];\r\n\r\n @Input()\r\n predefinedFilters: AXFilterPredefined[] = [];\r\n\r\n @Input()\r\n mode: 'click' | 'immediate' = 'click';\r\n\r\n saveItems: AXMenuItem[] = [\r\n {\r\n name: 'saveAs',\r\n text: 'Save',\r\n startIcon: 'fas fa-save',\r\n items: [\r\n {\r\n name: 'save',\r\n text: 'Save current'\r\n },\r\n {\r\n name: 'saveAs',\r\n text: 'Save as New'\r\n }\r\n ]\r\n },\r\n\r\n ];\r\n\r\n @Output()\r\n filterChange: EventEmitter<AXFilterCondition[]> = new EventEmitter<AXFilterCondition[]>();\r\n\r\n constructor(private cdr: ChangeDetectorRef, private toast: AXToastService) { }\r\n\r\n apply() {\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }\r\n\r\n public clear() {\r\n this.filters.forEach(e => {\r\n e.clear();\r\n });\r\n this.predefinedFilters.forEach(c => {\r\n (c as any).selected = false;\r\n });\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }\r\n\r\n onValueChange(e) {\r\n if (this.mode === 'immediate') {\r\n setTimeout(() => {\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }, 50);\r\n\r\n }\r\n }\r\n\r\n onCheckValueChange(v, e: AXValueEvent<boolean>) {\r\n\r\n\r\n if (!e.value && this.mode === 'immediate') {\r\n this.filters.forEach(c => {\r\n if (c.field === v.field) {\r\n c.clear();\r\n }\r\n })\r\n setTimeout(() => {\r\n this.filterChange.emit(this.value.filter(c => c.field !== v.field));\r\n this.updateMenu();\r\n }, 50);\r\n\r\n }\r\n }\r\n\r\n get value(): AXFilterCondition[] {\r\n const con: AXFilterCondition[] = [];\r\n if (this.filters) {\r\n this.filters.forEach(e => {\r\n\r\n if (e.active && e.condition && ((e.condition.value != null) || (e.condition.value == null && (e.condition.condition === 'is-empty' || e.condition.condition === 'is-not-empty')))) {\r\n con.push(e.condition);\r\n }\r\n });\r\n }\r\n return con;\r\n }\r\n\r\n\r\n\r\n public load(filters: AXFilterCondition[]): void {\r\n this.filters.forEach(e => {\r\n e.clear();\r\n });\r\n this.cancelSaveFilter();\r\n filters.forEach(f => {\r\n const col = this.filters.find(c => c.field === f.field);\r\n if (col) {\r\n col.setFilter(f.value, f.condition);\r\n }\r\n\r\n });\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const footer = this.panel.nativeElement.querySelector('.footer');\r\n if (!footer) {\r\n this.body.nativeElement.style.height = 'calc(100% - 110px)';\r\n }\r\n setTimeout(() => {\r\n if (this.predefinedFilters) {\r\n this.setFilterByIndex(0);\r\n }\r\n else {\r\n this.clear();\r\n }\r\n }, 100);\r\n this.applySize();\r\n }\r\n\r\n setFilterByIndex(index: number) {\r\n const f = this.predefinedFilters[index];\r\n if (f) {\r\n this.setFilterByName(f.name);\r\n }\r\n }\r\n\r\n setFilterByName(name: string) {\r\n const f = this.predefinedFilters.find(c => c.name === name);\r\n if (f) {\r\n this.load(f.value);\r\n this.predefinedFilters.forEach(c => {\r\n (c as any).selected = false;\r\n });\r\n (f as any).selected = true;\r\n }\r\n }\r\n\r\n\r\n\r\n removeFilter(f: AXFilterPredefined) {\r\n this.predefinedFilters = this.predefinedFilters.filter(c => c.name != f.name);\r\n this.updateMenu();\r\n }\r\n\r\n private get\r\n currentFilter(): AXFilterPredefined {\r\n return this.predefinedFilters.find(c => (c as any).selected);\r\n }\r\n\r\n\r\n private applySize() {\r\n let h = 0;\r\n h += this.footer.nativeElement.getBoundingClientRect().height;\r\n h += this.savedList.nativeElement.getBoundingClientRect().height;\r\n h += 10;\r\n this.body.nativeElement.style.height = `calc(100% - ${h}px)`;\r\n }\r\n\r\n // SAVE FILTERS\r\n\r\n private updateMenu(): void {\r\n setTimeout(() => {\r\n this.saveItems[0].items[0].visible = this.currentFilter != null;\r\n this.saveItems[0].items[1].visible = this.currentFilter != null;\r\n // this.menu.update();\r\n }, 100);\r\n }\r\n\r\n applySaveFilter() {\r\n const f = this.currentFilter;\r\n if (f) {\r\n // TODO\r\n // this.tbxName.validate().then(c => {\r\n // if (c.result) {\r\n // f.value = this.value;\r\n // (f as any).isInEdit = false;\r\n // (f as any).isNew = false;\r\n // f.title = this.tbxName.value;\r\n // this.toast.success('Filter saved successfully.');\r\n // this.updateMenu();\r\n // }\r\n // });\r\n }\r\n }\r\n\r\n cancelSaveFilter() {\r\n const f = this.currentFilter;\r\n if (f) {\r\n if ((f as any).isNew) {\r\n this.removeFilter(f);\r\n }\r\n else {\r\n (f as any).isInEdit = false;\r\n }\r\n }\r\n this.updateMenu();\r\n }\r\n\r\n onMenuItemClick(e: AXMenuItem) {\r\n if (e.name === 'save') {\r\n this.applySaveFilter();\r\n }\r\n if (e.name === 'saveAs') {\r\n const f = {\r\n name: AXHtmlUtil.getUID(),\r\n title: '',\r\n value: this.value\r\n };\r\n this.predefinedFilters.push(f);\r\n (f as any).isNew = true;\r\n this.setFilterByName(f.name);\r\n this.handleRenameClick(f)\r\n }\r\n }\r\n\r\n tbxNameOnKey(e: AXKeyboardEvent) {\r\n if (e.type === 'keyup' && e.key === 'Enter') {\r\n this.applySaveFilter();\r\n }\r\n if (e.type === 'keyup' && e.key === 'Escape') {\r\n this.cancelSaveFilter();\r\n }\r\n }\r\n\r\n handleRenameClick(f: AXFilterPredefined) {\r\n (f as any).isInEdit = true;\r\n this.cdr.detectChanges();\r\n setTimeout(() => {\r\n this.tbxName.value = f.title;\r\n this.tbxName.focus();\r\n }, 50);\r\n }\r\n}\r\n","import { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { AXHtmlUtil, AXMenuItem } from '@acorex/core';\r\nimport { AXFilterPanelComponent } from '../filter-panel/filter-panel.component';\r\nimport { AXToolbarItem } from '../../toolbar/toolbar-item';\r\nimport { AXToolbarMenuComponent } from '../../toolbar/menu/toolbar-menu.component';\r\nimport { AXMenuComponent } from '../../menu/menu.component';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-filter-view',\r\n templateUrl: './filter-toolbar.component.html',\r\n styleUrls: ['./filter-toolbar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarFilterViewComponent }]\r\n})\r\nexport class AXToolbarFilterViewComponent {\r\n constructor() { }\r\n _uid: string = AXHtmlUtil.getUID();\r\n\r\n @ViewChild('menu', { static: true }) menu: AXToolbarMenuComponent;\r\n @ViewChild('contextMenu', { static: true }) contextMenu: AXMenuComponent;\r\n\r\n @Input()\r\n filterPanel: AXFilterPanelComponent;\r\n\r\n contextMenuItems: AXMenuItem[] = [\r\n // {\r\n // name: 'addFolder',\r\n // startIcon: 'fas fa-folder',\r\n // text: 'New Folder',\r\n // },\r\n {\r\n name: 'remove',\r\n startIcon: 'fas fa-trash',\r\n text: 'Delete',\r\n },\r\n ];\r\n\r\n\r\n\r\n menuItems: AXMenuItem[] = [\r\n {\r\n name: 'root',\r\n startIcon: 'fas fa-filter',\r\n text: 'Select All',\r\n items: [\r\n {\r\n name: 'selectAll',\r\n style: 'f',\r\n text: 'Select All',\r\n },\r\n // {\r\n // split: true,\r\n // name: 'addFolder',\r\n // startIcon: 'fas fa-folder',\r\n // text: 'New Folder',\r\n // },\r\n {\r\n divider: true,\r\n name: 'save',\r\n startIcon: 'fas fa-save',\r\n text: 'Save'\r\n },\r\n {\r\n divider: true,\r\n name: 'saveAs',\r\n startIcon: 'fas fa-save',\r\n text: 'Save As...'\r\n }\r\n ]\r\n }\r\n\r\n ];\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.selectAll();\r\n this.addPredefinedList();\r\n }, 100);\r\n }\r\n\r\n addPredefinedList() {\r\n this.filterPanel.predefinedFilters.forEach(c => {\r\n const item = {\r\n name: c.name,\r\n text: c.title,\r\n type: 'f',\r\n startIcon: 'fas',\r\n data: c.value,\r\n style: this._uid,\r\n uid: AXHtmlUtil.getUID()\r\n };\r\n this.root.items.splice(1, 0, item);\r\n });\r\n this.update();\r\n }\r\n\r\n public selectAll(): void {\r\n this.setCurrent(this.root.items[0]);\r\n this.filterPanel.clear();\r\n this.update();\r\n this.menu.close();\r\n // this.contextMenu.close();\r\n }\r\n\r\n itemClick(e: AXMenuItem) {\r\n\r\n if (e.style === 'f') {\r\n if (e.name === 'selectAll') {\r\n this.selectAll();\r\n }\r\n else {\r\n this.setCurrent(e);\r\n this.filterPanel.load(e.data);\r\n }\r\n }\r\n else {\r\n if (e.name === 'saveAs') {\r\n const name = prompt('Please enter the name;');\r\n if (name) {\r\n const item = {\r\n text: name,\r\n type: 'f',\r\n style: this._uid,\r\n startIcon: 'fas',\r\n data: this.filterPanel.value,\r\n uid: AXHtmlUtil.getUID()\r\n };\r\n this.root.items.splice(1, 0, item);\r\n this.setCurrent(item);\r\n }\r\n\r\n }\r\n if (e.name === 'save') {\r\n const selected = this.findSelected();\r\n if (selected) {\r\n selected.data = this.filterPanel.value;\r\n }\r\n }\r\n }\r\n this.update();\r\n }\r\n\r\n private findSelected(): AXMenuItem {\r\n return this.root.items.find(c => c.selected);\r\n }\r\n\r\n private get root(): AXMenuItem {\r\n return this.menuItems[0];\r\n }\r\n\r\n public update(): void {\r\n this.menu.update();\r\n setTimeout(() => {\r\n // this.contextMenu.update();\r\n }, 100);\r\n\r\n }\r\n\r\n private setCurrent(e: AXMenuItem) {\r\n this.root.text = e.text;\r\n this.root.items.filter(c => c.style === 'f').forEach(c => {\r\n c.selected = false;\r\n c.startIcon = 'fas';\r\n });\r\n e.selected = true;\r\n e.startIcon = 'fas fa-check';\r\n this.root.items.find(c => c.name === 'save').visible = e.name !== 'selectAll';\r\n }\r\n\r\n onCtxClick(e: AXMenuItem) {\r\n const target = this.contextMenu.currentTarget as HTMLElement;\r\n const menuId = target.getAttribute('data-uid');\r\n if (e.name === 'remove' && menuId) {\r\n this.root.items = this.root.items.filter(c => c.uid !== menuId);\r\n this.selectAll();\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ContentChild,\r\n TemplateRef,\r\n} from \"@angular/core\";\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n animate,\r\n transition,\r\n} from \"@angular/animations\";\r\nimport { AXBaseSizableComponent, AXElementSize } from \"../base/element.class\";\r\n\r\n@Component({\r\n selector: \"ax-panel-box\",\r\n templateUrl: \"./panel-box.component.html\",\r\n styleUrls: [\"./panel-box.component.scss\"],\r\n animations: [\r\n trigger(\"visibilityChanged\", [\r\n state(\r\n \"shown\",\r\n style({\r\n height: \"*\",\r\n opacity: 1,\r\n })\r\n ),\r\n state(\r\n \"hidden\",\r\n style({\r\n height: \"0px\",\r\n opacity: 0,\r\n padding: 0,\r\n })\r\n ),\r\n transition(\"Void => *\", animate(\"0ms\")),\r\n transition(\"shown => hidden\", animate(\"200ms\")),\r\n transition(\"hidden => shown\", animate(\"200ms\")),\r\n ]),\r\n ],\r\n})\r\nexport class AXPanelBoxComponent implements AXBaseSizableComponent {\r\n @ContentChild(\"header\", { static: true })\r\n headerTemplate: TemplateRef<any>;\r\n\r\n @Input() size: AXElementSize = \"md\";\r\n\r\n @Input() type: string = \"\";\r\n\r\n // @Input()\r\n // caption: string = 'Caption';\r\n\r\n private _caption: string = \"caption\";\r\n @Input()\r\n get caption(): string {\r\n return this._caption;\r\n }\r\n set caption(val: string) {\r\n this._caption = val === \"\" ? \"caption\" : val;\r\n }\r\n\r\n @Output()\r\n collapsedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n private _collapsed: boolean = false;\r\n\r\n @Input()\r\n get collapsed(): boolean {\r\n return this._collapsed;\r\n }\r\n set collapsed(val: boolean) {\r\n if (val !== this._collapsed) {\r\n this._collapsed = val;\r\n this.collapsedChange.emit(this._collapsed);\r\n }\r\n }\r\n\r\n @Input() allowCollapse: boolean = true;\r\n\r\n toggle() {\r\n if (this.allowCollapse) {\r\n this.collapsed = !this.collapsed;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPanelBoxComponent } from './panel-box.component';\r\n@NgModule({\r\n declarations: [AXPanelBoxComponent],\r\n imports: [CommonModule],\r\n exports: [AXPanelBoxComponent],\r\n providers: []\r\n})\r\nexport class AXPanelBoxModule {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ViewChild,\r\n Input,\r\n ElementRef,\r\n AfterViewInit,\r\n HostListener,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef, ViewContainerRef, TemplateRef, OnDestroy, DebugElement\r\n} from '@angular/core';\r\nimport { AXBaseDropdownComponent } from '../base/element.class';\r\nimport { AXHtmlEvent } from '../base/events.class';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { AXConfig } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-drop-down',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display:contents;' }\r\n})\r\nexport class AXDropdownComponent extends AXBaseDropdownComponent implements AfterViewInit, OnDestroy {\r\n @ViewChild('baseTemplate') baseTemplate: TemplateRef<any>;\r\n @ViewChild('content', { static: false }) content: ElementRef<HTMLDivElement>;\r\n @ViewChild('endButtons', { static: false }) endButtons: ElementRef<HTMLDivElement>;\r\n @ViewChild('el', { static: true }) dropdownEL: ElementRef<HTMLDivElement>;\r\n\r\n @Input()\r\n rtl: boolean = AXConfig.get('layout.rtl');\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n loading: boolean = false;\r\n\r\n @Output()\r\n dropdownToggle: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onButtonClick: EventEmitter<AXHtmlEvent<MouseEvent>> = new EventEmitter<AXHtmlEvent<MouseEvent>>();\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeydownHandler(e: KeyboardEvent) {\r\n if (!this.disabled && e.key === 'Enter' && e.type === 'keydown') {\r\n if (!this.readonly) {\r\n this.toggle();\r\n // this.dropdownToggle.emit({ mode: 'enter' });\r\n }\r\n }\r\n if (e.key === 'Escape') {\r\n if (this.isOpen) {\r\n this.close();\r\n e.stopPropagation();\r\n }\r\n }\r\n }\r\n\r\n\r\n dropdownWidth: number;\r\n\r\n private overlayRef: OverlayRef;\r\n private templatePortal: TemplatePortal;\r\n\r\n constructor(private cdr: ChangeDetectorRef,\r\n private ref: ElementRef<HTMLDivElement>,\r\n private overlay: Overlay,\r\n private viewContainerRef: ViewContainerRef\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n setTimeout(() => {\r\n this.ref.nativeElement.classList.add(this.rtl ? 'rtl' : 'ltr');\r\n this.dropdownEL.nativeElement.classList.add(this.rtl ? 'rtl' : 'ltr')\r\n }, 5);\r\n\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n\r\n if (this.fitParent === true) {\r\n this.dropdownWidth = this.dropdownEL.nativeElement.offsetWidth;\r\n } else {\r\n this.dropdownWidth = null;\r\n }\r\n\r\n setTimeout(() => {\r\n if (this.endButtons && this.endButtons.nativeElement.childNodes.length !== 0) {\r\n this.content.nativeElement.style.paddingInlineEnd = this.endButtons.nativeElement.clientWidth + 'px';\r\n }\r\n }, 5);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.overlayRef?.detach();\r\n this.overlayRef?.dispose();\r\n }\r\n\r\n handleArrowClick(e: AXHtmlEvent<MouseEvent>) {\r\n setTimeout(() => {\r\n this.toggle();\r\n }, 0);\r\n }\r\n\r\n toggle() {\r\n if (this.disabled !== true) {\r\n this.isOpen ? this.close() : this.open();\r\n }\r\n }\r\n\r\n close() {\r\n if (!this.isOpen) {\r\n return;\r\n }\r\n this.overlayRef?.detach();\r\n this.dropdownToggle.emit({ mode: 'close' });\r\n }\r\n\r\n open() {\r\n if (this.isOpen) {\r\n return;\r\n }\r\n this.ensureOverlayCreated();\r\n this.overlayRef.attach(this.templatePortal);\r\n this.dropdownToggle.emit({ mode: 'open' });\r\n }\r\n\r\n private ensureOverlayCreated() {\r\n if (!this.overlayRef) {\r\n const targetEl = document.querySelector<HTMLElement>('#' + this.uid);\r\n const positionStrategy = this.overlay.position()\r\n .flexibleConnectedTo(targetEl)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'bottom'\r\n }\r\n ])\r\n .withPush(false);\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n //width: this.dropdownEL.nativeElement.clientWidth,\r\n scrollStrategy: this.overlay.scrollStrategies.reposition({\r\n autoClose: true\r\n }),\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop'\r\n });\r\n this.overlayRef.setDirection(this.rtl ? 'rtl' : 'ltr');\r\n this.overlayRef.backdropClick().subscribe(() => this.close());\r\n }\r\n if (!this.templatePortal) {\r\n this.templatePortal = new TemplatePortal(this.baseTemplate, this.viewContainerRef);\r\n }\r\n }\r\n\r\n get isOpen(): boolean {\r\n return this.overlayRef ? this.overlayRef.hasAttached() : false;\r\n }\r\n\r\n\r\n focus() { }\r\n}\r\n","import {\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n Component,\r\n ElementRef,\r\n ContentChild,\r\n AfterViewInit,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXValidatableComponent, AXBaseSizableComponent, AXElementSize, AXBaseValueComponent } from '../base/element.class';\r\nimport { AXCalendarType, AXDateTime, AXConfig } from '@acorex/core';\r\nimport { AXValueEvent } from '../base/events.class';\r\nimport { AXValidation } from '../validation/validation.component';\r\n\r\nexport class AXDataPickerChangeEvent extends AXValueEvent<Date> {\r\n isUserChange: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-date-picker',\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXDatePickerComponent }],\r\n host: { style: 'display: contents;' }\r\n})\r\nexport class AXDatePickerComponent extends AXValidatableComponent implements AXBaseSizableComponent {\r\n @ViewChild('dropdown', { static: true })\r\n dropdown: AXDropdownComponent;\r\n\r\n @ViewChild('input', { static: true })\r\n input: AXTextBoxComponent;\r\n\r\n @Input()\r\n dayStyle = [];\r\n\r\n // mmddyyyy: any = [/[0-1]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/];\r\n yyyyMMdd: any = [/[1-2]/, /[0-9]/, /[0-9]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[0-3]/, /[0-9]/];\r\n ddMMyyyy: any = [/[0-3]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[1-9]/, /[0-9]/, /[0-9]/, /[0-9]/];\r\n yyyyddMM: any = [/[1-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '-', /[0-3]/, /[0-9]/, '-', /[0-1]/, /[0-9]/];\r\n // yyyyMMdd1: any = [/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/];\r\n // ddMMyyyy2: any = [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/];\r\n // yyyyddMM3: any = [/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/];\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n @Input() placeholder: string = '';\r\n\r\n @Input()\r\n min: Date;\r\n\r\n @Input()\r\n max: Date;\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n allowClear: boolean = false;\r\n\r\n @Input()\r\n textAlign: 'right' | 'left' | null = null;\r\n\r\n @Input()\r\n showToday: boolean = false;\r\n\r\n @Input()\r\n selectableHoliday: boolean = true;\r\n\r\n @Input()\r\n dateType: any;\r\n\r\n @Input()\r\n showTodayButton: boolean = true;\r\n\r\n @Input()\r\n openByClick: boolean = false;\r\n\r\n cursorPosition: number = 0;\r\n\r\n model: any = null;\r\n text: string;\r\n\r\n _renderPicker: boolean = false;\r\n\r\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) {\r\n super();\r\n // set defaults\r\n if (AXConfig.get('dateTime.type')) {\r\n this.type = AXConfig.get('dateTime.type');\r\n }\r\n }\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Output()\r\n typeChange: EventEmitter<AXCalendarType> = new EventEmitter<AXCalendarType>();\r\n\r\n private _type: AXCalendarType = 'gregorian';\r\n\r\n @Input()\r\n public get type(): AXCalendarType {\r\n return this._type;\r\n }\r\n\r\n public set type(v: AXCalendarType) {\r\n if (v != this._type) {\r\n this._type = v;\r\n if (this._value) {\r\n this.value = this._value.date;\r\n }\r\n this._setDateType();\r\n this.typeChange.emit(v);\r\n }\r\n }\r\n\r\n selectToday() {\r\n this.value = new Date();\r\n }\r\n\r\n focus(): void {\r\n this.dropdown.focus();\r\n }\r\n\r\n convertMaskToDate(text: string) {\r\n if (this.type == 'jalali') {\r\n var d = new AXDateTime().convertStringToGregorian(text, 'YYYY/M/D');\r\n } else {\r\n }\r\n\r\n return d;\r\n }\r\n\r\n convertMask(date: string) {\r\n let y;\r\n let m;\r\n let d;\r\n switch (this.dateType.mask) {\r\n case this.yyyyMMdd:\r\n y = date.slice(0, 4);\r\n m = date.slice(5, 7);\r\n d = date.slice(8, 10);\r\n break;\r\n case this.ddMMyyyy:\r\n y = date.slice(6, 10);\r\n m = date.slice(3, 5);\r\n d = date.slice(0, 2);\r\n break;\r\n case this.yyyyddMM:\r\n y = date.slice(0, 4);\r\n m = date.slice(8, 10);\r\n d = date.slice(5, 7);\r\n break;\r\n }\r\n\r\n return { year: y, monnth: m, day: d };\r\n }\r\n\r\n textChange(e) {\r\n this.text = e.value;\r\n if (this.text && this.text.indexOf('_') === -1 && this.text.length == 10) {\r\n this.userChange = e.isUserChange;\r\n const date = this.convertMask(this.text);\r\n this.value = this.convertMaskToDate(date.year + '-' + date.monnth + '-' + date.day);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this._setDateType();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.text = this._value?.toString();\r\n if (this.showToday && !this.value) {\r\n this.selectToday();\r\n }\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n }\r\n\r\n clear() {\r\n this.userChange = true;\r\n this.value = null;\r\n }\r\n\r\n userChange: boolean = false;\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXDataPickerChangeEvent> = new EventEmitter<AXDataPickerChangeEvent>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\r\n private _value: AXDateTime;\r\n @Input()\r\n public get value(): Date {\r\n return this._value?.date;\r\n }\r\n public set value(v: Date) {\r\n this.validate();\r\n const oldValue = this._value;\r\n const old = this.value;\r\n\r\n if (v) {\r\n this._value = new AXDateTime(v, this.type);\r\n } else {\r\n this._value = null;\r\n }\r\n let unValidDate = false;\r\n if (this.max || this.min) {\r\n unValidDate = this.isInMInMaxRange(AXDateTime.convert(v));\r\n }\r\n\r\n if (!unValidDate) {\r\n if ((!v && oldValue) || (this._value && !this._value.equal(oldValue, 'day'))) {\r\n this.text = this._value?.toString();\r\n setTimeout(() => {\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n oldValue: old,\r\n value: v,\r\n isUserChange: this.userChange\r\n });\r\n }, 100);\r\n }\r\n }\r\n this.userChange = false;\r\n }\r\n\r\n private _setDateType() {\r\n switch (this.dateType) {\r\n case 'yyyyMMdd':\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.yyyyMMdd,\r\n keepCharPositions: true\r\n };\r\n break;\r\n case 'ddMMyyyy':\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.ddMMyyyy,\r\n keepCharPositions: true\r\n };\r\n break;\r\n case 'yyyyddMM':\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.yyyyddMM,\r\n keepCharPositions: true\r\n };\r\n break;\r\n\r\n default:\r\n if (this.type == 'gregorian') {\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.ddMMyyyy,\r\n keepCharPositions: true\r\n };\r\n } else if (this.type == 'jalali') {\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.yyyyMMdd,\r\n keepCharPositions: true\r\n };\r\n }\r\n break;\r\n }\r\n }\r\n\r\n isInMInMaxRange(d) {\r\n let r = false;\r\n if (d !== undefined) {\r\n if (this.min && !this.max) {\r\n r = d.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1;\r\n }\r\n if (this.max && !this.min) {\r\n r = d.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1;\r\n }\r\n if (this.min && this.max) {\r\n r =\r\n d.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1 ||\r\n d.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1;\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n onDateChange(e) {\r\n this.userChange = true;\r\n this.dropdown.close();\r\n\r\n //this.clearValidationStyle(this.ref.nativeElement);\r\n }\r\n\r\n onClick(e) {\r\n this.userChange = true;\r\n this.dropdown.close();\r\n }\r\n\r\n onStartfocus() {\r\n if (this.text == undefined || this.text == null || this.text == '') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n }\r\n\r\n handleInputFocus() {\r\n if (this.openByClick) {\r\n this._renderPicker = true;\r\n this.dropdown.open();\r\n } else {\r\n this.onStartfocus();\r\n }\r\n\r\n // this.input.input.nativeElement.focus();\r\n }\r\n handleInputBlur() {\r\n if (this.text && this.text.indexOf('_') != -1) {\r\n this.text = '';\r\n this.value = null;\r\n }\r\n }\r\n\r\n handleButtonClick() {\r\n this._renderPicker = true;\r\n setTimeout(() => {\r\n this.dropdown.toggle();\r\n });\r\n }\r\n\r\n handleKeyPress(e: KeyboardEvent) {\r\n if (e.type == 'keydown' || e.type == 'keypress' || e.type == 'keyup') {\r\n if (e.key === 'Delete') {\r\n e.preventDefault();\r\n }\r\n if (e.key === 'Backspace') {\r\n }\r\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\r\n if (this.input.input.nativeElement.selectionStart || this.input.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.input.nativeElement.selectionStart;\r\n }\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n const inputChar = String.fromCharCode(e.charCode);\r\n if (this.text != undefined) {\r\n const ind1 = this.text.charAt(0);\r\n const ind2 = this.text.charAt(1);\r\n const ind3 = this.text.charAt(2);\r\n const ind4 = this.text.charAt(3);\r\n const ind5 = this.text.charAt(4);\r\n const ind6 = this.text.charAt(5);\r\n const ind7 = this.text.charAt(6);\r\n const ind8 = this.text.charAt(7);\r\n const ind9 = this.text.charAt(8);\r\n const ind10 = this.text.charAt(9);\r\n switch (this.dateType.mask) {\r\n case this.yyyyMMdd:\r\n if (e.type == 'keypress') {\r\n this.handleClick();\r\n if (\r\n (ind6 == '1' && ind7 == '_' && inputChar >= '3') ||\r\n (((ind6 == '0' && ind7 == '_') || (ind9 == '0' && ind10 == '_')) && inputChar == '0')\r\n ) {\r\n e.preventDefault();\r\n } else if (ind9 == '3' && ind10 == '_') {\r\n if (ind6 + ind7 <= '06' && inputChar >= '2') {\r\n e.preventDefault();\r\n } else if (ind6 + ind7 > '06' && inputChar >= '1') {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n if (this.text.indexOf('_') === -1 && this.text !== '') {\r\n if (e.type === 'keydown') {\r\n if (e.key === 'ArrowUp') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) + 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n if (this.cursorPosition >= 5 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) < 12) {\r\n if (Number(ind6 + ind7) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '01' + ind8 + ind9 + ind10;\r\n }\r\n }\r\n if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) < 31) {\r\n if (Number(ind9 + ind10) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) + 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) + 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '01';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // e.preventDefault();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n // e.preventDefault();\r\n } else if (e.key === 'ArrowDown') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) - 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else if (this.cursorPosition > 4 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) > 1) {\r\n if (Number(ind6 + ind7) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '12' + ind8 + ind9 + ind10;\r\n }\r\n } else if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) > 1) {\r\n if (Number(ind9 + ind10) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) - 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) - 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '31';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.type === 'keyup') {\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.setCaret();\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n break;\r\n case this.ddMMyyyy:\r\n if (e.type === 'keypress') {\r\n this.handleClick();\r\n if (\r\n (ind4 == '1' && ind5 == '_' && inputChar >= '3') ||\r\n (((ind1 == '0' && ind2 == '_') || (ind4 == '0' && ind5 == '_')) && inputChar == '0')\r\n ) {\r\n e.preventDefault();\r\n } else {\r\n if (ind1 == '3' && ind2 == '_' && inputChar >= '2') {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n if (this.text.indexOf('_') === -1 && this.text !== '') {\r\n if (e.type === 'keydown') {\r\n if (e.key === 'ArrowUp') {\r\n if (this.cursorPosition >= 6) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + String(Number(ind7 + ind8 + ind9 + ind10) + 1);\r\n }\r\n if (this.cursorPosition > 2 && this.cursorPosition <= 5) {\r\n if (Number(ind4 + ind5) < 12) {\r\n if (Number(ind4 + ind5) < 9) {\r\n this.text = ind1 + ind2 + ind3 + '0' + String(Number(ind4 + ind5) + 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + String(Number(ind4 + ind5) + 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + '01' + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n }\r\n if (this.cursorPosition <= 2) {\r\n if (Number(ind1 + ind2) < 31) {\r\n if (Number(ind1 + ind2) < 9) {\r\n this.text = '0' + String(Number(ind1 + ind2) + 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = String(Number(ind1 + ind2) + 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = '01' + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n } else if (e.key === 'ArrowDown') {\r\n if (this.cursorPosition >= 6) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + String(Number(ind7 + ind8 + ind9 + ind10) - 1);\r\n } else if (this.cursorPosition > 2 && this.cursorPosition <= 5) {\r\n if (Number(ind4 + ind5) > 1) {\r\n if (Number(ind4 + ind5) < 11) {\r\n this.text = ind1 + ind2 + ind3 + '0' + String(Number(ind4 + ind5) - 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + String(Number(ind4 + ind5) - 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + '12' + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else if (this.cursorPosition <= 2) {\r\n if (Number(ind1 + ind2) > 1) {\r\n if (Number(ind1 + ind2) < 11) {\r\n this.text = '0' + String(Number(ind1 + ind2) - 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = String(Number(ind1 + ind2) - 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = '31' + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.type === 'keyup') {\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.setCaret();\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n break;\r\n\r\n case this.yyyyddMM:\r\n if (e.type === 'keypress') {\r\n if (\r\n (ind9 === '1' && ind10 == '_' && inputChar >= '3') ||\r\n (((ind6 == '0' && ind7 == '_') || (ind9 == '0' && ind10)) && inputChar == '0')\r\n ) {\r\n e.preventDefault();\r\n } else if (ind6 == '3' && ind7 == '_' && inputChar >= '2') {\r\n e.preventDefault();\r\n }\r\n setTimeout(() => {\r\n this.handleClick();\r\n }, 0);\r\n }\r\n if (this.text.indexOf('_') === -1 && this.text !== '') {\r\n if (e.type === 'keydown') {\r\n if (e.key === 'ArrowUp') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) + 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n if (this.cursorPosition > 4 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) < 31) {\r\n if (Number(ind6 + ind7) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '01' + ind8 + ind9 + ind10;\r\n }\r\n }\r\n if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) < 12) {\r\n if (Number(ind9 + ind10) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) + 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) + 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '01';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n } else if (e.key === 'ArrowDown') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) - 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else if (this.cursorPosition > 4 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) > 1) {\r\n if (Number(ind6 + ind7) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '31' + ind8 + ind9 + ind10;\r\n }\r\n } else if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) > 1) {\r\n if (Number(ind9 + ind10) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) - 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) - 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '12';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.type === 'keyup') {\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.setCaret();\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n handleClick() {\r\n if (this.input.input.nativeElement.selectionStart || this.input.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n setCaretPosition(ctrl, pos) {\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n }\r\n }\r\n\r\n setCaret() {\r\n this.setCaretPosition(this.input.input.nativeElement, this.cursorPosition);\r\n }\r\n}\r\n","import {\r\n Component, Input, ChangeDetectorRef, ChangeDetectionStrategy,\r\n ViewEncapsulation, ContentChild, ViewChild, ElementRef\r\n} from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXElementSize, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-form-group',\r\n templateUrl: './form-group.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' }\r\n})\r\nexport class AXFormGroupComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @ViewChild('div')\r\n div: ElementRef\r\n\r\n @ContentChild(AXValidatableComponent)\r\n private component: AXValidatableComponent;\r\n\r\n required: boolean = false;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.required = this.component?.validation?.rules?.some(c => c.type === 'required');\r\n if (this.required) {\r\n this.div.nativeElement.classList.add('required-state')\r\n\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXFormGroupComponent } from './form-group.component';\r\n\r\nconst COMPONENT = [AXFormGroupComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXFormGroupModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTextBoxComponent } from './textbox.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\nimport { FormsModule } from '@angular/forms';\r\nconst COMPONENT = [AXTextBoxComponent];\r\nconst MODULES = [CommonModule, AXButtonModule, TextMaskModule, FormsModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: []\r\n})\r\nexport class AXTextBoxModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDropdownComponent } from './dropdown.component';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXPopoverModule } from '../popover/popover.module';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\nconst COMPONENT = [AXDropdownComponent];\r\nconst MODULES = [CommonModule, AXFormGroupModule, AXTextBoxModule, AXButtonModule, AXPopoverModule, OverlayModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXDropdownModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXDatePickerComponent } from './date-picker.component';\r\nimport { AXDropdownModule } from '../dropdown/dropdown.module';\r\nimport { AXCalendarBoxModule } from '../calendar/calendar-box/calendar-box.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\n\r\n@NgModule({\r\n declarations: [AXDatePickerComponent],\r\n imports: [CommonModule, FormsModule, AXDropdownModule, AXCalendarBoxModule, AXButtonModule, AXTextBoxModule, TextMaskModule, FormsModule],\r\n exports: [AXDatePickerComponent],\r\n providers: []\r\n})\r\nexport class AXDatePickerModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToastService } from './toast.service';\r\nimport { AXToastWrapperComponent } from './toast-wrapper/toast-wrapper.component';\r\nimport { AXToastMessageComponent } from './toast-message/toast-message.component';\r\n@NgModule({\r\n declarations: [AXToastWrapperComponent, AXToastMessageComponent],\r\n imports: [CommonModule],\r\n exports: [AXToastWrapperComponent],\r\n entryComponents: [AXToastWrapperComponent, AXToastMessageComponent],\r\n providers: [AXToastService]\r\n})\r\nexport class AXToastModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSelectionListComponent } from './selection-list.component';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [AXSelectionListComponent],\r\n imports: [CommonModule, FormsModule, AXCheckBoxModule],\r\n exports: [AXSelectionListComponent],\r\n providers: []\r\n})\r\nexport class AXSelectionListModule { }\r\n","import {\r\n Component,\r\n OnInit,\r\n QueryList,\r\n ContentChildren,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ElementRef,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { AXValidationResult } from './validation.class';\r\nimport { AXValidatableComponent } from '../base/element.class';\r\nimport { AXBaseEvent } from '../base/events.class';\r\n@Component({\r\n selector: 'ax-validation-form',\r\n template: '<ng-content></ng-content>'\r\n})\r\nexport class AXValidationFormComponent {\r\n\r\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) { }\r\n\r\n\r\n private widgets: AXValidatableComponent[] = [];\r\n\r\n\r\n @ContentChildren(AXValidatableComponent, { descendants: true })\r\n private widgetsQuery: QueryList<AXValidatableComponent>;\r\n\r\n @Input()\r\n validateOn: 'blur' | 'change' | 'submit' = 'submit';\r\n\r\n @Output()\r\n onInit: EventEmitter<AXBaseEvent> = new EventEmitter<AXBaseEvent>();\r\n\r\n\r\n ngAfterViewInit() {\r\n\r\n this.onInit.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n\r\n validate(): Promise<AXValidationResult> {\r\n this.widgets.push(...this.widgetsQuery.toArray().filter(c => !this.widgets.includes(c)));\r\n //\r\n this.widgets.forEach(w => {\r\n if (w.validation && w.validation.validateOn == null) {\r\n w.validation.validateOn = this.validateOn;\r\n }\r\n });\r\n\r\n return new Promise<AXValidationResult>(resolve => {\r\n if (!this.widgets || this.widgets.length === 0) {\r\n return Promise.resolve({ result: true });\r\n }\r\n Promise.all(this.widgets.map((c) => c.validate())).then((rules: any) => {\r\n const failed = rules.filter((c: any) => !c.result);\r\n if (failed.length) {\r\n resolve({\r\n result: false,\r\n items: failed\r\n });\r\n }\r\n else {\r\n resolve({ result: true });\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n addWidget(widget: AXValidatableComponent) {\r\n this.widgets.push(widget);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXValidationFormComponent } from './validation-form.component';\r\nimport { AXValidationComponent } from './validation.component';\r\nimport { AXValidationRuleComponent, AXValidationRules } from './validation-rule.widget';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXValidationFormComponent, AXValidationComponent, AXValidationRuleComponent],\r\n imports: [CommonModule],\r\n exports: [AXValidationFormComponent, AXValidationComponent, AXValidationRuleComponent],\r\n providers: []\r\n})\r\nexport class AXValidationModule {\r\n constructor() {\r\n AXValidationRules.addRule('email', {\r\n message: AXTranslator.get('validation.messages.email'),\r\n type: 'regex',\r\n value: /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/\r\n })\r\n AXValidationRules.addRule('phone', {\r\n message: AXTranslator.get('validation.messages.phone'),\r\n type: 'regex',\r\n value: /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/\r\n })\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXFilterPanelComponent } from './filter-panel/filter-panel.component';\r\nimport { AXFilterColumnStringComponent } from './columns/filter-column-string.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXFilterColumnSelectionComponent } from './columns/filter-column-selection.component';\r\nimport { AXFilterColumnDateComponent } from './columns/filter-column-date.component';\r\nimport { AXFilterColumnNumberComponent } from './columns/filter-column-number.component';\r\nimport { AXToolbarFilterViewComponent } from './toolbar/filter-toolbar.component';\r\nimport { AXPanelBoxModule } from '../panel-box/panel-box.module';\r\nimport { AXDatePickerModule } from '../date-picker/date-picker.module';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXToastModule } from '../toast/toast.module';\r\nimport { AXToolbarModule } from '../toolbar/toolbar.module';\r\nimport { AXMenuModule } from '../menu/menu.module';\r\nimport { AXSelectionListModule } from '../selection-list/selection-list.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXValidationModule } from '../validation/validation.module';\r\n\r\n\r\n\r\n\r\nconst COMPONENTS = [\r\n AXFilterPanelComponent,\r\n AXFilterColumnStringComponent,\r\n AXFilterColumnSelectionComponent,\r\n AXFilterColumnDateComponent,\r\n AXFilterColumnNumberComponent,\r\n AXToolbarFilterViewComponent,\r\n]\r\n\r\n@NgModule({\r\n declarations: [COMPONENTS],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXPanelBoxModule,\r\n AXDatePickerModule,\r\n AXCheckBoxModule,\r\n AXTextBoxModule,\r\n AXValidationModule,\r\n AXToastModule,\r\n AXToolbarModule,\r\n AXMenuModule,\r\n AXSelectionListModule,\r\n AXButtonModule\r\n ],\r\n exports: [COMPONENTS],\r\n providers: [],\r\n})\r\nexport class AXFilterModule { }","import { ContentChild, Input, Directive } from '@angular/core';\r\nimport { AXDataSourceComponent } from '../../data-source/datasource.component';\r\nimport { AXDataSourceReadParams } from '../../data-source/read-param';\r\nimport { AXBaseComponent } from '../../base/element.class';\r\n\r\n\r\nexport abstract class AXDataListComponent extends AXBaseComponent {\r\n\r\n\r\n\r\n @Input()\r\n items: any[] = [];\r\n\r\n // @ContentChild(AXDataSourceComponent, { static: true })\r\n // private _contentDataSource: AXDataSourceComponent;\r\n\r\n // private _dataSource: AXDataSourceComponent;\r\n\r\n // @Input()\r\n // public get dataSource(): AXDataSourceComponent {\r\n // return this._dataSource ? this._dataSource : this._contentDataSource;\r\n // }\r\n\r\n // public set dataSource(v: AXDataSourceComponent) {\r\n // this._dataSource = v;\r\n // }\r\n\r\n\r\n abstract dataSource: AXDataSourceComponent;\r\n\r\n\r\n // ngAfterContentInit(): void {\r\n // this.configDataList();\r\n // }\r\n\r\n\r\n protected configDataList() {\r\n if (this.dataSource) {\r\n this.dataSource.onDataReceived.subscribe(c => {\r\n this.dataReceived(c.data.result);\r\n });\r\n }\r\n }\r\n\r\n private dataReceived(data: any) {\r\n this.items = data;\r\n }\r\n\r\n private params: AXDataSourceReadParams = {};\r\n\r\n fetch(params: AXDataSourceReadParams = {}) {\r\n this.params = params;\r\n if (this.dataSource) {\r\n this.dataSource.fetch(params);\r\n }\r\n }\r\n\r\n refresh() {\r\n this.fetch(this.params);\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXToolbarItem } from '../../toolbar/toolbar-item';\r\nimport { AXValueEvent } from '../../base/events.class';\r\n\r\nexport type AXListViewDirection = \"vertical\" | \"vertical-wrap\" | \"horizontal-wrap\" | \"horizontal\";\r\n\r\n@Component({\r\n selector: 'ax-toolbar-list-view',\r\n template: `\r\n <div class=\"btn-group\" role=\"group\">\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"vertical\" [class.active]=\"direction=='vertical'\" (click)=\"direction='vertical'\" title=\"vertical\">\r\n <i class=\"far fa-bars\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"verticalWrap\" [class.active]=\"direction=='vertical-wrap'\" (click)=\"direction='vertical-wrap'\" title=\"vertical-wrap\">\r\n <i class=\"far fa-grip-horizontal\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"horizontalWrap\" [class.active]=\"direction=='horizontal-wrap'\" title=\"horizontal-wrap'\" (click)=\"direction='horizontal-wrap'\" title=\"horizontal-wrap\">\r\n <i class=\"far fa-bars fa-rotate-90\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"horizontal\" [class.active]=\"direction=='horizontal'\" (click)=\"direction='horizontal'\" title=\"horizontal\">\r\n <i class=\"far fa-grip-horizontal fa-rotate-90\"></i>\r\n </button>\r\n </div>\r\n `,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarListViewComponent }]\r\n})\r\nexport class AXToolbarListViewComponent {\r\n constructor() { }\r\n\r\n @Input('vertical')\r\n vertical: boolean = true;\r\n\r\n @Input('vertical-wrap')\r\n verticalWrap: boolean = true;\r\n\r\n @Input('horizontal-wrap')\r\n horizontalWrap: boolean = true;\r\n\r\n @Input('horizontal')\r\n horizontal: boolean = true;\r\n\r\n\r\n @Output()\r\n onDirectionChanged: EventEmitter<AXValueEvent<AXListViewDirection>> = new EventEmitter<AXValueEvent<AXListViewDirection>>();\r\n\r\n private _direction: AXListViewDirection = \"vertical\";\r\n @Input()\r\n public get direction(): AXListViewDirection {\r\n return this._direction;\r\n }\r\n public set direction(v: AXListViewDirection) {\r\n if (v != this._direction) {\r\n const old = this._direction;\r\n this._direction = v;\r\n this.onDirectionChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n Input,\r\n Output,\r\n EventEmitter\r\n} from \"@angular/core\";\r\nimport { AXDataListComponent } from \"../core/data-list.component\";\r\nimport {\r\n AXToolbarListViewComponent,\r\n AXListViewDirection\r\n} from \"./toolbar-list-view.component\";\r\nimport { ViewEncapsulation } from \"@angular/core\";\r\nimport { AXToolbarSearchComponent } from '../../toolbar/search/toolbar-search.component';\r\nimport { AXToolbarComponent } from '../../toolbar/toolbar.component';\r\nimport { AXEvent, AXValueEvent } from '../../base/events.class';\r\nimport { AXDataSourceComponent } from '../../data-source/datasource.component';\r\n\r\n\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: \"ax-list\",\r\n templateUrl: \"./list.component.html\",\r\n styleUrls: [\"./list.component.scss\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXListComponent extends AXDataListComponent {\r\n constructor() {\r\n super();\r\n }\r\n @Input() width: string = \"\";\r\n @Input() height: string = \"auto\";\r\n\r\n @Input(\"dropId\") public dropId: string;\r\n @Input(\"connectedList\") public connectedList: string[] = [];\r\n\r\n @Input() public allowMoveItem: boolean = false;\r\n\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n private _dataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n public get dataSource(): AXDataSourceComponent {\r\n return this._dataSource ? this._dataSource : this._contentDataSource;\r\n }\r\n\r\n public set dataSource(v: AXDataSourceComponent) {\r\n this._dataSource = v;\r\n }\r\n\r\n\r\n @ContentChild('itemTemplate', { static: true })\r\n _contentItemTemplate: TemplateRef<any>;\r\n\r\n\r\n private _itemTemplate: TemplateRef<any>;\r\n @Input()\r\n public get itemTemplate(): TemplateRef<any> {\r\n return this._itemTemplate ? this._itemTemplate : this._contentItemTemplate;\r\n }\r\n public set itemTemplate(v: TemplateRef<any>) {\r\n this._itemTemplate = v;\r\n }\r\n\r\n\r\n\r\n\r\n @ContentChild('emptyTemplate', { static: true })\r\n _contentEmptyTemplate: TemplateRef<any>;\r\n\r\n private _emptyTemplate: TemplateRef<any>;\r\n @Input()\r\n public get emptyTemplate(): TemplateRef<any> {\r\n return this._emptyTemplate ? this._emptyTemplate : this._contentEmptyTemplate;\r\n }\r\n public set emptyTemplate(v: TemplateRef<any>) {\r\n this._emptyTemplate = v;\r\n }\r\n\r\n\r\n @ContentChild(AXToolbarSearchComponent, { static: true })\r\n searchToolbar: AXToolbarSearchComponent;\r\n\r\n @ContentChild(AXToolbarListViewComponent, { static: true })\r\n viewToolbar: AXToolbarListViewComponent;\r\n\r\n @ContentChild(AXToolbarComponent, { static: true })\r\n toolbar: AXToolbarComponent;\r\n\r\n\r\n\r\n @Output()\r\n onDirectionChanged: EventEmitter<AXValueEvent<AXListViewDirection>> = new EventEmitter<AXValueEvent<AXListViewDirection>>();\r\n\r\n private _direction: AXListViewDirection = \"vertical\";\r\n @Input()\r\n public get direction(): AXListViewDirection {\r\n return this._direction;\r\n }\r\n public set direction(v: AXListViewDirection) {\r\n if (this._direction != v) {\r\n const old = this._direction;\r\n this._direction = v;\r\n this.setDirection(v);\r\n this.onDirectionChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.fetch();\r\n if (this.viewToolbar) {\r\n this.viewToolbar.onDirectionChanged.subscribe(c => {\r\n this.direction = c.value;\r\n });\r\n }\r\n }\r\n\r\n private setDirection(e: AXListViewDirection) {\r\n this.direction = e;\r\n }\r\n\r\n\r\n\r\n // dragDrop(event: CdkDragDrop<any[]>) {\r\n // if (event.previousContainer === event.container) {\r\n // moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n // } else {\r\n // transferArrayItem(event.previousContainer.data,\r\n // event.container.data,\r\n // event.previousIndex,\r\n // event.currentIndex);\r\n // }\r\n // }\r\n dragDrop(event: any) {\r\n\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AXDataSourceComponent } from './datasource.component';\r\nimport { AXHttpModule } from '@acorex/core';\r\n\r\n@NgModule({\r\n declarations: [AXDataSourceComponent],\r\n imports: [],\r\n exports: [AXDataSourceComponent],\r\n providers: [],\r\n})\r\nexport class AXDataSourceModule { }","import { NgModule } from '@angular/core';\r\nimport { AXListComponent } from './list.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToolbarListViewComponent } from './toolbar-list-view.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { AXDataSourceModule } from '../../data-source/datasource.module';\r\n\r\n@NgModule({\r\n declarations: [AXListComponent, AXToolbarListViewComponent],\r\n imports: [CommonModule, AXDataSourceModule, DragDropModule],\r\n exports: [AXListComponent, AXToolbarListViewComponent],\r\n providers: [],\r\n})\r\nexport class AXListModule { }","import { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';\r\nimport { AXButtonItem } from '@acorex/core';\r\nimport { AXMenuItemClickEvent } from '../menu/menu.component';\r\nimport { AXBasePopupPageComponent } from '../base/base-page.class';\r\n\r\n@Component({\r\n selector: 'ax-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXDialogComponent extends AXBasePopupPageComponent {\r\n message: any;\r\n\r\n buttons: AXButtonItem[] = [];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n onClick: Function;\r\n\r\n onFooterButtonClick(e: AXMenuItemClickEvent) {\r\n if (this.onClick) {\r\n this.onClick(e.data);\r\n }\r\n }\r\n\r\n getFooterButtons(): AXButtonItem[] {\r\n return this.buttons;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDialogComponent } from './dialog.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\n\r\n@NgModule({\r\n declarations: [AXDialogComponent],\r\n imports: [CommonModule, AXButtonModule,AXTranslatorModule],\r\n exports: [AXDialogComponent],\r\n providers: [],\r\n})\r\nexport class AXDialogModule { }","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n ViewChild,\r\n ViewContainerRef,\r\n OnInit,\r\n ComponentFactoryResolver,\r\n ViewEncapsulation,\r\n HostListener,\r\n ElementRef,\r\n ComponentRef,\r\n OnDestroy,\r\n Output,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { AXBaseComponent } from '../base/element.class';\r\nimport { AXPageCloseEvent, TAB_META_KEY } from '../base/base-page.class';\r\nimport { AXButtonItem, AXRenderService } from '@acorex/core';\r\nimport { AXLoadingService } from '../loading/loading.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n templateUrl: './popup.component.html',\r\n styleUrls: ['./popup.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AXPopupComponent extends AXBaseComponent implements OnDestroy {\r\n\r\n isLoading: boolean = true;\r\n _loadingId: number;\r\n private onFooterButtonsSubscription: Subscription;\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private ref: ElementRef<HTMLDivElement>,\r\n private rendererService: AXRenderService,\r\n private loadingService: AXLoadingService,\r\n private cdr: ChangeDetectorRef,\r\n ) {\r\n super();\r\n }\r\n\r\n ngAfterViewInit() {\r\n console.log('popup');\r\n this._loadingId = this.loadingService.show(this.ref.nativeElement.querySelector('.ax-popup-body-container'));\r\n if (typeof this.content === 'string') {\r\n this.rendererService.findLoadedComponentByRoute(this.content, 20).then(route => {\r\n setTimeout(() => {\r\n this.loadComponent(route?.component);\r\n }, 300);\r\n });\r\n }\r\n else if (this.content instanceof TemplateRef) {\r\n const view = this.content.createEmbeddedView({ $implicit: this.data });\r\n this.popupBody.insert(view);\r\n this.isLoading = false;\r\n this.loadingService.hide(this._loadingId);\r\n }\r\n else if (typeof this.content === 'function') {\r\n setTimeout(() => {\r\n this.loadComponent(this.content);\r\n });\r\n }\r\n }\r\n\r\n\r\n private loadComponent(component: any) {\r\n\r\n if (component == null) {\r\n //TODO: 404 page component\r\n console.error(`Invalid page Component! ${this.content}`);\r\n return;\r\n }\r\n ///\r\n try {\r\n const factory = this.resolver.resolveComponentFactory(component);\r\n this.comRef = this.popupBody.createComponent(factory);\r\n const com = this.comRef.instance as any;\r\n if (com.onClosed) {\r\n com.onClosed.subscribe((e: AXPageCloseEvent) => {\r\n this.onClosed.emit(e);\r\n });\r\n }\r\n this[TAB_META_KEY].component = com;\r\n Object.assign(this[TAB_META_KEY].component, this.data);\r\n //\r\n if (com.getFooterButtons) {\r\n this.footerButtons = com.getFooterButtons();\r\n }\r\n if (com.onFooterButtonsChanged) {\r\n this.onFooterButtonsSubscription = (com.onFooterButtonsChanged as EventEmitter<AXButtonItem[]>).subscribe(c => {\r\n this.footerButtons = c;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n //\r\n this.focus();\r\n this.isLoading = false;\r\n this.loadingService.hide(this._loadingId);\r\n setTimeout(() => {\r\n this.comRef.changeDetectorRef.detectChanges();\r\n }, 100);\r\n this.cdr.detectChanges();\r\n } catch (error) {\r\n //TODO: 404 page component\r\n console.error(error);\r\n }\r\n }\r\n\r\n @ViewChild('popupBody', { read: ViewContainerRef, static: true })\r\n private popupBody: ViewContainerRef;\r\n\r\n @HostListener('keydown.escape', ['$event'])\r\n onKeydownHandler(event: KeyboardEvent) {\r\n if (this.closable) {\r\n this.onCloseClick();\r\n }\r\n }\r\n\r\n private comRef: ComponentRef<any>;\r\n\r\n title: string;\r\n\r\n onClosed: EventEmitter<AXPageCloseEvent> = new EventEmitter<AXPageCloseEvent>();\r\n\r\n size: 'sm' | 'md' | 'lg' | 'full' = 'sm';\r\n modal: boolean = true;\r\n\r\n data: any = {};\r\n\r\n maximizable: boolean = false;\r\n\r\n closable: boolean = true;\r\n\r\n content: any;\r\n\r\n headerButtons: AXButtonItem[] = [];\r\n\r\n footerButtons: AXButtonItem[] = [];\r\n\r\n onCloseClick() {\r\n this.onClosed.emit({\r\n component: this[TAB_META_KEY].component,\r\n htmlElement: this.ref.nativeElement,\r\n });\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.comRef) {\r\n this.comRef.destroy();\r\n }\r\n if (this.onFooterButtonsSubscription) {\r\n this.onFooterButtonsSubscription.unsubscribe();\r\n }\r\n this.cdr.detectChanges();\r\n this.loadingService.hide(this._loadingId);\r\n }\r\n\r\n focus() {\r\n setTimeout(() => this.ref.nativeElement.focus());\r\n }\r\n\r\n onFullScreen() { }\r\n\r\n handleFooterButtonClick(e: AXButtonItem) {\r\n if (e.onClick) {\r\n e.onClick();\r\n }\r\n else if (this[TAB_META_KEY].component.onFooterButtonClick) {\r\n this[TAB_META_KEY].component.onFooterButtonClick({\r\n component: this[TAB_META_KEY].component,\r\n name: e.name,\r\n data: e,\r\n htmlElement: this.ref.nativeElement,\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AXPopupComponent } from './popup.component';\r\nimport { AXButtonItem } from '@acorex/core';\r\nimport { TAB_META_KEY, AXPageClosedPromise, AXPageCloseEvent } from '../base/base-page.class';\r\nimport { AXOverlayService, AXOverlayViewRef } from '../popover/overlay.service';\r\nimport { options } from '@amcharts/amcharts4/core';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPopupService {\r\n private stack: Array<AXPopupComponent> = [];\r\n\r\n constructor(private overlayService: AXOverlayService) { }\r\n\r\n\r\n open(content: any, title: string): AXPageClosedPromise;\r\n open(\r\n content: any,\r\n options?: {\r\n title: string;\r\n closable?: boolean;\r\n maximizable?: boolean;\r\n size?: 'sm' | 'md' | 'lg' | 'full';\r\n data?: any;\r\n footerButtons?: AXButtonItem[],\r\n modal?: boolean\r\n }\r\n ): AXPageClosedPromise;\r\n\r\n open(arg1, arg2): AXPageClosedPromise {\r\n const options: any = {\r\n closable: true,\r\n size: 'md',\r\n maximizable: false,\r\n footerButtons: [],\r\n modal: true,\r\n };\r\n\r\n if (typeof arg2 === 'string') {\r\n options.title = arg2;\r\n } else {\r\n Object.assign(options, arg2);\r\n }\r\n const com = this.overlayService.show(AXPopupComponent, options, {\r\n transparentBackdrop: false,\r\n hasBackdrop: options.modal,\r\n closeOnClickOutside: false,\r\n scroll: 'block'\r\n });\r\n const popup = com.instance as AXPopupComponent;\r\n popup.content = arg1;\r\n popup[TAB_META_KEY] = {};\r\n if (options.size) {\r\n popup.size = options.size;\r\n }\r\n if (options.footerButtons) {\r\n popup.footerButtons = options.footerButtons;\r\n }\r\n this.stack.push(popup);\r\n popup.onClosed.subscribe(c => {\r\n this.closePopup(popup, com, c);\r\n });\r\n const promise = new AXPageClosedPromise((resolve) => {\r\n popup[TAB_META_KEY].close = (e) => {\r\n if (resolve) {\r\n resolve(e);\r\n }\r\n };\r\n });\r\n promise['closeMethod'] = () => { popup.onCloseClick(); };\r\n return promise;\r\n }\r\n\r\n\r\n private closePopup(popup: AXPopupComponent, com: AXOverlayViewRef, result: AXPageCloseEvent) {\r\n const closeFunc = (e) => {\r\n com.dispose();\r\n this.stack.pop();\r\n delete e.cancel;\r\n popup[TAB_META_KEY].close(e);\r\n if (this.stack.length) { this.stack.reverse()[0].focus(); }\r\n };\r\n const e = { cancel: false };\r\n const closingFunc = popup[TAB_META_KEY]?.component?.onClosing;\r\n if (closingFunc) {\r\n const res = closingFunc(e);\r\n if (res instanceof Promise) {\r\n res.then(() => {\r\n if (e == null || e.cancel !== true) {\r\n closeFunc(result);\r\n }\r\n });\r\n }\r\n else {\r\n if (e == null || e.cancel !== true) {\r\n closeFunc(result);\r\n }\r\n }\r\n } else {\r\n closeFunc(result);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AXDialogComponent } from './dialog.component';\r\nimport { AXPopupService } from '../popup/popup.service';\r\nimport { AXButtonItem, AXTranslator } from '@acorex/core';\r\n\r\nexport class AXDialogAlertResult {\r\n private _executor: (close: (e?: any) => void) => void;\r\n constructor(\r\n executor: (close: (e?: any) => void) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.closeAction);\r\n }, 50);\r\n }\r\n\r\n private closeAction: (e?: any) => void;\r\n\r\n close(action: (e?: any) => void): AXDialogAlertResult {\r\n this.closeAction = action;\r\n return this;\r\n }\r\n\r\n}\r\n\r\nexport class AXDialogConfirmResult {\r\n private _executor: (okay: () => void, cancel: () => void, final: () => void) => void;\r\n constructor(\r\n executor: (okay: () => void, cancel: () => void, final: () => void) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.okayAction, this.cancelAction, this.finalAction);\r\n }, 50);\r\n }\r\n\r\n private okayAction: () => void;\r\n private cancelAction: () => void;\r\n private finalAction: () => void;\r\n\r\n okay(action: () => void): AXDialogConfirmResult {\r\n this.okayAction = action;\r\n return this;\r\n }\r\n cancel(action: () => void): AXDialogConfirmResult {\r\n this.cancelAction = action;\r\n\r\n return this;\r\n }\r\n final(action: () => void) {\r\n this.finalAction = action;\r\n }\r\n}\r\n\r\n\r\nexport class AXDialogResult {\r\n private _executor: (then: (name: string) => void, final: () => void) => void;\r\n constructor(\r\n executor: (then: (name: string) => void, final: () => void) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.thenAction, this.finalAction);\r\n }, 50);\r\n }\r\n\r\n private thenAction: (name: string) => void;\r\n private finalAction: () => void;\r\n\r\n then(action: (name: string) => void): AXDialogResult {\r\n this.thenAction = action;\r\n return this;\r\n }\r\n\r\n final(action: () => void) {\r\n this.finalAction = action;\r\n }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXDialogService {\r\n\r\n constructor(private popupService: AXPopupService) {\r\n\r\n }\r\n\r\n alert(title: string, message: string): AXDialogAlertResult {\r\n return new AXDialogAlertResult((close) => {\r\n const popup = this.popupService.open(AXDialogComponent, {\r\n title,\r\n size: 'sm',\r\n closable: false,\r\n\r\n data: {\r\n message,\r\n buttons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n }\r\n ],\r\n onClick: (e) => {\r\n popup.close()\r\n close();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n confirm(title: string, message: string): AXDialogConfirmResult {\r\n return new AXDialogConfirmResult((okay, cancel, final) => {\r\n const popup = this.popupService.open(AXDialogComponent, {\r\n title,\r\n size: 'sm',\r\n closable: false,\r\n\r\n data: {\r\n buttons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n }\r\n ],\r\n message,\r\n onClick: (e) => {\r\n popup.close()\r\n if (e.name === 'confirm' && okay) {\r\n okay();\r\n }\r\n if (e.name === 'cancel' && cancel) {\r\n cancel();\r\n }\r\n if (final) {\r\n final();\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n\r\n\r\n show(title: string, message: string, closable: boolean = false, ...buttons: AXButtonItem[]): AXDialogResult {\r\n return new AXDialogResult((then, final) => {\r\n const popup = this.popupService.open(AXDialogComponent, {\r\n title,\r\n size: 'sm',\r\n closable,\r\n data: {\r\n message,\r\n buttons,\r\n onClick: (e) => {\r\n popup.close();\r\n if (then) {\r\n then(e.name);\r\n }\r\n if (final) {\r\n final();\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\n@Component({\r\n selector: 'ax-drawer',\r\n templateUrl: './drawer.component.html',\r\n animations: [\r\n trigger('slideInOut', [\r\n state(\r\n 'in',\r\n style({\r\n transform: 'translate3d(0,0,0)',\r\n })\r\n ),\r\n state(\r\n 'out',\r\n style({\r\n transform: 'translate3d(100%, 0, 0)',\r\n })\r\n ),\r\n transition('in => out', animate('200ms ease-in-out')),\r\n transition('out => in', animate('200ms ease-in-out')),\r\n ]),\r\n ],\r\n})\r\nexport class AXDrawerComponent {\r\n constructor() {}\r\n\r\n @Input()\r\n width: number = 300;\r\n\r\n drawerState: string = 'out';\r\n\r\n ngOnDestroy(): void {\r\n document.querySelector('body').classList.remove('ax-drawer-underlay');\r\n }\r\n toggle() {\r\n const body = document.querySelector('body');\r\n\r\n if (this.drawerState === 'out') {\r\n this.drawerState = 'in';\r\n body.classList.add('ax-drawer-underlay');\r\n } else {\r\n this.drawerState = 'out';\r\n body.classList.remove('ax-drawer-underlay');\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDrawerComponent } from './drawer.component';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n@NgModule({\r\n declarations: [AXDrawerComponent],\r\n imports: [CommonModule, BrowserAnimationsModule],\r\n exports: [AXDrawerComponent],\r\n providers: []\r\n})\r\nexport class AXDrawerModule {}\r\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { trigger, state, style, transition, animate } from '@angular/animations';\r\nimport { AXBaseSizableComponent, AXElementSize } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-fieldset',\r\n templateUrl: './fieldset.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('visibilityChanged', [\r\n state(\r\n 'shown',\r\n style({\r\n height: '*',\r\n opacity: 1\r\n })\r\n ),\r\n state(\r\n 'hidden',\r\n style({\r\n height: '0px',\r\n opacity: 0,\r\n padding: 0\r\n })\r\n ),\r\n transition('Void => *', animate('0ms')),\r\n transition('shown => hidden', animate('200ms')),\r\n transition('hidden => shown', animate('200ms'))\r\n ])\r\n ]\r\n})\r\nexport class AXFieldsetComponent implements AXBaseSizableComponent {\r\n @Input()\r\n size: AXElementSize = \"md\";\r\n\r\n @Input()\r\n caption: string = '';\r\n\r\n @Input()\r\n allowCollapse: boolean = false;\r\n\r\n collapsed: boolean = false;\r\n toggle() {\r\n if (this.allowCollapse) {\r\n this.collapsed = !this.collapsed;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXFieldsetComponent } from './fieldset.component';\r\n\r\n@NgModule({\r\n declarations: [AXFieldsetComponent],\r\n imports: [ CommonModule ],\r\n exports: [AXFieldsetComponent],\r\n providers: [],\r\n})\r\nexport class AXFieldsetModule {}","import { Component, OnInit, ViewEncapsulation, Input } from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXElementSize } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-label',\r\n templateUrl: './label.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXLabelComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n constructor() {\r\n super();\r\n }\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXLabelComponent } from './label.component';\r\n\r\nconst COMPONENT = [AXLabelComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXLabelModule { }","import { Component, OnInit, Input, ElementRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-loading-panel',\r\n template: `\r\n <div onclick=\"return false;\" class=\"ax ax-loading-panel ax-overlay-wrapper ax-overlay-modal ax-loading-overlay\" *ngIf=\"visible\" >\r\n <ax-loading-indicator tabindex=\"0\" cdkTrapFocus>\r\n </ax-loading-indicator>\r\n </div>\r\n `\r\n})\r\nexport class AXLoadingPanelComponent implements OnInit {\r\n\r\n constructor(private ref: ElementRef<HTMLDivElement>) {\r\n\r\n }\r\n\r\n @Input()\r\n visible: boolean = false;\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n const host = this.ref.nativeElement.closest('.ax-loading-host');\r\n }\r\n\r\n show() {\r\n this.visible = true;\r\n }\r\n\r\n hide() {\r\n this.visible = false;\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXLoadingIndicatorComponent } from './loading-indicator.component';\r\nimport { AXLoadingPanelComponent } from './loading-panel.component';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\n\r\n@NgModule({\r\n declarations: [AXLoadingIndicatorComponent, AXLoadingPanelComponent],\r\n imports: [CommonModule, A11yModule],\r\n exports: [AXLoadingIndicatorComponent, AXLoadingPanelComponent],\r\n providers: [],\r\n})\r\nexport class AXLoadingModule { }","import { Component, Input, ElementRef, HostListener, ChangeDetectorRef, ChangeDetectionStrategy, AfterViewInit, OnInit } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n@Component({\r\n selector: 'ax-number-box',\r\n templateUrl: './number-box.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXNumberBoxComponent }]\r\n})\r\nexport class AXNumberBoxComponent extends AXBaseTextComponent implements OnInit {\r\n @Input() min: number = null;\r\n @Input() max: number = null;\r\n\r\n @Input()\r\n showSeparator: boolean = false;\r\n @Input()\r\n showCurrency: boolean = false;\r\n\r\n @Input()\r\n showCounter: boolean = true;\r\n\r\n @Input()\r\n scrollWeel: boolean = true;\r\n\r\n @Input()\r\n showDoubleCounter: boolean = false;\r\n\r\n userQuestionUpdate = new Subject<string>();\r\n\r\n userEdite: boolean = false;\r\n\r\n tmp: any;\r\n count: number;\r\n findDots: boolean = false;\r\n findMinus: boolean = false;\r\n cursorPosition: number = 0;\r\n dotPosition: number;\r\n textValue: string;\r\n decimalConstant: number = 0.1;\r\n lastStep: number = null;\r\n\r\n @Input() intStep: number = 1;\r\n @Input() decimalNumber: number = null;\r\n @Input() customStep: number = null;\r\n\r\n private _values: string;\r\n public get value(): string {\r\n return this._values;\r\n }\r\n public set value(v: string) {\r\n if (v === '-') {\r\n this.textValue = '-';\r\n this._values = '-';\r\n } else {\r\n if (v === '' || v == null || v === undefined ? true : isNaN(Number(v.toString().replace(/,/g, ''))) === false) {\r\n if (v === '' || v == null || v === undefined) {\r\n this.textValue = '';\r\n const old = this._values;\r\n this._values = null;\r\n\r\n if (this._values !== old) {\r\n this.valueChange.emit(null);\r\n this.onValueChanged.emit({\r\n isUserChange: this.userEdite,\r\n component: this,\r\n value: null,\r\n oldValue:\r\n this.showSeparator && old\r\n ? old === '-'\r\n ? null\r\n : Number(old.replace(/,/g, ''))\r\n : old === null || old === undefined\r\n ? null\r\n : old === '-'\r\n ? null\r\n : Number(old),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.userEdite = false;\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n } else {\r\n v = v.toString();\r\n\r\n // this.addCommas(v.toString());\r\n this.textValue = this.showSeparator && v ? this.addCommas(v.toString()) : v;\r\n\r\n // if (this.textValue.indexOf('.') !== -1) {\r\n // // const dottt= (this.textValue.length-1) - this.textValue.indexOf('.')\r\n // if (this.textValue.length - 1 - this.textValue.indexOf('.') < this.decimalNumber) {\r\n // const a = this.decimalNumber - (this.textValue.length - 1 - this.textValue.indexOf('.'));\r\n // const z = '0';\r\n // this.textValue = this.textValue + '0';\r\n // }\r\n // }\r\n\r\n if (this._values) {\r\n const old = this._values;\r\n if (old.toString().search(/\\./g) !== v.toString().search(/\\./g)) {\r\n if (this.cursorPosition <= old.search(/\\./g)) {\r\n this.cursorPosition = v.search(/\\./g);\r\n } else {\r\n this.cursorPosition = v.length;\r\n }\r\n }\r\n }\r\n if (v !== this._values) {\r\n const old = this._values;\r\n this._values = v;\r\n this.valueChange.emit(this.showSeparator && v ? Number(v.replace(/,/g, '')) : Number(v));\r\n this.onValueChanged.emit({\r\n isUserChange: this.userEdite,\r\n component: this,\r\n value: this.showSeparator && v ? Number(v.replace(/,/g, '')) : Number(v),\r\n oldValue:\r\n this.showSeparator && old\r\n ? old === '-'\r\n ? null\r\n : Number(old.replace(/,/g, ''))\r\n : old === null || old === undefined\r\n ? null\r\n : old === '-'\r\n ? null\r\n : Number(old),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.userEdite = false;\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n }\r\n } else {\r\n this.textValue = '';\r\n v = null;\r\n const old = this._values;\r\n this._values = null;\r\n\r\n if (this._values !== old) {\r\n this.valueChange.emit(null);\r\n this.onValueChanged.emit({\r\n isUserChange: this.userEdite,\r\n component: this,\r\n value: null,\r\n oldValue:\r\n this.showSeparator && old\r\n ? old === '-'\r\n ? null\r\n : Number(old.replace(/,/g, ''))\r\n : old === null || old === undefined\r\n ? null\r\n : old === '-'\r\n ? null\r\n : Number(old),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.userEdite = false;\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n }\r\n }\r\n }\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n this.textAlign = 'left';\r\n }\r\n\r\n addCommas2(x) {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n }\r\n\r\n addCommas(nStr) {\r\n nStr += '';\r\n const x = nStr.split('.');\r\n let x1 = x[0];\r\n const x2 = x.length > 1 ? '.' + x[1] : '';\r\n const rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n }\r\n return x1 + x2;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.disabled === false) {\r\n if (this.scrollWeel === true) {\r\n setTimeout(() => {\r\n this.input.nativeElement.addEventListener('wheel', (e) => {\r\n this.handleWheel(e);\r\n });\r\n }, 500);\r\n }\r\n }\r\n\r\n // this.value = this.min.toString();\r\n }\r\n\r\n handleWheel(event) {\r\n if ((event as any).wheelDelta > 0) {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n\r\n this.upStepHandel();\r\n this.delaySearch();\r\n\r\n setTimeout(() => {\r\n this.setCaret();\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n if ((event as any).wheelDelta < 0) {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n\r\n this.downStepHandel();\r\n this.delaySearch();\r\n\r\n setTimeout(() => {\r\n this.setCaret();\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n handleKeyPress(event: any) {\r\n this.userEdite = true;\r\n const NumberDotpattern = /[0-9\\.]/g;\r\n const NumberMinusPattern = /[0-9\\-]/g;\r\n\r\n const inputChar = String.fromCharCode(event.charCode);\r\n\r\n if (this.value && this.value.toString().match(/\\./g) === null) {\r\n this.findDots = false;\r\n }\r\n if (this.value && this.value.toString().search('-') === null) {\r\n this.findMinus = false;\r\n }\r\n\r\n // get cursur position when key press\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n this.cursorPosition += 1;\r\n }\r\n\r\n // control cursor when in first Index\r\n if (this.cursorPosition <= 1) {\r\n if (!NumberMinusPattern.test(inputChar)) {\r\n event.preventDefault();\r\n }\r\n if (this.value && this.value.match(/\\-/g)) {\r\n event.preventDefault();\r\n }\r\n }\r\n // control cursor when in another index\r\n if (this.cursorPosition !== 1) {\r\n if (event.keyCode !== 8 && !NumberDotpattern.test(inputChar)) {\r\n event.preventDefault();\r\n } else {\r\n // for contor decimal figur = 0 or null\r\n if (this.decimalNumber === null || this.decimalNumber === 0) {\r\n if (inputChar === '.') {\r\n event.preventDefault();\r\n }\r\n }\r\n // control decimal number (figur of decimal)\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n const figureAfterDot = this.value.length - this.value.indexOf('.');\r\n const dotIndex = this.value.indexOf('.');\r\n if (dotIndex - 1 + dotIndex + figureAfterDot > dotIndex - 1 + dotIndex + this.decimalNumber && this.cursorPosition - 1 > dotIndex) {\r\n event.preventDefault();\r\n }\r\n }\r\n // control '.' input\r\n if (inputChar === '.') {\r\n const lastChar = this.value.toString().charAt(this.value.length - 1);\r\n // control . when last char is -\r\n if (lastChar.toString().match(/\\-/g)) {\r\n event.preventDefault();\r\n }\r\n // control . when find first dot\r\n if (this.findDots) {\r\n event.preventDefault();\r\n }\r\n this.findDots = true;\r\n this.findMinus = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleKeyUp(event: KeyboardEvent) {\r\n this.userEdite = true;\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n this.setCaret();\r\n }\r\n\r\n if (event.key === 'ArrowDown') {\r\n this.setCaret();\r\n }\r\n\r\n // left & right Button\r\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n // home button\r\n if (event.key === 'Home') {\r\n this.cursorPosition = 0;\r\n }\r\n\r\n // end button\r\n if (event.key === 'End') {\r\n this.cursorPosition = this.value.length;\r\n }\r\n\r\n // set delay with rxjs\r\n this.delaySearch();\r\n\r\n // backspace Control\r\n if (event.key === 'Backspace') {\r\n if (this.value === null || this.value.length <= 0) {\r\n this.cursorPosition = 0;\r\n } else {\r\n this.cursorPosition -= 1;\r\n }\r\n }\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent) {\r\n this.userEdite = true;\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n if (this.readonly === false) {\r\n const countAfterDot =\r\n this.value !== null && this.value !== '' && this.value !== undefined\r\n ? this.value.toString().length - 1 - this.value.toString().indexOf('.')\r\n : 0;\r\n const defaultStep: number =\r\n countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);\r\n // step and +- with up key and down key\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n this.dotPosition = this.value.indexOf('.');\r\n if (this.dotPosition >= this.cursorPosition) {\r\n if (event.key === 'ArrowDown') {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = this.tmp - +this.intStep;\r\n if (this.min === null || Number(this.count) >= Number(this.min)) {\r\n // this.value = this.count.toFixed(this.decimalNumber);\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = this.tmp + +this.intStep;\r\n if (this.max === null || Number(this.count) <= Number(this.max)) {\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n } else {\r\n if (event.key === 'ArrowDown') {\r\n if (this.min === null || Number(this.value) > Number(this.min)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) - this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) - defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n if (this.max === null || Number(this.value) < Number(this.max)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) + this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) + defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (event.key === 'ArrowDown') {\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.min === null || Number(this.value) > parseInt(this.min.toString())) {\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n this.tmp = +this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp - +this.intStep;\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n if (event.key === 'ArrowUp') {\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.max === null || Number(this.value) < parseInt(this.max.toString())) {\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n this.tmp = this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp + +this.intStep;\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // stop when keydown\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return false;\r\n }\r\n }\r\n\r\n handleClick() {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n delaySearch() {\r\n Observable.create((observer) => {\r\n this.userQuestionUpdate = observer;\r\n });\r\n this.userQuestionUpdate.pipe(debounceTime(1000), distinctUntilChanged()).subscribe((text: string) => this.checkMinMax(text));\r\n // this.userQuestionUpdate.next((e.target as any).value);\r\n setTimeout(() => {\r\n this.userQuestionUpdate.next(this.input.nativeElement.value);\r\n }, 50);\r\n }\r\n\r\n checkMinMax(text) {\r\n if (this.min !== null) {\r\n if (+text < this.min) {\r\n this.value = '';\r\n }\r\n }\r\n if (this.max !== null) {\r\n if (+text > this.max) {\r\n this.value = '';\r\n }\r\n }\r\n }\r\n\r\n doGetCaretPosition(ctrl) {\r\n let CaretPos = 0;\r\n if (ctrl.selectionStart || ctrl.selectionStart === 0) {\r\n CaretPos = ctrl.selectionStart;\r\n return CaretPos;\r\n }\r\n }\r\n\r\n setCaretPosition(ctrl, pos) {\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n } else if (ctrl.createTextRange) {\r\n const range = ctrl.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', pos);\r\n range.moveStart('character', pos);\r\n range.select();\r\n }\r\n }\r\n\r\n setCaret() {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n }\r\n\r\n upStepHandel() {\r\n this.userEdite = true;\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.readonly === false) {\r\n const countAfterDot =\r\n this.value !== null && this.value !== '' && this.value !== undefined\r\n ? this.value.toString().length - 1 - this.value.toString().indexOf('.')\r\n : 0;\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n const defaultStep: number =\r\n countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);\r\n this.dotPosition = this.value.toString().indexOf('.') + 1;\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n if (this.dotPosition > this.cursorPosition) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = this.tmp + +this.intStep;\r\n if (this.max === null || Number(this.count) <= this.max) {\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n } else {\r\n if (this.max === null || Number(this.value) < Number(this.max)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) + this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) + defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.max === null || Number(this.value) < parseInt(this.max.toString())) {\r\n this.tmp = this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp + +this.intStep;\r\n\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n downStepHandel() {\r\n this.userEdite = true;\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.readonly === false) {\r\n const countAfterDot =\r\n this.value !== null && this.value !== '' && this.value !== undefined\r\n ? this.value.toString().length - 1 - this.value.toString().indexOf('.')\r\n : 0;\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n const defaultStep: number =\r\n countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);\r\n this.dotPosition = this.value.toString().indexOf('.') + 1;\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n if (this.dotPosition > this.cursorPosition) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.value.replace(/,/g, '')) - +this.intStep;\r\n if (this.min === null || Number(this.count) >= this.min) {\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');\r\n }\r\n } else {\r\n if (this.min === null || Number(this.value) > Number(this.min)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) - this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) - defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.min === null || Number(this.value) > parseInt(this.min.toString())) {\r\n this.tmp = +this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp - +this.intStep;\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXNumberBoxComponent } from './number-box.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [AXNumberBoxComponent],\r\n imports: [CommonModule, AXButtonModule, FormsModule],\r\n exports: [AXNumberBoxComponent],\r\n providers: []\r\n})\r\nexport class AXNumberBoxModule {}\r\n","import { Component, ElementRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-page-content',\r\n template: `\r\n <div class='ax-page-content'>\r\n <div class='inner-content'>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n styles: [\r\n ':host { height:100% }'\r\n ]\r\n})\r\nexport class AXPageContentComponent {\r\n constructor(private el: ElementRef) { }\r\n}\r\n","import {\r\n Component\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-page-footer',\r\n template:\r\n `<div class='ax-page-footer' >\r\n <ng-content></ng-content>\r\n </div>`\r\n})\r\n\r\nexport class AXPageFooterComponent { };","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPageContentComponent } from './content.component';\r\nimport { AXPageFooterComponent } from './footer.component';\r\nimport { AXPageComponent } from './page.component';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\n\r\n@NgModule({\r\n declarations: [AXPageContentComponent, AXPageFooterComponent, AXPageComponent],\r\n imports: [CommonModule, AXLoadingModule],\r\n exports: [AXPageContentComponent, AXPageFooterComponent, AXPageComponent],\r\n providers: [],\r\n})\r\nexport class AXPageModule { }","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ViewChild, ElementRef } from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-password-box',\r\n templateUrl: './password-box.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXPasswordBoxComponent }]\r\n})\r\nexport class AXPasswordBoxComponent extends AXBaseTextComponent {\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n\r\n type: 'text' | 'password' = 'password';\r\n eyeIcon: string = 'far fa-eye';\r\n\r\n handleShowPassword() {\r\n this.eyeIcon = 'far fa-eye-slash';\r\n if (this.type === 'password') {\r\n this.type = 'text';\r\n this.eyeIcon = 'far fa-eye-slash';\r\n } else {\r\n this.type = 'password';\r\n this.eyeIcon = 'far fa-eye';\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPasswordBoxComponent } from './password-box.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\n\r\nconst COMPONENT = [AXPasswordBoxComponent];\r\nconst MODULES = [CommonModule, AXButtonModule,AXFormGroupModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: []\r\n})\r\nexport class AXPasswordBoxModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPopupComponent } from './popup.component';\r\nimport { AXPopupService } from './popup.service';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\n@NgModule({\r\n declarations: [AXPopupComponent],\r\n imports: [CommonModule, DragDropModule, A11yModule, AXButtonModule, AXTranslatorModule, AXLoadingModule],\r\n exports: [AXPopupComponent],\r\n entryComponents: [AXPopupComponent],\r\n providers: [AXPopupService]\r\n})\r\nexport class AXPopupModule { }\r\n","import { Component, Input } from '@angular/core';\r\nimport { AXBaseComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-progress-bar',\r\n templateUrl: './progress-bar.component.html'\r\n})\r\nexport class AXProgressBarComponent extends AXBaseComponent {\r\n @Input() progress: number = 0;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXProgressBarComponent } from './progress-bar.component';\r\n\r\n@NgModule({\r\n declarations: [AXProgressBarComponent],\r\n imports: [CommonModule],\r\n exports: [AXProgressBarComponent],\r\n entryComponents: [AXProgressBarComponent],\r\n providers: []\r\n})\r\nexport class AXProgressBarModule {}\r\n","import { AXDataEvent } from '../base/events.class';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\nexport type AXQueryBuilderDataType = 'string' | 'number' | 'date' | 'time' | 'datetime' | 'boolean';\r\nexport type AXQueryBuilderGroupItem = AXQueryBuilderGroup | AXQueryBuilderRule;\r\nexport type AXQueryBuilderControlType = 'textBox' | 'selectBox' | 'numberBox' | 'dataPicker' | 'lov' | 'boolean';\r\nexport type AXQueryBuilderStringType = 'simple' | 'sql' | 'sodoco' | 'elastic';\r\n\r\nexport class AXQueryBuilderControl {\r\n type: AXQueryBuilderControlType = 'textBox';\r\n options: any = {};\r\n}\r\n\r\nexport class AXQueryBuilderRule {\r\n dataField: string;\r\n caption: string;\r\n dataType: AXQueryBuilderDataType;\r\n control: AXQueryBuilderControl;\r\n operator: string;\r\n value?: any;\r\n text?: string;\r\n dataFieldItem: any;\r\n valueItem?: any;\r\n onDemandLabel?: string;\r\n}\r\n\r\nexport class AXQueryBuilderGroup {\r\n items: AXQueryBuilderGroupItem[];\r\n condition: string;\r\n queryString: string;\r\n queryStringElastic:string\r\n}\r\nexport class AXQueryBuilderField {\r\n caption: string;\r\n dataField: string;\r\n dataType: AXQueryBuilderDataType;\r\n default?: any;\r\n options?: any;\r\n}\r\n\r\nexport class AXQueryBuilderRuleEvent extends AXDataEvent<AXQueryBuilderRuleEvent> {\r\n items: AXQueryBuilderRule;\r\n}\r\n\r\nexport class AXQueryBuilderGroupEvent extends AXDataEvent<AXQueryBuilderGroupEvent> {\r\n items?: AXQueryBuilderRule;\r\n groups: AXQueryBuilderGroup;\r\n}\r\n\r\nexport class AXQueryBuilderPopup {\r\n name: string;\r\n type: string;\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, ElementRef, ChangeDetectionStrategy, ViewChild } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXBaseTextComponent } from '../base/element.class';\r\nimport { AXBaseEvent, AXValueEvent } from '../base/events.class';\r\n\r\n\r\n@Component({\r\n selector: 'ax-search-box',\r\n templateUrl: './searchbox.component.html',\r\n host: { style: 'display: contents;' },\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXSearchBoxComponent extends AXBaseTextComponent {\r\n\r\n @Output()\r\n public textChanged: EventEmitter<AXValueEvent<any>> = new EventEmitter<AXValueEvent<any>>();\r\n @Output()\r\n onButtonClick: EventEmitter<AXValueEvent<any>> = new EventEmitter<AXValueEvent<any>>();\r\n\r\n @Input()\r\n placeholder: string = 'جستجو ...';\r\n\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n\r\n private _text: string;\r\n @Input()\r\n public get text(): string {\r\n return this._text;\r\n }\r\n public set text(v: string) {\r\n if (v !== this._text) {\r\n const old = this._text;\r\n this._text = v;\r\n this.textChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.value = '';\r\n this.text = '';\r\n }\r\n\r\n onSearchChanged(text: string) {\r\n if (!this.searchChangeObserver) {\r\n Observable.create(observer => {\r\n\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(this.delay))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.text = c;\r\n this.value = c;\r\n });\r\n }\r\n\r\n this.searchChangeObserver.next(text);\r\n }\r\n\r\n @Input()\r\n delay: number = 500;\r\n\r\n private searchChangeObserver: any;\r\n\r\n handleKeyEvent(e: KeyboardEvent) {\r\n // this.searchChangeObserver.next(this.text);\r\n this.onkey.emit(e);\r\n }\r\n\r\n click(e: MouseEvent) {\r\n this.onButtonClick.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n value: this.text\r\n });\r\n // this.searchChangeObserver.next(this.text);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n ContentChild,\r\n NgZone,\r\n QueryList,\r\n ContentChildren,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXBaseSizableComponent, AXBaseInputComponent, AXElementSize, AXValidatableComponent } from '../base/element.class';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXValidation } from '../validation/validation.component';\r\nimport { AXDataSourceReadParams } from '../data-source/read-param';\r\nimport { AXBaseEvent } from '../base/events.class';\r\nimport { AXSearchBoxComponent } from '../searchbox/searchbox.component';\r\nimport { AXConfig } from '@acorex/core';\r\nimport { differenceBy } from 'lodash';\r\nexport class AXSelectBoxSelectionChangedEvent extends AXBaseEvent {\r\n constructor(component: any, public selectedItems: any[], public selectedValues: any[] | any) {\r\n super();\r\n this.component = component;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ax-select-box',\r\n templateUrl: './selectbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBoxComponent }]\r\n})\r\nexport class AXSelectBoxComponent extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseInputComponent {\r\n @Input() showDropDownButton: boolean = true;\r\n\r\n @ContentChild(TemplateRef, { static: true })\r\n rowTemplate: TemplateRef<any>;\r\n\r\n @Input()\r\n rowInputTemplate: TemplateRef<any>;\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n span: ElementRef<HTMLElement>;\r\n\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n textbox: AXTextBoxComponent;\r\n\r\n @ViewChild('listContainer', { static: true })\r\n listContainer: ElementRef<HTMLDivElement>;\r\n\r\n @ViewChild('serchBox', { static: false })\r\n serchBox: AXSearchBoxComponent;\r\n\r\n @ViewChild('textBoxSelectBox', { static: true })\r\n textBoxSelectBox: AXTextBoxComponent;\r\n\r\n @Input() showCheckBox: boolean = true;\r\n\r\n @Input() readonly: boolean = false;\r\n\r\n @Input() rtl: boolean = AXConfig.get('layout.rtl');\r\n\r\n @Input() disabled: boolean = false;\r\n\r\n @Input() placeholder: string;\r\n\r\n @Input() size: AXElementSize = 'md';\r\n\r\n @Input() allowNull: boolean = true;\r\n\r\n @Input() textAlign: 'right' | 'left' | null = null;\r\n\r\n @Input() bufferSize: number = 20;\r\n\r\n @Input() remoteOperation: boolean = false;\r\n\r\n @Output()\r\n dropdownToggle: EventEmitter<any> = new EventEmitter<any>();\r\n // this input is Private and only use in LOV\r\n\r\n currentfocusedIndex: number = -1;\r\n showLoading: boolean = false;\r\n\r\n skip: number = -1;\r\n searchText: string = '';\r\n // @Input()\r\n // chipsWidth: string = '';\r\n\r\n text: string = '';\r\n totalCount: number = 0;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n private _dataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n public get dataSource(): AXDataSourceComponent {\r\n return this._dataSource ? this._dataSource : this._contentDataSource;\r\n }\r\n\r\n public set dataSource(v: AXDataSourceComponent) {\r\n this._dataSource = v;\r\n }\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef, private zone: NgZone) {\r\n super();\r\n }\r\n\r\n @ViewChild('d', { static: true })\r\n dropdown: AXDropdownComponent;\r\n\r\n @Input() allowSearch: boolean = true;\r\n @Input() textField: string = 'text';\r\n @Input() valueField: string = 'value';\r\n @Input() mode: 'single' | 'multiple' = 'single';\r\n itemRemove: boolean = false;\r\n @Output() itemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Output() onBlur: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output() onFocus: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n private _items: any[] = [];\r\n @Input()\r\n public get items(): any[] {\r\n return this._items;\r\n }\r\n public set items(v: any[]) {\r\n this._items = v;\r\n if (this.itemsChange) {\r\n this.itemsChange.emit(v);\r\n }\r\n if (this.itemsStatusObserver) {\r\n this.itemsStatusObserver.next(this.items.length);\r\n }\r\n }\r\n\r\n hasSelectedValue: boolean = false;\r\n itemsFiltered: any[] = [];\r\n\r\n // #endregion\r\n\r\n dropDownDisabled: boolean = false;\r\n\r\n @Output()\r\n selectionChanged: EventEmitter<AXSelectBoxSelectionChangedEvent> = new EventEmitter<AXSelectBoxSelectionChangedEvent>();\r\n\r\n @Output()\r\n selectedItemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n private _selectedItems: any[] = [];\r\n @Input()\r\n public get selectedItems(): any[] {\r\n return this._selectedItems || [];\r\n }\r\n public set selectedItems(v: any[]) {\r\n this.setSelectedItemsChange(v);\r\n // if (!v) {\r\n // v = [];\r\n // }\r\n\r\n // const old = this.selectedItems;\r\n // if (JSON.stringify(old) !== JSON.stringify(v)) {\r\n // this._selectedItems = this.mode == 'single' ? v.slice(0, 1) : [...new Set(v)]; //[...new Set(v[0])] : [...new Set(v)];\r\n // this._selectedItems.forEach((c) => (c.selected = true));\r\n // this.selectedItemsChange.emit(this._selectedItems);\r\n // this.selectedValuesChange.emit(this.selectedValues);\r\n // this.clearValidationStyle(this.ref.nativeElement);\r\n // this.waitForData(() => {\r\n // if (this._selectedItems) {\r\n // this.items.forEach((c) => (c.selected = this._selectedItems.some((i) => i[this.valueField] == c[this.valueField])));\r\n // }\r\n // });\r\n // }\r\n }\r\n\r\n setSelectedItemsChange(v: any[], old: any[] = this.selectedItems) {\r\n if (!v) {\r\n v = [];\r\n }\r\n\r\n // const old = this.selectedItems;\r\n if (JSON.stringify(old) !== JSON.stringify(v)) {\r\n this._selectedItems = this.mode == 'single' ? v.slice(0, 1) : [...new Set(v)]; //[...new Set(v[0])] : [...new Set(v)];\r\n this._selectedItems.forEach((c) => (c.selected = true));\r\n this.selectedItemsChange.emit(this._selectedItems);\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n this.clearValidationStyle(this.ref.nativeElement);\r\n this.waitForData(() => {\r\n if (this._selectedItems) {\r\n this.items.forEach((c) => (c.selected = this._selectedItems.some((i) => i[this.valueField] == c[this.valueField])));\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.rowTemplate === undefined && this.rowInputTemplate != undefined) {\r\n this.rowTemplate = this.rowInputTemplate;\r\n }\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n scrolled(e) {\r\n if (\r\n this.remoteOperation &&\r\n this.totalCount > this.items.length &&\r\n this.listContainer.nativeElement.scrollHeight != 0 &&\r\n this.listContainer.nativeElement.scrollHeight - this.listContainer.nativeElement.scrollTop - 300 < 50\r\n ) {\r\n if (this.skip !== this.items.length) {\r\n this.showLoading = true;\r\n this.skip = this.items.length;\r\n const params: AXDataSourceReadParams = {};\r\n params.skip = this.items.length;\r\n params.take = this.bufferSize; //* (Math.floor(this.items.length / this.bufferSize) + 1);\r\n if (this.textbox) {\r\n params.searchText = this.text;\r\n } else {\r\n params.searchText = null;\r\n }\r\n this.fetch(params);\r\n }\r\n }\r\n }\r\n private setSelectedItems(v: any[], isUserInput: boolean) {\r\n let changed = false;\r\n if (isUserInput) {\r\n changed = JSON.stringify(v) !== JSON.stringify(this.selectedItems);\r\n }\r\n this.selectedItems = v;\r\n this.setSelectedIndex();\r\n if (isUserInput && changed) {\r\n this.emitSelectionChangedEvent();\r\n }\r\n }\r\n\r\n private searchChangeObserver: any;\r\n\r\n delay: number = 500;\r\n\r\n textChanged(e) {\r\n if ((e.value === null || e.value === undefined || e.value === '') && (e.oldValue === null || e.oldValue === undefined || e.oldValue === '')) {\r\n } else {\r\n this.currentfocusedIndex = -1;\r\n if (this.remoteOperation) {\r\n this.searchText = this.text;\r\n // this.searchText = e.value;\r\n // this.text = e.value;\r\n // this.items = [];\r\n if (this.items) {\r\n let t = this.items.length;\r\n for (let i = 0; i < t; i++) {\r\n this.items.pop();\r\n }\r\n }\r\n\r\n // this.items.forEach((element) => {\r\n // this.items.pop();\r\n // });\r\n const params: AXDataSourceReadParams = {};\r\n params.searchText = this.text;\r\n // params.searchText = e.value;\r\n params.skip = 0;\r\n params.take = this.bufferSize;\r\n this.fetch(params);\r\n }\r\n }\r\n }\r\n\r\n onButtonClick(e) {\r\n console.log('onButtonClick', e);\r\n }\r\n\r\n private setSelectedIndex(sign: -1 | 1 | null = null): void {\r\n if (sign == null) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.currentfocusedIndex = this.items\r\n .filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))\r\n .indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n } else {\r\n this.currentfocusedIndex = this.items.indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n }\r\n } else {\r\n sign === -1 ? this.currentfocusedIndex-- : this.currentfocusedIndex++;\r\n }\r\n\r\n if (this.remoteOperation) {\r\n this.itemsFiltered = this.items;\r\n } else {\r\n this.itemsFiltered = this.text\r\n ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))\r\n : this.items;\r\n }\r\n\r\n this.currentfocusedIndex =\r\n this.currentfocusedIndex < 0\r\n ? 0\r\n : this.currentfocusedIndex >= this.itemsFiltered.length\r\n ? this.itemsFiltered.length - 1\r\n : this.currentfocusedIndex;\r\n //\r\n // set scroll\r\n if (this.listContainer) {\r\n this.zone.runOutsideAngular(() => {\r\n const itemDiv = this.listContainer.nativeElement.querySelector(`.list-item:nth-child(${this.currentfocusedIndex})`);\r\n if (itemDiv) {\r\n itemDiv.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n });\r\n }\r\n }\r\n\r\n @Output()\r\n selectedValuesChange: EventEmitter<any[] | any> = new EventEmitter<any[] | any>();\r\n\r\n @Input()\r\n public get selectedValues(): any[] | any {\r\n if (this.mode === 'single') {\r\n return this._selectedItems.map((c) => c[this.valueField])[0];\r\n } else {\r\n return this._selectedItems.map((c) => c[this.valueField]) || [];\r\n }\r\n }\r\n\r\n public set selectedValues(v: any[] | any) {\r\n if (this.compareSelectedValues(v)) {\r\n return;\r\n }\r\n if (v == null) {\r\n this.selectedItems = [];\r\n } else {\r\n if (v !== undefined) {\r\n if (v != [] && v != '' && v != null) {\r\n this.hasSelectedValue = true;\r\n }\r\n\r\n this.waitForData(() => {\r\n if (this.mode === 'single') {\r\n if (this.items.filter((c) => v == c[this.valueField])) {\r\n this.selectedItems = this.items.filter((c) => v == c[this.valueField]);\r\n } else {\r\n this.selectedItems = [];\r\n }\r\n } else {\r\n if (Array.isArray(v)) {\r\n if (this.selectedItems.length > v.length) {\r\n this.selectedItems = this.selectedItems.filter((c) => v.includes(c[this.valueField]));\r\n } else {\r\n let addId = [];\r\n v.forEach((vId) => {\r\n addId.push({\r\n [this.valueField]: vId\r\n });\r\n });\r\n\r\n let newId = differenceBy(addId, this.selectedItems, this.valueField);\r\n let vv = [];\r\n newId.forEach((rc) => {\r\n vv.push(rc[this.valueField]);\r\n });\r\n this.items\r\n .filter((c) => vv.includes(c[this.valueField]))\r\n .forEach((res) => {\r\n this.selectedItems.push(res);\r\n });\r\n // this.selectedItems.push(this.items.filter((c) => vv.includes(c[this.valueField])));\r\n this.setSelectedItemsChange(this.selectedItems, vv.length > 0 ? [1] : this.selectedItems);\r\n }\r\n\r\n // this.selectedItems = this.items.filter((c) => v.includes(c[this.valueField]));\r\n } else if (v) {\r\n this.selectedItems = this.items.filter((c) => v === c[this.valueField]);\r\n } else {\r\n this.selectedItems = [];\r\n }\r\n }\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n }\r\n }\r\n\r\n private compareSelectedValues(newValue: any[] | any) {\r\n const currentValue = this.selectedValues;\r\n return (currentValue == null && newValue == null) || JSON.stringify(currentValue) === JSON.stringify(newValue);\r\n }\r\n\r\n private setSelectedValues(v: any[] | any, isUserInput: boolean) {\r\n const changed = isUserInput ? !this.compareSelectedValues(v) : false;\r\n this.selectedValues = v;\r\n if (isUserInput && changed) {\r\n this.emitSelectionChangedEvent();\r\n }\r\n }\r\n\r\n private emitSelectionChangedEvent() {\r\n this.selectionChanged.emit(new AXSelectBoxSelectionChangedEvent(this, this.selectedItems, this.selectedValues));\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.bufferSize < 10) {\r\n this.bufferSize = 10;\r\n }\r\n if (this.mode == 'single') {\r\n this.showCheckBox = false;\r\n }\r\n if (!this.remoteOperation || (this.remoteOperation && this.hasSelectedValue)) {\r\n this.refresh();\r\n }\r\n }\r\n dropdownToggleSelecBox(e) {\r\n this.text = '';\r\n if (this.dropdown.isOpen) {\r\n this.refresh();\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 1);\r\n } else {\r\n // this.refresh();\r\n }\r\n this.dropdownToggle.emit(e);\r\n }\r\n\r\n ngAfterContentInit() {\r\n // if (!this.allowSearch) {\r\n // if (this.readonly == false) {\r\n // this.itemRemove = true;\r\n // this.readonly = true;\r\n // }\r\n // }\r\n this.initValidation(this.ref, 'selectedItems', this.validation);\r\n if (this.dataSource) {\r\n // if (this.allowSearch == false) {\r\n // this.fetch();\r\n // }\r\n this.dataSource.onDataReceived.subscribe((c) => {\r\n this.showLoading = false;\r\n this.dataReceived(c.data.result);\r\n });\r\n }\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private dataReceived(data: any) {\r\n if (this.remoteOperation) {\r\n if (this.searchText && this.searchText != null && this.searchText !== '') {\r\n if (data.totalCount) {\r\n if (this.items.length == 0) {\r\n //this.items = data.items;\r\n data.items.forEach((item) => {\r\n this.items.push(item);\r\n });\r\n } else {\r\n data.items.forEach((item) => {\r\n this.items.push(item);\r\n });\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n }\r\n\r\n this.totalCount = data.totalCount;\r\n } else {\r\n if (this.items.length == 0) {\r\n this.items = data.items;\r\n } else {\r\n data.items.forEach((item) => {\r\n this.items.push(item);\r\n });\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n }\r\n this.totalCount = data.items == undefined ? 0 : data.items.length;\r\n }\r\n } else if (data.items && data.items.length === data.totalCount) {\r\n this.items = data.items;\r\n this.totalCount = data.items.length;\r\n } else if (data.totalCount) {\r\n data.items.forEach((elm) => {\r\n this.items.push(elm);\r\n });\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n this.totalCount = data.totalCount;\r\n } else {\r\n data.forEach((elm) => {\r\n this.items.push(elm);\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n });\r\n this.totalCount = data.length;\r\n }\r\n } else {\r\n this.items = data;\r\n }\r\n\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n // private params: AXDataSourceReadParams = {};\r\n\r\n fetch(params: AXDataSourceReadParams = {}) {\r\n // this.params = params;\r\n if (this.dataSource) {\r\n this.showLoading = true;\r\n this.dataSource.fetch(params);\r\n }\r\n }\r\n\r\n refresh() {\r\n const params: AXDataSourceReadParams = {};\r\n if (this.remoteOperation) {\r\n params.skip = 0;\r\n this.skip = 0;\r\n params.take = this.bufferSize;\r\n }\r\n if (this.dataSource != undefined) {\r\n // this.items = [];\r\n // this.items.forEach((element) => {\r\n // this.items.pop();\r\n // });\r\n\r\n if (this.items) {\r\n let t = this.items.length;\r\n for (let i = 0; i < t; i++) {\r\n this.items.pop();\r\n }\r\n }\r\n\r\n this.fetch(params);\r\n }\r\n }\r\n\r\n handleItemRemoveClick(item) {\r\n if (this.mode === 'single') {\r\n // this.selectedItems = null;\r\n this.setSelectedValues(null, true);\r\n // this.selectedItemsChange.emit(this._selectedItems);\r\n // this.clearValidationStyle(this.ref.nativeElement);\r\n } else {\r\n // this.selectedItems = this.selectedItems.filter((c) => c !== item);\r\n this.setSelectedItems(\r\n this.selectedItems.filter((c) => c[this.valueField] !== item[this.valueField]),\r\n true\r\n );\r\n // this._selectedItems = this._selectedItems.filter(c => c !== item);\r\n // this.selectedItemsChange.emit(this._selectedItems);\r\n // this.clearValidationStyle(this.ref.nativeElement);\r\n }\r\n // this.text = '';\r\n this.validate();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onFocusTextBox(e) {}\r\n\r\n onTextBoxClick(e) {\r\n if (this.disabled == false && this.readonly == false) {\r\n this.dropdown.open();\r\n }\r\n }\r\n\r\n handleItemClick(e: MouseEvent, item: any) {\r\n const value = item[this.valueField];\r\n\r\n if (this.mode === 'single') {\r\n // this.selectedValues = value;\r\n this.setSelectedValues(value, true);\r\n } else {\r\n const exists = this.selectedValues.slice(0);\r\n if (exists.includes(value)) {\r\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\r\n this.handleItemRemoveClick(item);\r\n }\r\n } else {\r\n exists.push(value);\r\n // this.selectedValues = exists;\r\n this.setSelectedValues(exists, true);\r\n }\r\n }\r\n\r\n if (this.mode == 'single') {\r\n this.text = '';\r\n this.dropdown.close();\r\n this.cdr.markForCheck();\r\n }\r\n // if (e.stopPropagation() == undefined) {\r\n // e.stopPropagation();\r\n // }\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n e.stopPropagation();\r\n }\r\n\r\n handleKeyEventSearch(e: KeyboardEvent) {\r\n if (this.disabled || this.readonly) {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n return false;\r\n }\r\n if (e.key === 'Escape') {\r\n this.text = null;\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && e.type === 'keydown') {\r\n if (this.mode === 'single') {\r\n this.currentfocusedIndex = this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1);\r\n this.selectedItemByIndex(this.currentfocusedIndex);\r\n } else {\r\n if (this.dropdown.isOpen) {\r\n this.setSelectedIndex(e.key === 'ArrowDown' ? 1 : -1);\r\n } else {\r\n this.dropdown.open();\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n }\r\n }\r\n // if (e.key == 'Enter' && this.dropdown.isOpen && this.mode == 'single') {\r\n // this.dropdown.close();\r\n // setTimeout(() => {\r\n // this.dropdown.focus();\r\n // }, 0);\r\n // }\r\n //e.stopPropagation();\r\n //e.preventDefault();\r\n e.stopImmediatePropagation();\r\n if (e.type === 'keydown' && e.key == 'Enter' && this.dropdown.isOpen) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.itemsFiltered = this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()));\r\n if (this.itemsFiltered.length === 1) {\r\n this.currentfocusedIndex = 0;\r\n }\r\n } else {\r\n this.itemsFiltered = this.items;\r\n }\r\n\r\n if (\r\n this.selectedItems.filter((c) => c[this.valueField] === this.itemsFiltered[this.currentfocusedIndex][this.valueField]).length > 0 &&\r\n this.mode == 'multiple'\r\n ) {\r\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.selectedItems = this.selectedItems.filter(\r\n (c) =>\r\n c !==\r\n this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[this.currentfocusedIndex]\r\n );\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.valueField] !== this.items[this.currentfocusedIndex][this.valueField]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.mode == 'multiple') {\r\n if (this.currentfocusedIndex != -1) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n if (this.itemsFiltered.length === 1) {\r\n this.selectedItems.push(this.itemsFiltered[0]);\r\n } else {\r\n this.selectedItems.push(this.itemsFiltered[this.currentfocusedIndex]);\r\n }\r\n } else {\r\n this.selectedItems.push(this.items[this.currentfocusedIndex]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.text && this.itemsFiltered?.length === 1) {\r\n this.setSelectedItems(this.itemsFiltered, true);\r\n }\r\n if (this.mode == 'single') {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n }\r\n }\r\n e.stopPropagation();\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n isChar(str: string) {\r\n if (\r\n str.includes('Shift') ||\r\n str.includes('Tab') ||\r\n str.includes('Control') ||\r\n str.includes('Alt') ||\r\n str.includes('CapsLock') ||\r\n str.includes('Meta') ||\r\n str.includes('ContextMenu') ||\r\n str.includes('Enter') ||\r\n str.includes('Backspace') ||\r\n str.includes('PrintScreen') ||\r\n str.includes('ScrollLock') ||\r\n str.includes('Pause') ||\r\n str.includes('Home') ||\r\n str.includes('End') ||\r\n str.includes('Insert') ||\r\n str.includes('PageUp') ||\r\n str.includes('Delete') ||\r\n str.includes('PageDown') ||\r\n str.includes('NumLock') ||\r\n str.includes('Escape') ||\r\n str.includes('Arrow') ||\r\n str.includes('ّF1') ||\r\n str.includes('F2') ||\r\n str.includes('F3') ||\r\n str.includes('F4') ||\r\n str.includes('F5') ||\r\n str.includes('F6') ||\r\n str.includes('F7') ||\r\n str.includes('F8') ||\r\n str.includes('F9') ||\r\n str.includes('F10') ||\r\n str.includes('F11') ||\r\n str.includes('F12')\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n handleKeyEvent(e: any) {\r\n // const NumberMinusPattern = /[a-zA-Z0-9\\-]/g;\r\n // const Farsi = /[پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ\\s]+$/;\r\n // const inputChar = String.fromCharCode(e.charCode);\r\n // const patternEn = /^[a-zA-Z0-9]*$/;\r\n // const pattern = /^[\\u0600-\\u06FF\\s]+$/;\r\n const inputChar = e.key;\r\n if (\r\n (inputChar != 'Backspace' &&\r\n inputChar != 'Backspace' &&\r\n inputChar != 'Tab' &&\r\n inputChar != 'Enter' &&\r\n inputChar != 'Escape' &&\r\n inputChar != 'ArrowDown' &&\r\n inputChar != 'ArrowUp') ||\r\n e.code === 'Space' ||\r\n e.ctrlKey == true\r\n ) {\r\n e.preventDefault();\r\n }\r\n if (\r\n e.key === 'Backspace' &&\r\n e.type === 'keydown' &&\r\n ((this.allowNull === true && this.selectedItems.length > 0) || (this.allowNull === false && this.selectedItems.length > 1))\r\n ) {\r\n this.selectedItems.pop();\r\n this.emitSelectionChangedEvent();\r\n }\r\n if (this.disabled || this.readonly) {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n return false;\r\n }\r\n const INPUT = String.fromCharCode(e.keyCode);\r\n if (this.isChar(e.key) && this.allowSearch && e.ctrlKey == false) {\r\n this.dropdown.open();\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n this.text = e.key;\r\n }\r\n\r\n if (e.key === 'Escape') {\r\n this.text = null;\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && e.type === 'keydown') {\r\n if (this.mode === 'single') {\r\n this.selectedItemByIndex(this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1));\r\n } else {\r\n if (this.dropdown.isOpen) {\r\n // this.setSelectedIndex((e.key === 'ArrowDown' ? 1 : -1));\r\n if (this.allowSearch == false) {\r\n this.setSelectedIndex(e.key === 'ArrowDown' ? 1 : -1);\r\n } else {\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n } else {\r\n this.dropdown.open();\r\n if (this.allowSearch == true) {\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.allowSearch === false) {\r\n if (e.type === 'keydown' && e.key == 'Enter' && this.dropdown.isOpen) {\r\n e.stopImmediatePropagation();\r\n if (\r\n this.selectedItems.filter((c) => c[this.valueField] === this.itemsFiltered[this.currentfocusedIndex][this.valueField]).length > 0 &&\r\n this.mode == 'multiple'\r\n ) {\r\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.selectedItems = this.selectedItems.filter(\r\n (c) =>\r\n c !==\r\n this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[this.currentfocusedIndex]\r\n );\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.valueField] !== this.items[this.currentfocusedIndex][this.valueField]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.mode == 'multiple') {\r\n if (this.currentfocusedIndex != -1) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n if (this.itemsFiltered.length === 1) {\r\n this.selectedItems.push(this.itemsFiltered[0]);\r\n } else {\r\n this.selectedItems.push(this.itemsFiltered[this.currentfocusedIndex]);\r\n }\r\n } else {\r\n this.selectedItems.push(this.items[this.currentfocusedIndex]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.text && this.itemsFiltered.length === 1) {\r\n this.setSelectedItems(this.itemsFiltered, true);\r\n }\r\n if (this.mode == 'single') {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.cdr.markForCheck();\r\n }\r\n\r\n focus(): void {\r\n this.textbox.focus();\r\n }\r\n\r\n selectedItemByIndex(index: number) {\r\n let item = [];\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.itemsFiltered = this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()));\r\n\r\n item = this.itemsFiltered[index];\r\n } else {\r\n item = this.items[index];\r\n }\r\n //\r\n // const item = this.text ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[index] : this.items[index];\r\n if (item) {\r\n this.setSelectedItems([item], true);\r\n }\r\n\r\n this.setSelectedIndex();\r\n }\r\n\r\n getItems(): any[] {\r\n if (this.items == null) {\r\n return [];\r\n }\r\n return !this.remoteOperation && this.text && this.text !== ''\r\n ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))\r\n : this.items;\r\n }\r\n\r\n isItemSelected(item: any): boolean {\r\n return this.selectedItems && this.selectedItems.filter((c) => c[this.valueField] === item[this.valueField]).length > 0;\r\n }\r\n\r\n private itemsStatusObserver: any;\r\n private waitForData(callbackfn: () => void) {\r\n if (this.items && this.items.length) {\r\n callbackfn();\r\n } else if (!this.itemsStatusObserver) {\r\n Observable.create((observer) => {\r\n this.itemsStatusObserver = observer;\r\n })\r\n .pipe(debounceTime(100))\r\n .pipe(distinctUntilChanged())\r\n .subscribe((c) => {\r\n callbackfn();\r\n });\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, ViewEncapsulation, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXQueryBuilderRule, AXQueryBuilderGroup, AXQueryBuilderRuleEvent, AXQueryBuilderControl } from './query-builder.class';\r\nimport { AXTranslator } from '@acorex/core';\r\nimport { AXSelectBoxComponent } from '../selectbox/selectbox.component';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXValidationFormComponent } from '../validation/validation-form.component';\r\n\r\n@Component({\r\n selector: 'ax-query-rule',\r\n templateUrl: 'query-builder-rule.component.html',\r\n host: { class: 'ax ax-query-rule' },\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXQueryBuilderRuleComponent implements OnInit {\r\n @ViewChild('selectBox') selectBox: AXSelectBoxComponent;\r\n @ViewChild('selectBoxValue') selectBoxValue: AXSelectBoxComponent;\r\n\r\n @ViewChild('selectBoxBoolean') selectBoxBoolean: AXSelectBoxComponent;\r\n\r\n @ViewChild('textBoxNameValue') textBoxNameValue: AXTextBoxComponent;\r\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\r\n @Input()\r\n isEditing: boolean = true;\r\n\r\n @Input()\r\n rule: AXQueryBuilderRule;\r\n\r\n @Input()\r\n parent: AXQueryBuilderGroup;\r\n\r\n @Input()\r\n fields: any[] = [];\r\n\r\n @Output()\r\n onRuleDelete: EventEmitter<AXQueryBuilderRuleEvent> = new EventEmitter<AXQueryBuilderRuleEvent>();\r\n\r\n @Output()\r\n ruleChanged: EventEmitter<AXQueryBuilderRuleEvent> = new EventEmitter<AXQueryBuilderRuleEvent>();\r\n\r\n showValue: boolean = false;\r\n\r\n isOnDemandLabel: boolean = false;\r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n\r\n ngAfterViewInit(): void {\r\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\r\n //Add 'implements AfterViewInit' to the class.\r\n if (this.rule.onDemandLabel) {\r\n this.isOnDemandLabel = true;\r\n }\r\n }\r\n provideDataBoolean = (e) => {\r\n return new Promise((resolve) => {\r\n resolve([\r\n {\r\n value: 'true',\r\n text: AXTranslator.get('queryBuilder.true')\r\n },\r\n {\r\n value: 'false',\r\n text: AXTranslator.get('queryBuilder.false')\r\n }\r\n\r\n ])\r\n })\r\n }\r\n\r\n saveRule() {\r\n this.form.validate().then(c => {\r\n });\r\n }\r\n\r\n\r\n provideDataOperator = (e) => {\r\n\r\n return new Promise((resolve) => {\r\n if (this.rule.dataType === 'string') {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'contains',\r\n text: AXTranslator.get('queryBuilder.contains')\r\n },\r\n {\r\n value: 'start-with',\r\n text: AXTranslator.get('queryBuilder.start-with')\r\n },\r\n {\r\n value: 'end-with',\r\n text: AXTranslator.get('queryBuilder.end-with')\r\n },\r\n {\r\n value: 'not-equal',\r\n text: AXTranslator.get('queryBuilder.not-equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n if (this.rule.dataType === 'number') {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'gt',\r\n text: AXTranslator.get('queryBuilder.greater-than')\r\n },\r\n {\r\n value: 'gte',\r\n text: AXTranslator.get('queryBuilder.greater-than-equal')\r\n },\r\n {\r\n value: 'lt',\r\n text: AXTranslator.get('queryBuilder.less-than')\r\n },\r\n {\r\n value: 'lte',\r\n text: AXTranslator.get('queryBuilder.less-than-equal')\r\n },\r\n {\r\n value: 'not-equal',\r\n text: AXTranslator.get('queryBuilder.not-equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n if (this.rule.dataType === 'boolean') {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n resolve([]);\r\n });\r\n };\r\n\r\n handleEditClick() {\r\n this.isEditing = true;\r\n }\r\n\r\n handleCommitClick() {\r\n this.isEditing = false;\r\n this.ruleChanged.emit({ items: this.rule, component: this });\r\n }\r\n handleRemoveClick() {\r\n this.onRuleDelete.emit({ items: this.rule, component: this });\r\n }\r\n captionChange(e) {\r\n if (e.selectedItems[0]) {\r\n this.rule.caption = e.selectedItems[0].caption;\r\n this.rule.dataField = e.selectedItems[0].dataField;\r\n this.rule.dataType = e.selectedItems[0].dataType;\r\n this.rule.control = e.selectedItems[0].control || new AXQueryBuilderControl();\r\n this.rule.dataFieldItem[0] = e.selectedItems[0];\r\n }\r\n\r\n if (this.selectBox) {\r\n this.selectBox.refresh();\r\n }\r\n\r\n this.rule.value = null;\r\n if (this.rule.control.type === 'selectBox') {\r\n this.selectBoxValue.refresh();\r\n }\r\n if (this.rule.control.type == 'boolean') {\r\n this.selectBoxBoolean.refresh();\r\n }\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n\r\n operatorChange(e) {\r\n this.rule.operator = e[0].value;\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n\r\n\r\n if (e[0].value !== 'null' && e[0].value !== 'not-null') {\r\n this.showValue = true;\r\n\r\n } else {\r\n this.showValue = false;\r\n this.rule.value = '';\r\n this.rule.text = '';\r\n this.rule.valueItem = [];\r\n this.rule.onDemandLabel = '';\r\n\r\n }\r\n }\r\n valueChange(e) {\r\n // this.rule.text = e.value == undefined ? e[0].value : (e.value == null ? '' : e.value);\r\n this.rule.text = e[0] ? (e[0].value == null ? '' : e[0].value) : (e.value == null ? '' : e.value);\r\n this.rule.onDemandLabel = '';\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n onDemandLabelChange(e) {\r\n // this.rule.onDemandLabel = e.value == undefined ? '????|' + e[0].value : '????|' + e.value;\r\n this.rule.onDemandLabel = e[0] ? '????|' + (e[0].value == null ? '' : e[0].value) : '????|' + (e.value == null ? '' : e.value)\r\n this.rule.value = '';\r\n this.rule.text = '';\r\n this.rule.valueItem = [];\r\n\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n valueBooleanChange(e) {\r\n // this.rule.text = e.value == undefined ? e[0].value : (e.value == null ? '' : e.value);\r\n this.rule.text = e[0] ? (e[0].value == null ? '' : e[0].value) : (e.value == null ? '' : e.value);\r\n this.rule.value = e.value == undefined ? e[0].value : e.value;\r\n this.rule.onDemandLabel = '';\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n getOnDemandName(v) {\r\n return v ? v.split('|')[1] : '';\r\n }\r\n selectedItemsChange(e) {\r\n let n = this.getOption('textField');\r\n this.rule.text = e[0][n];\r\n if (this.rule && this.rule.control.options.valueField) {\r\n this.rule.value = e[0][this.rule.control.options.valueField];\r\n } else {\r\n this.rule.value = e[0].value;\r\n }\r\n this.rule.valueItem[0] = e[0];\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n this.rule.onDemandLabel = '';\r\n }\r\n onDemandLabel(e) {\r\n // if (e.value && (this.rule.onDemandLabel == '????|' || this.rule.onDemandLabel === undefined || this.rule.onDemandLabel === null || this.rule.onDemandLabel === '')) {\r\n // this.textBoxNameValue.focus();\r\n // }\r\n if (e.value == false) {\r\n this.rule.onDemandLabel = '';\r\n }\r\n this.isOnDemandLabel = e.value;\r\n }\r\n getProvideData = (e) => {\r\n if (this.rule && this.rule.control.options && this.rule.control.options.dataSource) {\r\n return this.rule.control.options.dataSource({ ...e, optionsData: { ...this.rule.control.options } });\r\n }\r\n };\r\n\r\n getOption(name: string) {\r\n return this.rule.control.options ? this.rule.control.options[name] : null;\r\n }\r\n}\r\n","import { AXButtonItem, AXTranslator } from '@acorex/core';\r\nimport { ChangeDetectorRef, Component, ViewChild } from '@angular/core';\r\nimport { AXBasePopupPageComponent } from '../../base/base-page.class';\r\nimport { AXMenuItemClickEvent } from '../../menu/menu.component';\r\nimport { AXQueryBuilderGroup, AXQueryBuilderPopup, AXQueryBuilderRule } from '../query-builder.class';\r\n\r\nimport { AXDataSourceReadParams } from '../../data-source/read-param'\r\nimport { AXToastService } from '../../toast/toast.service';\r\nimport { AXValidationFormComponent } from '../../validation/validation-form.component';\r\n@Component({\r\n templateUrl: './query-builder-popup.component.html'\r\n})\r\n\r\nexport class AXQueryBuilderPopupComponent extends AXBasePopupPageComponent {\r\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\r\n constructor(private toast: AXToastService) {\r\n super();\r\n }\r\n group: AXQueryBuilderGroup;\r\n items: AXQueryBuilderRule[] = [];\r\n groupCopy: AXQueryBuilderGroup;\r\n complateValue: boolean = true;\r\n provideData: any;\r\n makeJsonString(items: any[]) {\r\n return new Promise((resolve, reject) => {\r\n items.forEach((element, index, array) => {\r\n if (element.items) {\r\n this.makeJsonString(element.items);\r\n } else {\r\n if (element.control && element.control.options && (element.control.options.dataSource === '' || element.control.options.dataSource === undefined)) {\r\n element.control.options.dataSource = this.provideData;\r\n }\r\n }\r\n if (index === array.length - 1) {\r\n resolve(array[0]);\r\n }\r\n });\r\n });\r\n }\r\n ngAfterViewInit() {\r\n var groupString = JSON.stringify(this.group);\r\n this.groupCopy = JSON.parse(groupString);\r\n this.makeJsonString(this.groupCopy.items);\r\n for (let i = 0; i < this.groupCopy.items.length; i++) {\r\n this.getNoValueRule(this.groupCopy.items[i]);\r\n }\r\n if (this.items.length < 1) {\r\n this.close(this.group);\r\n }\r\n\r\n }\r\n getValue(v) {\r\n return v.indexOf('????') == 0 ? v.split('|')[1] : v;\r\n }\r\n getNoValueRule(gr) {\r\n // for (let i = 0; i < gr.items.length; i++) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.getNoValueRule(gr.items[i]);\r\n }\r\n\r\n } else {\r\n if (gr.onDemandLabel?.indexOf('????') == 0) {\r\n this.items.push(gr);\r\n }\r\n }\r\n\r\n // }\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n\r\n textValueChange(e, rule) {\r\n rule.value = e.value;\r\n rule.text = e.value;\r\n\r\n }\r\n selectedItemsChange(e, rule) {\r\n let n = this.getOption('textField', rule);\r\n rule.text = e[0][n];\r\n if (rule && rule.control.options.valueField) {\r\n rule.value = e[0][rule.control.options.valueField];\r\n } else {\r\n rule.value = e[0].value;\r\n }\r\n rule.valueItem[0] = e[0];\r\n\r\n }\r\n valueChange(e, rule) {\r\n rule.value = e.value;\r\n rule.text = e.value;\r\n\r\n }\r\n valueBooleanChange(e, rule) {\r\n rule.text = e.value == undefined ? e[0].value : e.value;\r\n rule.value = e.value == undefined ? e[0].value : e.value;\r\n\r\n }\r\n getOption(name: string, rule) {\r\n return rule.control.options ? rule.control.options[name] : null;\r\n }\r\n getProvideData = (e: AXDataSourceReadParams) => {\r\n if (e.extra && e.extra.control.options && e.extra.control.options.dataSource) {\r\n return e.extra.control.options.dataSource({ ...e, optionsData: { ...e.extra.control.options } });\r\n }\r\n };\r\n\r\n provideDataBoolean = (e) => {\r\n return new Promise((resolve) => {\r\n resolve([\r\n {\r\n value: 'true',\r\n text: AXTranslator.get('queryBuilder.true')\r\n },\r\n {\r\n value: 'false',\r\n text: AXTranslator.get('queryBuilder.false')\r\n }\r\n\r\n ])\r\n })\r\n }\r\n\r\n findNullValue(gr) {\r\n for (let i = 0; i < gr.length; i++) {\r\n if (gr[i].value === null || gr[i].value === undefined || gr[i].value === '') {\r\n this.complateValue = false;\r\n }\r\n }\r\n\r\n\r\n // if (gr.condition) {\r\n // for (let i = 0; i < gr.items.length; i++) {\r\n // this.findNullValue(gr.items[i]);\r\n // }\r\n\r\n // } else {\r\n // if (gr.onDemandLabel?.indexOf('????') == 0 || gr.value === null || gr.value === undefined || gr.value === '') {\r\n // this.complateValue = false;\r\n // }\r\n // }\r\n\r\n }\r\n\r\n onFooterButtonClick(e: AXMenuItemClickEvent) {\r\n if (e.name === 'confirm') {\r\n this.form.validate().then(c => {\r\n if (c.result === true) {\r\n this.close(this.groupCopy);\r\n }\r\n });\r\n }\r\n if (e.name === 'cancel') {\r\n this.close();\r\n }\r\n\r\n }\r\n\r\n getFooterButtons(): AXButtonItem[] {\r\n return [\r\n {\r\n text: AXTranslator.get('common.confirm'),\r\n name: 'confirm',\r\n style: 'ax primary',\r\n icon: 'far fa-check-circle'\r\n },\r\n {\r\n text: AXTranslator.get('common.cancel'),\r\n name: 'cancel',\r\n style: 'ax light',\r\n icon: 'far fa-times-circle'\r\n }\r\n ]\r\n }\r\n}","import { AXQueryBuilderGroup, AXQueryBuilderStringType } from \"./query-builder.class\";\r\nimport { Injectable } from '@angular/core';\r\nimport { AXPopupService } from '../popup/popup.service';\r\nimport { AXQueryBuilderPopupComponent } from './query-builder-popup/query-builder-popup.component'\r\nimport { AXToastService } from '../toast/toast.service';\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXQueryBuilderService {\r\n constructor(private popup: AXPopupService, private toast: AXToastService) {\r\n\r\n }\r\n canOpen: boolean = false;\r\n canRun: boolean = false;\r\n public runQuery(group: AXQueryBuilderGroup, provideData) {\r\n\r\n return new Promise((resolve) => {\r\n this.canOpen = false;\r\n for (let i = 0; i < group.items.length; i++) {\r\n this.getNoValueRule(group.items[i]);\r\n }\r\n if (this.canOpen) {\r\n this.canRun = true;\r\n for (let i = 0; i < group.items.length; i++) {\r\n if (this.canRun == true) {\r\n this.findNullValue(group.items[i])\r\n }\r\n }\r\n if (this.canRun) {\r\n this.popup.open(AXQueryBuilderPopupComponent, { data: { group: group, provideData: provideData }, title: \"دریافت مقادیر\" }).then(c => {\r\n resolve(c)\r\n })\r\n }\r\n } else {\r\n resolve(group);\r\n }\r\n })\r\n\r\n\r\n\r\n }\r\n\r\n findNullValue(gr) {\r\n if (this.canRun == true) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.findNullValue(gr.items[i]);\r\n }\r\n\r\n } else {\r\n if (gr.onDemandLabel == '????|') {\r\n this.canRun = false;\r\n this.toast.error('لطفا نام متغیر های مورد نیاز را کامل کنید')\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n private getNoValueRule(gr) {\r\n // for (let i = 0; i < gr.items.length; i++) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.getNoValueRule(gr.items[i]);\r\n }\r\n\r\n } else {\r\n if (gr.onDemandLabel?.indexOf('????') == 0) {\r\n this.canOpen = true;\r\n }\r\n }\r\n\r\n // }\r\n }\r\n\r\n public getQueryString(group: AXQueryBuilderGroup, type: AXQueryBuilderStringType): string {\r\n let query = '';\r\n switch (type) {\r\n case 'simple':\r\n if (group.items.length > 0) {\r\n query = ' ( ';\r\n }\r\n for (let i = 0; i < group.items.length; i++) {\r\n const item = group.items[i];\r\n if (item instanceof AXQueryBuilderGroup) {\r\n \r\n query = query + item.queryString;\r\n \r\n } else {\r\n \r\n query = query + ' ' + item.caption + ' ' + item.operator + ' ' + item.value;\r\n \r\n }\r\n if (i !== group.items.length - 1 && query != ' ( ') {\r\n query = query + ' ' + group.condition;\r\n }\r\n \r\n }\r\n if (group.items.length > 0) {\r\n query = query + ' ) ';\r\n } \r\n break;\r\n \r\n case 'elastic':\r\n if (group.items.length > 0) {\r\n query = ' ( ';\r\n }\r\n for (let i = 0; i < group.items.length; i++) {\r\n const item = group.items[i];\r\n if (item instanceof AXQueryBuilderGroup) {\r\n \r\n query = query + item.queryStringElastic;\r\n \r\n } else {\r\n \r\n query = query + ' ' + item.dataField + ' ' + item.operator + ' ' + item.value;\r\n \r\n }\r\n if (i !== group.items.length - 1 && query != ' ( ') {\r\n query = query + ' ' + group.condition;\r\n }\r\n \r\n }\r\n if (group.items.length > 0) {\r\n query = query + ' ) ';\r\n } \r\n \r\n break;\r\n case 'sql':\r\n \r\n break;\r\n }\r\n \r\n \r\n\r\n\r\n return query;\r\n }\r\n\r\n}","import { Component, OnInit, Input, ViewEncapsulation, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXValidationFormComponent } from '../validation/validation-form.component';\r\nimport { AXQueryBuilderRuleComponent } from './query-builder-rule.component';\r\nimport { AXQueryBuilderGroup, AXQueryBuilderGroupEvent, AXQueryBuilderRuleEvent, AXQueryBuilderRule } from './query-builder.class';\r\nimport { AXQueryBuilderService } from './query-builder.service'\r\n@Component({\r\n selector: 'ax-query-group',\r\n templateUrl: 'query-builder-group.component.html',\r\n host: { class: 'ax ax-query-group' },\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXQueryBuilderGroupComponent implements OnInit {\r\n\r\n @ViewChild('queryRule') queryRule: AXQueryBuilderRuleComponent;\r\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\r\n @Input()\r\n group: AXQueryBuilderGroup;\r\n\r\n collapsed: boolean = false;\r\n\r\n @Input()\r\n parent: AXQueryBuilderGroup;\r\n\r\n @Input()\r\n fields: any[] = [];\r\n\r\n //ruleIsEditing: boolean = true;\r\n\r\n @Output()\r\n groupRuleChanged: EventEmitter<AXQueryBuilderGroupEvent> = new EventEmitter<AXQueryBuilderGroupEvent>();\r\n\r\n showGroupCondition: boolean = false;\r\n\r\n constructor(private qs: AXQueryBuilderService) { }\r\n\r\n ngOnInit() { }\r\n\r\n ruleDelete(e: AXQueryBuilderRuleEvent) {\r\n this.group.items = this.group.items.filter(c => c !== e.items);\r\n this.ruleChanged(null);\r\n }\r\n handleRemoveClick() {\r\n this.parent.items = this.parent.items.filter(c => c !== this.group);\r\n this.groupRuleChanged.emit({ groups: this.group, component: this });\r\n }\r\n saveRule() {\r\n // this.form.validate().then(c => {\r\n // });\r\n // return this.queryRule.saveRule();\r\n }\r\n addRule() {\r\n const item: AXQueryBuilderRule = new AXQueryBuilderRule();\r\n if (this.fields.length > 0) {\r\n // item.caption = this.fields[0].caption;\r\n // item.dataType = this.fields[0].dataType;\r\n // item.dataField = this.fields[0].dataField;\r\n } else {\r\n\r\n }\r\n\r\n item.operator = 'equal';\r\n\r\n if (item.dataType === 'string') {\r\n item.value = '';\r\n }\r\n if (item.dataType === 'number') {\r\n item.value = 0;\r\n }\r\n\r\n if (this.group.items == undefined) {\r\n this.group.items = [];\r\n }\r\n this.group.items.push(item);\r\n this.ruleChanged(null);\r\n }\r\n addGroup() {\r\n this.showGroupCondition = true;\r\n }\r\n addGroupOR() {\r\n this.makeGroup(\"OR\");\r\n }\r\n addGroupAND() {\r\n this.makeGroup(\"AND\");\r\n }\r\n makeGroup(_condition) {\r\n let r: AXQueryBuilderGroup = new AXQueryBuilderGroup();\r\n r.condition = _condition;\r\n r.items = [];\r\n r.queryString = '';\r\n if (this.group.items == undefined) {\r\n this.group.items = [];\r\n }\r\n this.group.items.push(r);\r\n this.showGroupCondition = false;\r\n this.ruleChanged(null);\r\n }\r\n changeDetailMode() {\r\n //if (this.parent) {\r\n this.collapsed = !this.collapsed;\r\n // this.ruleIsEditing = false;\r\n //}\r\n }\r\n\r\n handleChangeClick() {\r\n if (this.group.condition == 'OR') {\r\n this.group.condition = 'AND';\r\n } else {\r\n this.group.condition = 'OR';\r\n }\r\n this.ruleChanged(null);\r\n\r\n }\r\n\r\n ruleChanged(e) {\r\n this.group.queryString = this.qs.getQueryString(this.group, 'simple');\r\n this.group.queryStringElastic = this.qs.getQueryString(this.group,'elastic')\r\n this.groupRuleChanged.emit({ groups: this.group, component: this });\r\n }\r\n\r\n\r\n}","import { AXBaseComponent } from '../base/element.class';\r\nimport { Component, Input, Output, EventEmitter, ElementRef, ViewEncapsulation, ViewChild } from '@angular/core';\r\nimport { AXTranslator, AXHtmlUtil } from '@acorex/core';\r\nimport { AXQueryBuilderGroup, AXQueryBuilderGroupEvent, AXQueryBuilderGroupItem } from './query-builder.class';\r\nimport { AXQueryBuilderGroupComponent } from './query-builder-group.component';\r\nimport { AXToastService } from '../toast/toast.service';\r\n\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-query-builder',\r\n templateUrl: './query-builder.component.html',\r\n styleUrls: ['./query-builder.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXQueryBuilderComponent extends AXBaseComponent {\r\n\r\n @ViewChild('queryGroup') queryGroup: AXQueryBuilderGroupComponent;\r\n\r\n @Input()\r\n query: AXQueryBuilderGroup;\r\n\r\n rootGroup: AXQueryBuilderGroup = new AXQueryBuilderGroup();\r\n\r\n\r\n ngOnInit(): void {\r\n\r\n\r\n this.rootGroup.condition = this.query.condition ? this.query.condition : \"AND\";\r\n this.rootGroup.items = this.query.items ? this.query.items : [];\r\n\r\n }\r\n\r\n constructor(private ref: ElementRef, private toast: AXToastService) {\r\n super();\r\n }\r\n\r\n @Input()\r\n fields: any[] = [];\r\n\r\n // @Input()\r\n // mode: 'immediate' | 'click' = 'click';\r\n\r\n @Output()\r\n onRuleChanged: EventEmitter<AXQueryBuilderGroupEvent> = new EventEmitter<AXQueryBuilderGroupEvent>();\r\n\r\n saved: boolean = false;\r\n\r\n\r\n public getQueryBuilder() {\r\n return ({ groups: this.rootGroup });\r\n }\r\n\r\n ruleChanged(e) {\r\n this.onRuleChanged.emit({ component: this, groups: this.rootGroup });\r\n }\r\n\r\n\r\n\r\n public saveRule() {\r\n /// return this.queryGroup.saveRule();\r\n return new Promise((resolve, reject) => {\r\n this.saved = true;\r\n for (let i = 0; i < this.rootGroup.items.length; i++) {\r\n if (this.saved == true) {\r\n this.findNullValue(this.rootGroup.items[i])\r\n }\r\n }\r\n if (this.saved == true) {\r\n resolve(this.rootGroup);\r\n } else {\r\n reject();\r\n }\r\n })\r\n\r\n }\r\n\r\n findNullValue(gr) {\r\n if (this.saved == true) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.findNullValue(gr.items[i]);\r\n }\r\n\r\n } else {\r\n if (gr.onDemandLabel == '????|') {\r\n this.saved = false;\r\n this.toast.error('لطفا نام متغیر های مورد نیاز را کامل کنید')\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n // selectionFieldsChanged(e, rules: AXQueryBuilderRule) {\r\n // \r\n // rules.dataField = e.selectedItems[0].dataField;\r\n // rules.caption = e.selectedItems[0].caption;\r\n // rules.dataType = e.selectedItems[0].dataType;\r\n\r\n // // TO DO chack dataType For Def operator and Value\r\n // if (rules.dataType == 'string') {\r\n // rules.operator = this.operatorStringItem[0].id;\r\n // rules.value = 'null';\r\n // }\r\n // if (rules.dataType == 'number') {\r\n // rules.operator = this.operatorNumberItem[0].id;\r\n // rules.value = '0';\r\n // }\r\n\r\n\r\n // this.onRuleChanged.emit({ groups: this.rootGroup, queryString: this.getQueryDisplay(), component: this, htmlElement: this.ref.nativeElement })\r\n // }\r\n\r\n // selectionOparatorChanged(e, rules: AXQueryBuilderRule) {\r\n // rules.operator = e.selectedItems[0].id;\r\n // }\r\n\r\n // provideDataFields = (e) => {\r\n // return new Promise((resolve) => {\r\n // resolve(this.fields);\r\n // });\r\n // }\r\n\r\n // provideDataOperatorString = (e) => {\r\n // return new Promise((resolve) => {\r\n // resolve(this.operatorStringItem);\r\n // });\r\n // }\r\n // provideDataOperatorNumber = (e) => {\r\n // return new Promise((resolve) => {\r\n // resolve(this.operatorNumberItem);\r\n // });\r\n // }\r\n\r\n // private getQueryDisplay(gr = this.list, _condition = this.list[0].condition) {\r\n // var cap: string = '(';\r\n\r\n // for (let j = 0; j < gr.length; j++) {\r\n // if (j > 0) {\r\n // cap = cap + _condition;\r\n // }\r\n // cap = cap + \" ( \";\r\n // for (let i = 0; i < gr[j].items.length; i++) {\r\n // if (gr[j].items[i].value && gr[j].items[i].operator && gr[j].items[i].caption || ((gr[j].items[i].operator == \"is-empty\" || gr[j].items[i].operator == \"is-not-empty\") && gr[j].items[i].caption)) {\r\n // var opr: string;\r\n // if (gr[j].items[i].dataType == \"number\" || gr[j].items[i].dataType == \"date\" || gr[j].items[i].dataType == \"dateTime\") {\r\n // let d = this.operatorNumberItem.filter(c => c.id == gr[j].items[i].operator);\r\n // opr = d[0].text;\r\n // } else {\r\n // let d = this.operatorStringItem.filter(c => c.id == gr[j].items[i].operator);\r\n // opr = d[0].text;\r\n // }\r\n // if ((gr[j].items[i].operator == \"is-empty\" || gr[j].items[i].operator == \"is-not-empty\")) {\r\n\r\n // if (i === gr[j].items.length - 1) {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\";\r\n // } else {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\" + \" \" + opr + \" \" + gr[j].condition;\r\n // }\r\n // } else {\r\n // var val: string;\r\n\r\n // if (gr[j].items[i].dataType == 'date') {\r\n // // val = moment(item.value).locale('fa').format('YYYY/MM/DD');\r\n // } else if (gr[j].items[i].dataType == 'dateTime') {\r\n // // val = moment(item.value).locale('fa').format('HH:mm YYYY/MM/DD');\r\n // } else {\r\n // val = gr[j].items[i].value;\r\n // }\r\n // if (i === gr[j].items.length - 1) {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\" + \" \" + opr + \" \" + val\r\n // } else {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\" + \" \" + opr + \" \" + val + \" \" + gr[j].condition\r\n // }\r\n\r\n // }\r\n // }\r\n // }\r\n\r\n // if (gr[j].groups && gr[j].groups.length > 0) {\r\n // let c = this.getQueryDisplay(gr[j].groups, gr[j].condition);\r\n // if (c != \"( ) \") {\r\n // if (gr[j].items.length > 0 || j > 0) {\r\n // cap = cap + \" \" + gr[j].condition + \" \" + c + \" \";\r\n // } else {\r\n // cap = cap + \" \" + c + \" \";\r\n // }\r\n\r\n // }\r\n // }\r\n\r\n // cap = cap + \" ) \";\r\n // };\r\n\r\n // cap = cap + \" ) \";\r\n // return cap;\r\n // }\r\n\r\n // deleteGroup(groupOut: AXQueryBuilderGroup, groupIn: AXQueryBuilderGroup) {\r\n // groupOut.items = groupOut.items.filter(c => c.id != groupIn.id);\r\n // }\r\n\r\n // deleteRule1(group: AXQueryBuilderGroup, rule: AXQueryBuilderRule) {\r\n // group.items = group.items.filter(c => c.id != rule.id);\r\n // }\r\n\r\n\r\n // addRule(group: AXQueryBuilderGroup) {\r\n // const item: AXQueryBuilderRule = new AXQueryBuilderRule();\r\n // group.items.push(item);\r\n // }\r\n\r\n // addGroupAND(group: AXQueryBuilderGroup) {\r\n // this.addGroupOnClick(group);\r\n // group.condition = \"AND\";\r\n // }\r\n // addGroupOR(group: AXQueryBuilderGroup) {\r\n // this.addGroupOnClick(group);\r\n // group.condition = \"OR\";\r\n // }\r\n\r\n // addGroupOnClick(groups: AXQueryBuilderGroup) {\r\n // let r: AXQueryBuilderGroup = new AXQueryBuilderGroup();\r\n // r.condition = \"\";\r\n // r.items = [];\r\n // if (groups.items == undefined) {\r\n // groups.items = [];\r\n // }\r\n // groups.items.push(r);\r\n // }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSearchBoxComponent } from './searchbox.component';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXSearchBoxComponent],\r\n imports: [CommonModule, AXTextBoxModule, AXButtonModule, AXFormGroupModule, AXTranslatorModule, FormsModule],\r\n exports: [AXSearchBoxComponent],\r\n providers: []\r\n})\r\nexport class AXSearchBoxModule { }\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n ContentChild,\r\n NgZone,\r\n HostListener\r\n} from '@angular/core';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXBaseSizableComponent, AXBaseInputComponent, AXElementSize, AXValidatableComponent, AXBaseValueComponent } from '../base/element.class';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXValidation } from '../validation/validation.component';\r\nimport { AXDataSourceReadParams } from '../data-source/read-param';\r\nimport { AXSearchBoxComponent } from '../searchbox/searchbox.component';\r\nimport { AXConfig, AXObjectUtil, AXTranslator } from '@acorex/core';\r\nimport { AXValueEvent } from '../base/events.class';\r\n\r\n\r\nexport class AXSelectBoxValueChangedEvent extends AXValueEvent<any | any[]> {\r\n value?: any;\r\n oldValue?: any;\r\n isUserInput: boolean = false;\r\n selectedKeys?: any[];\r\n selectedItems?: any[];\r\n}\r\n\r\n@Component({\r\n selector: 'ax-select-box2',\r\n templateUrl: './selectbox2.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBox2Component }]\r\n})\r\nexport class AXSelectBox2Component extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseInputComponent, AXBaseValueComponent<any>{\r\n\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n span: ElementRef<HTMLElement>;\r\n\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n textbox: AXTextBoxComponent;\r\n\r\n @ViewChild('listContainer', { static: true })\r\n listContainer: ElementRef<HTMLDivElement>;\r\n\r\n @ViewChild('searchBox', { static: false })\r\n searchBox: AXSearchBoxComponent;\r\n\r\n @ViewChild('textBoxSelectBox', { static: true })\r\n textBoxSelectBox: AXTextBoxComponent;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n @ViewChild('d', { static: true })\r\n dropdown: AXDropdownComponent;\r\n\r\n\r\n @Input() showDropDownButton: boolean = true;\r\n @Input() readonly: boolean = false;\r\n @Input() rtl: boolean = AXConfig.get('layout.rtl');\r\n @Input() disabled: boolean;\r\n @Input() placeholder: string;\r\n @Input() size: AXElementSize = 'md';\r\n @Input() allowNull: boolean = true;\r\n @Input() textAlign: 'right' | 'left' | null = null;\r\n @Input() bufferSize: number = 10;\r\n @Input() remoteOperation: boolean = false;\r\n @Input() allowSearch: boolean = true;\r\n @Input() textField: string = 'text';\r\n @Input() valueField: string = 'value';\r\n @Input() selectionMode: 'single' | 'multiple' = 'single';\r\n @Input() selectionDataMode: 'value' | 'item' = 'value';\r\n\r\n currentfocusedIndex: number = -1;\r\n showLoading: boolean = false;\r\n skip: number = -1;\r\n searchText: string = '';\r\n text: string = '';\r\n totalCount: number = 0;\r\n itemsFiltered: any[] = [];\r\n\r\n private isUserInput: boolean = false;\r\n\r\n private _dataSource: AXDataSourceComponent;\r\n @Input()\r\n public get dataSource(): AXDataSourceComponent {\r\n return this._dataSource ? this._dataSource : this._contentDataSource;\r\n }\r\n public set dataSource(v: AXDataSourceComponent) {\r\n this._dataSource = v;\r\n }\r\n\r\n private _validation: AXValidation;\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef, private zone: NgZone) {\r\n super();\r\n }\r\n\r\n\r\n private _value: any | any[];\r\n @Input()\r\n public get value(): any | any[] {\r\n return this._value;\r\n }\r\n public set value(v: any | any[]) {\r\n if (v !== this._value) {\r\n const oldValue = AXObjectUtil.deepJSONClone(this._value);\r\n if (this.selectionMode === 'multiple') {\r\n this._value = Array.isArray(v) ? v : (v ? [v] : []);\r\n } else {\r\n this._value = Array.isArray(v) ? v[0] : v;\r\n }\r\n this.valueChange.emit(this._value);\r\n this.onValueChanged.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n isUserInput: this.isUserInput,\r\n oldValue,\r\n value: this._value,\r\n selectedKeys: this.selectedItems.map(c => c[this.valueField]),\r\n selectedItems: this.selectedItems.slice()\r\n });\r\n this.isUserInput = false;\r\n this.renderSelection();\r\n }\r\n }\r\n\r\n\r\n private _selectedItems: any[];\r\n public get selectedItems(): any[] {\r\n return this._selectedItems || [];\r\n }\r\n\r\n private _items: any[] = [];\r\n @Input()\r\n public get items(): any[] {\r\n return this._items;\r\n }\r\n public set items(v: any[]) {\r\n this._items = v;\r\n if (this.itemsChange) {\r\n this.itemsChange.emit(v);\r\n }\r\n this.renderSelection();\r\n }\r\n\r\n @Output()\r\n itemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Output()\r\n onBlur: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onFocus: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n public valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n public onValueChanged: EventEmitter<AXSelectBoxValueChangedEvent> = new EventEmitter<AXSelectBoxValueChangedEvent>();\r\n\r\n\r\n\r\n ngOnInit() {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n scrolled(e) {\r\n if (this.remoteOperation && this.totalCount > this.items.length && this.listContainer.nativeElement.scrollHeight != 0\r\n && this.listContainer.nativeElement.scrollHeight - this.listContainer.nativeElement.scrollTop - 300 < 50) {\r\n this.showLoading = true;\r\n\r\n if (this.skip !== this.items.length) {\r\n this.skip = this.items.length;\r\n\r\n const params: AXDataSourceReadParams = {};\r\n params.skip = this.items.length;\r\n params.take = this.bufferSize * (Math.floor(this.items.length / this.bufferSize) + 1);\r\n if (this.textbox) {\r\n params.searchText = this.text;\r\n } else {\r\n params.searchText = null;\r\n }\r\n this.fetch(params);\r\n }\r\n }\r\n }\r\n\r\n textChanged(e) {\r\n this.currentfocusedIndex = -1;\r\n if (this.remoteOperation) {\r\n this.searchText = this.text;\r\n this.items = [];\r\n const params: AXDataSourceReadParams = {};\r\n params.searchText = this.text;\r\n params.skip = 0;\r\n params.take = this.bufferSize;\r\n this.fetch(params);\r\n }\r\n }\r\n\r\n private renderSelection() {\r\n const func = () => {\r\n if (!this.value) {\r\n return [];\r\n }\r\n if ((this.items?.length > 0) && this.selectionDataMode == 'value') {\r\n const orgRes = this.items.filter(i => {\r\n if (Array.isArray(this.value)) {\r\n return this.value.some(ii => {\r\n if (typeof ii === 'object') {\r\n return i[this.valueField] === ii[this.valueField];\r\n }\r\n else {\r\n return i[this.valueField] === ii;\r\n }\r\n });\r\n }\r\n else {\r\n if (typeof this.value === 'object') {\r\n return i[this.valueField] === this.value[this.valueField];\r\n }\r\n else {\r\n return i[this.valueField] === this.value;\r\n }\r\n }\r\n });\r\n if (orgRes.length > 0) {\r\n return orgRes;\r\n }\r\n }\r\n if (Array.isArray(this.value)) {\r\n return this.value.map(ii => {\r\n if (typeof ii === 'object' && ii[this.textField]) {\r\n return ii;\r\n }\r\n else {\r\n const fake: any = {};\r\n fake[this.valueField] = this.value;\r\n fake[this.textField] = AXTranslator.get('common.loading');\r\n return fake;\r\n }\r\n });\r\n }\r\n else {\r\n if (typeof this.value === 'object' && this.value[this.textField]) {\r\n return [this.value];\r\n }\r\n else {\r\n const fake: any = {};\r\n fake[this.valueField] = this.value;\r\n fake[this.textField] = AXTranslator.get('common.loading');\r\n return [fake];\r\n }\r\n }\r\n };\r\n this._selectedItems = func();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.bufferSize < 10) {\r\n this.bufferSize = 10;\r\n }\r\n if (!this.remoteOperation) {\r\n this.refresh();\r\n }\r\n }\r\n\r\n dropdownToggle(e) {\r\n if (this.dropdown.isOpen) {\r\n this.currentfocusedIndex = this.getItems().indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n this.focusOnSearchBox();\r\n this.focusOnCurrentFocusedIndex();\r\n }\r\n else {\r\n this.focus();\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n if (this.dataSource) {\r\n if (this.allowSearch === false) {\r\n this.fetch();\r\n }\r\n this.dataSource.onDataReceived.subscribe((c) => {\r\n this.showLoading = false;\r\n this.dataReceived(c.data.result);\r\n });\r\n }\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private dataReceived(data: any) {\r\n if (this.remoteOperation) {\r\n if (this.searchText && this.searchText != null && this.searchText !== '') {\r\n if (data.totalCount) {\r\n this.items = data.items;\r\n this.totalCount = data.totalCount;\r\n } else {\r\n this.items = data.items;\r\n this.totalCount = data.items == undefined ? 0 : data.items.length;\r\n }\r\n\r\n }\r\n else if (data.items && data.items.length === data.totalCount) {\r\n this.items = data.items;\r\n this.totalCount = data.items.length;\r\n }\r\n else if (data.totalCount) {\r\n data.items.forEach(elm => {\r\n this.items.push(elm);\r\n });\r\n this.totalCount = data.totalCount;\r\n } else {\r\n data.forEach(elm => {\r\n this.items.push(elm);\r\n });\r\n this.totalCount = data.length;\r\n }\r\n } else {\r\n this.items = data;\r\n }\r\n this.renderSelection();\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n fetch(params: AXDataSourceReadParams = {}) {\r\n if (this.dataSource) {\r\n this.showLoading = true;\r\n this.dataSource.fetch(params);\r\n }\r\n }\r\n\r\n refresh() {\r\n const params: AXDataSourceReadParams = {};\r\n if (this.remoteOperation) {\r\n params.skip = 0;\r\n this.skip = 0;\r\n params.take = this.bufferSize;\r\n }\r\n if (this.dataSource !== undefined) {\r\n this.items = [];\r\n this.fetch(params);\r\n }\r\n }\r\n\r\n handleItemRemoveClick(item) {\r\n this.text = '';\r\n this.isUserInput = true;\r\n if (Array.isArray(this.value)) {\r\n this.value = this.value.filter(c => (typeof c === 'object') ? c[this.valueField] !== item[this.valueField] : c !== item[this.valueField]);\r\n }\r\n else {\r\n this.value = null;\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n\r\n\r\n onTextBoxClick(e) {\r\n if (this.disabled === false && this.readonly === false) {\r\n this.open();\r\n }\r\n }\r\n\r\n handleItemClick(e: MouseEvent, item: any) {\r\n this.isUserInput = true;\r\n if (this.selectionMode === 'single') {\r\n this.selectItems(item);\r\n this.close();\r\n }\r\n else {\r\n if (Array.isArray(this.value) && this.value.length > 0) {\r\n if (this.value.some(c => this.internalGetItemValue(c) === this.internalGetItemValue(item))) {\r\n this.unselectItems(item);\r\n }\r\n else {\r\n this.selectItems(item);\r\n }\r\n }\r\n else {\r\n this.selectItems(item);\r\n }\r\n }\r\n this.cdr.markForCheck();\r\n this.focusOnSearchBox();\r\n }\r\n\r\n private internalGetItemByDataMode(item: any) {\r\n return this.selectionDataMode === 'item' ? item : item[this.valueField];\r\n }\r\n\r\n private internalGetItemValue(item: any) {\r\n return typeof item === 'object' ? item[this.valueField] : item;\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n handleKeyDown(e: KeyboardEvent) {\r\n if (e.key === 'Escape' || this.disabled || this.readonly) {\r\n this.close();\r\n e.preventDefault();\r\n return;\r\n }\r\n const isLetter = new RegExp(/[a-zA-Z0-9\\-]/).test(String.fromCharCode(e.keyCode));\r\n if (this.textbox.isFocused()) {\r\n if (e.key === 'Backspace' && e.type === 'keydown' &&\r\n ((this.allowNull === true && this.selectedItems.length > 0) ||\r\n (this.allowNull === false && this.selectedItems.length > 1))) {\r\n this.isUserInput = true;\r\n this.unselectItems(this.selectedItems.pop());\r\n e.preventDefault();\r\n return;\r\n }\r\n else if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && !this.dropdown.isOpen && e.type === 'keydown') {\r\n if (this.selectionMode === 'single') {\r\n this.isUserInput = true;\r\n this.selectedItemByIndex(this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1));\r\n if (e.ctrlKey) {\r\n this.open();\r\n }\r\n }\r\n else {\r\n this.open();\r\n }\r\n e.preventDefault();\r\n return;\r\n }\r\n else if (isLetter) {\r\n this.text = e.key;\r\n this.open();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n if (this.dropdown.isOpen) {\r\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0) {\r\n this.isUserInput = true;\r\n this.selectItemByNav((e.key === 'ArrowDown' ? 1 : -1));\r\n e.preventDefault();\r\n return;\r\n }\r\n if ((e.key === 'Enter' || e.code === 'Space')) {\r\n const focusedItem = this.getItems()[this.currentfocusedIndex];\r\n if (focusedItem) {\r\n\r\n if (this.selectionMode === 'single') {\r\n this.isUserInput = true;\r\n this.selectItems(focusedItem);\r\n this.close();\r\n }\r\n else {\r\n this.isUserInput = true;\r\n this.toggleSelect(focusedItem);\r\n }\r\n }\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n unselectItems(...items: any[]) {\r\n if (!items || items.length === 0) {\r\n this.value = null;\r\n }\r\n else if (Array.isArray(this.value)) {\r\n this.value = this.value.filter(c => !items.some(d =>\r\n this.internalGetItemValue(c) === this.internalGetItemValue(d))\r\n );\r\n }\r\n else {\r\n this.value = null;\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n selectItems(...items: any[]) {\r\n if (items && items.length) {\r\n if (this.selectionMode === 'single') {\r\n this.value = this.internalGetItemByDataMode(items[0]);\r\n }\r\n else {\r\n this.value = (this.value || []).concat(items.map(c => this.internalGetItemByDataMode(c)));\r\n }\r\n }\r\n }\r\n\r\n\r\n toggleSelect(...items: any[]) {\r\n if (items && items.length) {\r\n items.forEach(item => {\r\n this.selectedItems.includes(item) ? this.unselectItems(item) : this.selectItems(item);\r\n });\r\n }\r\n }\r\n\r\n\r\n close() {\r\n this.dropdown.close();\r\n }\r\n\r\n open() {\r\n this.dropdown.open();\r\n }\r\n\r\n focus(): void {\r\n this.text = null;\r\n this.textbox.focus();\r\n }\r\n\r\n private focusOnSearchBox() {\r\n const inputedVal = this.text;\r\n if (this.allowSearch === true) {\r\n setTimeout(() => {\r\n if (this.searchBox) {\r\n this.searchBox.value = inputedVal;\r\n this.searchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n else {\r\n this.textbox.focus();\r\n }\r\n }\r\n\r\n getItems(): any[] {\r\n if (this.items == null) {\r\n return [];\r\n }\r\n return (!this.remoteOperation && this.text && this.text !== '') ? this.items.filter((c) =>\r\n (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase())) : this.items;\r\n }\r\n\r\n isItemSelected(item: any): boolean {\r\n return this.selectedItems.some(c => c[this.valueField] === item[this.valueField]);\r\n }\r\n\r\n private selectItemByNav(sign: -1 | 1 | null = null): void {\r\n if (sign == null) {\r\n this.currentfocusedIndex = this.getItems().indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n }\r\n else {\r\n sign === -1 ? this.currentfocusedIndex-- : this.currentfocusedIndex++;\r\n }\r\n if (this.currentfocusedIndex < 0) {\r\n this.currentfocusedIndex = 0;\r\n }\r\n if (this.currentfocusedIndex > this.getItems().length - 1) {\r\n this.currentfocusedIndex = this.getItems().length - 1;\r\n }\r\n\r\n // set scroll\r\n this.focusOnCurrentFocusedIndex();\r\n }\r\n\r\n private focusOnCurrentFocusedIndex() {\r\n if (this.listContainer) {\r\n this.zone.runOutsideAngular(() => {\r\n const itemDiv = this.listContainer.nativeElement.querySelector(`.list-item:nth-child(${this.currentfocusedIndex})`);\r\n if (itemDiv) {\r\n itemDiv.scrollIntoView({ behavior: 'auto' });\r\n }\r\n });\r\n }\r\n }\r\n\r\n selectedItemByIndex(index: number) {\r\n if (index < 0) {\r\n index = 0;\r\n }\r\n if (index > this.getItems().length - 1) {\r\n index = this.getItems().length - 1;\r\n }\r\n this.selectItems(this.getItems()[index]);\r\n this.currentfocusedIndex = index;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSelectBoxComponent } from './selectbox.component';\r\nimport { AXDropdownModule } from '../dropdown/dropdown.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXTranslatorModule, AXScrollModule } from '@acorex/core';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\nimport { AXSearchBoxModule } from '../searchbox/searchbox.module';\r\nimport { AXSelectBox2Component } from './selectbox2.component';\r\n\r\n\r\nconst COMPONENT = [AXSelectBoxComponent, AXSelectBox2Component];\r\nconst MODULES = [\r\n CommonModule,\r\n AXDropdownModule,\r\n AXTextBoxModule,\r\n AXTranslatorModule,\r\n AXScrollModule,\r\n AXCheckBoxModule,\r\n AXLoadingModule,\r\n AXSearchBoxModule\r\n];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: []\r\n})\r\nexport class AXSelectBoxModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { AXQueryBuilderComponent } from './query-builder.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPanelBoxModule } from '../panel-box/panel-box.module';\r\nimport { AXSelectBoxModule } from '../selectbox/selectbox.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXQueryBuilderRuleComponent } from './query-builder-rule.component';\r\nimport { AXQueryBuilderGroupComponent } from './query-builder-group.component';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { AXNumberBoxModule } from '../number-box/number-box.module';\r\nimport { AXDataSourceModule } from '../data-source/datasource.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\nimport { AXQueryBuilderPopupComponent } from './query-builder-popup/query-builder-popup.component';\r\nimport { AXLabelModule } from '../label/label.module';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXValidationModule } from '../validation/validation.module';\r\nimport { AXQueryBuilderService } from './query-builder.service';\r\n\r\nconst MODUELS = [\r\n CommonModule,\r\n AXButtonModule,\r\n AXPanelBoxModule,\r\n AXSelectBoxModule,\r\n AXDataSourceModule,\r\n AXTextBoxModule,\r\n AXNumberBoxModule,\r\n AXFormGroupModule,\r\n AXTranslatorModule,\r\n AXLabelModule,\r\n AXCheckBoxModule,\r\n AXValidationModule\r\n]\r\n\r\n@NgModule({\r\n declarations: [AXQueryBuilderComponent, AXQueryBuilderGroupComponent, AXQueryBuilderRuleComponent, AXQueryBuilderPopupComponent],\r\n imports: [MODUELS],\r\n exports: [AXQueryBuilderComponent],\r\n providers: [AXQueryBuilderService],\r\n entryComponents: [AXQueryBuilderPopupComponent]\r\n})\r\n\r\nexport class AXQueryBuilderModule { }","import { Component, ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation, Output, Input, EventEmitter } from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXBaseValueComponent, AXElementSize } from '../base/element.class';\r\nimport { AXValueEvent } from '../base/events.class';\r\n\r\n@Component({\r\n selector: 'ax-switch',\r\n templateUrl: './switch.component.html',\r\n styleUrls: ['./switch.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AXSwitchComponent extends AXBaseComponent implements AXBaseSizableComponent, AXBaseValueComponent<boolean> {\r\n\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<boolean>> = new EventEmitter<AXValueEvent<boolean>>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n private _value: boolean;\r\n @Input()\r\n public get value(): boolean {\r\n return this._value;\r\n }\r\n public set value(v: boolean) {\r\n if (this._value !== v) {\r\n const oldValue = this._value;\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n oldValue,\r\n value: v\r\n });\r\n }\r\n }\r\n\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n focus(): void { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXSwitchComponent } from './switch.component';\r\n\r\n@NgModule({\r\n declarations: [AXSwitchComponent],\r\n imports: [CommonModule, FormsModule],\r\n exports: [AXSwitchComponent],\r\n entryComponents: [AXSwitchComponent],\r\n providers: [],\r\n})\r\nexport class AXSwitchModule {\r\n\r\n}","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { AXHtmlUtil } from '@acorex/core';\r\nimport { AXPageClosing, AXPageResult, TAB_META_KEY, AXPageClosedPromise } from '../base/base-page.class';\r\n\r\nexport interface AXTabPage {\r\n title: string;\r\n content: any;\r\n closable?: boolean;\r\n data?: any;\r\n pinned?: boolean;\r\n}\r\n\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXTabPageService {\r\n\r\n\r\n\r\n tabs: AXTabPage[] = new Array<AXTabPage>();\r\n opened = new Subject<AXTabPage>();\r\n activated = new Subject<AXTabPage>();\r\n closed = new Subject<AXTabPage>();\r\n changed = new Subject();\r\n\r\n\r\n\r\n constructor() { }\r\n\r\n open(content: any, title: string): AXPageClosedPromise;\r\n open(content: any, title: string, data?: any): AXPageClosedPromise;\r\n open(options: AXTabPage): AXPageClosedPromise;\r\n\r\n open(arg1, arg2?, arg3?) {\r\n let newTab: AXTabPage;\r\n if (typeof arg1 === 'object') {\r\n const options = Object.assign({ closable: true }, arg1);\r\n newTab = {\r\n title: options.title,\r\n closable: options.closable,\r\n content: options.content,\r\n data: options.data,\r\n pinned: options.pinned\r\n };\r\n } else {\r\n newTab = {\r\n title: arg2,\r\n closable: true,\r\n content: arg1,\r\n data: arg3,\r\n };\r\n }\r\n newTab[TAB_META_KEY] = {};\r\n newTab[TAB_META_KEY].uid = AXHtmlUtil.getUID();\r\n //\r\n const existTab = this.tabs.find((c) => newTab[TAB_META_KEY].uid && c[TAB_META_KEY].uid === newTab[TAB_META_KEY].uid) ||\r\n this.findExistTab(newTab.content, newTab.data);\r\n //\r\n if (existTab) {\r\n return Promise.resolve(this.active(existTab));\r\n }\r\n this.tabs.push(newTab);\r\n this.tabs\r\n .filter((c) => c[TAB_META_KEY].uid !== newTab[TAB_META_KEY].uid)\r\n .forEach((t) => {\r\n t[TAB_META_KEY].active = false;\r\n });\r\n this.opened.next(newTab);\r\n this.active(newTab);\r\n const promise = new AXPageClosedPromise((resolve) => {\r\n newTab[TAB_META_KEY].close = (e) => {\r\n if (resolve) {\r\n delete e.cancel;\r\n resolve(e);\r\n }\r\n };\r\n });\r\n promise['closeMethod'] = () => { this.close(newTab); };\r\n return promise;\r\n }\r\n\r\n close(tab: AXTabPage) {\r\n const e = { cancel: false };\r\n const closingFunc = tab[TAB_META_KEY].component?.onClosing;\r\n if (closingFunc) {\r\n const res = closingFunc(e);\r\n if (res instanceof Promise) {\r\n res.then(() => {\r\n if (e == null || e.cancel !== true) {\r\n this.doCloseAction(tab, e);\r\n }\r\n });\r\n }\r\n else {\r\n if (e == null || e.cancel !== true) {\r\n this.doCloseAction(tab, e);\r\n }\r\n }\r\n } else {\r\n this.doCloseAction(tab, e);\r\n }\r\n }\r\n\r\n private doCloseAction(tab: AXTabPage, e: AXPageClosing): void {\r\n const currentTab = this.tabs.find((c) => c[TAB_META_KEY].uid == tab[TAB_META_KEY].uid);\r\n if (!currentTab) {\r\n return;\r\n }\r\n const index = this.tabs.indexOf(currentTab);\r\n this.tabs = this.tabs.filter(c => c != currentTab);\r\n const prev = index > 0 ? this.tabs[index - 1] : this.tabs[0];\r\n if (prev) {\r\n this.active(prev);\r\n }\r\n this.closed.next(currentTab);\r\n this.changed.next();\r\n if (currentTab[TAB_META_KEY].close) {\r\n currentTab[TAB_META_KEY].close(e);\r\n }\r\n }\r\n\r\n active(tab: AXTabPage): AXPageResult;\r\n active(uid: string): AXPageResult;\r\n active(): AXPageResult;\r\n active(arg1?): AXPageResult {\r\n if (!arg1) {\r\n return {\r\n sender: this.tabs.find((c) => c[TAB_META_KEY].active === true)\r\n }\r\n }\r\n if (typeof arg1 === 'object') {\r\n const tab = <AXTabPage>arg1;\r\n tab[TAB_META_KEY].active = true;\r\n this.tabs\r\n .filter((c) => c[TAB_META_KEY].uid !== tab[TAB_META_KEY].uid)\r\n .forEach((t) => {\r\n t[TAB_META_KEY].active = false;\r\n });\r\n this.activated.next(tab);\r\n this.changed.next();\r\n return {\r\n sender: tab\r\n }\r\n } else if (typeof arg1 === 'string') {\r\n const tab = this.tabs.find((c) => c[TAB_META_KEY].uid === arg1);\r\n if (tab) {\r\n return this.active(tab);\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n clear(): void {\r\n this.tabs.forEach((c) => {\r\n this.close(c);\r\n });\r\n this.tabs = [];\r\n }\r\n\r\n private findExistTab(component: any, data: any): AXTabPage {\r\n try {\r\n if (!data) {\r\n data = {};\r\n }\r\n const result = this.tabs.find((c: any) =>\r\n c.content === component &&\r\n ((!c.data) ||\r\n JSON.stringify(data) === JSON.stringify(c.data))\r\n );\r\n return result;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ViewContainerRef, ComponentFactoryResolver, ElementRef, ComponentRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AXTabPage, AXTabPageService } from './tab-page.service';\r\nimport { AXRenderService } from '@acorex/core';\r\nimport { AXBasePageComponent, AXPageCloseEvent, TAB_META_KEY } from '../base/base-page.class';\r\nimport { AXLoadingService } from '../loading/loading.service';\r\n\r\n@Component({\r\n selector: 'ax-tab-page-host',\r\n template: `\r\n <div class='ax-loading-host'>\r\n <div class='ax-tab-page-host' >\r\n <div [hidden]=\"isLoading\" style=\"height:100%\" class='ax-tab-page-host-container'>\r\n <ng-template #container></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n `\r\n})\r\n\r\nexport class AXTabPageHostComponent implements OnInit {\r\n\r\n tab: AXTabPage;\r\n component: AXBasePageComponent;\r\n private componentRef: ComponentRef<any>;\r\n isLoading: boolean;\r\n _loadingId: number;\r\n\r\n @ViewChild('container', { read: ViewContainerRef, static: true })\r\n private container: ViewContainerRef;\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private ref: ElementRef<HTMLDivElement>,\r\n private rendererService: AXRenderService,\r\n private tabService: AXTabPageService,\r\n private loadingService: AXLoadingService,\r\n private cdr: ChangeDetectorRef,\r\n ) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n }\r\n\r\n async ngAfterViewInit() {\r\n this._loadingId = this.loadingService.show(this.ref.nativeElement.querySelector('.ax-tab-page-host-container'));\r\n //\r\n let data: any = {};\r\n //\r\n let component: any;\r\n if (typeof this.tab.content === 'string') {\r\n const route = await this.rendererService.findLoadedComponentByRoute(this.tab.content, 20);\r\n component = route?.component;\r\n data = Object.assign(data, route.data);\r\n }\r\n else if (typeof this.tab.content === 'function') {\r\n component = this.tab.content;\r\n }\r\n if (component == null) {\r\n // TODO: 404 page component\r\n this.isLoading = false;\r\n console.error(`Invalid page Component! ${this.tab.content}`);\r\n return;\r\n }\r\n //\r\n data = Object.assign(data, this.tab.data);\r\n //\r\n try {\r\n const factory = this.resolver.resolveComponentFactory(component);\r\n this.componentRef = this.container.createComponent(factory);\r\n if (!this.componentRef.instance.onClosed) {\r\n throw Error('The Component must be inherited from AXBasePageComponent!');\r\n }\r\n this.componentRef.instance.onClosed.subscribe((e: AXPageCloseEvent) => {\r\n this.tabService.close(this.tab);\r\n });\r\n //\r\n const com = this.componentRef.instance as any;\r\n //\r\n Object.assign(com, data);\r\n //\r\n this.tab[TAB_META_KEY].component = com;\r\n this.isLoading = false;\r\n this.loadingService.hide(this._loadingId);\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n } catch (error) {\r\n // TODO: 404 page component\r\n console.error(error);\r\n } finally {\r\n //this.isLoading = false;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.hostView.destroy();\r\n this.componentRef.destroy();\r\n this.container.clear();\r\n }\r\n this.loadingService.hide(this._loadingId);\r\n }\r\n}","import { Component, ViewChild, ViewContainerRef, ComponentFactoryResolver, ComponentRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AXTabPageService } from './tab-page.service';\r\nimport { TAB_META_KEY } from '../base/base-page.class';\r\nimport { AXTabPageHostComponent } from './tab-page-host.component';\r\nimport { Subscription } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'ax-tab-page-renderer',\r\n template: `<template #container></template>`,\r\n host: { 'class': 'ax tab-page-renderer' }\r\n})\r\nexport class AXTabPageRendererComponent {\r\n\r\n childs: ComponentRef<AXTabPageHostComponent>[] = [];\r\n\r\n @ViewChild('container', { read: ViewContainerRef }) container: ViewContainerRef;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private tabService: AXTabPageService,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n this.subscriptions.push(tabService.activated.subscribe(tab => {\r\n this.childs.forEach((v: ComponentRef<AXTabPageHostComponent>) => {\r\n v.changeDetectorRef.detach();\r\n v.location.nativeElement.hidden = true;\r\n });\r\n const v = this.childs.find(t => (t as any).uid === tab[TAB_META_KEY].uid) as ComponentRef<AXTabPageHostComponent>;\r\n if (v) {\r\n v.location.nativeElement.hidden = false;\r\n v.changeDetectorRef.reattach();\r\n }\r\n else {\r\n try {\r\n const factory = this.resolver.resolveComponentFactory(AXTabPageHostComponent);\r\n const componentRef = this.container.createComponent(factory);\r\n (componentRef as any).uid = tab[TAB_META_KEY].uid;\r\n const host = componentRef.instance as AXTabPageHostComponent;\r\n host.tab = tab;\r\n this.childs.push(componentRef);\r\n setTimeout(() => {\r\n componentRef.changeDetectorRef.detectChanges();\r\n }, 10);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(tabService.closed.subscribe(tab => {\r\n const hostref = this.childs.find(c => (c as any).uid === tab[TAB_META_KEY].uid);\r\n if (hostref) {\r\n hostref.destroy();\r\n }\r\n this.childs = this.childs.filter(c => (c as any).uid !== tab[TAB_META_KEY].uid);\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.tabService.clear();\r\n this.subscriptions.forEach(s => {\r\n s.unsubscribe();\r\n });\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTabPageRendererComponent } from './tab-page-Renderer.component';\r\nimport { AXTabPageService } from './tab-page.service';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\nimport { AXTabPageHostComponent } from './tab-page-host.component';\r\n\r\n@NgModule({\r\n declarations: [AXTabPageRendererComponent, AXTabPageHostComponent],\r\n imports: [CommonModule, AXLoadingModule],\r\n exports: [AXTabPageRendererComponent],\r\n entryComponents: [AXTabPageRendererComponent, AXTabPageHostComponent],\r\n providers: [AXTabPageService],\r\n})\r\nexport class AXTabPageModule { }","import { Component, OnInit, Input, Output, EventEmitter, ElementRef } from '@angular/core';\r\nimport { AXBaseEvent } from '../base/events.class';\r\n\r\nexport declare class AXTabStripItem {\r\n id: string;\r\n name?: string;\r\n text?: string;\r\n tooltip?: string;\r\n icon?: string;\r\n visible?: boolean;\r\n disable?: boolean;\r\n data?: any;\r\n style?: string;\r\n active?: boolean;\r\n}\r\n\r\nexport class AXTabStripChangedEvent extends AXBaseEvent {\r\n seledtedTab: AXTabStripItem;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-tab-strip',\r\n templateUrl: './tab-strip.component.html'\r\n})\r\nexport class AXTabStripComponent implements OnInit {\r\n constructor(private ref: ElementRef) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n @Input()\r\n items: AXTabStripItem[] = [];\r\n\r\n @Output()\r\n onTabChanged: EventEmitter<AXTabStripChangedEvent> = new EventEmitter<AXTabStripChangedEvent>();\r\n\r\n handleClick(i: AXTabStripItem) {\r\n this.items.forEach((c) => (c.active = false));\r\n i.active = true;\r\n this.onTabChanged.emit({\r\n component: this,\r\n seledtedTab: i,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTabStripComponent } from './tab-strip.component';\r\n\r\n@NgModule({\r\n declarations: [AXTabStripComponent],\r\n imports: [CommonModule],\r\n exports: [AXTabStripComponent],\r\n providers: []\r\n})\r\nexport class AXTabStripModule {}\r\n","/**\r\n * This directive is used as an anchor to get access\r\n * to the ViewContainerRef which here is exposed via\r\n * the public member `viewContainer`\r\n *\r\n * Theres an ALTERNATIVE to explicitly using the anchor directive.\r\n * Read in the blog post\r\n */\r\n\r\nimport { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[dynamic-tabs]'\r\n})\r\nexport class DynamicTabsDirective {\r\n constructor(public viewContainer: ViewContainerRef) {}\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\n@Component({\r\n selector: 'ax-tab',\r\n templateUrl: './tab.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTabComponent {\r\n @Input() caption: string;\r\n @Input() name: string;\r\n @Input() active = false;\r\n @Input() isCloseable = false;\r\n @Input() template: any;\r\n @Input() dataContext: any;\r\n @Input() icon: string;\r\n}\r\n","/**\r\n * The main component that renders single TabComponent\r\n * instances.\r\n */\r\n\r\nimport {\r\n Component,\r\n ContentChildren,\r\n QueryList,\r\n AfterContentInit,\r\n ViewChild,\r\n ComponentFactoryResolver,\r\n ViewEncapsulation,\r\n Attribute,\r\n Output,\r\n EventEmitter,\r\n ElementRef\r\n} from '@angular/core';\r\n\r\nimport { AXTabComponent } from './tab.component';\r\nimport { DynamicTabsDirective } from './dynamic-tabs.directive';\r\nimport { AXDataEvent } from '../base/events.class';\r\n\r\n@Component({\r\n selector: 'ax-tab-view',\r\n templateUrl: './tab-view.component.html',\r\n styleUrls: ['./tab-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTabViewComponent implements AfterContentInit {\r\n dynamicTabs: AXTabComponent[] = [];\r\n\r\n @ContentChildren(AXTabComponent) tabs: QueryList<AXTabComponent>;\r\n\r\n @ViewChild(DynamicTabsDirective) dynamicTabPlaceholder: DynamicTabsDirective;\r\n\r\n @Output()\r\n onActiveTab: EventEmitter<AXDataEvent<any>> = new EventEmitter<AXDataEvent<any>>();\r\n /*\r\n Alternative approach of using an anchor directive\r\n would be to simply get hold of a template variable\r\n as follows\r\n */\r\n // @ViewChild('container', {read: ViewContainerRef}) dynamicTabPlaceholder;\r\n\r\n constructor(\r\n private ref: ElementRef,\r\n private _componentFactoryResolver: ComponentFactoryResolver,\r\n @Attribute('fullWidth') public fullWidth: boolean = false\r\n ) {}\r\n\r\n // contentChildren are set\r\n ngAfterContentInit() {\r\n // get all active tabs\r\n const activeTabs = this.tabs.filter((tab) => tab.active);\r\n\r\n // if there is no active tab set, activate the first\r\n if (activeTabs.length === 0 && this.tabs.first) {\r\n this.selectTab(this.tabs.first);\r\n }\r\n }\r\n\r\n openTab(title: string, template, isCloseable = false, icon = null, data = null) {\r\n // get a component factory for our AXTabComponent\r\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(AXTabComponent);\r\n\r\n // fetch the view container reference from our anchor directive\r\n const viewContainerRef = this.dynamicTabPlaceholder.viewContainer;\r\n\r\n // alternatively...\r\n // let viewContainerRef = this.dynamicTabPlaceholder;\r\n\r\n // create a component instance\r\n const componentRef = viewContainerRef.createComponent(componentFactory);\r\n\r\n // set the according properties on our component instance\r\n const instance: AXTabComponent = componentRef.instance as AXTabComponent;\r\n instance.caption = title;\r\n instance.template = template;\r\n instance.dataContext = data;\r\n instance.isCloseable = isCloseable;\r\n instance.icon = icon;\r\n\r\n // remember the dynamic component for rendering the\r\n // tab navigation headers\r\n this.dynamicTabs.push(componentRef.instance as AXTabComponent);\r\n\r\n //componentRef.changeDetectorRef.detectChanges();\r\n\r\n // set it active\r\n this.selectTab(this.dynamicTabs[this.dynamicTabs.length - 1]);\r\n }\r\n\r\n selectTab(tab: AXTabComponent) {\r\n // deactivate all tabs\r\n this.tabs.toArray().forEach((tab) => (tab.active = false));\r\n this.dynamicTabs.forEach((tab) => (tab.active = false));\r\n\r\n // activate the tab the user has clicked on.\r\n tab.active = true;\r\n this.onActiveTab.emit({ component: this, data: tab, htmlElement: this.ref.nativeElement });\r\n }\r\n\r\n closeTab(tab: AXTabComponent) {\r\n for (let i = 0; i < this.dynamicTabs.length; i++) {\r\n if (this.dynamicTabs[i] === tab) {\r\n // remove the tab from our array\r\n this.dynamicTabs.splice(i, 1);\r\n\r\n // destroy our dynamically created component again\r\n const viewContainerRef = this.dynamicTabPlaceholder.viewContainer;\r\n // let viewContainerRef = this.dynamicTabPlaceholder;\r\n viewContainerRef.remove(i);\r\n\r\n // set tab index to 1st one\r\n this.selectTab(this.tabs.first);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n closeActiveTab() {\r\n const activeTabs = this.dynamicTabs.filter((tab) => tab.active);\r\n if (activeTabs.length > 0) {\r\n // close the 1st active tab (should only be one at a time)\r\n this.closeTab(activeTabs[0]);\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTabComponent } from './tab.component';\r\nimport { AXTabViewComponent } from './tab-view.component';\r\nimport { DynamicTabsDirective } from './dynamic-tabs.directive';\r\n@NgModule({\r\n declarations: [AXTabComponent, AXTabViewComponent, DynamicTabsDirective],\r\n imports: [CommonModule],\r\n exports: [AXTabComponent, AXTabViewComponent, DynamicTabsDirective],\r\n providers: []\r\n})\r\nexport class AXTabViewModule {}\r\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ViewChild, ElementRef, Input } from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-text-area',\r\n templateUrl: './textarea.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXTextAreaComponent }]\r\n})\r\nexport class AXTextAreaComponent extends AXBaseTextComponent {\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n\r\n @Input()\r\n rows: number = 0;\r\n @Input()\r\n cols: number = 0;\r\n\r\n @Input()\r\n maxLength: number = null;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTextAreaComponent } from './textarea.component';\r\n\r\nconst COMPONENT = [AXTextAreaComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXTextAreaModule { }","import {\r\n Component,\r\n OnInit,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n Input,\r\n ViewChild,\r\n ChangeDetectionStrategy,\r\n EventEmitter,\r\n Output,\r\n ContentChild\r\n\r\n} from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\nimport { _ } from 'ag-grid-community';\r\nimport { AXValueEvent } from '../base/events.class';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\nexport class AXTimePickerItemChangedEvent {\r\n minute?: number;\r\n second?: number;\r\n hour?: number;\r\n time: string;\r\n\r\n}\r\nexport class AXTimePickerChangedEvent extends AXValueEvent<AXTimePickerItemChangedEvent> { }\r\n\r\n@Component({\r\n selector: 'ax-time-picker',\r\n templateUrl: './time-picker.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXTimePickerComponent }]\r\n})\r\nexport class AXTimePickerComponent extends AXBaseTextComponent implements OnInit {\r\n @Output()\r\n onValueChanged: EventEmitter<AXTimePickerChangedEvent> = new EventEmitter<AXTimePickerChangedEvent>();\r\n\r\n // @ViewChild('input', { static: true })\r\n // @ContentChild('input', { static: true })\r\n // input: ElementRef<HTMLInputElement>;\r\n\r\n @Input()\r\n timeType: any;\r\n\r\n type: string = 'HHmm';\r\n @Input()\r\n showCurentTime: boolean = false;\r\n\r\n clearDisabled: boolean = true;\r\n HHmmss: any = [/[0-2]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n HHmm: any = [/[0-2]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n HH: any = [/[0-2]/, /[0-9]/];\r\n hhmmss: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n hhmm: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n hh: any = [/[0-1]/, /[0-9]/];\r\n // TODO: apply am pm from locale\r\n hhmmssam: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ' ', /[a|p|ق|ب]/, AXTranslator.get('dateTime.dayTime.m')];\r\n hhmmam: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ' ', /[a|p|ق|ب]/, AXTranslator.get('dateTime.dayTime.m')];\r\n hham: any = [/[0-1]/, /[0-9]/, ' ', /[a|p|ق|ب]/, AXTranslator.get('dateTime.dayTime.m')];\r\n textValue: string = '';\r\n\r\n valueHam: string = '-- ' + AXTranslator.get('dateTime.dayTime.am');\r\n valueMam: string = '--:-- ' + AXTranslator.get('dateTime.dayTime.am');\r\n valueSam: string = '--:--:-- ' + AXTranslator.get('dateTime.dayTime.am');\r\n\r\n\r\n private _values: string;\r\n public get value(): string {\r\n return this._values;\r\n }\r\n public set value(v: string) {\r\n if (v === '' || v == null || v === '--:--:--' || v === '--:--' || v === '--' || v === this.valueSam || v === this.valueMam || v === this.valueHam) {\r\n this.clearDisabled = false;\r\n\r\n const old = this._values;\r\n switch (this.type) {\r\n case 'HHmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'HHmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'HH':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'hhmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'hh':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmssam':\r\n this.textValue = this.valueSam;\r\n break;\r\n case 'hhmmam':\r\n this.textValue = this.valueMam;\r\n break;\r\n case 'hham':\r\n this.textValue = this.valueHam;\r\n break;\r\n }\r\n\r\n this._values = null;\r\n if (v !== old) {\r\n this.valueChange.emit(null);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: { hour: null, minute: null, second: null, time: null },\r\n oldValue: { time: old },\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n } else {\r\n this.clearDisabled = true;\r\n if (this._values && v) {\r\n const old = this._values;\r\n const ind1 = v.charAt(0);\r\n const ind2 = v.charAt(1);\r\n const ind3 = v.charAt(2);\r\n const ind4 = v.charAt(3);\r\n const ind5 = v.charAt(4);\r\n const ind6 = v.charAt(5);\r\n const ind7 = v.charAt(6);\r\n const ind8 = v.charAt(7);\r\n const ind9 = v.charAt(8);\r\n const ind10 = v.charAt(9);\r\n\r\n const indOld4 = old.charAt(9);\r\n const indOld7 = old.charAt(9);\r\n const indOld10 = old.charAt(9);\r\n\r\n // handle hhmmssAm\r\n if (ind1 === '-' && ind2 !== '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 5);\r\n this.cursorPosition = 5;\r\n }, 0);\r\n }\r\n if (ind7 === '-' && ind8 !== '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + '0' + ind8 + ind9 + ind10 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 8);\r\n this.cursorPosition = 8;\r\n }, 0);\r\n }\r\n if (indOld10 === '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && this.timeType.mask === this.hhmmam) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && this.timeType.mask === this.hhmmam) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5 + ind6 + ind7 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 5);\r\n this.cursorPosition = 5;\r\n }, 0);\r\n }\r\n if (indOld7 === '-' && this.timeType.mask === this.hhmmam) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && this.timeType.mask === this.hham) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (indOld4 === '-' && this.timeType.mask === this.hham) {\r\n this.textValue = ind1 + ind2 + ind3 + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && (this.timeType.mask === this.hhmmss || this.timeType.mask === this.HHmmss)) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && (this.timeType.mask === this.hhmmss || this.timeType.mask === this.HHmmss)) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5 + ind6 + ind7 + ind8;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 6);\r\n this.cursorPosition = 6;\r\n }, 0);\r\n }\r\n if (ind7 === '-' && ind8 !== '-' && (this.timeType.mask === this.hhmmss || this.timeType.mask === this.HHmmss)) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + '0' + ind8;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 9);\r\n this.cursorPosition = 9;\r\n }, 0);\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && (this.timeType.mask === this.hhmm || this.timeType.mask === this.HHmm)) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && (this.timeType.mask === this.hhmm || this.timeType.mask === this.HHmm)) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 5);\r\n this.cursorPosition = 5;\r\n }, 0);\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && (this.timeType.mask === this.hh || this.timeType.mask === this.HH)) {\r\n this.textValue = '0' + ind2;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n }\r\n if (v !== this._values) {\r\n const old = this._values;\r\n this.textValue = v;\r\n this._values = (v && v.indexOf('-') === -1) ? v : null;\r\n if (v.indexOf('-') === -1) {\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: {\r\n time: v,\r\n hour: Number(v[0] + v[1]),\r\n minute: v[3] && v[3] !== AXTranslator.get('dateTime.dayTime.a') && v[3] !== AXTranslator.get('dateTime.dayTime.p') ? Number(v[3] + v[4]) : null,\r\n second: v[6] && v[6] !== AXTranslator.get('dateTime.dayTime.a') && v[6] !== AXTranslator.get('dateTime.dayTime.p') ? Number(v[6] + v[7]) : null\r\n },\r\n oldValue: { time: old },\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n }\r\n }\r\n }\r\n\r\n cursorPosition: number = 0;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n \r\n this.timeType = 'HHmm';\r\n }\r\n clearValue() {\r\n this.clear();\r\n this.handleInputFocus();\r\n }\r\n\r\n ngOnInit(): void {\r\n switch (this.timeType) {\r\n case 'HHmmss':\r\n this.type = 'HHmmss';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HHmmss,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--:--';\r\n break;\r\n case 'HHmm':\r\n this.type = 'HHmm';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HHmm,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--';\r\n break;\r\n case 'HH':\r\n this.type = 'HH';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HH,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--';\r\n break;\r\n case 'hhmmss':\r\n this.type = 'hhmmss';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmmss,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--:--';\r\n break;\r\n case 'hhmm':\r\n this.type = 'hhmm';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmm,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--';\r\n break;\r\n case 'hh':\r\n this.type = 'hh';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hh,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--';\r\n break;\r\n case 'hhmmssam':\r\n this.type = 'hhmmssam';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmmssam,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : this.valueSam;\r\n break;\r\n case 'hhmmam':\r\n this.type = 'hhmmam';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmmam,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : this.valueMam;\r\n\r\n break;\r\n case 'hham':\r\n this.type = 'hham';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hham,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : this.valueHam;\r\n break;\r\n default:\r\n this.type = 'HHmm';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HHmm,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--';\r\n break;\r\n\r\n }\r\n if (this.showCurentTime === true) {\r\n const hour = new Date().getHours() > 10 ? new Date().getHours() : '0' + new Date().getHours();\r\n let amHour: any;\r\n\r\n if (new Date().getHours() > 10) {\r\n if (new Date().getHours() > 12) {\r\n if (new Date().getHours() - 12 < 10) {\r\n amHour = '0' + (new Date().getHours() - 12);\r\n } else {\r\n amHour = new Date().getHours();\r\n }\r\n } else {\r\n amHour = new Date().getHours();\r\n }\r\n } else {\r\n amHour = '0' + new Date().getHours();\r\n }\r\n\r\n const min = new Date().getMinutes() > 9 ? new Date().getMinutes() : '0' + new Date().getMinutes();\r\n const sec = new Date().getSeconds() > 9 ? new Date().getSeconds() : '0' + new Date().getSeconds();\r\n if (this.type === 'hh' || this.type === 'hhmm' || this.type === 'hhmmss' || this.type === 'hhmmssam') {\r\n if (hour >= 12) {\r\n this.value = amHour + ':' + min + ':' + sec + ' ' + AXTranslator.get('dateTime.dayTime.pm');\r\n } else {\r\n this.value = amHour + ':' + min + ':' + sec + ' ' + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n } else if (this.type === 'hham') {\r\n if (hour >= 12) {\r\n this.value = amHour + ' ' + AXTranslator.get('dateTime.dayTime.pm');\r\n } else {\r\n this.value = amHour + ' ' + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n } else if (this.type === 'hhmmam') {\r\n if (hour >= 12) {\r\n this.value = amHour + ':' + min + ' ' + AXTranslator.get('dateTime.dayTime.pm');\r\n } else {\r\n this.value = amHour + ':' + min + ' ' + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n } else {\r\n this.value = hour + ':' + min + ':' + sec;\r\n }\r\n }\r\n }\r\n\r\n onStartfocus() {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n\r\n handleInputFocus() {\r\n this.onStartfocus();\r\n this.input.nativeElement.focus();\r\n }\r\n handleInputBlur(e) {\r\n if (this.textValue.indexOf('-') !== -1) {\r\n switch (this.type) {\r\n case 'HHmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'HHmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'HH':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'hhmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'hh':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmssam':\r\n this.textValue = this.valueSam;\r\n break;\r\n case 'hhmmam':\r\n this.textValue = this.valueMam;\r\n break;\r\n case 'hham':\r\n this.textValue = this.valueHam;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n handleKeyPress(event: any) {\r\n const inputChar = String.fromCharCode(event.charCode);\r\n const firstChar = this.textValue.charAt(0);\r\n const secondChar = this.textValue.charAt(1);\r\n\r\n setTimeout(() => {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n // this.cursorPosition += 1 ;\r\n }\r\n }, 0);\r\n\r\n if (firstChar === '2') {\r\n if (secondChar === '' || this.textValue.charAt(1) >= '4' || this.cursorPosition < 3) {\r\n if (inputChar >= '4') {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n if (\r\n this.timeType.mask === this.hhmmss ||\r\n this.timeType.mask === this.hhmm ||\r\n this.timeType.mask === this.hh ||\r\n this.timeType.mask === this.hhmmssam ||\r\n this.timeType.mask === this.hhmmam ||\r\n this.timeType.mask === this.hham\r\n ) {\r\n if (firstChar === '1') {\r\n if (secondChar === '' || this.textValue.charAt(1) >= '3' || this.cursorPosition < 3) {\r\n if (inputChar >= '3') {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n if (inputChar === '-') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n handleKeyUp(event: KeyboardEvent) {\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n // up & down button\r\n if (event.key === 'ArrowUp') {\r\n this.setCaret();\r\n }\r\n if (event.key === 'ArrowDown') {\r\n this.setCaret();\r\n }\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n return false;\r\n }\r\n\r\n // left & right Button\r\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n // home button\r\n if (event.key === 'Home') {\r\n this.cursorPosition = 0;\r\n }\r\n\r\n // end button\r\n if (event.key === 'End') {\r\n if (this.timeType.mask === this.hhmmssam || this.timeType.mask === this.hhmmam || this.timeType.mask === this.hham) {\r\n if (this.timeType.mask === this.hhmmssam) {\r\n this.cursorPosition = 9;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n this.cursorPosition = 6;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n this.cursorPosition = 3;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n } else {\r\n this.cursorPosition = this.textValue.length;\r\n }\r\n }\r\n\r\n // backspace Control\r\n if (event.key === 'Backspace') {\r\n const ind1 = this.textValue.charAt(0);\r\n const ind2 = this.textValue.charAt(1);\r\n const ind3 = this.textValue.charAt(2);\r\n const ind4 = this.textValue.charAt(3);\r\n const ind5 = this.textValue.charAt(4);\r\n const ind6 = this.textValue.charAt(5);\r\n const ind7 = this.textValue.charAt(6);\r\n const ind8 = this.textValue.charAt(7);\r\n const ind9 = this.textValue.charAt(8);\r\n const ind10 = this.textValue.charAt(9);\r\n if (this.timeType.mask === this.hhmmssam) {\r\n if (ind10 === '-') {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + AXTranslator.get('dateTime.dayTime.am');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n }, 0);\r\n }\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n if (ind7 === '-') {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + AXTranslator.get('dateTime.dayTime.am');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n }, 0);\r\n }\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n if (ind4 === '-') {\r\n this.textValue = ind1 + ind2 + ind3 + AXTranslator.get('dateTime.dayTime.am');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n }, 0);\r\n }\r\n }\r\n\r\n if (this.textValue.length <= 0) {\r\n this.cursorPosition = 0;\r\n } else {\r\n this.cursorPosition -= 1;\r\n }\r\n }\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'End') {\r\n if (this.timeType.mask === this.hhmmssam || this.timeType.mask === this.hhmmam || this.timeType.mask === this.hham) {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n } else {\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }\r\n }\r\n\r\n let newValue = this.textValue;\r\n\r\n const ind1 = newValue.charAt(0);\r\n const ind2 = newValue.charAt(1);\r\n const ind3 = this.textValue.charAt(2);\r\n const ind4 = this.textValue.charAt(3);\r\n const ind5 = this.textValue.charAt(4);\r\n const ind6 = this.textValue.charAt(5);\r\n const ind7 = this.textValue.charAt(6);\r\n const ind8 = this.textValue.charAt(7);\r\n const ind9 = this.textValue.charAt(8);\r\n const ind10 = this.textValue.charAt(9);\r\n const ind11 = this.textValue.charAt(10);\r\n\r\n // up key\r\n if (event.key === 'ArrowUp') {\r\n // hour\r\n if (this.cursorPosition <= 2) {\r\n const hourind = ind1 + ind2;\r\n const newHour = +hourind + 1;\r\n newValue = newHour.toString();\r\n if (\r\n this.timeType.mask === this.hhmmss ||\r\n this.timeType.mask === this.hhmm ||\r\n this.timeType.mask === this.hh ||\r\n this.timeType.mask === this.hhmmssam ||\r\n this.timeType.mask === this.hhmmam ||\r\n this.timeType.mask === this.hham\r\n ) {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 12) {\r\n newValue = '01';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n } else {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 23) {\r\n newValue = '00';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n }\r\n const afterHourind = ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const hour = newValue.toString() + afterHourind;\r\n this.textValue = hour;\r\n }\r\n // minute\r\n if (this.cursorPosition >= 3 && this.cursorPosition <= 5) {\r\n const hourind = ind4 + ind5;\r\n const newHour = +hourind + 1;\r\n\r\n newValue = newHour.toString();\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind4 !== '-' && hourind === ind4 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind5 !== '-' && hourind === '-' + ind5) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 59) {\r\n newValue = '00';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforeHourind = ind1 + ind2 + ind3;\r\n const afterHourind = ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const minute = beforeHourind + newValue.toString() + afterHourind;\r\n this.textValue = minute;\r\n }\r\n\r\n // second\r\n if (this.cursorPosition >= 6 && this.cursorPosition <= 8) {\r\n const secondind = ind7 + ind8;\r\n const newSecond = +secondind + 1;\r\n\r\n newValue = newSecond.toString();\r\n if (secondind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind7 !== '-' && secondind === ind7 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind8 !== '-' && secondind === '-' + ind8) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 59) {\r\n newValue = '00';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const afterHourind = ind9 + ind10 + ind11;\r\n const second = beforeHourind + newValue.toString() + afterHourind;\r\n this.textValue = second;\r\n }\r\n\r\n // type am/PM\r\n if (this.timeType.mask === this.hhmmssam) {\r\n if (this.cursorPosition > 8) {\r\n let typeind = ind10.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9;\r\n const afterHourind = ind11;\r\n\r\n if (ind10 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind10 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n if (this.cursorPosition >= 6) {\r\n let typeind = ind7.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const afterHourind = ind8;\r\n\r\n if (ind7 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind7 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n if (this.cursorPosition >= 3) {\r\n let typeind2 = ind4.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3;\r\n const afterHourind = ind5;\r\n\r\n if (ind4 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind4 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind2 + afterHourind;\r\n }\r\n }\r\n }\r\n\r\n // key down\r\n if (event.key === 'ArrowDown') {\r\n // hour\r\n if (this.cursorPosition <= 2) {\r\n const hourind = ind1 + ind2;\r\n const newHour = +hourind - 1;\r\n\r\n newValue = newHour.toString();\r\n if (\r\n this.timeType.mask === this.hhmmss ||\r\n this.timeType.mask === this.hhmm ||\r\n this.timeType.mask === this.hh ||\r\n this.timeType.mask === this.hhmmssam ||\r\n this.timeType.mask === this.hhmmam ||\r\n this.timeType.mask === this.hham\r\n ) {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue < 1) {\r\n newValue = '12';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n } else {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue < 0) {\r\n newValue = '23';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n }\r\n const afterHourIndex = ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const hour = newValue.toString() + afterHourIndex;\r\n this.textValue = hour;\r\n }\r\n // minute\r\n if (this.cursorPosition >= 3 && this.cursorPosition <= 5) {\r\n const minuteind = ind4 + ind5;\r\n const newMinute = +minuteind - 1;\r\n\r\n newValue = newMinute.toString();\r\n if (minuteind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind4 !== '-' && minuteind === ind4 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind5 !== '-' && minuteind === '-' + ind5) {\r\n newValue = '0';\r\n }\r\n if (minuteind === '--') {\r\n newValue = '0';\r\n }\r\n if (+newValue < 0) {\r\n newValue = '59';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforeMinuteIndex = ind1 + ind2 + ind3;\r\n const afterMinuteIndex = ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const minute = beforeMinuteIndex + newValue.toString() + afterMinuteIndex;\r\n this.textValue = minute;\r\n }\r\n\r\n // second\r\n if (this.cursorPosition >= 6 && this.cursorPosition <= 8) {\r\n const secondIndex = ind7 + ind8;\r\n const newSecond = +secondIndex - 1;\r\n\r\n newValue = newSecond.toString();\r\n if (secondIndex === '--') {\r\n newValue = '0';\r\n }\r\n if (ind7 !== '-' && secondIndex === ind7 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind8 !== '-' && secondIndex === '-' + ind8) {\r\n newValue = '0';\r\n }\r\n if (secondIndex === '--') {\r\n newValue = '0';\r\n }\r\n if (+newValue < 0) {\r\n newValue = '59';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforesecondIndex = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const aftersecondIndex = ind9 + ind10 + ind11;\r\n const second = beforesecondIndex + newValue.toString() + aftersecondIndex;\r\n this.textValue = second;\r\n }\r\n\r\n // type\r\n if (this.timeType.mask === this.hhmmssam) {\r\n if (this.cursorPosition > 8) {\r\n let typeind = ind10.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9;\r\n const afterHourind = ind11;\r\n\r\n if (ind10 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind10 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n if (this.cursorPosition >= 6) {\r\n let typeind = ind7.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const afterHourind = ind8;\r\n\r\n if (ind7 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind7 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n if (this.cursorPosition >= 3) {\r\n let typeind2 = ind4.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3;\r\n const afterHourind = ind5;\r\n //TO DO this is wrong check index\r\n if (ind4 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind4 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind2 + afterHourind;\r\n }\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return false;\r\n }\r\n if (event.key === 'Delete') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n handleClick(event: KeyboardEvent) {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n doGetCaretPosition(ctrl) {\r\n let CaretPos = 0;\r\n if (ctrl.selectionStart || ctrl.selectionStart === 0) {\r\n CaretPos = ctrl.selectionStart;\r\n return CaretPos;\r\n }\r\n }\r\n\r\n setCaretPosition(ctrl, pos) {\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n } else if (ctrl.createTextRange) {\r\n const range = ctrl.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', pos);\r\n range.moveStart('character', pos);\r\n range.select();\r\n }\r\n }\r\n\r\n setCaret() {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTimePickerComponent } from './time-picker.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTimePickerComponent],\r\n imports: [ CommonModule, FormsModule, AXButtonModule, TextMaskModule ],\r\n exports: [AXTimePickerComponent],\r\n providers: [],\r\n})\r\nexport class AXTimePickerModule {}","import { Component, ViewEncapsulation, Input, ContentChild, Output, EventEmitter, ViewChild, ElementRef, TemplateRef } from '@angular/core';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXDataEvent, AXHtmlEvent, AXValueEvent } from '../base/events.class';\r\nimport { AXBaseComponent } from '../base/element.class';\r\nimport { AXContextMenuItemClickEvent, AXContextMenuPromiseFunction, AXContextMenuFunction } from '../context-menu/context-menu.directive';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\nexport class AXTreeSideMenuNode {\r\n children: AXTreeSideMenuNode[];\r\n itemData: AXTreeSideMenuItemData = new AXTreeSideMenuItemData();\r\n parent: AXTreeSideMenuNode;\r\n}\r\n\r\nexport class AXTreeSideMenuItemData {\r\n selected: boolean;\r\n key: string;\r\n disabled: boolean;\r\n open: boolean;\r\n hasChild: boolean;\r\n item: any;\r\n}\r\n\r\nexport class AXTreeSideMenuItemMovedEvent {\r\n source: AXTreeSideMenuNode;\r\n target: AXTreeSideMenuNode;\r\n resolve: (value: boolean) => void;\r\n}\r\n\r\nexport class AXTreeSideMenuSelectionChangedEvent extends AXValueEvent<AXTreeSideMenuNode> {\r\n component: AXTreeSideMenuComponent;\r\n}\r\n\r\nexport class AXTreeSideMenuItemClick extends AXHtmlEvent<MouseEvent> {\r\n component: AXTreeSideMenuComponent;\r\n item: any;\r\n flag: boolean;\r\n cancel?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-tree-side-menu',\r\n templateUrl: './tree-side-menu.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class AXTreeSideMenuComponent extends AXBaseComponent {\r\n @ContentChild(TemplateRef, { static: true })\r\n nodeTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n cssClass: 'single' | 'multiple' = 'single';\r\n\r\n @Input()\r\n selectionMode: 'single' | 'multiple' = 'single';\r\n\r\n @Input()\r\n selectionLevel: 'all' | 'nodes' | 'parents' = 'all';\r\n\r\n @Input()\r\n selectedFieldName: string = null;\r\n\r\n @Input()\r\n selectNodesRecursive: boolean = true;\r\n\r\n @Input()\r\n seletedKeyFields: any[] = [];\r\n\r\n @Input()\r\n keyField: string = 'id';\r\n\r\n @Input()\r\n textField: string ='title'\r\n\r\n @Input()\r\n hasChildField: string = 'child';\r\n\r\n @Input()\r\n bordered: boolean = false;\r\n\r\n @Input()\r\n lazyLoading: boolean = true;\r\n\r\n @Input()\r\n allowDrag: boolean = false;\r\n\r\n @Input()\r\n size: 'md' | 'sm' = 'md';\r\n\r\n @Input()\r\n iconStart:boolean= true;\r\n\r\n @Input()\r\n closeIconName:string= 'fal fa-plus'\r\n\r\n @Input()\r\n openIconName:string='fal fa-minus'\r\n\r\n @Output()\r\n selectionChanged: EventEmitter<AXTreeSideMenuSelectionChangedEvent> = new EventEmitter<AXTreeSideMenuSelectionChangedEvent>();\r\n\r\n @Output()\r\n onItemOpening: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXTreeSideMenuItemClick> = new EventEmitter<AXTreeSideMenuItemClick>();\r\n\r\n @Output()\r\n onItemClosing: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemDrag: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemMoved: EventEmitter<AXTreeSideMenuItemMovedEvent> = new EventEmitter<AXTreeSideMenuItemMovedEvent>();\r\n\r\n @Output()\r\n onContextMenuItemClick: EventEmitter<AXContextMenuItemClickEvent> = new EventEmitter<AXContextMenuItemClickEvent>();\r\n\r\n showSelectBox: boolean = false;\r\n loading: boolean = false;\r\n list: any[] = [];\r\n itemRow: any;\r\n selectedItems: any[] = [];\r\n selectedParents: any[] = [];\r\n loadAllChildren: boolean = false;\r\n listLoad: any[] = [];\r\n itemDrop: any;\r\n itemDrag: any;\r\n validDrop: boolean = true;\r\n lockedDrag: boolean = false;\r\n childField: string = 'childeren';\r\n showContextMenu: boolean = false;\r\n @Input()\r\n contextMenuItems: AXMenuItem[] | AXContextMenuPromiseFunction | AXContextMenuFunction;\r\n\r\n\r\n\r\n constructor(private ref: ElementRef) {\r\n super();\r\n }\r\n\r\n handleOnContextMenuItem(e: AXContextMenuItemClickEvent) {\r\n this.onContextMenuItemClick.emit(e);\r\n }\r\n\r\n refresh() {\r\n this.list = [];\r\n this._contentDataSource.fetch(null);\r\n }\r\n\r\n internalSelectItem(item, userChange: boolean = true) {\r\n if (item[this.hasChildField] === false || this.selectionMode === 'single') {\r\n item.select = !item.select;\r\n if (item.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (item.select === true) {\r\n if (this.selectionMode === 'single') {\r\n this.selectedItems.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedItems = [];\r\n this.selectedItems.push(item);\r\n\r\n } else {\r\n this.selectedItems.push(item);\r\n }\r\n } else {\r\n\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n } else {\r\n item.select = !item.select;\r\n\r\n if (item.parentNode && (this.selectionMode === 'multiple')) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (this.selectionMode === 'multiple') {\r\n this.changeChildSelect(item, item.select);\r\n }\r\n\r\n if (item.select == true) {\r\n if (this.selectionMode === 'multiple') {\r\n\r\n this.selectedParents.push(item);\r\n } else {\r\n this.selectedParents.forEach(e => {\r\n e.select = false;\r\n });\r\n this.selectedParents = [];\r\n this.selectedParents.push(item);\r\n }\r\n } else {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n\r\n }\r\n }\r\n if (userChange) {\r\n this.selectionChanged.emit({\r\n component: this,\r\n value: this.makeNode(item),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n private makeNode(item, addChildren: boolean = true) {\r\n const node: AXTreeSideMenuNode = new AXTreeSideMenuNode();\r\n if (addChildren) {\r\n node.children = item[this.childField] === undefined ? [] : item[this.childField]?.map((m) => this.makeNode(m));\r\n }\r\n node.itemData.disabled = item.disabled === true ? item.disabled : false;\r\n node.itemData.open = item.open === true ? item.open : false;\r\n node.itemData.key = item[this.keyField];\r\n\r\n const c = [];\r\n let i = 0;\r\n for (var k in item) {\r\n i = i + 1;\r\n if (\r\n k != 'select' &&\r\n k != 'hasChild' &&\r\n k != 'loading' &&\r\n k != 'requestId' &&\r\n k != 'disabled' &&\r\n k != 'open' &&\r\n k != 'parentNode' &&\r\n k != 'toggle' &&\r\n k != 'loaded' &&\r\n k != 'indeterminate' &&\r\n k != this.childField\r\n ) {\r\n //c.push({ k: item[k] });\r\n c[k] = item[k];\r\n }\r\n }\r\n node.itemData.item = c; //TO DO\r\n node.itemData.selected = item.select === true ? item.select : false;\r\n node.itemData.hasChild = item[this.hasChildField];\r\n node.parent = item.parentNode === undefined ? null : this.makeNode(item.parentNode, false);\r\n return node;\r\n }\r\n\r\n private changeChildSelect(item, s) {\r\n if (this.selectNodesRecursive) {\r\n item.select = s;\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((elm) => {\r\n if (elm[this.hasChildField] === true) {\r\n elm.select = s;\r\n\r\n\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedParents.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n\r\n\r\n this.changeChildSelect(elm, s);\r\n } else {\r\n elm.select = s;\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedItems.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n }\r\n });\r\n } else {\r\n item.select = s;\r\n\r\n }\r\n }\r\n }\r\n\r\n private changeParentSelect(item) {\r\n if (this.selectNodesRecursive) {\r\n let allselect = true;\r\n let alldeselect = true;\r\n let oneselect = false;\r\n let isindeterminate = false;\r\n\r\n if (item[this.childField]) {\r\n for (let index = 0; index < item[this.childField].length; index++) {\r\n if (item[this.childField][index].select === true) {\r\n alldeselect = false;\r\n oneselect = true;\r\n }\r\n if (item[this.childField][index].select === false || item[this.childField][index].select === undefined) {\r\n allselect = false;\r\n }\r\n if (item[this.childField][index].select === null) {\r\n isindeterminate = true;\r\n alldeselect = false;\r\n oneselect = true;\r\n allselect = false;\r\n }\r\n }\r\n }\r\n\r\n if (oneselect || (isindeterminate && !allselect)) {\r\n item.select = null;\r\n }\r\n if (allselect === true) {\r\n item.select = true;\r\n }\r\n if (alldeselect === true) {\r\n item.select = false;\r\n }\r\n if (item.parentNode && item.parentNode[this.childField] && item.parentNode[this.childField].length > 0) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n }\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n this.onItemClick.subscribe((data: AXTreeSideMenuItemClick) => {\r\n if (!data.cancel) {\r\n this.toggleNode(data.item, data.flag);\r\n }\r\n })\r\n }\r\n\r\n itemdbClick(e: MouseEvent, item) {\r\n if (this.selectionMode == 'single') {\r\n this.handleOnNodeClick(e, item, true);\r\n }\r\n }\r\n\r\n\r\n handleOnNodeClick(e: MouseEvent, item, flag = false) {\r\n this.onItemClick.emit({\r\n component: this,\r\n htmlEvent: e,\r\n item,\r\n flag\r\n })\r\n }\r\n\r\n toggleNode(item, flag = false) {\r\n //item[this.hasChildField] === false &&\r\n if (this.selectionMode === 'single' && !flag) {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n\r\n } else {\r\n if(item[this.hasChildField] == true){\r\n item.toggle = !item.toggle;\r\n }\r\n\r\n if (this.selectionMode === 'single') {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n }\r\n\r\n if (item[this.hasChildField] === true && item.loaded !== true && this.lazyLoading) {\r\n this.itemRow = item;\r\n const uid = Math.floor(Math.random() * 100000000);\r\n item.requestId = uid;\r\n this.listLoad.push(item);\r\n this._contentDataSource.fetch(item);\r\n this.showLoading(this.itemRow);\r\n }\r\n if (item.toggle && item[this.hasChildField] === true) {\r\n item.open = true;\r\n this.onItemOpening.emit(this.makeNode(item));\r\n } else if (!item.toggle && item[this.hasChildField] === true) {\r\n item.open = false;\r\n this.onItemClosing.emit(this.makeNode(item));\r\n }\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._contentDataSource.fetch(null);\r\n this._contentDataSource.onDataReceived.subscribe((_data) => {\r\n\r\n if (this.list.length === 0) {\r\n this.hideLoading(null);\r\n this.list = _data.data.result;\r\n\r\n this.list.forEach((el) => {\r\n el.select = false;\r\n\r\n if (this.selectionLevel == 'nodes' && el[this.hasChildField] == true) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && el[this.hasChildField] == false) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(el[this.keyField])) {\r\n if (el[this.hasChildField] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(el);\r\n // }\r\n\r\n } else {\r\n this.selectItem(el);\r\n }\r\n }\r\n })\r\n } else if (this.selectedFieldName != null) {\r\n if (el[this.hasChildField] == true && el[this.selectedFieldName] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(el);\r\n // }\r\n\r\n } else if (el[this.selectedFieldName] == true) {\r\n this.selectItem(el);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n });\r\n } else {\r\n this.itemRow = this.listLoad.filter((c) => c.requestId === _data.data.requestId)[0];\r\n this.listLoad = this.listLoad.filter((c) => c.requestId !== _data.data.requestId);\r\n if (this.itemRow !== undefined) {\r\n this.hideLoading(this.itemRow);\r\n const result = _data.data.result;\r\n\r\n if (this.list.length !== 0) {\r\n\r\n if (this.itemRow[this.childField] && this.itemRow[this.childField].length > 0) {\r\n result.forEach((el) => {\r\n this.itemRow[this.childField][this.itemRow[this.childField].length] = el;\r\n });\r\n } else {\r\n this.itemRow[this.childField] = result;\r\n }\r\n\r\n for (let i = 0; i < result.length; i++) {\r\n if (this.selectionLevel == 'nodes' && result[i][this.hasChildField] == true) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && result[i][this.hasChildField] == false) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n if (this.selectionMode !== 'single' && this.selectNodesRecursive) {\r\n result[i].select = this.itemRow.select === (undefined || null) ? false : this.itemRow.select;\r\n\r\n if (\r\n this.itemRow.select === true &&\r\n (this.selectionMode == 'multiple') &&\r\n result[i][this.hasChildField] === false\r\n ) {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== result[i][this.keyField]);\r\n this.selectedItems.push(result[i]);\r\n }\r\n } else {\r\n result[i].select = false;\r\n }\r\n result[i].parentNode = this.itemRow;\r\n\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(result[i][this.keyField])) {\r\n if (result[i][this.hasChildField] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(result[i]);\r\n // }\r\n\r\n } else {\r\n this.selectItem(result[i]);\r\n }\r\n }\r\n })\r\n } else if (this.selectedFieldName != null) {\r\n if (result[i][this.hasChildField] == true && result[i][this.selectedFieldName] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(result[i]);\r\n // }\r\n\r\n } else if (result[i][this.selectedFieldName] == true) {\r\n this.selectItem(result[i]);\r\n }\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n this.itemRow.loaded = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.selectionMode !== 'single') {\r\n this.showSelectBox = true;\r\n }\r\n this.showContextMenu = true;\r\n }\r\n\r\n // onItemClick(e, v) {\r\n\r\n // }\r\n\r\n onDragStart(e: Event, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrag = v;\r\n this.onItemDrag.emit(v);\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n onDragEnd(e, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrop = v;\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n drop(e) {\r\n // this.onItemDrop.emit(this.itemDrop);\r\n if (!this.lockedDrag) {\r\n this.validDrop = true;\r\n this.sameChilde(this.itemDrag, this.itemDrop);\r\n if (this.validDrop && this.itemDrag[this.keyField] !== this.itemDrop[this.keyField] && this.itemDrag.parentNode !== this.itemDrop) {\r\n const movedEvent: AXTreeSideMenuItemMovedEvent = new AXTreeSideMenuItemMovedEvent();\r\n movedEvent.source = this.makeNode(this.itemDrag);\r\n movedEvent.target = this.makeNode(this.itemDrop);\r\n this.lockedDrag = true;\r\n this.showLoading(this.itemDrag);\r\n this.showLoading(this.itemDrop);\r\n movedEvent.resolve = (value: boolean) => {\r\n this.hideLoading(this.itemDrag);\r\n this.hideLoading(this.itemDrop);\r\n if (value) {\r\n this.dragDropItem(this.itemDrag, this.itemDrop);\r\n } else {\r\n this.lockedDrag = false;\r\n }\r\n };\r\n this.onItemMoved.emit(movedEvent);\r\n }\r\n }\r\n\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n sameChilde(parent, child) {\r\n if (parent[this.childField] && parent[this.childField].length > 0) {\r\n for (let index = 0; index < parent[this.childField].length; index++) {\r\n if (parent[this.childField][index][this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n if (parent[this.childField][index][this.childField] && parent[this.childField][index][this.childField].length > 0) {\r\n this.sameChilde(parent[this.childField][index], child);\r\n }\r\n }\r\n } else if (parent[this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n }\r\n\r\n dragDropItem(itemChild, itemParent) {\r\n if (this.selectionLevel == 'nodes') {\r\n itemParent.disabledCheckBox = true;\r\n }\r\n\r\n if (itemChild.parentNode) {\r\n itemChild.parentNode[this.childField] = itemChild.parentNode[this.childField].filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n } else {\r\n this.list = this.list.filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n }\r\n itemChild.parentNode = itemParent;\r\n if (itemParent[this.childField] && itemParent[this.childField].length > 0) {\r\n itemParent[this.childField][itemParent[this.childField].length] = itemChild;\r\n } else {\r\n itemParent[this.childField] = [];\r\n itemParent[this.childField][0] = itemChild;\r\n if (itemParent[this.hasChildField] === true) {\r\n this.toggleNode(itemParent);\r\n } else {\r\n itemParent.toggle = !itemParent.toggle;\r\n itemParent.loaded = true;\r\n }\r\n itemParent[this.hasChildField] = true;\r\n }\r\n if (itemChild.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(itemChild.parentNode);\r\n }\r\n this.lockedDrag = false;\r\n\r\n }\r\n\r\n private listChange(field, value) {\r\n for (let index = 0; index < this.list.length; index++) {\r\n this.changeChiled(this.list[index], field, value);\r\n }\r\n this.loadAllChildren = false;\r\n }\r\n\r\n private changeChiled(item, field, value) {\r\n if (field === 'toggle' && (item.loaded === false || item.loaded === undefined)) {\r\n if (this.loadAllChildren === true) {\r\n this.toggleNode(item);\r\n item[field] = value;\r\n }\r\n } else {\r\n item[field] = value;\r\n if (field === 'select' && item[this.hasChildField] === false && value === true) {\r\n this.selectedItems.push(item);\r\n }\r\n }\r\n if (field === 'select') {\r\n item.indeterminate = false;\r\n }\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((element) => {\r\n this.changeChiled(element, field, value);\r\n });\r\n }\r\n }\r\n\r\n private showLoading(item): void {\r\n item.loading = true;\r\n }\r\n\r\n private hideLoading(item): void {\r\n if (item != null) {\r\n item.loading = false;\r\n }\r\n }\r\n\r\n public openAll(loadAll: boolean = false) {\r\n // if (loadAll) {\r\n // this.loadAllChildren = true;\r\n // this.listChange('toggle', true);\r\n //} else {\r\n this.listChange('toggle', true);\r\n // }\r\n }\r\n\r\n public selectItem(item) {\r\n if (item['select'] != true) {\r\n this.internalSelectItem(item, false);\r\n }\r\n }\r\n\r\n\r\n public open(item) {\r\n\r\n if (item['toggle'] !== true) {\r\n this.toggleNode(item, true);\r\n\r\n }\r\n\r\n }\r\n\r\n public scrolIntoView(item) {\r\n let element = document.querySelector(`li[data-id='${item[this.keyField]}']`);\r\n element.scrollIntoView();\r\n }\r\n\r\n public closeAll() {\r\n this.listChange('toggle', false);\r\n }\r\n\r\n public selectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', true);\r\n }\r\n }\r\n\r\n public unSelectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', false);\r\n }\r\n this.selectedItems = [];\r\n }\r\n\r\n public getSelectedNodes(): AXTreeSideMenuNode[] {\r\n const selectItemsNode = [];\r\n this.selectedItems.forEach((e) => {\r\n selectItemsNode.push(this.makeNode(e));\r\n });\r\n return selectItemsNode;\r\n }\r\n\r\n public getSelectedParents(): AXTreeSideMenuNode[] {\r\n const selectItemsParent = [];\r\n this.selectedParents.forEach((e) => {\r\n selectItemsParent.push(this.makeNode(e));\r\n });\r\n return selectItemsParent;\r\n }\r\n\r\n getParentsId(item) {\r\n let keyFields = []\r\n keyFields.push(item[this.keyField]);\r\n if (item.parentNode) {\r\n keyFields.push(...this.getParentsId(item.parentNode));\r\n\r\n }\r\n return keyFields;\r\n }\r\n\r\n public getSelectedKeyFields() {\r\n let keyFields = [];\r\n this.selectedItems.forEach(elm => {\r\n var Ids = this.getParentsId(elm);\r\n if (Ids) {\r\n keyFields.push(Ids)\r\n }\r\n });\r\n return keyFields;\r\n }\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { AXTreeSideMenuComponent } from \"./tree-side-menu.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AXDataSourceModule } from \"../data-source/datasource.module\";\r\nimport { AXCheckBoxModule } from \"../checkbox/checkbox.module\";\r\nimport { AXContextMenuModule } from \"../context-menu/context-menu.module\";\r\n\r\n@NgModule({\r\n declarations: [AXTreeSideMenuComponent],\r\n imports: [\r\n AXDataSourceModule,\r\n CommonModule,\r\n AXCheckBoxModule,\r\n AXContextMenuModule,\r\n ],\r\n exports: [AXTreeSideMenuComponent],\r\n providers: [],\r\n})\r\nexport class AXTreeSideMenuModule {}\r\n","import { Component, ViewEncapsulation, Input, ContentChild, Output, EventEmitter, ViewChild, ElementRef, TemplateRef } from '@angular/core';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXDataEvent, AXHtmlEvent, AXValueEvent } from '../base/events.class';\r\nimport { AXBaseComponent } from '../base/element.class';\r\nimport { AXContextMenuItemClickEvent, AXContextMenuPromiseFunction, AXContextMenuFunction } from '../context-menu/context-menu.directive';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\nexport class AXTreeViewNode {\r\n children: AXTreeViewNode[];\r\n itemData: AXTreeViewItemData = new AXTreeViewItemData();\r\n parent: AXTreeViewNode;\r\n}\r\n\r\nexport class AXTreeViewItemData {\r\n selected: boolean;\r\n key: string;\r\n disabled: boolean;\r\n open: boolean;\r\n hasChild: boolean;\r\n item: any;\r\n}\r\n\r\nexport class AXTreeViewItemMovedEvent {\r\n source: AXTreeViewNode;\r\n target: AXTreeViewNode;\r\n resolve: (value: boolean) => void;\r\n}\r\n\r\nexport class AXTreeViewselectionChangedEvent extends AXValueEvent<AXTreeViewNode> {\r\n component: AXTreeViewComponent;\r\n}\r\n\r\nexport class AXTreeViewseletedKeyFieldsChangedEvent extends AXValueEvent<AXTreeViewNode> {\r\n component: AXTreeViewComponent;\r\n}\r\n\r\nexport class AXTreeViewItemClick extends AXHtmlEvent<MouseEvent> {\r\n component: AXTreeViewComponent;\r\n item: any;\r\n flag: boolean;\r\n cancel?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-tree-view',\r\n templateUrl: './tree-view.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTreeViewComponent extends AXBaseComponent {\r\n @ContentChild(TemplateRef, { static: true })\r\n nodeTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n selectionMode: 'single' | 'multiple' = 'single';\r\n\r\n @Input()\r\n selectionLevel: 'all' | 'nodes' | 'parents' = 'all';\r\n\r\n // user can set only one of this /selectedFieldName or /seletedKeyFields\r\n //seletedKeyFields set id of nodes and parents\r\n //selectedFieldName set name of fields that set selectes\r\n @Input()\r\n selectedFieldName: string = null;\r\n\r\n @Input()\r\n selectNodesRecursive: boolean = true;\r\n\r\n @Input()\r\n seletedKeyFields: any[] = [];\r\n\r\n @Input()\r\n keyField: string = 'id';\r\n\r\n @Input()\r\n hasChildField: string = 'child';\r\n\r\n @Input()\r\n bordered: boolean = false;\r\n\r\n @Input()\r\n lazyLoading: boolean = true;\r\n\r\n @Input()\r\n allowDrag: boolean = false;\r\n\r\n @Input()\r\n size: 'md' | 'sm' = 'md';\r\n\r\n @Output()\r\n selectionChanged: EventEmitter<AXTreeViewselectionChangedEvent> = new EventEmitter<AXTreeViewselectionChangedEvent>();\r\n\r\n @Output()\r\n seletedKeyFieldsChanged: EventEmitter<AXTreeViewseletedKeyFieldsChangedEvent> = new EventEmitter<AXTreeViewselectionChangedEvent>();\r\n\r\n @Output()\r\n onItemOpening: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXTreeViewItemClick> = new EventEmitter<AXTreeViewItemClick>();\r\n\r\n @Output()\r\n onItemClosing: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemDrag: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemMoved: EventEmitter<AXTreeViewItemMovedEvent> = new EventEmitter<AXTreeViewItemMovedEvent>();\r\n\r\n @Output()\r\n onContextMenuItemClick: EventEmitter<AXContextMenuItemClickEvent> = new EventEmitter<AXContextMenuItemClickEvent>();\r\n\r\n showSelectBox: boolean = false;\r\n loading: boolean = false;\r\n list: any[] = [];\r\n itemRow: any;\r\n selectedItems: any[] = [];\r\n selectedParents: any[] = [];\r\n loadAllChildren: boolean = false;\r\n listLoad: any[] = [];\r\n itemDrop: any;\r\n itemDrag: any;\r\n validDrop: boolean = true;\r\n lockedDrag: boolean = false;\r\n childField: string = 'childeren';\r\n showContextMenu: boolean = false;\r\n isSelectedItem: boolean = false;\r\n loced: boolean = false;\r\n @Input()\r\n contextMenuItems: AXMenuItem[] | AXContextMenuPromiseFunction | AXContextMenuFunction;\r\n\r\n constructor(private ref: ElementRef) {\r\n super();\r\n }\r\n\r\n handleOnContextMenuItem(e: AXContextMenuItemClickEvent) {\r\n this.onContextMenuItemClick.emit(e);\r\n }\r\n\r\n refresh() {\r\n this.list = [];\r\n this._contentDataSource.fetch(null);\r\n }\r\n\r\n internalSelectItem(item, userChange: boolean = true) {\r\n if (item[this.hasChildField] === false || this.selectionMode === 'single') {\r\n item.select = !item.select;\r\n if (item.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (item.select === true) {\r\n if (this.selectionMode === 'single') {\r\n this.selectedItems.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedItems = [];\r\n this.selectedItems.push(item);\r\n } else {\r\n this.selectedItems.push(item);\r\n }\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n } else {\r\n item.select = !item.select;\r\n\r\n if (item.parentNode && this.selectionMode === 'multiple') {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (this.selectionMode === 'multiple') {\r\n this.changeChildSelect(item, item.select);\r\n }\r\n\r\n if (item.select == true) {\r\n if (this.selectionMode === 'multiple') {\r\n this.selectedParents.push(item);\r\n } else {\r\n this.selectedParents.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedParents = [];\r\n this.selectedParents.push(item);\r\n }\r\n } else {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n }\r\n if (userChange) {\r\n this.selectionChanged.emit({\r\n component: this,\r\n value: this.makeNode(item),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n private makeNode(item, addChildren: boolean = true) {\r\n const node: AXTreeViewNode = new AXTreeViewNode();\r\n if (addChildren) {\r\n node.children = item[this.childField] === undefined ? [] : item[this.childField]?.map((m) => this.makeNode(m));\r\n }\r\n node.itemData.disabled = item.disabled === true ? item.disabled : false;\r\n node.itemData.open = item.open === true ? item.open : false;\r\n node.itemData.key = item[this.keyField];\r\n\r\n const c = [];\r\n let i = 0;\r\n for (var k in item) {\r\n i = i + 1;\r\n if (\r\n k != 'select' &&\r\n k != 'hasChild' &&\r\n k != 'loading' &&\r\n k != 'requestId' &&\r\n k != 'disabled' &&\r\n k != 'open' &&\r\n k != 'parentNode' &&\r\n k != 'toggle' &&\r\n k != 'loaded' &&\r\n k != 'indeterminate' &&\r\n k != this.childField\r\n ) {\r\n //c.push({ k: item[k] });\r\n c[k] = item[k];\r\n }\r\n }\r\n node.itemData.item = c; //TO DO\r\n node.itemData.selected = item.select === true ? item.select : false;\r\n node.itemData.hasChild = item[this.hasChildField];\r\n node.parent = item.parentNode === undefined ? null : this.makeNode(item.parentNode, false);\r\n return node;\r\n }\r\n\r\n private changeChildSelect(item, s) {\r\n if (this.selectNodesRecursive) {\r\n item.select = s;\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((elm) => {\r\n if (elm[this.hasChildField] === true) {\r\n elm.select = s;\r\n\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedParents.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n\r\n this.changeChildSelect(elm, s);\r\n } else {\r\n elm.select = s;\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedItems.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n }\r\n });\r\n } else {\r\n item.select = s;\r\n }\r\n }\r\n }\r\n\r\n private changeParentSelect(item) {\r\n if (this.selectNodesRecursive) {\r\n let allselect = true;\r\n let alldeselect = true;\r\n let oneselect = false;\r\n let isindeterminate = false;\r\n\r\n if (item[this.childField]) {\r\n for (let index = 0; index < item[this.childField].length; index++) {\r\n if (item[this.childField][index].select === true) {\r\n alldeselect = false;\r\n oneselect = true;\r\n }\r\n if (item[this.childField][index].select === false || item[this.childField][index].select === undefined) {\r\n allselect = false;\r\n }\r\n if (item[this.childField][index].select === null) {\r\n isindeterminate = true;\r\n alldeselect = false;\r\n oneselect = true;\r\n allselect = false;\r\n }\r\n }\r\n }\r\n\r\n if (oneselect || (isindeterminate && !allselect)) {\r\n item.select = null;\r\n }\r\n if (allselect === true) {\r\n item.select = true;\r\n }\r\n if (alldeselect === true) {\r\n item.select = false;\r\n }\r\n if (item.parentNode && item.parentNode[this.childField] && item.parentNode[this.childField].length > 0) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.onItemClick.subscribe((data: AXTreeViewItemClick) => {\r\n if (!data.cancel) {\r\n this.toggleNode(data.item, data.flag);\r\n }\r\n });\r\n }\r\n\r\n itemdbClick(e: MouseEvent, item) {\r\n if (this.selectionMode == 'single') {\r\n this.handleOnNodeClick(e, item, true);\r\n }\r\n }\r\n\r\n handleOnNodeClick(e: MouseEvent, item, flag = false) {\r\n // this.internalSelectItem(item);\r\n this.onItemClick.emit({\r\n component: this,\r\n htmlEvent: e,\r\n item,\r\n flag\r\n });\r\n }\r\n\r\n toggleNode(item, flag = false) {\r\n //item[this.hasChildField] === false &&\r\n if (this.selectionMode === 'single' && !flag) {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n } else {\r\n item.toggle = !item.toggle;\r\n if (this.selectionMode === 'single') {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n }\r\n\r\n if (item[this.hasChildField] === true && item.loaded !== true && this.lazyLoading) {\r\n this.itemRow = item;\r\n const uid = Math.floor(Math.random() * 100000000);\r\n item.requestId = uid;\r\n this.listLoad.push(item);\r\n this._contentDataSource.fetch(item);\r\n this.showLoading(this.itemRow);\r\n }\r\n if (item.toggle && item[this.hasChildField] === true) {\r\n item.open = true;\r\n this.onItemOpening.emit(this.makeNode(item));\r\n } else if (!item.toggle && item[this.hasChildField] === true) {\r\n item.open = false;\r\n this.onItemClosing.emit(this.makeNode(item));\r\n }\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._contentDataSource.fetch(null);\r\n this._contentDataSource.onDataReceived.subscribe((_data) => {\r\n if (this.list.length === 0) {\r\n this.hideLoading(null);\r\n this.list = _data.data.result;\r\n\r\n this.list.forEach((el) => {\r\n el.disabledCheckBox = false;\r\n el.select = false;\r\n\r\n if (this.selectionLevel == 'nodes' && el[this.hasChildField] == true) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && el[this.hasChildField] == false) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(el[this.keyField])) {\r\n if (el[this.hasChildField] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(el);\r\n // }\r\n } else {\r\n this.selectItem(el);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n });\r\n } else if (this.selectedFieldName != null) {\r\n if (el[this.hasChildField] == true && el[this.selectedFieldName] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(el);\r\n // }\r\n } else if (el[this.selectedFieldName] == true) {\r\n this.selectItem(el);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n });\r\n } else {\r\n this.itemRow = this.listLoad.filter((c) => c.requestId === _data.data.requestId)[0];\r\n this.listLoad = this.listLoad.filter((c) => c.requestId !== _data.data.requestId);\r\n if (this.itemRow !== undefined) {\r\n this.hideLoading(this.itemRow);\r\n const result = _data.data.result;\r\n\r\n if (this.list.length !== 0) {\r\n if (this.itemRow[this.childField] && this.itemRow[this.childField].length > 0) {\r\n result.forEach((el) => {\r\n el.disabledCheckBox = false;\r\n this.itemRow[this.childField][this.itemRow[this.childField].length] = el;\r\n });\r\n } else {\r\n this.itemRow[this.childField] = result;\r\n }\r\n\r\n for (let i = 0; i < result.length; i++) {\r\n if (this.selectionLevel == 'nodes' && result[i][this.hasChildField] == true) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && result[i][this.hasChildField] == false) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n if (this.selectionMode !== 'single' && this.selectNodesRecursive) {\r\n result[i].select = this.itemRow.select === (undefined || null) ? false : this.itemRow.select;\r\n\r\n if (this.itemRow.select === true && this.selectionMode == 'multiple' && result[i][this.hasChildField] === false) {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== result[i][this.keyField]);\r\n this.selectedItems.push(result[i]);\r\n }\r\n } else {\r\n result[i].select = false;\r\n }\r\n result[i].parentNode = this.itemRow;\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(result[i][this.keyField])) {\r\n if (result[i][this.hasChildField] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(result[i]);\r\n // }\r\n } else {\r\n this.selectItem(result[i]);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n });\r\n } else if (this.selectedFieldName != null) {\r\n if (result[i][this.hasChildField] == true && result[i][this.selectedFieldName] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(result[i]);\r\n // }\r\n } else if (result[i][this.selectedFieldName] == true) {\r\n this.selectItem(result[i]);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n }\r\n\r\n this.itemRow.loaded = true;\r\n }\r\n }\r\n }\r\n\r\n if (this.isSelectedItem == true && !this.loced) {\r\n this.loced = true;\r\n this.seletedKeyFieldsChanged.emit({\r\n component: this,\r\n // value: this.makeNode(item),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.selectionMode !== 'single') {\r\n this.showSelectBox = true;\r\n }\r\n this.showContextMenu = true;\r\n }\r\n\r\n // onItemClick(e, v) {\r\n\r\n // }\r\n\r\n onDragStart(e: Event, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrag = v;\r\n this.onItemDrag.emit(v);\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n onDragEnd(e, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrop = v;\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n drop(e) {\r\n // this.onItemDrop.emit(this.itemDrop);\r\n if (!this.lockedDrag) {\r\n this.validDrop = true;\r\n this.sameChilde(this.itemDrag, this.itemDrop);\r\n if (this.validDrop && this.itemDrag[this.keyField] !== this.itemDrop[this.keyField] && this.itemDrag.parentNode !== this.itemDrop) {\r\n const movedEvent: AXTreeViewItemMovedEvent = new AXTreeViewItemMovedEvent();\r\n movedEvent.source = this.makeNode(this.itemDrag);\r\n movedEvent.target = this.makeNode(this.itemDrop);\r\n this.lockedDrag = true;\r\n this.showLoading(this.itemDrag);\r\n this.showLoading(this.itemDrop);\r\n movedEvent.resolve = (value: boolean) => {\r\n this.hideLoading(this.itemDrag);\r\n this.hideLoading(this.itemDrop);\r\n if (value) {\r\n this.dragDropItem(this.itemDrag, this.itemDrop);\r\n } else {\r\n this.lockedDrag = false;\r\n }\r\n };\r\n this.onItemMoved.emit(movedEvent);\r\n }\r\n }\r\n\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n sameChilde(parent, child) {\r\n if (parent[this.childField] && parent[this.childField].length > 0) {\r\n for (let index = 0; index < parent[this.childField].length; index++) {\r\n if (parent[this.childField][index][this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n if (parent[this.childField][index][this.childField] && parent[this.childField][index][this.childField].length > 0) {\r\n this.sameChilde(parent[this.childField][index], child);\r\n }\r\n }\r\n } else if (parent[this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n }\r\n\r\n dragDropItem(itemChild, itemParent) {\r\n if (this.selectionLevel == 'nodes') {\r\n itemParent.disabledCheckBox = true;\r\n }\r\n\r\n if (itemChild.parentNode) {\r\n itemChild.parentNode[this.childField] = itemChild.parentNode[this.childField].filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n } else {\r\n this.list = this.list.filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n }\r\n itemChild.parentNode = itemParent;\r\n if (itemParent[this.childField] && itemParent[this.childField].length > 0) {\r\n itemParent[this.childField][itemParent[this.childField].length] = itemChild;\r\n } else {\r\n itemParent[this.childField] = [];\r\n itemParent[this.childField][0] = itemChild;\r\n if (itemParent[this.hasChildField] === true) {\r\n this.toggleNode(itemParent);\r\n } else {\r\n itemParent.toggle = !itemParent.toggle;\r\n itemParent.loaded = true;\r\n }\r\n itemParent[this.hasChildField] = true;\r\n }\r\n if (itemChild.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(itemChild.parentNode);\r\n }\r\n this.lockedDrag = false;\r\n }\r\n\r\n private listChange(field, value) {\r\n for (let index = 0; index < this.list.length; index++) {\r\n this.changeChiled(this.list[index], field, value);\r\n }\r\n this.loadAllChildren = false;\r\n }\r\n\r\n private changeChiled(item, field, value) {\r\n if (field === 'toggle' && (item.loaded === false || item.loaded === undefined)) {\r\n if (this.loadAllChildren === true) {\r\n this.toggleNode(item);\r\n item[field] = value;\r\n }\r\n } else {\r\n item[field] = value;\r\n if (field === 'select' && item[this.hasChildField] === false && value === true) {\r\n this.selectedItems.push(item);\r\n }\r\n }\r\n if (field === 'select') {\r\n item.indeterminate = false;\r\n }\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((element) => {\r\n this.changeChiled(element, field, value);\r\n });\r\n }\r\n }\r\n\r\n private showLoading(item): void {\r\n item.loading = true;\r\n }\r\n\r\n private hideLoading(item): void {\r\n if (item != null) {\r\n item.loading = false;\r\n }\r\n }\r\n\r\n public openAll(loadAll: boolean = false) {\r\n // if (loadAll) {\r\n // this.loadAllChildren = true;\r\n // this.listChange('toggle', true);\r\n //} else {\r\n this.listChange('toggle', true);\r\n // }\r\n }\r\n\r\n public selectItem(item) {\r\n if (item['select'] != true) {\r\n this.internalSelectItem(item, false);\r\n }\r\n }\r\n\r\n public open(item) {\r\n if (item['toggle'] !== true) {\r\n this.toggleNode(item, true);\r\n }\r\n }\r\n\r\n public scrolIntoView(item) {\r\n let element = document.querySelector(`li[data-id='${item[this.keyField]}']`);\r\n element.scrollIntoView();\r\n }\r\n\r\n public closeAll() {\r\n this.listChange('toggle', false);\r\n }\r\n\r\n public selectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', true);\r\n }\r\n }\r\n\r\n public unSelectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', false);\r\n }\r\n this.selectedItems = [];\r\n }\r\n\r\n public getSelectedNodes(): AXTreeViewNode[] {\r\n const selectItemsNode = [];\r\n this.selectedItems.forEach((e) => {\r\n selectItemsNode.push(this.makeNode(e));\r\n });\r\n return selectItemsNode;\r\n }\r\n\r\n public getSelectedParents(): AXTreeViewNode[] {\r\n const selectItemsParent = [];\r\n this.selectedParents.forEach((e) => {\r\n selectItemsParent.push(this.makeNode(e));\r\n });\r\n return selectItemsParent;\r\n }\r\n\r\n getParentsId(item) {\r\n let keyFields = [];\r\n keyFields.push(item[this.keyField]);\r\n if (item.parentNode) {\r\n keyFields.push(...this.getParentsId(item.parentNode));\r\n }\r\n return keyFields;\r\n }\r\n\r\n public getSelectedKeyFields() {\r\n let keyFields = [];\r\n this.selectedItems.forEach((elm) => {\r\n var Ids = this.getParentsId(elm);\r\n if (Ids) {\r\n keyFields.push(Ids);\r\n }\r\n });\r\n return keyFields;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AXTreeViewComponent } from './tree-view.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDataSourceModule } from '../data-source/datasource.module';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXContextMenuModule } from '../context-menu/context-menu.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTreeViewComponent],\r\n imports: [AXDataSourceModule, CommonModule, AXCheckBoxModule, AXContextMenuModule],\r\n exports: [AXTreeViewComponent],\r\n providers: []\r\n})\r\n\r\nexport class AXTreeViewModule { }","import {\r\n Component,\r\n ViewChild,\r\n Input,\r\n ElementRef,\r\n ViewEncapsulation,\r\n TemplateRef,\r\n Renderer2,\r\n EventEmitter,\r\n Output,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { AXUploadFileLoadEvent, AXUploadFileProgressEvent } from './upload-file.events';\r\nimport { AXProgressBarComponent } from '../progress-bar/progress-bar.component';\r\nimport { AXBaseTextComponent, AXElementSize, AXBaseSizableComponent, AXBaseComponent } from '../base/element.class';\r\nimport { AXRenderService } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-upload-file',\r\n templateUrl: './upload-file.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n host: { style: 'display: block; width:100%; position: relative' }\r\n})\r\nexport class AXUploadFileComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n private overlayDiv: HTMLElement;\r\n\r\n @Input()\r\n dropRef: HTMLElement;\r\n\r\n @Input()\r\n progressRef: HTMLElement;\r\n\r\n @Input()\r\n label: string;\r\n\r\n @Input()\r\n size: AXElementSize = \"md\";\r\n\r\n @ViewChild('fileInput') fileInput: ElementRef;\r\n\r\n @Input()\r\n type: 'box' | 'inline' | 'hidden' = 'inline';\r\n\r\n @Input()\r\n public template: TemplateRef<any>;\r\n\r\n @Input() disabled: boolean = false;\r\n @Output()\r\n onLoad: EventEmitter<AXUploadFileLoadEvent> = new EventEmitter<AXUploadFileLoadEvent>();\r\n\r\n @Output()\r\n onProgress: EventEmitter<AXUploadFileProgressEvent> = new EventEmitter<AXUploadFileProgressEvent>();\r\n\r\n files: File[] = [];\r\n focus() { }\r\n\r\n fileName: string = '';\r\n constructor(\r\n private el: ElementRef<HTMLElement>,\r\n private injectionService: AXRenderService,\r\n private rendrer: Renderer2,\r\n protected cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n\r\n onDeleteClick(e) {\r\n e.stopPropagation();\r\n }\r\n\r\n onFileChange(e) {\r\n const files = e.target.files;\r\n this.addFile(files[0]);\r\n (this.fileInput.nativeElement as HTMLInputElement).value = null;\r\n }\r\n\r\n open() {\r\n this.fileInput.nativeElement.click();\r\n }\r\n remove() {\r\n this.files = [];\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.dropRef != null) {\r\n } else {\r\n this.dropRef = this.el.nativeElement;\r\n }\r\n //\r\n if (this.progressRef != null) {\r\n } else {\r\n this.progressRef = this.el.nativeElement;\r\n }\r\n //\r\n if (this.type === 'hidden' || this.type === 'box') {\r\n this.overlayDiv = this.rendrer.createElement('div') as HTMLElement;\r\n this.overlayDiv.classList.add('overlay');\r\n this.overlayDiv.innerHTML = `\r\n <div class=\"icon-wrapper\">\r\n <i class=\"far fa-cloud-upload-alt fa-3x\"></i>\r\n <span>Drop File(s) Here</span>\r\n </div>\r\n `;\r\n this.overlayDiv.addEventListener('drag', this.handleOverlayDragOver);\r\n this.overlayDiv.addEventListener('dragover', this.handleOverlayDragOver);\r\n this.overlayDiv.addEventListener('dragleave', this.handleOverlayDragOver);\r\n this.rendrer.appendChild(this.dropRef, this.overlayDiv);\r\n }\r\n //\r\n this.dropRef.classList.add('ax-upload-drop-over');\r\n this.dropRef.addEventListener('dragover', this.handleDragOver.bind(this));\r\n this.dropRef.addEventListener('dragleave', this.handleDragLeave.bind(this));\r\n this.dropRef.addEventListener('drop', this.handleDrop.bind(this));\r\n }\r\n\r\n private handleOverlayDragOver(e: DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n\r\n private handleDragOver(e: DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.overlayDiv.classList.add('show');\r\n return false;\r\n }\r\n\r\n private handleDragLeave(e: DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.overlayDiv.classList.remove('show');\r\n return false;\r\n }\r\n\r\n handleDrop(e: DragEvent) {\r\n this.handleDragLeave(e);\r\n for (let i = 0; i < e.dataTransfer.files.length; i++) {\r\n const file = e.dataTransfer.files[i];\r\n this.addFile(file);\r\n }\r\n }\r\n\r\n private addFile(file: File) {\r\n const progressDiv = this.rendrer.createElement('div') as HTMLElement;\r\n progressDiv.classList.add('ax-upload-progress-panel');\r\n const progressLabel = this.rendrer.createElement('small') as HTMLElement;\r\n progressLabel.innerText = file.name;\r\n this.fileName = file.name;\r\n this.rendrer.appendChild(this.progressRef, progressDiv);\r\n const com = this.injectionService.appendComponent(AXProgressBarComponent, { progress: 0 }, progressDiv).instance as AXProgressBarComponent;\r\n this.rendrer.appendChild(progressDiv, progressLabel);\r\n\r\n const reader = new FileReader();\r\n reader.addEventListener('load', (e) => {\r\n this.onLoad.emit({\r\n file,\r\n data: (e as any).target.result\r\n });\r\n //\r\n // Fake Upload\r\n let pv = 0;\r\n let uploaded = 0;\r\n const intv = setInterval(() => {\r\n uploaded += 1024 * 1000;\r\n if (uploaded > e.total) {\r\n uploaded = e.total;\r\n }\r\n pv = Math.ceil((uploaded / e.total) * 100);\r\n com.progress = pv;\r\n this.onProgress.emit({\r\n file,\r\n total: e.total,\r\n uploaded,\r\n value: pv\r\n });\r\n //\r\n if (com.progress >= 100) {\r\n clearInterval(intv);\r\n setTimeout(() => {\r\n this.rendrer.removeChild(this.progressRef, progressDiv);\r\n }, 1000);\r\n }\r\n }, 100);\r\n });\r\n reader.readAsDataURL(file);\r\n this.files.push(file);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXUploadFileComponent } from './upload-file.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXProgressBarModule } from '../progress-bar/progress-bar.module';\r\nimport { AXLabelModule } from '../label/label.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\n\r\n@NgModule({\r\n declarations: [AXUploadFileComponent],\r\n imports: [CommonModule, AXButtonModule, AXTextBoxModule, AXProgressBarModule, AXLabelModule, AXFormGroupModule],\r\n exports: [AXUploadFileComponent],\r\n providers: []\r\n})\r\nexport class AXUploadFileModule {}\r\n","import { Component, Input, Output, EventEmitter, ContentChild, TemplateRef, ContentChildren, QueryList } from \"@angular/core\";\r\nimport { AXPanelBoxComponent } from \"../panel-box/panel-box.component\";\r\nimport { AXBaseComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: \"ax-accordion\",\r\n template: \"<ng-content></ng-content>\",\r\n})\r\nexport class AXAccordionComponent extends AXBaseComponent {\r\n\r\n @ContentChildren(AXPanelBoxComponent)\r\n panels: QueryList<AXPanelBoxComponent>;\r\n\r\n @Input()\r\n multiple: boolean = false;\r\n\r\n constructor() {\r\n super()\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.panels.forEach(p => {\r\n if (this.multiple == false)\r\n p.collapsed = true;\r\n p.collapsedChange.subscribe((v: boolean) => {\r\n this.handleCollapsedChanged(p, v);\r\n });\r\n });\r\n if (this.multiple == false)\r\n this.panels.first.collapsed = false;\r\n }\r\n\r\n private handleCollapsedChanged(panel: AXPanelBoxComponent, value: boolean) {\r\n if (value == false && this.multiple == false) {\r\n this.panels.forEach(p => {\r\n if (p != panel)\r\n p.collapsed = true;\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AXAccordionComponent } from \"./accordion.component\";\r\nimport { AXPanelBoxModule } from \"../panel-box/panel-box.module\";\r\n@NgModule({\r\n declarations: [AXAccordionComponent],\r\n imports: [CommonModule, AXPanelBoxModule],\r\n exports: [AXAccordionComponent],\r\n providers: []\r\n})\r\nexport class AXAccordionModule { }\r\n","import { Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { AXValidatableComponent } from '../base/element.class';\r\n\r\nexport type AXDataType = 'string' | 'number' | 'date' | 'boolean' | 'object';\r\nexport type AXControlType = 'textbox' | 'numberbox' | 'datePicker' | 'switch' | 'custom';\r\n\r\n\r\n\r\nexport interface AXPropertyDef {\r\n name: string;\r\n title: string;\r\n hint?: string;\r\n defaultValue?: any;\r\n editorClass: any;\r\n editorOptions?: any;\r\n visible?: boolean | (() => boolean);\r\n order?: number;\r\n}\r\n\r\nexport interface AXPropertyEditorDef {\r\n title: string;\r\n hint?: string;\r\n defaultValue?: any;\r\n editorClass: any;\r\n editorOptions?: any;\r\n visible?: boolean | (() => boolean);\r\n order?: number;\r\n}\r\n\r\n\r\n\r\n\r\nexport interface AXPropertyConfig {\r\n property: AXPropertyDef;\r\n value: any;\r\n}\r\n\r\n\r\nexport interface AXProperyEditorValueChangeEvent {\r\n property: AXPropertyDef;\r\n value: any;\r\n}\r\n\r\n\r\n\r\nexport abstract class AXProperyEditorComponent<T>{\r\n\r\n\r\n readonly: boolean = false;\r\n initiated: boolean = false;\r\n\r\n\r\n validatableComponentRegistered: Subject<AXValidatableComponent> = new Subject<AXValidatableComponent>();\r\n\r\n\r\n registerForValidationForm(component?: AXValidatableComponent) {\r\n this.validatableComponentRegistered.next(component);\r\n }\r\n\r\n\r\n @Output()\r\n valueChange: EventEmitter<T> = new EventEmitter<T>();\r\n\r\n private _value: T;\r\n @Input()\r\n public get value(): T {\r\n return this._value;\r\n }\r\n\r\n public set value(v: T) {\r\n if (v !== this._value) {\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n }\r\n\r\n uid: string;\r\n\r\n handleValueChange(v: T) {\r\n this.value = v;\r\n }\r\n\r\n initiat(): void {\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n\r\nexport class AXPropertyDecorator {\r\n cls: any;\r\n property: string;\r\n options: any;\r\n\r\n constructor(\r\n cls: any,\r\n property: string,\r\n options: any) {\r\n this.cls = cls;\r\n this.property = property;\r\n this.options = options;\r\n }\r\n}\r\n\r\n\r\n// @dynamic\r\nexport class AXPropertyDecorators {\r\n private static REGISTRY = new Array<AXPropertyDecorator>();\r\n\r\n static register(cls: string, property: string, options?: any) {\r\n const item = AXPropertyDecorators.REGISTRY.find(c => c.cls === cls && c.property === property);\r\n if (item) {\r\n item.options = options;\r\n }\r\n else {\r\n AXPropertyDecorators.REGISTRY.push(new AXPropertyDecorator(cls, property, options));\r\n }\r\n }\r\n\r\n\r\n\r\n static has(cls: string, property: string): boolean {\r\n return AXPropertyDecorators.REGISTRY.some(c => c.cls === cls && c.property === property);\r\n }\r\n\r\n static get(cls: string, property: string): AXPropertyDecorator {\r\n return AXPropertyDecorators.REGISTRY.find(c => c.cls === cls && c.property === property);\r\n }\r\n\r\n static isValid(property: string): boolean {\r\n if (property) {\r\n return AXPropertyDecorators.REGISTRY.some(c => c.property === property);\r\n }\r\n return false;\r\n }\r\n\r\n static getProperties(target: any): AXPropertyDecorator[] {\r\n const list: AXPropertyDecorator[] = [];\r\n const p: any[] = Array<any>();\r\n let superClass = Object.getPrototypeOf(target);\r\n while (superClass.constructor.name !== 'Object') {\r\n p.push(superClass.constructor);\r\n superClass = Object.getPrototypeOf(superClass);\r\n }\r\n list.push(...AXPropertyDecorators.REGISTRY.filter(c => p.includes(c.cls.constructor)));\r\n return list;\r\n }\r\n}\r\n\r\n\r\n\r\nexport function propertyEditor(options: AXPropertyEditorDef) {\r\n return (target: any, key: string) => {\r\n (options as any).name = key;\r\n AXPropertyDecorators.register(target, key, options);\r\n };\r\n}\r\n\r\n","import { Directive, ViewContainerRef, ComponentFactoryResolver, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXProperyEditorComponent, AXProperyEditorValueChangeEvent, AXPropertyConfig } from './property-editor.class';\r\nimport { AXObjectUtil, AXRenderService, getPropByPath } from '@acorex/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AXValidationFormComponent } from '../validation/validation-form.component';\r\n\r\n@Directive({\r\n selector: '[ax-property-editor-renderer]',\r\n})\r\nexport class AXPropertyEditorRendererDirective {\r\n\r\n private instance: AXProperyEditorComponent<any>;\r\n\r\n\r\n @Input()\r\n property: AXPropertyConfig;\r\n\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n validationForm: AXValidationFormComponent;\r\n\r\n\r\n\r\n private _context: any;\r\n @Input()\r\n public get context(): any {\r\n return this._context;\r\n }\r\n public set context(v: any) {\r\n this._context = v;\r\n if (v && this.instance) {\r\n this.assignProps();\r\n }\r\n }\r\n\r\n @Input()\r\n host: any;\r\n\r\n\r\n @Output()\r\n onValueChange: EventEmitter<AXProperyEditorValueChangeEvent> = new EventEmitter<AXProperyEditorValueChangeEvent>();\r\n\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private target: ViewContainerRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private renderService: AXRenderService\r\n ) {\r\n\r\n }\r\n\r\n\r\n clear() {\r\n this.instance.value = null;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createComponent();\r\n }\r\n\r\n\r\n\r\n createComponent() {\r\n this.renderService.findLoadedComponentByRoute(this.property.property.editorClass).then(c => {\r\n if (c) {\r\n const factory = this.componentFactoryResolver.resolveComponentFactory(c.component);\r\n const cmpRef = this.target.createComponent(factory);\r\n this.instance = cmpRef.instance as AXProperyEditorComponent<any>;\r\n this.subscription = this.instance.valueChange.subscribe(value => {\r\n if (this.instance.initiated === true) {\r\n this.property.value = value;\r\n this.onValueChange.emit(this.property);\r\n }\r\n });\r\n // \r\n if (this.validationForm) {\r\n this.instance.validatableComponentRegistered.subscribe(v => {\r\n this.validationForm.addWidget(v);\r\n });\r\n }\r\n //\r\n //setTimeout(() => {\r\n this.instance.readonly = this.readonly;\r\n this.assignProps();\r\n this.instance.value = this.property.value;\r\n this.instance.initiat();\r\n cmpRef.changeDetectorRef.markForCheck();\r\n //});\r\n }\r\n });\r\n }\r\n\r\n\r\n private assignProps() {\r\n const options = this.property.property.editorOptions;\r\n if (!options) {\r\n return;\r\n }\r\n for (const p in options) {\r\n if (options.hasOwnProperty(p)) {\r\n const opt = options[p];\r\n if (typeof opt === 'string' && opt.startsWith('$$')) {\r\n const key = opt.substring(2);\r\n const val = getPropByPath(this.context, key);\r\n if (val) {\r\n this.instance[p] = typeof val === 'function' ? val({ data: this.context, host: this.host }, this.property) : val;\r\n }\r\n }\r\n else {\r\n const res = typeof opt === 'function' ? opt({ data: this.context, host: this.host }, this.property) : opt;\r\n if (res instanceof Promise) {\r\n res.then(v => {\r\n this.instance[p] = v;\r\n });\r\n }\r\n else {\r\n this.instance[p] = res;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}","import { Component, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXTextBoxComponent } from '../../../textbox/textbox.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n templateUrl: './text.editor.html',\r\n})\r\nexport class AXTextPropertyEditorComponent extends AXProperyEditorComponent<string> {\r\n\r\n\r\n @ViewChild(AXTextBoxComponent)\r\n private textBox: AXTextBoxComponent;\r\n\r\n\r\n validation: AXValidation;\r\n clearButton: boolean = false;\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.textBox);\r\n this.initiated = true;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTextPropertyEditorComponent } from './text.editor';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTextPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXTextBoxModule, AXValidationModule],\r\n exports: [AXTextPropertyEditorComponent],\r\n entryComponents: [AXTextPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXTextPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXNumberBoxComponent } from '../../../number-box/number-box.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-number-box (onValueChanged)=\"handleValueChange($event)\"\r\n [value]=\"value\"\r\n [showSeparator]=\"showSeparator\"\r\n [decimalNumber]=\"decimalNumber\"\r\n [min]=\"minValue\"\r\n [max]=\"maxValue\"\r\n [allowClear]=\"clearButton\"\r\n >\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-number-box>\r\n `,\r\n})\r\nexport class AXNumberBoxPropertyEditorComponent extends AXProperyEditorComponent<number> {\r\n\r\n\r\n showSeparator: boolean = true;\r\n decimalNumber: number = 2;\r\n minValue?: number = null;\r\n maxValue?: number = null;\r\n validation: AXValidation;\r\n clearButton: boolean = false;\r\n\r\n @ViewChild(AXNumberBoxComponent)\r\n private textBox: AXNumberBoxComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n this.registerForValidationForm(this.textBox);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXNumberBoxPropertyEditorComponent } from './number.editor';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXNumberBoxPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXNumberBoxModule,AXValidationModule],\r\n exports: [AXNumberBoxPropertyEditorComponent],\r\n entryComponents: [AXNumberBoxPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXNumberBoxPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXSelectBox2Component, AXSelectBoxValueChangedEvent } from '../../../selectbox/selectbox2.component';\r\n\r\n@Component({\r\n templateUrl: './selectbox.editor.html',\r\n})\r\nexport class AXSelectBoxPropertyEditorComponent extends AXProperyEditorComponent<any> {\r\n\r\n\r\n valueField: string = 'id';\r\n textField: string = 'text';\r\n selectionMode: string = 'single';\r\n selectionDataMode: string = 'value';\r\n allowSearch: boolean = true;\r\n allowNull: boolean = false;\r\n items: any = [];\r\n remoteOperation = false;\r\n\r\n validation: AXValidation;\r\n\r\n @ViewChild(AXSelectBox2Component, { static: true })\r\n selectBox: AXSelectBox2Component;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: AXSelectBoxValueChangedEvent) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.selectBox.refresh();\r\n this.registerForValidationForm(this.selectBox);\r\n }\r\n\r\n provideData = (e): Promise<any> => {\r\n return new Promise((resolve) => {\r\n const func = () => {\r\n if (Array.isArray(this.items)) {\r\n resolve(this.items);\r\n }\r\n else if (typeof this.items === 'function') {\r\n resolve(this.items(e));\r\n }\r\n else {\r\n resolve([]);\r\n }\r\n };\r\n const intVal = setInterval(() => {\r\n if (this.initiated) {\r\n func();\r\n clearInterval(intVal);\r\n }\r\n },50);\r\n });\r\n }\r\n\r\n initiat() {\r\n this.initiated = true;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXSelectBoxPropertyEditorComponent } from './selectbox.editor';\r\nimport { AXSelectBoxModule } from '../../../selectbox/selectbox.module';\r\nimport { AXDataSourceModule } from '../../../data-source/datasource.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXSelectBoxPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXSelectBoxModule, AXDataSourceModule, AXValidationModule],\r\n exports: [AXSelectBoxPropertyEditorComponent],\r\n entryComponents: [AXSelectBoxPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXSelectBoxPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, ChangeDetectorRef, ViewChild, TemplateRef, ChangeDetectionStrategy, ElementRef } from '@angular/core';\r\nimport { AXTranslator } from '@acorex/core';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXPopupService } from '../../../popup/popup.service';\r\nimport { AXValidationFormComponent } from '../../../validation/validation-form.component';\r\n\r\n\r\nexport interface AXRangeModel {\r\n title: string;\r\n color?: string;\r\n minValue: number;\r\n maxValue: number;\r\n}\r\n\r\n\r\n\r\n@Component({\r\n templateUrl: './range.editor.html',\r\n styleUrls: ['./range.editor.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXRangePropertyEditorComponent extends AXProperyEditorComponent<AXRangeModel[]> {\r\n\r\n\r\n private form: AXValidationFormComponent;\r\n\r\n @ViewChild('tplEdit')\r\n tplEdit: TemplateRef<any>;\r\n\r\n ranges: AXRangeModel[] = [];\r\n\r\n editRow: AXRangeModel;\r\n\r\n showSeparator: boolean = true;\r\n decimalNumber: number = 2;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, private popupService: AXPopupService) {\r\n super(cdr);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.ranges = this.value ? JSON.parse(JSON.stringify(this.value)) : [];\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n }\r\n\r\n // getRanges() {\r\n // return this.ranges.sort((a, b) => a.minValue - b.minValue);\r\n // }\r\n\r\n onFormInit(e) {\r\n this.form = e.component;\r\n }\r\n\r\n\r\n handleEditClick(item: AXRangeModel) {\r\n this.editRow = Object.assign({}, item);\r\n const popup = this.popupService.open(this.tplEdit, {\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n Object.assign(item, this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n title: AXTranslator.get('common.edit')\r\n });\r\n }\r\n\r\n handleAddClick() {\r\n const min = this.ranges?.length ? Math.max(...this.ranges.map(c => c.maxValue)) : 0;\r\n this.editRow = {\r\n title: '',\r\n minValue: min,\r\n maxValue: min + 1,\r\n color: null\r\n };\r\n const popup = this.popupService.open(this.tplEdit, {\r\n title: AXTranslator.get('common.add-item'),\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n this.ranges.push(this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n });\r\n this.cdr.detectChanges();\r\n }\r\n\r\n handleRemoveClick(item: AXRangeModel) {\r\n this.ranges = this.ranges.filter(c => c.minValue !== item.minValue);\r\n super.handleValueChange(this.ranges);\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXValidatableComponent } from '../../base/element.class';\r\nimport { AXColorUtil, AXColor } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-color-box',\r\n templateUrl: './color-box.component.html',\r\n styleUrls: ['./color-box.component.scss'],\r\n providers: [\r\n { provide: AXValidatableComponent, useExisting: AXColorBoxComponent },\r\n ]\r\n})\r\nexport class AXColorBoxComponent extends AXValidatableComponent {\r\n\r\n inputFormat: 'hex' | 'rgb' = 'hex';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n @Output()\r\n onColorSelect: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n private _value: string;\r\n\r\n @Input()\r\n public get value(): string {\r\n return this._value;\r\n }\r\n public set value(v: string) {\r\n if (v != this._value) {\r\n this._value = v;\r\n if (v) {\r\n const selected = this.colors.find(c => c.code === v);\r\n if (selected) {\r\n this.selectColor(selected);\r\n }\r\n else {\r\n this.colors.forEach((i) => {\r\n i.active = false\r\n });\r\n }\r\n const rgb = AXColorUtil.hex2Rgb(v);\r\n\r\n if (rgb) {\r\n this.rColor = rgb.r;\r\n this.gColor = rgb.g;\r\n this.bColor = rgb.b;\r\n }\r\n }\r\n else {\r\n this.rColor = null;\r\n this.gColor = null;\r\n this.bColor = null;\r\n }\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n\r\n rColor: number = 0;\r\n gColor: number = 0;\r\n bColor: number = 0;\r\n\r\n\r\n colors: AXColor[] = [\r\n // Pink ***************************\r\n {\r\n code: '#FFC0CB',\r\n },\r\n {\r\n code: '#FF69B4',\r\n },\r\n {\r\n code: '#DB7093',\r\n },\r\n {\r\n code: '#C71585',\r\n },\r\n // Purple ***************************\r\n {\r\n code: '#E6E6FA',\r\n },\r\n {\r\n code: '#D8BFD8',\r\n },\r\n {\r\n code: '#DDA0DD',\r\n },\r\n {\r\n code: '#DA70D6',\r\n },\r\n {\r\n code: '#FF00FF',\r\n },\r\n {\r\n code: '#BA55D3',\r\n },\r\n {\r\n code: '#9932CC',\r\n },\r\n {\r\n code: '#8A2BE2',\r\n\r\n },\r\n {\r\n code: '#8B008B',\r\n },\r\n {\r\n code: '#9370DB',\r\n },\r\n {\r\n code: '#7B68EE',\r\n },\r\n {\r\n code: '#6A5ACD',\r\n },\r\n {\r\n code: '#483D8B',\r\n },\r\n {\r\n code: '#663399',\r\n },\r\n {\r\n code: '#4B0082',\r\n },\r\n // Red ***************************\r\n {\r\n code: '#FFA07A',\r\n },\r\n {\r\n code: '#FA8072',\r\n },\r\n {\r\n code: '#F08080',\r\n },\r\n {\r\n code: '#CD5C5C',\r\n },\r\n {\r\n code: '#DC143C',\r\n },\r\n {\r\n code: '#FF0000',\r\n },\r\n {\r\n code: '#B22222',\r\n },\r\n {\r\n code: '#8B0000',\r\n },\r\n // Orange ***************************\r\n {\r\n code: '#FFA500',\r\n },\r\n {\r\n code: '#FF8C00',\r\n },\r\n {\r\n code: '#FF7F50',\r\n },\r\n {\r\n code: '#FF6347',\r\n },\r\n {\r\n code: '#FF4500',\r\n },\r\n {\r\n code: '#FFD700',\r\n },\r\n // Yellow ***************************\r\n {\r\n code: '#FFFF00',\r\n },\r\n {\r\n code: '#FFFFE0',\r\n },\r\n {\r\n code: '#FFFACD',\r\n },\r\n {\r\n code: '#FFEFD5',\r\n },\r\n {\r\n code: '#FFE4B5',\r\n },\r\n {\r\n code: '#FFDAB9',\r\n },\r\n {\r\n code: '#EEE8AA',\r\n },\r\n {\r\n code: '#F0E68C',\r\n },\r\n {\r\n code: '#BDB76B',\r\n },\r\n // Brown ***************************\r\n // {\r\n // code: '#FFF8DC'\r\n // },\r\n // {\r\n // code: '#FFEBCD'\r\n // },\r\n // {\r\n // code: '#FFE4C4'\r\n // },\r\n {\r\n code: '#FFDEAD'\r\n },\r\n {\r\n code: '#DEB887'\r\n },\r\n {\r\n code: '#D2B48C'\r\n },\r\n {\r\n code: '#DAA520'\r\n },\r\n {\r\n code: '#B8860B'\r\n },\r\n {\r\n code: '#CD853F'\r\n },\r\n {\r\n code: '#D2691E'\r\n },\r\n {\r\n code: '#8B4513'\r\n },\r\n {\r\n code: '#A0522D'\r\n },\r\n // Green ***************************\r\n {\r\n code: '#ADFF2F',\r\n },\r\n {\r\n code: '#7FFF00',\r\n },\r\n {\r\n code: '#00FF00',\r\n },\r\n {\r\n code: '#32CD32',\r\n },\r\n {\r\n code: '#98FB98',\r\n },\r\n {\r\n code: '#90EE90',\r\n },\r\n {\r\n code: '#00FA9A',\r\n },\r\n {\r\n code: '#00FF7F',\r\n },\r\n {\r\n code: '#3CB371',\r\n },\r\n {\r\n code: '#2E8B57',\r\n },\r\n {\r\n code: '#228B22',\r\n },\r\n {\r\n code: '#008000',\r\n },\r\n {\r\n code: '#006400',\r\n },\r\n {\r\n code: '#9ACD32',\r\n },\r\n {\r\n code: '#6B8E23',\r\n },\r\n {\r\n code: '#556B2F',\r\n },\r\n {\r\n code: '#66CDAA',\r\n },\r\n {\r\n code: '#8FBC8F',\r\n },\r\n {\r\n code: '#20B2AA',\r\n },\r\n {\r\n code: '#008B8B',\r\n },\r\n // Cyan ***************************\r\n\r\n {\r\n code: '#E0FFFF',\r\n },\r\n {\r\n code: '#AFEEEE',\r\n },\r\n {\r\n code: '#7FFFD4',\r\n },\r\n {\r\n code: '#40E0D0',\r\n },\r\n {\r\n code: '#48D1CC',\r\n },\r\n {\r\n code: '#00CED1',\r\n },\r\n // Blue ***************************\r\n {\r\n code: '#5F9EA0'\r\n },\r\n {\r\n code: '#4682B4'\r\n },\r\n {\r\n code: '#B0C4DE'\r\n },\r\n {\r\n code: '#ADD8E6'\r\n },\r\n {\r\n code: '#B0E0E6'\r\n },\r\n {\r\n code: '#87CEFA'\r\n },\r\n {\r\n code: '#87CEEB'\r\n },\r\n {\r\n code: '#6495ED'\r\n },\r\n {\r\n code: '#00BFFF'\r\n },\r\n {\r\n code: '#00FFFF',\r\n },\r\n {\r\n code: '#1E90FF'\r\n },\r\n {\r\n code: '#4169E1'\r\n },\r\n {\r\n code: '#0000FF'\r\n },\r\n {\r\n code: '#0000CD'\r\n },\r\n {\r\n code: '#00008B'\r\n },\r\n {\r\n code: '#191970'\r\n },\r\n // Gray\r\n {\r\n code: '#FFFFFF'\r\n },\r\n {\r\n code: '#DCDCDC'\r\n },\r\n {\r\n code: '#808080'\r\n },\r\n {\r\n code: '#708090'\r\n },\r\n {\r\n code: '#000000'\r\n },\r\n ];\r\n\r\n\r\n // validate(): Promise<IValidationRuleResult> {\r\n\r\n // return new Promise<IValidationRuleResult>(resolve => {\r\n // if (!this.validator) {\r\n // resolve({ result: true });\r\n // } else {\r\n // // this.validator.validate(this.model).then(r => {\r\n // // r.target = this;\r\n // // if (r.result) {\r\n // // this.errorText = null;\r\n // // } else {\r\n // // this.errorText = r.message;\r\n // // }\r\n // // resolve(r);\r\n // // });\r\n\r\n // resolve()\r\n // }\r\n // });\r\n // }\r\n\r\n focus() {\r\n }\r\n\r\n clear(): void {\r\n this.value = null;\r\n }\r\n\r\n onColorClick(item: AXColor) {\r\n this.value = item ? item.code : null;\r\n this.selectColor(item);\r\n this.onColorSelect.emit(this.value);\r\n }\r\n\r\n handleColorChange() {\r\n this.value = AXColorUtil.rgb2Hex(this.rColor, this.gColor, this.bColor);\r\n\r\n }\r\n\r\n private selectColor(item: AXColor) {\r\n this.colors.forEach((i) => {\r\n i.active = false;\r\n });\r\n item.active = true\r\n }\r\n\r\n handleKeyEvent(e: KeyboardEvent) {\r\n if (e.code == 'Enter' || e.code == 'NumpadEnter') {\r\n this.onColorSelect.emit(this.value);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, Input, Output, EventEmitter, ContentChild, ElementRef } from '@angular/core';\r\nimport { AXValidatableComponent, AXBaseSizableComponent, AXBaseInputComponent, AXElementSize } from '../base/element.class';\r\nimport { AXColorBoxComponent } from './color-box/color-box.component';\r\nimport { AXColorUtil, AXConfig } from '@acorex/core';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXValidation } from '../validation/validation.component';\r\n\r\n\r\n@Component({\r\n selector: 'ax-color-picker',\r\n templateUrl: './color-picker.component.html',\r\n providers: [\r\n { provide: AXValidatableComponent, useExisting: AXColorPickerComponent },\r\n ],\r\n host: { style: 'display: contents;' }\r\n})\r\nexport class AXColorPickerComponent extends AXColorBoxComponent implements AXBaseSizableComponent, AXBaseInputComponent {\r\n\r\n @ViewChild('dropdown', { static: true })\r\n dropdown: AXDropdownComponent;\r\n @Input() placeholder: string = '';\r\n @Input() showClear: boolean = false;\r\n\r\n @Input() label: string;\r\n\r\n _text: string = '';\r\n\r\n constructor(private ref: ElementRef) {\r\n super();\r\n }\r\n\r\n @Input()\r\n readonly: boolean;\r\n @Input()\r\n disabled: boolean;\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n rtl: boolean = AXConfig.get('layout.rtl');\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n\r\n ngAfterContentInit() {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n }\r\n\r\n focus(): void {\r\n this.dropdown.focus();\r\n }\r\n\r\n // handleValueChange(c: string) {\r\n\r\n // }\r\n\r\n findTextColor(color: string) {\r\n if (!color) {\r\n return '#000';\r\n }\r\n return !(AXColorUtil.contrastToWhite(color) > 2.0) ? '#000' : '#fff';\r\n }\r\n\r\n handleItemClick(e) {\r\n this.dropdown.close();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXColorPickerComponent } from './color-picker.component';\r\nimport { AXColorBoxComponent } from './color-box/color-box.component';\r\nimport { AXValidationModule } from '../validation/validation.module';\r\nimport { AXDropdownModule } from '../dropdown/dropdown.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [AXColorPickerComponent, AXColorBoxComponent],\r\n imports: [CommonModule, FormsModule, AXDropdownModule, AXValidationModule, AXTextBoxModule],\r\n exports: [AXColorPickerComponent, AXColorBoxComponent],\r\n providers: []\r\n})\r\nexport class AXColorPickerModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXRangePropertyEditorComponent } from './range.editor';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXLabelModule } from '../../../label/label.module';\r\nimport { AXPageModule } from '../../../page/page.module';\r\nimport { AXButtonModule } from '../../../button/button.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXRangePropertyEditorComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXTranslatorModule,\r\n AXTextBoxModule,\r\n AXNumberBoxModule,\r\n AXColorPickerModule,\r\n AXLabelModule,\r\n AXPageModule,\r\n AXValidationModule,\r\n AXButtonModule\r\n ],\r\n exports: [AXRangePropertyEditorComponent],\r\n entryComponents: [AXRangePropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXRangePropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXColorPickerComponent } from '../../../color-picker/color-picker.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-color-picker [(value)]=\"value\">\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-color-picker>\r\n `,\r\n})\r\nexport class AXColorPropertyEditorComponent extends AXProperyEditorComponent<string> {\r\n\r\n validation: AXValidation;\r\n\r\n @ViewChild(AXColorPickerComponent)\r\n private textBox: AXColorPickerComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.textBox);\r\n this.initiated = true;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXColorPropertyEditorComponent } from './color.editor';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXColorPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXColorPickerModule, AXValidationModule],\r\n exports: [AXColorPropertyEditorComponent],\r\n entryComponents: [AXColorPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXColorPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ViewChild, TemplateRef, ChangeDetectorRef } from '@angular/core';\r\nimport { AXTranslator } from '@acorex/core';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXPopupService } from '../../../popup/popup.service';\r\nimport { AXDataSourceReadParams } from '../../../data-source/read-param';\r\n\r\n\r\nexport interface AXTableColumnModel {\r\n id: number;\r\n index: number;\r\n fieldName: string;\r\n caption?: string;\r\n fieldType?: string;\r\n displayType?: string;\r\n fillByUser?: boolean;\r\n rowHeader?: boolean;\r\n}\r\n\r\n@Component({\r\n templateUrl: './column.editor.html',\r\n styleUrls: ['./column.editor.scss']\r\n})\r\nexport class ColumnPropertyEditorComponent extends AXProperyEditorComponent<AXTableColumnModel[]> implements OnInit {\r\n @ViewChild('tplEdit')\r\n tplEdit: TemplateRef<any>;\r\n\r\n columns: AXTableColumnModel[] = [];\r\n\r\n index: number = 2;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, private popupService: AXPopupService) {\r\n super(cdr);\r\n }\r\n\r\n columnTypeData: any[] = [\r\n { id: 1, title: 'String' },\r\n { id: 2, title: 'Number' },\r\n { id: 3, title: 'Boolean' },\r\n { id: 4, title: 'Data' },\r\n { id: 5, title: 'Time' }\r\n ];\r\n\r\n ngOnInit(): void {\r\n this.columns = this.value ? JSON.parse(JSON.stringify(this.value)) : [];\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n moveItemInArray(this.columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n handleAddColumn() {\r\n this.columns.push({\r\n id: Math.floor(1000*Math.random()*9000),\r\n index: this.index,\r\n fieldName: 'ستون' + this.index,\r\n caption: 'ستون' + this.index,\r\n fieldType: '',\r\n displayType: '',\r\n fillByUser: false,\r\n rowHeader: false\r\n });\r\n this.index++;\r\n }\r\n\r\n handleAddClick() {\r\n if (this.columns.length === 0) {\r\n this.columns.push({\r\n id: Math.floor(1000*Math.random()*9000),\r\n index: 1,\r\n fieldName: 'ستون 1',\r\n caption: 'ستون 1',\r\n fieldType: '',\r\n displayType: '',\r\n fillByUser: false,\r\n rowHeader: false\r\n });\r\n }\r\n const popup = this.popupService.open(this.tplEdit, {\r\n title: 'ستون',\r\n size: 'lg',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n super.handleValueChange(this.columns);\r\n this.cdr.detectChanges();\r\n this.index++;\r\n popup.close();\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n this.cdr.detectChanges();\r\n popup.close();\r\n }\r\n }\r\n ]\r\n });\r\n }\r\n\r\n handleRemoveClick(item: AXTableColumnModel) {\r\n this.columns = this.columns.filter((c) => c.id !== item.id);\r\n super.handleValueChange(this.columns);\r\n }\r\n\r\n handleDataReceived = (e: AXDataSourceReadParams) => {\r\n return Promise.resolve(this.columnTypeData);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXLabelModule } from '../../../label/label.module';\r\nimport { AXPageModule } from '../../../page/page.module';\r\nimport { AXButtonModule } from '../../../button/button.module';\r\nimport { AXCheckBoxModule } from './../../../checkbox/checkbox.module';\r\nimport { ColumnPropertyEditorComponent } from './column.editor';\r\nimport { AXSelectBoxModule } from '../../../selectbox/selectbox.module';\r\nimport { AXDataSourceModule } from '../../../data-source/datasource.module';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [ColumnPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXTextBoxModule, AXNumberBoxModule, AXColorPickerModule, AXLabelModule, AXPageModule, AXButtonModule, AXCheckBoxModule, AXSelectBoxModule, AXDataSourceModule, DragDropModule],\r\n exports: [ColumnPropertyEditorComponent],\r\n entryComponents: [ColumnPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXColumnPropertyEditorModule {\r\n constructor() {\r\n }\r\n}\r\n","import { Component, ChangeDetectorRef, ViewChild, TemplateRef, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { AXObjectUtil, AXTranslator } from '@acorex/core';\r\nimport { AXDataType, AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXPopupService } from '../../../popup/popup.service';\r\nimport { AXValidationFormComponent } from '../../../validation/validation-form.component';\r\n\r\n\r\n\r\n\r\nexport interface AXConditionalColorModel {\r\n color: string;\r\n operator: string;\r\n value: any;\r\n display?: string;\r\n}\r\n\r\n\r\n\r\n@Component({\r\n templateUrl: './conditional-color.editor.html',\r\n styleUrls: ['./conditional-color.editor.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXConditionalColorPropertyEditorComponent extends AXProperyEditorComponent<AXConditionalColorModel[]> {\r\n\r\n\r\n form: AXValidationFormComponent;\r\n\r\n @ViewChild('tplEdit')\r\n tplEdit: TemplateRef<any>;\r\n\r\n @Input()\r\n dataType: AXDataType = 'number';\r\n\r\n // @Input()\r\n // mode: string[] = ['color', 'title'];\r\n\r\n operators: { value: string, text: string, dataTypes?: AXDataType[] }[] = [];\r\n\r\n ranges: AXConditionalColorModel[] = [];\r\n\r\n editRow: AXConditionalColorModel;\r\n\r\n showSeparator: boolean = true;\r\n decimalNumber: number = 2;\r\n\r\n booleanItems = [{ value: true, text: AXTranslator.get('queryBuilder.true') }, { value: false, text: AXTranslator.get('queryBuilder.false') }];\r\n\r\n constructor(protected cdr: ChangeDetectorRef, private popupService: AXPopupService) {\r\n super(cdr);\r\n }\r\n\r\n\r\n onFormInit(e) {\r\n this.form = e.component;\r\n }\r\n\r\n ngOnInit() {\r\n this.ranges = this.value ? AXObjectUtil.deepCopy(this.value) : [];\r\n this.updateOperations();\r\n }\r\n\r\n\r\n\r\n updateOperations() {\r\n this.operators = [\r\n {\r\n value: '<',\r\n text: AXTranslator.get('queryBuilder.lt'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '<=',\r\n text: AXTranslator.get('queryBuilder.lte'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '>',\r\n text: AXTranslator.get('queryBuilder.gt'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '>=',\r\n text: AXTranslator.get('queryBuilder.gte'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '==',\r\n text: AXTranslator.get('queryBuilder.equal'),\r\n dataTypes: ['string', 'boolean', 'number', 'date']\r\n },\r\n {\r\n value: '<>',\r\n text: AXTranslator.get('queryBuilder.not-equal'),\r\n dataTypes: ['string', 'boolean', 'number', 'date']\r\n }\r\n ].filter(c => c.dataTypes == null || c.dataTypes.includes(this.dataType)) as any;\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n handleEditClick(item: AXConditionalColorModel) {\r\n this.updateOperations();\r\n this.editRow = Object.assign({}, item);\r\n const popup = this.popupService.open(this.tplEdit, {\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n Object.assign(item, this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n title: AXTranslator.get('common.edit')\r\n });\r\n }\r\n\r\n handleAddClick() {\r\n this.updateOperations();\r\n this.editRow = {\r\n value: this.getDefaultValue(),\r\n color: null,\r\n operator: '=='\r\n };\r\n const popup = this.popupService.open(this.tplEdit, {\r\n title: AXTranslator.get('common.add-item'),\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n this.ranges.push(this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n });\r\n }\r\n getDefaultValue(): any {\r\n switch (this.dataType) {\r\n case 'boolean':\r\n return true;\r\n case 'number':\r\n return 0;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n handleRemoveClick(item: AXConditionalColorModel) {\r\n this.ranges = this.ranges.filter(c => !(c.value === item.value && c.operator === item.operator));\r\n super.handleValueChange(this.ranges);\r\n }\r\n\r\n\r\n getTitle(opr: string) {\r\n const oprItem = this.operators.find(c => c.value === opr);\r\n return oprItem ? AXTranslator.get(oprItem.text) : '';\r\n }\r\n\r\n getIcon(opr: string) {\r\n switch (opr) {\r\n case '==':\r\n return 'fa-equals';\r\n case '<>':\r\n return 'fa-not-equal';\r\n case '<':\r\n return 'fa-less-than';\r\n case '<=':\r\n return 'fa-less-than-equal';\r\n case '>':\r\n return 'fa-greater-than';\r\n case '>=':\r\n return 'fa-greater-than-equal';\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXLabelModule } from '../../../label/label.module';\r\nimport { AXPageModule } from '../../../page/page.module';\r\nimport { AXButtonModule } from '../../../button/button.module';\r\nimport { AXTranslator, AXTranslatorModule } from '@acorex/core';\r\nimport { AXConditionalColorPropertyEditorComponent } from './conditional-color.editor';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXSelectBoxModule } from '../../../selectbox/selectbox.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXConditionalColorPropertyEditorComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXTranslatorModule,\r\n AXTextBoxModule,\r\n AXNumberBoxModule,\r\n AXColorPickerModule,\r\n AXLabelModule,\r\n AXPageModule,\r\n AXButtonModule,\r\n AXSelectBoxModule,\r\n AXValidationModule,\r\n ],\r\n exports: [AXConditionalColorPropertyEditorComponent],\r\n entryComponents: [AXConditionalColorPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXConditionalColorPropertyEditorModule {\r\n constructor() {\r\n AXTranslator.load('en', {\r\n 'conditional-color-property-editor': {\r\n 'replaced-color': 'Replaced Color',\r\n 'replaced-title': 'Replaced Title',\r\n }\r\n });\r\n //\r\n AXTranslator.load('fa', {\r\n 'conditional-color-property-editor': {\r\n 'replaced-color': 'رنگ جایگزین',\r\n 'replaced-title': 'متن جایگزین',\r\n }\r\n });\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-switch (onValueChanged)=\"handleValueChange($event)\" [value]=\"value\"></ax-switch>\r\n `,\r\n})\r\nexport class AXSwitchPropertyEditorComponent extends AXProperyEditorComponent<boolean> {\r\n\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXSwitchPropertyEditorComponent } from './number.editor';\r\nimport { AXSwitchModule } from '../../../switch/switch.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXSwitchPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXNumberBoxModule, AXValidationModule, AXSwitchModule],\r\n exports: [AXSwitchPropertyEditorComponent],\r\n entryComponents: [AXSwitchPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXSwitchPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXDatePickerComponent } from '../../../date-picker/date-picker.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXCalendarType } from '@acorex/core'\r\n\r\n@Component({\r\n template: `\r\n <ax-date-picker [size]=\"size\" [dateType]=\"dateType\" [showToday]=\"showToday\" [disabled]=\"disabled\" [allowClear]=\"clearButton\" [readonly]=\"readonly\" [max]=\"max\" [min]=\"min\" [placeholder]=\"placeholder\" [showTodayButton]=\"showTodayButton\" [selectableHoliday]=\"selectableHoliday\" (onValueChanged)=\"handleValueChange($event)\"\r\n [type]=\"type\" [textAlign]=\"textAlign\" [(value)]=\"value\">\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-date-picker>\r\n `,\r\n})\r\nexport class AXDatePropertyEditorComponent extends AXProperyEditorComponent<Date> {\r\n\r\n showTodayButton: boolean = true;\r\n selectableHoliday: boolean = true;\r\n type: AXCalendarType = 'gregorian';\r\n textAlign: 'right' | 'left' | null = null;\r\n validation: AXValidation;\r\n placeholder: string = ''\r\n min: Date;\r\n max: Date;\r\n readonly: boolean;\r\n disabled: boolean;\r\n clearButton: boolean = false;\r\n showToday: boolean = false;\r\n dateType: any;\r\n size: string = 'md';\r\n\r\n @ViewChild(AXDatePickerComponent)\r\n private date: AXDatePickerComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n this.registerForValidationForm(this.date);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXDatePickerModule } from '../../../date-picker/date-picker.module';\r\nimport { AXDatePropertyEditorComponent } from './date.editor';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXDatePropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXDatePickerModule, AXValidationModule],\r\n exports: [AXDatePropertyEditorComponent],\r\n entryComponents: [AXDatePropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXDatePropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXDatePickerComponent } from '../../../date-picker/date-picker.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-time-picker [showCurentTime]=\"showCurentTime\" [timeType]=\"timeType\" [allowClear]=\"clearButton\" (onValueChanged)=\"handleValueChange($event)\">\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-time-picker>\r\n `,\r\n})\r\nexport class AXTimePropertyEditorComponent extends AXProperyEditorComponent<String> {\r\n\r\n\r\n timeType: any;\r\n validation: AXValidation;\r\n showCurentTime: boolean = false;\r\n clearButton: boolean = false;\r\n\r\n @ViewChild(AXDatePickerComponent)\r\n private time: AXDatePickerComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value?.time);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n this.registerForValidationForm(this.time);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXTimePickerModule } from '../../../time-picker/time-picker.module';\r\nimport { AXTimePropertyEditorComponent } from './time.editor';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTimePropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXTimePickerModule, AXValidationModule],\r\n exports: [AXTimePropertyEditorComponent],\r\n entryComponents: [AXTimePropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXTimePropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { AXTextPropertyEditorModule } from './editors/text-editor/text.module';\r\nimport { AXPropertyEditorRendererDirective } from './property-editor-renderer.directive';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AXTextPropertyEditorComponent } from './editors/text-editor/text.editor';\r\nimport { AXNumberBoxPropertyEditorComponent } from './editors/number-editor/number.editor';\r\nimport { AXNumberBoxPropertyEditorModule } from './editors/number-editor/number.module';\r\nimport { AXSelectBoxPropertyEditorComponent } from './editors/selectbox-editor/selectbox.editor';\r\nimport { AXSelectBoxPropertyEditorModule } from './editors/selectbox-editor/selectbox.module';\r\nimport { AXRangePropertyEditorModule } from './editors/range-editor/range.module';\r\nimport { AXRangePropertyEditorComponent } from './editors/range-editor/range.editor';\r\nimport { AXColorPropertyEditorComponent } from './editors/color-editor/color.editor';\r\nimport { AXColorPropertyEditorModule } from './editors/color-editor/color.module';\r\nimport { ColumnPropertyEditorComponent } from './editors/column-editor/column.editor';\r\nimport { AXColumnPropertyEditorModule } from './editors/column-editor/column.module';\r\nimport { AXConditionalColorPropertyEditorComponent } from './editors/conditional-color-editor/conditional-color.editor';\r\nimport { AXConditionalColorPropertyEditorModule } from './editors/conditional-color-editor/conditional-color.module';\r\nimport { AXSwitchPropertyEditorModule } from './editors/switch-editor/number.module';\r\nimport { AXSwitchPropertyEditorComponent } from './editors/switch-editor/number.editor';\r\nimport { AXDatePropertyEditorModule } from './editors/date-editor/date.module';\r\nimport { AXDatePropertyEditorComponent } from './editors/date-editor/date.editor';\r\nimport { AXTimePropertyEditorModule } from './editors/time-editor/time.module';\r\nimport { AXTimePropertyEditorComponent } from './editors/time-editor/time.editor';\r\n\r\n\r\nconst WDIGET_MODULES = [\r\n AXNumberBoxPropertyEditorModule,\r\n AXTextPropertyEditorModule,\r\n AXSelectBoxPropertyEditorModule,\r\n AXRangePropertyEditorModule,\r\n AXColorPropertyEditorModule,\r\n AXConditionalColorPropertyEditorModule,\r\n AXColumnPropertyEditorModule,\r\n AXSwitchPropertyEditorModule,\r\n AXDatePropertyEditorModule,\r\n AXTimePropertyEditorModule\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n WDIGET_MODULES,\r\n RouterModule.forChild([\r\n {\r\n component: AXTextPropertyEditorComponent,\r\n path: 'ax/editors/text'\r\n },\r\n {\r\n component: AXSelectBoxPropertyEditorComponent,\r\n path: 'ax/editors/select'\r\n },\r\n {\r\n component: AXNumberBoxPropertyEditorComponent,\r\n path: 'ax/editors/number'\r\n },\r\n {\r\n component: AXRangePropertyEditorComponent,\r\n path: 'ax/editors/range'\r\n },\r\n {\r\n component: AXConditionalColorPropertyEditorComponent,\r\n path: 'ax/editors/conditional-color'\r\n },\r\n {\r\n component: AXColorPropertyEditorComponent,\r\n path: 'ax/editors/color'\r\n },\r\n {\r\n component: AXSwitchPropertyEditorComponent,\r\n path: 'ax/editors/switch'\r\n },\r\n {\r\n component: ColumnPropertyEditorComponent,\r\n path: 'ax/editors/column'\r\n }, {\r\n component: AXDatePropertyEditorComponent,\r\n path: 'ax/editors/date'\r\n },\r\n {\r\n component: AXTimePropertyEditorComponent,\r\n path: 'ax/editors/time'\r\n },\r\n ])\r\n ],\r\n exports: [AXPropertyEditorRendererDirective],\r\n declarations: [AXPropertyEditorRendererDirective],\r\n providers: [],\r\n})\r\nexport class AXProppertyEditorModule { }\r\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../node_modules/tslib/tslib.es6.js","ng://@acorex/components/lib/validation/validation-rule.widget.ts","ng://@acorex/components/lib/validation/validation.component.ts","ng://@acorex/components/lib/base/events.class.ts","ng://@acorex/components/lib/base/element.class.ts","ng://@acorex/components/lib/popover/custom-cdk-overlay.service.ts","ng://@acorex/components/lib/popover/overlay.service.ts","ng://@acorex/components/lib/loading/loading-indicator.component.ts","ng://@acorex/components/lib/loading/loading.service.ts","ng://@acorex/components/lib/page/page.component.ts","ng://@acorex/components/lib/base/base-page.class.ts","ng://@acorex/components/lib/button/button.component.ts","ng://@acorex/components/lib/button/button.module.ts","ng://@acorex/components/lib/calendar/calendar-box/calendar-box.component.ts","ng://@acorex/components/lib/popover/popover.component.ts","ng://@acorex/components/lib/popover/popover.module.ts","ng://@acorex/components/lib/calendar/calendar-box/calendar-box.module.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler-views.property.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler.class.ts","ng://@acorex/components/lib/toolbar/toolbar-item.ts","ng://@acorex/components/lib/menu/menu.component.ts","ng://@acorex/components/lib/toolbar/menu/toolbar-menu.component.ts","ng://@acorex/components/lib/calendar/scheduler/toolbars/scheduler-toolbar-views.ts","ng://@acorex/components/lib/calendar/scheduler/views/scheduler-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/views/daytime/scheduler-daytime-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/views/month/scheduler-month-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/toolbars/scheduler-toolbar-navigator.ts","ng://@acorex/components/lib/calendar/scheduler/views/agenda/scheduler-agenda-view.component.ts","ng://@acorex/components/lib/calendar/scheduler/views/timeline/scheduler-timeline-view.component.ts","ng://@acorex/components/lib/toolbar/search/toolbar-search.component.ts","ng://@acorex/components/lib/data-source/read-param.ts","ng://@acorex/components/lib/data-source/datasource.component.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler.component.ts","ng://@acorex/components/lib/toolbar/toolbar.component.ts","ng://@acorex/components/lib/toolbar/title/toolbar-title.component.ts","ng://@acorex/components/lib/toolbar/group-button/toolbar-group-button.component.ts","ng://@acorex/components/lib/menu/menu2.component.ts","ng://@acorex/components/lib/menu/menu-item.component.ts","ng://@acorex/components/lib/tooltip/tooltip.directive.ts","ng://@acorex/components/lib/tooltip/tooltip.module.ts","ng://@acorex/components/lib/menu/menu.module.ts","ng://@acorex/components/lib/toolbar/toolbar.module.ts","ng://@acorex/components/lib/calendar/scheduler/scheduler.module.ts","ng://@acorex/components/lib/checkbox/checkbox.component.ts","ng://@acorex/components/lib/checkbox/checkbox.module.ts","ng://@acorex/components/lib/context-menu/context-menu.component.ts","ng://@acorex/components/lib/context-menu/context-menu.directive.ts","ng://@acorex/components/lib/context-menu/context-menu.module.ts","ng://@acorex/components/lib/data-filter/filter.class.ts","ng://@acorex/components/lib/selection-list/selection-list.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-date.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-number.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-selection.component.ts","ng://@acorex/components/lib/data-filter/columns/filter-column-string.component.ts","ng://@acorex/components/lib/textbox/textbox.component.ts","ng://@acorex/components/lib/toast/toast-wrapper/toast-wrapper.component.ts","ng://@acorex/components/lib/toast/toast-message/toast-message.component.ts","ng://@acorex/components/lib/toast/toast.service.ts","ng://@acorex/components/lib/data-filter/filter-panel/filter-panel.component.ts","ng://@acorex/components/lib/data-filter/toolbar/filter-toolbar.component.ts","ng://@acorex/components/lib/panel-box/panel-box.component.ts","ng://@acorex/components/lib/panel-box/panel-box.module.ts","ng://@acorex/components/lib/dropdown/dropdown.component.ts","ng://@acorex/components/lib/date-picker/date-picker.component.ts","ng://@acorex/components/lib/form-group/form-group.component.ts","ng://@acorex/components/lib/form-group/form-group.module.ts","ng://@acorex/components/lib/textbox/textbox.module.ts","ng://@acorex/components/lib/dropdown/dropdown.module.ts","ng://@acorex/components/lib/date-picker/date-picker.module.ts","ng://@acorex/components/lib/toast/toast.module.ts","ng://@acorex/components/lib/selection-list/selection-list.module.ts","ng://@acorex/components/lib/validation/validation-form.component.ts","ng://@acorex/components/lib/validation/validation.module.ts","ng://@acorex/components/lib/data-filter/filter.module.ts","ng://@acorex/components/lib/data-list/core/data-list.component.ts","ng://@acorex/components/lib/data-list/list/toolbar-list-view.component.ts","ng://@acorex/components/lib/data-list/list/list.component.ts","ng://@acorex/components/lib/data-source/datasource.module.ts","ng://@acorex/components/lib/data-list/list/list.module.ts","ng://@acorex/components/lib/dialog/dialog.component.ts","ng://@acorex/components/lib/dialog/dialog.module.ts","ng://@acorex/components/lib/popup/popup.component.ts","ng://@acorex/components/lib/popup/popup.service.ts","ng://@acorex/components/lib/dialog/dialog.service.ts","ng://@acorex/components/lib/drawer/drawer.component.ts","ng://@acorex/components/lib/drawer/drawer.module.ts","ng://@acorex/components/lib/fieldset/fieldset.component.ts","ng://@acorex/components/lib/fieldset/fieldset.module.ts","ng://@acorex/components/lib/label/label.component.ts","ng://@acorex/components/lib/label/label.module.ts","ng://@acorex/components/lib/loading/loading-panel.component.ts","ng://@acorex/components/lib/loading/loading.module.ts","ng://@acorex/components/lib/number-box/number-box.component.ts","ng://@acorex/components/lib/number-box/number-box.module.ts","ng://@acorex/components/lib/page/content.component.ts","ng://@acorex/components/lib/page/footer.component.ts","ng://@acorex/components/lib/page/page.module.ts","ng://@acorex/components/lib/password-box/password-box.component.ts","ng://@acorex/components/lib/password-box/password-box.module.ts","ng://@acorex/components/lib/popup/popup.module.ts","ng://@acorex/components/lib/progress-bar/progress-bar.component.ts","ng://@acorex/components/lib/progress-bar/progress-bar.module.ts","ng://@acorex/components/lib/query-builder/query-builder.class.ts","ng://@acorex/components/lib/searchbox/searchbox.component.ts","ng://@acorex/components/lib/selectbox/selectbox.component.ts","ng://@acorex/components/lib/query-builder/query-builder-rule.component.ts","ng://@acorex/components/lib/query-builder/query-builder-popup/query-builder-popup.component.ts","ng://@acorex/components/lib/query-builder/query-builder.service.ts","ng://@acorex/components/lib/query-builder/query-builder-group.component.ts","ng://@acorex/components/lib/query-builder/query-builder.component.ts","ng://@acorex/components/lib/searchbox/searchbox.module.ts","ng://@acorex/components/lib/selectbox/selectbox2.component.ts","ng://@acorex/components/lib/selectbox/selectbox.module.ts","ng://@acorex/components/lib/query-builder/query-builder.module.ts","ng://@acorex/components/lib/switch/switch.component.ts","ng://@acorex/components/lib/switch/switch.module.ts","ng://@acorex/components/lib/tab-page/tab-page.service.ts","ng://@acorex/components/lib/tab-page/tab-page-host.component.ts","ng://@acorex/components/lib/tab-page/tab-page-Renderer.component.ts","ng://@acorex/components/lib/tab-page/tab-page.module.ts","ng://@acorex/components/lib/tab-strip/tab-strip.component.ts","ng://@acorex/components/lib/tab-strip/tab-strip.module.ts","ng://@acorex/components/lib/tab-view/dynamic-tabs.directive.ts","ng://@acorex/components/lib/tab-view/tab.component.ts","ng://@acorex/components/lib/tab-view/tab-view.component.ts","ng://@acorex/components/lib/tab-view/tab-view.module.ts","ng://@acorex/components/lib/textarea/textarea.component.ts","ng://@acorex/components/lib/textarea/textarea.module.ts","ng://@acorex/components/lib/time-picker/time-picker.component.ts","ng://@acorex/components/lib/time-picker/time-picker.module.ts","ng://@acorex/components/lib/tree-side-menu/tree-side-menu.component.ts","ng://@acorex/components/lib/tree-side-menu/tree-side-menu.module.ts","ng://@acorex/components/lib/tree-view/tree-view.component.ts","ng://@acorex/components/lib/tree-view/tree-view.module.ts","ng://@acorex/components/lib/upload-file/upload-file.component.ts","ng://@acorex/components/lib/upload-file/upload-file.module.ts","ng://@acorex/components/lib/accordion/accordion.component.ts","ng://@acorex/components/lib/accordion/accordion.module.ts","ng://@acorex/components/lib/property-editor/property-editor.class.ts","ng://@acorex/components/lib/property-editor/property-editor-renderer.directive.ts","ng://@acorex/components/lib/property-editor/editors/text-editor/text.editor.ts","ng://@acorex/components/lib/property-editor/editors/text-editor/text.module.ts","ng://@acorex/components/lib/property-editor/editors/number-editor/number.editor.ts","ng://@acorex/components/lib/property-editor/editors/number-editor/number.module.ts","ng://@acorex/components/lib/property-editor/editors/selectbox-editor/selectbox.editor.ts","ng://@acorex/components/lib/property-editor/editors/selectbox-editor/selectbox.module.ts","ng://@acorex/components/lib/property-editor/editors/range-editor/range.editor.ts","ng://@acorex/components/lib/color-picker/color-box/color-box.component.ts","ng://@acorex/components/lib/color-picker/color-picker.component.ts","ng://@acorex/components/lib/color-picker/color-picker.module.ts","ng://@acorex/components/lib/property-editor/editors/range-editor/range.module.ts","ng://@acorex/components/lib/property-editor/editors/color-editor/color.editor.ts","ng://@acorex/components/lib/property-editor/editors/color-editor/color.module.ts","ng://@acorex/components/lib/property-editor/editors/column-editor/column.editor.ts","ng://@acorex/components/lib/property-editor/editors/column-editor/column.module.ts","ng://@acorex/components/lib/property-editor/editors/conditional-color-editor/conditional-color.editor.ts","ng://@acorex/components/lib/property-editor/editors/conditional-color-editor/conditional-color.module.ts","ng://@acorex/components/lib/property-editor/editors/switch-editor/number.editor.ts","ng://@acorex/components/lib/property-editor/editors/switch-editor/number.module.ts","ng://@acorex/components/lib/property-editor/editors/date-editor/date.editor.ts","ng://@acorex/components/lib/property-editor/editors/date-editor/date.module.ts","ng://@acorex/components/lib/property-editor/editors/time-editor/time.editor.ts","ng://@acorex/components/lib/property-editor/editors/time-editor/time.module.ts","ng://@acorex/components/lib/property-editor/property-editor.module.ts"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__extends","__","this","constructor","prototype","create","__assign","assign","t","s","i","n","arguments","length","call","apply","__decorate","decorators","target","key","desc","c","r","getOwnPropertyDescriptor","Reflect","decorate","defineProperty","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","metadata","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","v","op","TypeError","pop","push","__read","o","m","ar","error","__spread","concat","AXValidationRules","addRule","name","rule","exists","get","registredRules","find","AXValidationRuleComponent","type","enabled","validate","regRule","internalValidate","message","ruleValue","AXTranslator","isArray","ex","RegExp","test","res_1","val","catch","finally","Input","Component","selector","template","AXValidation","rules","validateOn","_this","all","map","AXValidationComponent","_super","rulesChange","EventEmitter","showMessage","_rules","emit","ngAfterContentInit","_a","contentItems","toArray","ContentChildren","QueryList","Output","AXValidationComponent_1","providers","provide","useExisting","AXHtmlEvent","AXBaseEvent","AXValueEvent","AXDataEvent","AXBaseComponent","uid","AXHtmlUtil","getUID","AXBaseInputChangeEvent","AXValidatableComponent","__valueField","tabIndex","initValidation","elementRef","valueField","validation","__nativeElement","nativeElement","__validation","undefined","clearValidationStyle","applyValidationStyle","element","clear","formGroup","closest","formItem","querySelector","parent_1","_b","_c","parentElement","_d","classList","remove","_e","_f","add","removeChild","parent_2","span","document","createElement","innerText","appendChild","AXBaseTextComponent","cdr","ref","disabled","readonly","textAlign","size","userChange","onkey","onBlur","onFocus","onValueChanged","valueChange","icon","allowClear","ngAfterViewInit","input","onkeyup","onkeydown","onkeypress","_validation","_contentValidation","_value","old","component","oldValue","isUserChange","detectChanges","focus","isFocused","activeElement","setTextAlign","handleInputBlur","htmlElement","htmlEvent","handleInputFocus","ViewChild","static","ContentChild","ElementRef","AXBaseButtonComponent","click","AXBaseDropdownComponent","fitParent","showDropDownButton","DynamicOverlayContainer","setContainerElement","containerElement","_containerElement","Injectable","providedIn","OverlayContainer","DynamicOverlay","scrollStrategies","_overlayContainer","_componentFactoryResolver","_positionBuilder","_keyboardDispatcher","_injector","_ngZone","_document","_directionality","rendererFactory","renderer","createRenderer","_dynamicOverlayContainer","setStyle","createOn","config","ScrollStrategyOptions","ComponentFactoryResolver","OverlayPositionBuilder","OverlayKeyboardDispatcher","Injector","NgZone","Inject","args","DOCUMENT","Directionality","RendererFactory2","Overlay","AXOverlayService","overlayService","overlayService2","appRef","show","content","context","configs","hasBackdrop","transparentBackdrop","closeOnClickOutside","portal","positionStrategy","viewRef","components","instance","TemplateRef","TemplatePortal","ComponentPortal","position","targetElement","flexibleConnectedTo","withPositions","withPush","global","centerHorizontally","centerVertically","scrollStrategy","reposition","autoClose","scroll","block","disposeOnNavigation","backdropClass","panelClass","overlayRef","host","attach","setTimeout","changeDetectorRef","merge","backdropClick","detachments","subscribe","dispose","onBackdropClick","bind","ApplicationRef","AXLoadingIndicatorComponent","ngOnInit","AXLoadingService","injection","_stack","location","com","id","Date","getTime","hide","filter","AXRenderService","AXPageComponent","el","loadingService","_isLoading","_loadingId","ChangeDetectorRef","AXPageCloseEvent","cancel","AXPageClosedPromise","executor","close","closeMethod","AXBasePageComponent","onClosed","pageContainer","isLoading","data","onClosing","ngOnDestroy","unsubscribe","AXBasePopupPageComponent","_footerButtons","onFooterButtonsChanged","Subject","configFooterButtons","getFooterButtons","buttons","footerButtons","onFooterButtonClick","AXButtonComponent","submitBehavior","cancelBehavior","loading","selected","focusButton","handleClick","stopPropagation","onKeydownHandler","preventDefault","container","HostListener","KeyboardEvent","encapsulation","ViewEncapsulation","None","COMPONENT","MODULES","CommonModule","AXButtonModule","NgModule","declarations","imports","exports","AXCalendarBoxComponent","weekdays","jalali","locale","AXConfig","dir","number","gregorian","selectableHoliday","dayStyle","showTodayButton","matrix","rotated","_view","_depth","holidays","weekends","onClick","getHoliday","getWeekend","navigate","view","date","vv","AXDateTime","convert","unValidDate","max","min","isInMInMaxRange","equal","setFocus","clone","focusedValue","today","viewRange","month","range","findDay","toISOString","split","getStyle","style","getTitle","text","initLayout","getViewCompaire","numRotate","path","getTodayName","prev","rotate","array","len","a","start","end","fd","startOf","startTime","firstDayOfWeek","endOf","endDayOfWeek","AXDateTimeRange","matrixify","applyStyle","enumurate","nextMonth","splice","dates","items","forEach","j","item","compaireNew","focused","unselect","h","holiday","indexDay_1","Math","floor","cc","Number","changeView","arr","cols","ceil","slice","setDayClick","event","setMonthClick","depth","set","year","monthOfYear","setYearClick","setToday","trackByFn","index","changeDetection","ChangeDetectionStrategy","OnPush","AXPopoverComponent","zone","openMode","closeMode","_visible","internalShow","internalHide","toggle","visible","run","open","isOpen","overlay","targetEl","addEventListener","removeEventListener","AXPopoverModule","AXCalendarBoxModule","AXCoreModule","AXSchedulerViewProperty","caption","interval","Attribute","AXSchedulerViewsProperty","AXAsyncEventArgs","onComplete","complete","AXSchedulerEventChangeArgs","canceled","alignment","AXMenuItemClickEvent","AXEvent","AXMenuComponent","onItemClick","selection","mode","direction","_menuTemplate","_contentMenuTemplate","_items","rtl","window","getComputedStyle","getPropertyValue","handleItemClick","disable","AXToolbarMenuComponent","update","AXToolbarMenuComponent_1","AXToolbarItem","AXToolbarSchedulerViewsComponent","onViewChanged","menu","AXToolbarSchedulerViewsComponent_1","AXSchedulerBaseViewComponent","timeSlot","onNavigatorDateChanged","events","slots","onEventChanged","_navigatorDate","getEvents","unit","ngAfterViewChecked","updateSize","onDragDropOnDay","time","previousContainer","opacity","oldSlot","newSlot","er","slotTime","z","durDay","duration","endTime","durTime_1","Directive","AXSchedulerDayTimeViewComponent","elm","times","vScroll","header","firstTr","index_1","querySelectorAll","children","width","offsetWidth","height","clientHeight","arrangeEvents","addDay","slot","display","navigatorDate","height_1","offsetHeight","attributes","getNamedItem","total","abs","hour","findEventIndex","sort","d1","d2","indexOf","AXSchedulerDayTimeViewComponent_1","AXSchedulerMonthViewComponent","weekDays","title","startDayOfWeek","dragHour","deltaY","addMonth","rows","dur","toString","matrixSlots","slotTd","viewMoreDiv","viewMore","visibility","top","getBoundingClientRect","bottom","innerHTML","onDragStarted","runOutsideAngular","dragEnterSlot","source","dropContainer","drageMouseMove","onDragEntered","dragPreview","onDragEnded","diff","round","AXSchedulerMonthViewComponent_1","AXToolbarSchedulerNavigatorComponent","viewDepth","onNavigate","startIcon","tooltip","goto","onDateChange","calDate","sameDay","sameMonth","sameYear","format","cal","toolbar","AXToolbarSchedulerNavigatorComponent_1","AXSchedulerAgendaViewComponent","hideEmptyDays","AXSchedulerAgendaViewComponent_1","AXSchedulerTimelineViewComponent","AXSchedulerTimelineViewComponent_1","AXToolbarSearchComponent","_text","inputSearch","onSearchChanged","searchChangeObserver","Observable","observer","pipe","debounceTime","distinctUntilChanged","AXToolbarSearchComponent_1","AXDataSourceReceivedEvent","AXDataSourceComponent","onDataReceived","onFetchStart","fetch","params","provideData","extra","_data","AXDataSourceReceivedResult","requestId","AXSchedulerComponent","viewItems","_currentView","setView","viewManager","views","createView","startAnim","portalOutlet","detach","compRef","setNavigatorText","refresh","toolbarNavigator","dateRange","groupName","dataSource","searchText","toolbarView","currentView","searchInput","x","CdkPortalOutlet","AXToolbarComponent","AXToolbarTitleComponent","AXToolbarTitleComponent_1","AXToolbarButtonGroupComponent","itemClick","AXToolbarButtonGroupComponent_1","AXMenu2Component","viewContainerRef","subItemsOverlays","level","showSubmenu","originX","originY","overlayX","overlayY","AXMenu2Component_1","onDocumentClick","contains","hideOverlays","ViewContainerRef","AXMenuItemComponent","showSubMenu","showSubItems","AXMenuItem","AXTooltipDirective","placement","delay","offset","onMouseEnter","onMouseLeave","setPosition","addClass","removeClass","tooltipTitle","createText","left","hostPos","tooltipPos","scrollPos","pageYOffset","documentElement","scrollTop","right","Renderer2","AXTooltipModule","AXMenuModule","COMPONENTS","AXToolbarModule","AXSchedulerModule","PortalModule","DragDropModule","entryComponents","AXCheckBoxItemClick","AXCheckBoxComponent","indeterminate","AXCheckBoxModule","FormsModule","AXContextMenuComponent","_left","_top","_rtl","containRec","innerWidth","innerHeight","handleClickItem","class","AXContextMenuItemClickEvent","AXContextMenuDirective","factoryResolver","injector","onContextMenuItemClick","internalItems","onContextMenu","getMenuItems","createContextMenu","contextMenu","wrapper","wrapperClick","wrapperRClick","factory","resolveComponentFactory","componentRef","createComponent","clearComponentSubscriptions","createComponentSubscriptions","elementsFromPoint","clientX","clientY","includes","clickSubscribe","closeSubscribe","dataItem","contextDataItem","menuItem","contextMenuItems","MouseEvent","AXContextMenuModule","AXFilterColumnComponent","operator","field","activeChange","_active","active","setFilter","AXSelectionListComponent","_selectedItems","textField","selectedItemsChange","selectedValuesChange","selectedItems","selectedValues","JSON","stringify","onCheckValueChange","checked","onvalueChanged","AXFilterColumnDateComponent","fromDate","toDate","selectedItem","showCustom","showSpecific","dateChange","onSelectedChanged","condition","dataType","AXFilterColumnDateComponent_1","AXFilterColumnNumberComponent","operators","onOperatorChange","onTextChange","AXFilterColumnNumberComponent_1","AXFilterColumnSelectionComponent","values","onSelectChange","some","AXFilterColumnSelectionComponent_1","AXFilterColumnStringComponent","AXFilterColumnStringComponent_1","AXTextBoxComponent","showMask","maskGuid","maskPlaceholder","maskKeepCharPositions","AXTextBoxComponent_1","AXToastWrapperComponent","AXToastMessageComponent","elRef","timeOut","closeable","toastWidth","interval_1","setInterval","clearInterval","AXToastService","injectionService","info","options","success","warning","opt","appendComponent","toastWrapper","AXFilterPanelComponent","toast","groups","predefinedFilters","saveItems","filterChange","updateMenu","filters","onValueChange","con","load","cancelSaveFilter","col","panel","setFilterByIndex","applySize","setFilterByName","removeFilter","footer","savedList","currentFilter","applySaveFilter","isNew","isInEdit","onMenuItemClick","handleRenameClick","tbxNameOnKey","tbxName","ViewChildren","AXToolbarFilterViewComponent","_uid","menuItems","divider","selectAll","addPredefinedList","filterPanel","root","setCurrent","name_1","prompt","findSelected","onCtxClick","menuId","currentTarget","getAttribute","AXToolbarFilterViewComponent_1","AXPanelBoxComponent","_caption","collapsedChange","_collapsed","allowCollapse","collapsed","animations","trigger","state","padding","transition","animate","AXPanelBoxModule","AXDropdownComponent","dropdownToggle","onButtonClick","dropdownEL","dropdownWidth","endButtons","childNodes","paddingInlineEnd","clientWidth","handleArrowClick","ensureOverlayCreated","templatePortal","setDirection","baseTemplate","hasAttached","AXDataPickerChangeEvent","AXDatePickerComponent","yyyyMMdd","ddMMyyyy","yyyyddMM","placeholder","showToday","openByClick","cursorPosition","model","_renderPicker","typeChange","_type","_setDateType","selectToday","dropdown","convertMaskToDate","convertStringToGregorian","convertMask","dateType","mask","monnth","day","textChange","markForCheck","guide","keepCharPositions","onStartfocus","caretColor","setCaretPosition","handleButtonClick","handleKeyPress","selectionStart","inputChar","String","fromCharCode","charCode","ind1","charAt","ind2","ind3","ind4","ind5","ind6","ind7","ind8","ind9","ind10","setCaret","ctrl","pos","setSelectionRange","AXDatePickerComponent_1","AXFormGroupComponent","required","div","AXFormGroupModule","TextMaskModule","AXTextBoxModule","OverlayModule","AXDropdownModule","AXDatePickerModule","AXToastModule","AXSelectionListModule","AXValidationFormComponent","widgets","onInit","widgetsQuery","w","failed","addWidget","widget","descendants","AXValidationModule","AXFilterModule","AXDataListComponent","configDataList","dataReceived","AXToolbarListViewComponent","vertical","verticalWrap","horizontalWrap","horizontal","onDirectionChanged","_direction","AXToolbarListViewComponent_1","AXListComponent","connectedList","allowMoveItem","_dataSource","_contentDataSource","_itemTemplate","_contentItemTemplate","_emptyTemplate","_contentEmptyTemplate","viewToolbar","dragDrop","AXDataSourceModule","AXListModule","AXDialogComponent","AXDialogModule","AXTranslatorModule","AXPopupComponent","resolver","rendererService","modal","maximizable","closable","headerButtons","console","log","findLoadedComponentByRoute","route","loadComponent","createEmbeddedView","$implicit","popupBody","insert","comRef","onFooterButtonsSubscription","onCloseClick","destroy","onFullScreen","handleFooterButtonClick","read","AXPopupService","stack","arg1","arg2","popup","closePopup","promise","closeFunc","reverse","closingFunc","res","AXDialogAlertResult","_executor","closeAction","action","AXDialogConfirmResult","okayAction","cancelAction","finalAction","okay","final","AXDialogResult","thenAction","AXDialogService","popupService","alert","confirm","_i","AXDrawerComponent","drawerState","transform","AXDrawerModule","BrowserAnimationsModule","AXFieldsetComponent","AXFieldsetModule","AXLabelComponent","AXLabelModule","AXLoadingPanelComponent","AXLoadingModule","A11yModule","AXNumberBoxComponent","showSeparator","showCurrency","showCounter","scrollWeel","showDoubleCounter","userQuestionUpdate","userEdite","findDots","findMinus","decimalConstant","lastStep","intStep","decimalNumber","customStep","_values","textValue","isNaN","replace","addCommas","search","addCommas2","nStr","x1","x2","rgx","handleWheel","wheelDelta","upStepHandel","delaySearch","downStepHandel","match","keyCode","figureAfterDot","dotIndex","handleKeyUp","handleKeyDown","countAfterDot","defaultStep","pow","dotPosition","tmp","parseFloat","count","toFixed","parseInt","checkMinMax","doGetCaretPosition","createTextRange","collapse","moveEnd","moveStart","select","AXNumberBoxComponent_1","AXNumberBoxModule","AXPageContentComponent","AXPageFooterComponent","AXPageModule","AXPasswordBoxComponent","eyeIcon","handleShowPassword","AXPasswordBoxComponent_1","AXPasswordBoxModule","AXPopupModule","AXProgressBarComponent","progress","AXProgressBarModule","AXQueryBuilderRuleEvent","AXQueryBuilderGroupEvent","AXSearchBoxComponent","textChanged","handleKeyEvent","AXSelectBoxSelectionChangedEvent","AXSelectBoxComponent","showCheckBox","allowNull","bufferSize","remoteOperation","currentfocusedIndex","showLoading","skip","totalCount","allowSearch","itemRemove","itemsChange","hasSelectedValue","itemsFiltered","dropDownDisabled","selectionChanged","itemsStatusObserver","setSelectedItemsChange","Set","waitForData","rowTemplate","rowInputTemplate","scrolled","listContainer","scrollHeight","take","textbox","setSelectedItems","isUserInput","changed","setSelectedIndex","emitSelectionChangedEvent","sign","toLowerCase","itemDiv","scrollIntoView","behavior","compareSelectedValues","addId_1","vId","newId","differenceBy","vv_1","rc","newValue","currentValue","setSelectedValues","dropdownToggleSelecBox","serchBox","handleItemRemoveClick","onFocusTextBox","onTextBoxClick","handleKeyEventSearch","textBoxSelectBox","getItems","selectedItemByIndex","stopImmediatePropagation","isChar","str","code","ctrlKey","isItemSelected","callbackfn","AXSelectBoxComponent_1","AXQueryBuilderRuleComponent","isEditing","fields","onRuleDelete","ruleChanged","showValue","isOnDemandLabel","provideDataBoolean","provideDataOperator","getProvideData","control","optionsData","onDemandLabel","saveRule","form","handleEditClick","handleCommitClick","handleRemoveClick","captionChange","dataField","AXQueryBuilderControl","dataFieldItem","selectBox","selectBoxValue","selectBoxBoolean","operatorChange","valueItem","onDemandLabelChange","valueBooleanChange","getOnDemandName","getOption","AXQueryBuilderRule","AXQueryBuilderGroup","AXQueryBuilderPopupComponent","complateValue","makeJsonString","groupString","group","groupCopy","parse","getNoValueRule","getValue","gr","textValueChange","findNullValue","AXQueryBuilderService","canOpen","canRun","runQuery","getQueryString","query","queryString","queryStringElastic","AXQueryBuilderGroupComponent","qs","groupRuleChanged","showGroupCondition","ruleDelete","parent","addGroup","addGroupOR","makeGroup","addGroupAND","_condition","changeDetailMode","handleChangeClick","AXQueryBuilderComponent","rootGroup","onRuleChanged","saved","getQueryBuilder","AXSearchBoxModule","AXSelectBoxValueChangedEvent","AXSelectBox2Component","selectionMode","selectionDataMode","AXObjectUtil","deepJSONClone","selectedKeys","renderSelection","orgRes","ii","fake","func","focusOnSearchBox","focusOnCurrentFocusedIndex","selectItems","internalGetItemValue","unselectItems","internalGetItemByDataMode","isLetter","selectItemByNav","focusedItem","toggleSelect","inputedVal","searchBox","AXSelectBox2Component_1","AXScrollModule","AXSelectBoxModule","MODUELS","AXQueryBuilderModule","AXSwitchComponent","AXSwitchModule","AXTabPageService","tabs","opened","activated","closed","arg3","newTab","pinned","existTab","findExistTab","tab","doCloseAction","currentTab","sender","tab_1","AXTabPageHostComponent","tabService","Error","hostView","AXTabPageRendererComponent","childs","subscriptions","hidden","reattach","componentRef_1","hostref","AXTabPageModule","AXTabStripChangedEvent","AXTabStripComponent","onTabChanged","seledtedTab","AXTabStripModule","DynamicTabsDirective","viewContainer","AXTabComponent","isCloseable","AXTabViewComponent","fullWidth","dynamicTabs","onActiveTab","first","selectTab","openTab","componentFactory","dynamicTabPlaceholder","dataContext","closeTab","closeActiveTab","activeTabs","Boolean","AXTabViewModule","AXTextAreaComponent","maxLength","AXTextAreaComponent_1","AXTextAreaModule","AXTimePickerChangedEvent","AXTimePickerComponent","showCurentTime","clearDisabled","HHmmss","HHmm","HH","hhmmss","hhmm","hh","hhmmssam","hhmmam","hham","valueHam","valueMam","valueSam","timeType","minute","second","indOld4","indOld7","indOld10","clearValue","placeholderChar","getHours","amHour","getMinutes","sec","getSeconds","firstChar","secondChar","ind11","hourind","afterHourind","beforeHourind","secondind","typeind","typeind2","afterHourIndex","minuteind","afterMinuteIndex","secondIndex","aftersecondIndex","AXTimePickerComponent_1","AXTimePickerModule","itemData","AXTreeSideMenuItemData","AXTreeSideMenuSelectionChangedEvent","AXTreeSideMenuItemClick","AXTreeSideMenuComponent","cssClass","selectionLevel","selectedFieldName","selectNodesRecursive","seletedKeyFields","keyField","hasChildField","bordered","lazyLoading","allowDrag","iconStart","closeIconName","openIconName","onItemOpening","onItemClosing","onItemDrag","onItemMoved","showSelectBox","list","selectedParents","loadAllChildren","listLoad","validDrop","lockedDrag","childField","showContextMenu","handleOnContextMenuItem","internalSelectItem","parentNode","changeParentSelect","changeChildSelect","makeNode","addChildren","node","AXTreeSideMenuNode","k","hasChild","allselect","alldeselect","oneselect","isindeterminate","toggleNode","flag","itemdbClick","handleOnNodeClick","loaded","itemRow","random","hideLoading","disabledCheckBox","selectItem","result_1","onDragStart","itemDrag","onDragEnd","itemDrop","drop","sameChilde","movedEvent","AXTreeSideMenuItemMovedEvent","dragDropItem","child","itemChild","itemParent","listChange","changeChiled","openAll","loadAll","scrolIntoView","closeAll","unSelectAll","getSelectedNodes","selectItemsNode","getSelectedParents","selectItemsParent","getParentsId","keyFields","getSelectedKeyFields","Ids","AXTreeSideMenuModule","AXTreeViewItemData","AXTreeViewselectionChangedEvent","AXTreeViewseletedKeyFieldsChangedEvent","AXTreeViewItemClick","AXTreeViewComponent","seletedKeyFieldsChanged","isSelectedItem","loced","AXTreeViewNode","AXTreeViewItemMovedEvent","AXTreeViewModule","AXUploadFileComponent","rendrer","onLoad","onProgress","files","fileName","onDeleteClick","onFileChange","addFile","fileInput","dropRef","progressRef","overlayDiv","handleOverlayDragOver","handleDragOver","handleDragLeave","handleDrop","dataTransfer","file","progressDiv","progressLabel","reader","FileReader","pv","uploaded","intv","readAsDataURL","HTMLElement","AXUploadFileModule","AXAccordionComponent","multiple","panels","handleCollapsedChanged","AXAccordionModule","AXProperyEditorComponent","initiated","validatableComponentRegistered","registerForValidationForm","handleValueChange","initiat","cls","property","AXPropertyDecorators","register","REGISTRY","AXPropertyDecorator","has","isValid","getProperties","superClass","getPrototypeOf","AXPropertyEditorRendererDirective","componentFactoryResolver","renderService","_context","assignProps","editorClass","cmpRef","subscription","validationForm","editorOptions","startsWith","substring","getPropByPath","this_1","AXTextPropertyEditorComponent","clearButton","textBox","AXTextPropertyEditorModule","AXNumberBoxPropertyEditorComponent","minValue","maxValue","AXNumberBoxPropertyEditorModule","AXSelectBoxPropertyEditorComponent","intVal","AXSelectBoxPropertyEditorModule","AXRangePropertyEditorComponent","ranges","onFormInit","editRow","tplEdit","handleAddClick","color","AXColorBoxComponent","inputFormat","onColorSelect","rColor","gColor","bColor","colors","selectColor","rgb","AXColorUtil","hex2Rgb","onColorClick","handleColorChange","rgb2Hex","AXColorBoxComponent_1","AXColorPickerComponent","showClear","findTextColor","contrastToWhite","AXColorPickerComponent_1","AXColorPickerModule","AXRangePropertyEditorModule","AXColorPropertyEditorComponent","AXColorPropertyEditorModule","ColumnPropertyEditorComponent","columns","columnTypeData","handleDataReceived","moveItemInArray","previousIndex","currentIndex","handleAddColumn","fieldName","fieldType","displayType","fillByUser","rowHeader","AXColumnPropertyEditorModule","AXConditionalColorPropertyEditorComponent","booleanItems","deepCopy","updateOperations","dataTypes","getDefaultValue","opr","oprItem","getIcon","AXConditionalColorPropertyEditorModule","conditional-color-property-editor","replaced-color","replaced-title","AXSwitchPropertyEditorComponent","AXSwitchPropertyEditorModule","AXDatePropertyEditorComponent","AXDatePropertyEditorModule","AXTimePropertyEditorComponent","AXTimePropertyEditorModule","WDIGET_MODULES","AXProppertyEditorModule","RouterModule","forChild"],"mappings":"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AAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAGV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAGV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAGV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAGV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAGV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAYV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAGV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAIV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,KAAM,WAEV,CACIA,K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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { AXValidationRuleResult, AXValidationRule, AXValidationRuleTypes } from './validation.class';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\n\r\n// @dynamic\r\nexport class AXValidationRules {\r\n private static registredRules: { name: string, rule: AXValidationRule }[] = [];\r\n\r\n public static addRule(name: string, rule: AXValidationRule) {\r\n const exists = AXValidationRules.get(name);\r\n if (exists) {\r\n exists.rule = rule;\r\n }\r\n else {\r\n AXValidationRules.registredRules.push({\r\n name,\r\n rule\r\n });\r\n }\r\n }\r\n\r\n public static get(name: string) {\r\n return this.registredRules.find(c => c.name === name);\r\n }\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'ax-validation-rule',\r\n template: ''\r\n})\r\nexport class AXValidationRuleComponent implements AXValidationRule {\r\n @Input()\r\n type: AXValidationRuleTypes = 'required';\r\n @Input()\r\n message: string;\r\n @Input()\r\n value: any;\r\n\r\n @Input()\r\n enabled: boolean = true;\r\n\r\n validate(value: any): Promise<AXValidationRuleResult> {\r\n if (this.enabled === false) {\r\n return Promise.resolve({ result: true });\r\n }\r\n const regRule = AXValidationRules.get(this.type);\r\n if (regRule) {\r\n return this.internalValidate(regRule.rule.type, value, this.message || regRule.rule.message, regRule.rule.value);\r\n }\r\n else {\r\n return this.internalValidate(this.type, value, this.message, this.value);\r\n }\r\n }\r\n\r\n\r\n private internalValidate(type: string, value?: any, message?: string, ruleValue?: any): Promise<AXValidationRuleResult> {\r\n return new Promise<AXValidationRuleResult>(resolve => {\r\n switch (type) {\r\n case 'required':\r\n resolve({\r\n message: message || AXTranslator.get('validation.messages.required'),\r\n result: value != null && value != '' && (!Array.isArray(value) || (Array.isArray(value) && value.length > 0))\r\n });\r\n break;\r\n case 'regex':\r\n const ex = new RegExp(ruleValue);\r\n resolve({\r\n message: message || AXTranslator.get('validation.messages.regex'),\r\n result: ex.test(value)\r\n });\r\n break;\r\n case 'custom':\r\n case 'callback':\r\n if (typeof ruleValue === 'function') {\r\n const res: any = {};\r\n res.message = message;\r\n const val = ruleValue({ value, message });\r\n if (val instanceof Promise) {\r\n val.then(c => {\r\n res.result = c;\r\n }).catch(c => {\r\n res.result = false;\r\n }).finally(() => {\r\n resolve(res);\r\n });\r\n }\r\n else {\r\n res.result = val;\r\n resolve(res);\r\n }\r\n }\r\n else {\r\n resolve({ result: true });\r\n }\r\n break;\r\n default:\r\n resolve({ result: true });\r\n }\r\n });\r\n }\r\n}\r\n","import { Component, ContentChildren, QueryList, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXValidationRuleComponent } from './validation-rule.widget';\r\nimport { AXValidationRule, AXValidationRuleResult } from './validation.class';\r\n\r\n\r\n\r\nexport class AXValidation {\r\n\r\n rules: AXValidationRule[] = [];\r\n validateOn: 'blur' | 'change' | 'submit' = 'submit';\r\n showMessage: boolean;\r\n\r\n validate(value: any): Promise<AXValidationRuleResult> {\r\n if (!this.rules || this.rules.length === 0) {\r\n return Promise.resolve({ result: true });\r\n }\r\n return new Promise<AXValidationRuleResult>(resolve => {\r\n Promise.all(\r\n this.rules.map(c => {\r\n if (c instanceof AXValidationRuleComponent) {\r\n return c.validate(value);\r\n }\r\n else {\r\n const v = new AXValidationRuleComponent();\r\n Object.assign(v, c);\r\n return v.validate(value);\r\n }\r\n })\r\n ).then(d => {\r\n const error = d.find(c => c.result === false);\r\n if (error) {\r\n resolve(error);\r\n } else {\r\n resolve({ result: true });\r\n }\r\n });\r\n });\r\n }\r\n\r\n}\r\n\r\n\r\n@Component({\r\n selector: 'ax-validation',\r\n template: '<ng-content></ng-content>',\r\n providers: [{ provide: AXValidation, useExisting: AXValidationComponent }]\r\n})\r\nexport class AXValidationComponent extends AXValidation {\r\n\r\n @ContentChildren(AXValidationRuleComponent)\r\n private contentItems: QueryList<AXValidationRuleComponent>;\r\n\r\n\r\n @Output()\r\n rulesChange: EventEmitter<AXValidationRule[]> = new EventEmitter<AXValidationRule[]>();\r\n\r\n @Output()\r\n showMessage: boolean = true;\r\n\r\n private _rules: AXValidationRule[];\r\n\r\n @Input()\r\n public get rules(): AXValidationRule[] {\r\n return this._rules;\r\n }\r\n public set rules(v: AXValidationRule[]) {\r\n this._rules = v;\r\n if (this.rulesChange) {\r\n this.rulesChange.emit(v);\r\n }\r\n }\r\n\r\n @Input()\r\n validateOn: 'blur' | 'change' | 'submit' = null;\r\n\r\n\r\n ngAfterContentInit() {\r\n if (this.rules && this.rules.length === 0) {\r\n this.rules.push(...this.contentItems.toArray());\r\n }\r\n }\r\n}\r\n","export class AXBaseEvent {\r\n component: any;\r\n htmlElement?: HTMLElement;\r\n}\r\n\r\nexport class AXHtmlEvent<E extends Event> extends AXBaseEvent {\r\n\r\n htmlEvent?: E;\r\n}\r\n\r\nexport class AXValueEvent<T> extends AXBaseEvent {\r\n value?: T;\r\n oldValue?: T;\r\n}\r\n\r\nexport class AXDataEvent<T> extends AXBaseEvent {\r\n data?: T;\r\n}\r\n\r\nexport class AXEvent<T, E extends Event>\r\n{\r\n\r\n}\r\nexport interface AXEvent<T, E extends Event> extends AXDataEvent<T>, AXHtmlEvent<E> {\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Input, Output, EventEmitter, ChangeDetectorRef, ViewChild, ElementRef, ContentChild } from '@angular/core';\r\nimport { AXValidationComponent, AXValidation } from '../validation/validation.component';\r\nimport { AXValidationRuleResult } from '../validation/validation.class';\r\nimport { AXHtmlUtil } from '@acorex/core';\r\nimport { AXEvent, AXHtmlEvent, AXValueEvent } from './events.class';\r\n\r\nexport type AXElementSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\nexport abstract class AXBaseComponent {\r\n @Input() cssClass: string;\r\n uid: string = AXHtmlUtil.getUID();\r\n constructor() {\r\n }\r\n}\r\n\r\n\r\nexport class AXBaseInputChangeEvent extends AXValueEvent<any> {\r\n isUserChange?: boolean;\r\n}\r\n\r\nexport interface AXBaseSizableComponent {\r\n size: AXElementSize;\r\n}\r\n\r\nexport interface AXBaseInteractiveComponent {\r\n disabled: boolean;\r\n tabIndex: number;\r\n}\r\n\r\nexport interface AXBaseInputComponent extends AXBaseInteractiveComponent {\r\n readonly: boolean;\r\n focus(): void;\r\n}\r\n\r\n\r\nexport interface AXBaseValueComponent<T> extends AXBaseInputComponent {\r\n onValueChanged?: EventEmitter<AXValueEvent<T>>;\r\n valueChange?: EventEmitter<T>;\r\n value: T;\r\n}\r\n\r\nexport interface AXBaseClickableComponent extends AXBaseInteractiveComponent {\r\n click: EventEmitter<AXHtmlEvent<MouseEvent>>;\r\n}\r\n\r\nexport abstract class AXValidatableComponent extends AXBaseComponent {\r\n\r\n private __valueField: string = 'value';\r\n private __nativeElement: HTMLElement;\r\n private __validation: AXValidation;\r\n\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n protected initValidation(\r\n elementRef: ElementRef,\r\n valueField: string,\r\n validation: AXValidation\r\n ) {\r\n this.__nativeElement = elementRef.nativeElement;\r\n this.__valueField = valueField;\r\n this.__validation = validation;\r\n const value = this[this.__valueField]\r\n if ((!Array.isArray(value) && value) || (Array.isArray(value) && value.length > 0))\r\n this.validate();\r\n }\r\n\r\n get validation() {\r\n return this.__validation;\r\n }\r\n\r\n validate(): Promise<AXValidationRuleResult> {\r\n if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {\r\n const result = this.__validation.validate(this[this.__valueField]);\r\n result.then(c => {\r\n if (c.result) {\r\n this.clearValidationStyle(this.__nativeElement);\r\n }\r\n else {\r\n this.applyValidationStyle(this.__nativeElement, c);\r\n }\r\n });\r\n return result;\r\n }\r\n else {\r\n return Promise.resolve({ result: true });\r\n }\r\n }\r\n\r\n\r\n protected clearValidationStyle(element: HTMLElement, clear: boolean = false) {\r\n if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {\r\n const formGroup = element.closest('.form-group');\r\n const formItem = formGroup?.querySelector('.form-item') || element.closest('.form-item') || element.querySelector('.form-item');;\r\n const label = formGroup?.querySelector('.form-group-label');\r\n const parent = formItem?.parentElement || element.parentElement;\r\n\r\n formItem?.classList.remove('success-state');\r\n formItem?.classList.remove('error-state');\r\n //formItem?.classList.remove('required-state');\r\n if (!clear) {\r\n formItem?.classList.add('success-state');\r\n }\r\n // label?.classList.remove('error-text');\r\n if (parent.querySelector('span.error-text')) {\r\n parent.removeChild(parent.querySelector('span.error-text'));\r\n }\r\n }\r\n }\r\n\r\n protected applyValidationStyle(element: HTMLElement, v: AXValidationRuleResult): void {\r\n if (this.__validation !== undefined && (this.__validation.rules || []).length > 0) {\r\n const formGroup = element.closest('.form-group');\r\n const formItem = formGroup?.querySelector('.form-item') || element.closest('.form-item') || element.querySelector('.form-item');\r\n const label = formGroup?.querySelector('.form-group-label');\r\n const parent = formItem?.parentElement || element.parentElement;\r\n formItem?.classList.add('error-state');\r\n formItem?.classList.remove('success-state');\r\n if (parent.querySelector('span.error-text')) {\r\n parent.removeChild(parent.querySelector('span.error-text'));\r\n }\r\n if (this.__validation.showMessage) {\r\n const span = document.createElement('span');\r\n span.innerText = v.message;\r\n span.classList.add('ax', 'error-text');\r\n parent.appendChild(span);\r\n }\r\n // label?.classList.add('error-text');\r\n }\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexport abstract class AXBaseTextComponent extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseValueComponent<string> {\r\n\r\n ngAfterViewInit() {\r\n if (this.input) {\r\n this.input.nativeElement.onkeyup = (e) => {\r\n this.userChange = true;\r\n this.value = (e.target as any).value;\r\n this.onkey.emit(e);\r\n };\r\n this.input.nativeElement.onkeydown = (e) => {\r\n this.userChange = true;\r\n\r\n this.value = (e.target as any).value;\r\n this.onkey.emit(e);\r\n };\r\n this.input.nativeElement.onkeypress = (e) => {\r\n this.userChange = true;\r\n\r\n this.value = (e.target as any).value;\r\n this.onkey.emit(e);\r\n };\r\n }\r\n }\r\n\r\n\r\n ngAfterContentInit(): void {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n }\r\n\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n @ViewChild('input', { static: true })\r\n @ContentChild('input', { static: true })\r\n input: ElementRef<HTMLInputElement>;\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n this.initValidation(this.ref, 'value', v);\r\n }\r\n\r\n\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n textAlign: 'right' | 'left' | null = null;\r\n\r\n @Input()\r\n size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'md';\r\n\r\n @Input()\r\n placeholder: string;\r\n\r\n userChange: boolean = false;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, protected ref: ElementRef) {\r\n super();\r\n }\r\n\r\n @Output()\r\n public onkey: EventEmitter<KeyboardEvent> = new EventEmitter<KeyboardEvent>();\r\n\r\n @Output()\r\n public onBlur: EventEmitter<AXHtmlEvent<Event>> = new EventEmitter<AXHtmlEvent<Event>>();\r\n\r\n @Output()\r\n public onFocus: EventEmitter<AXHtmlEvent<Event>> = new EventEmitter<AXHtmlEvent<Event>>();\r\n\r\n @Output()\r\n public onValueChanged: EventEmitter<AXBaseInputChangeEvent> = new EventEmitter<AXBaseInputChangeEvent>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\r\n @Input()\r\n icon: string = '';\r\n\r\n @Input()\r\n allowClear: boolean = false;\r\n\r\n private _value: string;\r\n @Input()\r\n public get value(): string {\r\n return this._value;\r\n }\r\n public set value(v: string) {\r\n if (v !== this._value) {\r\n const old = this._value;\r\n this._value = v;\r\n\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old,\r\n isUserChange: this.userChange\r\n });\r\n this.userChange = false;\r\n this.clearValidationStyle(this.input.nativeElement, v ? false : true);\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n focus() {\r\n this.input.nativeElement.focus();\r\n }\r\n\r\n clear() {\r\n this.userChange = true;\r\n\r\n this.value = null;\r\n this.input.nativeElement.value = null;\r\n }\r\n\r\n isFocused(): boolean {\r\n return this.input.nativeElement === document.activeElement;\r\n }\r\n\r\n setTextAlign() {\r\n if (this.textAlign === 'left') {\r\n return 'text-left';\r\n }\r\n if (this.textAlign === 'right') {\r\n return 'text-right';\r\n }\r\n }\r\n\r\n handleInputBlur(e: Event) {\r\n this.onBlur.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e\r\n });\r\n }\r\n\r\n handleInputFocus(e: Event) {\r\n this.onFocus.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e\r\n });\r\n }\r\n}\r\n\r\nexport abstract class AXBaseButtonComponent extends AXBaseComponent implements AXBaseClickableComponent, AXBaseSizableComponent {\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Output()\r\n click: EventEmitter<AXHtmlEvent<MouseEvent>> = new EventEmitter<AXHtmlEvent<MouseEvent>>();\r\n\r\n @Input()\r\n size: AXElementSize;\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n}\r\n\r\nexport abstract class AXBaseDropdownComponent extends AXBaseComponent implements AXBaseInteractiveComponent, AXBaseSizableComponent {\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n size: AXElementSize;\r\n\r\n @Input()\r\n fitParent: boolean = true;\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n @Input()\r\n showDropDownButton: boolean = true;\r\n\r\n abstract close();\r\n abstract open();\r\n}\r\n","import {\r\n Overlay,\r\n OverlayKeyboardDispatcher,\r\n OverlayPositionBuilder,\r\n ScrollStrategyOptions,\r\n OverlayContainer,\r\n OverlayRef,\r\n OverlayConfig\r\n} from '@angular/cdk/overlay';\r\nimport {\r\n ComponentFactoryResolver,\r\n Inject,\r\n Injector,\r\n NgZone,\r\n Renderer2,\r\n RendererFactory2,\r\n Injectable\r\n} from '@angular/core';\r\nimport { Directionality } from '@angular/cdk/bidi';\r\nimport { DOCUMENT } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicOverlayContainer extends OverlayContainer {\r\n public setContainerElement(containerElement: HTMLElement): void {\r\n this._containerElement = containerElement;\r\n }\r\n}\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DynamicOverlay extends Overlay {\r\n private readonly _dynamicOverlayContainer: DynamicOverlayContainer;\r\n private renderer: Renderer2;\r\n\r\n constructor(\r\n scrollStrategies: ScrollStrategyOptions,\r\n _overlayContainer: DynamicOverlayContainer,\r\n _componentFactoryResolver: ComponentFactoryResolver,\r\n _positionBuilder: OverlayPositionBuilder,\r\n _keyboardDispatcher: OverlayKeyboardDispatcher,\r\n _injector: Injector,\r\n _ngZone: NgZone,\r\n @Inject(DOCUMENT) _document: any,\r\n _directionality: Directionality,\r\n rendererFactory: RendererFactory2\r\n ) {\r\n super(\r\n scrollStrategies,\r\n _overlayContainer,\r\n _componentFactoryResolver,\r\n _positionBuilder,\r\n _keyboardDispatcher,\r\n _injector,\r\n _ngZone,\r\n _document,\r\n _directionality\r\n );\r\n this.renderer = rendererFactory.createRenderer(null, null);\r\n\r\n this._dynamicOverlayContainer = _overlayContainer;\r\n }\r\n\r\n private setContainerElement(containerElement: HTMLElement): void {\r\n this.renderer.setStyle(containerElement, 'transform', 'translateZ(0)');\r\n this._dynamicOverlayContainer.setContainerElement(containerElement);\r\n }\r\n\r\n public createOn(containerElement: HTMLElement, config?: OverlayConfig): OverlayRef {\r\n this.setContainerElement(containerElement);\r\n return super.create(config);\r\n }\r\n}","import { Injectable, ApplicationRef, ViewContainerRef, TemplateRef, EventEmitter } from '@angular/core';\r\nimport { Overlay, PositionStrategy, ScrollStrategy } from '@angular/cdk/overlay';\r\nimport { TemplatePortal, Portal, ComponentPortal } from '@angular/cdk/portal';\r\nimport { AXConnectedPosition } from '@acorex/core';\r\nimport { merge } from 'rxjs';\r\nimport { DynamicOverlay } from './custom-cdk-overlay.service';\r\n\r\nexport interface AXOverlayViewRef {\r\n instance: any;\r\n dispose: () => void;\r\n}\r\n\r\nexport interface AXOverlayConfigs {\r\n position?: AXConnectedPosition | AXConnectedPosition[];\r\n hasBackdrop?: boolean;\r\n transparentBackdrop?: boolean;\r\n closeOnClickOutside?: boolean;\r\n targetElement?: HTMLElement;\r\n containerElement?: HTMLElement;\r\n onBackdropClick?: () => void;\r\n panelClass?: string[] | string;\r\n backdropClass?: string[] | string;\r\n scroll?: 'auto' | 'block';\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXOverlayService {\r\n constructor(\r\n private overlayService: DynamicOverlay,\r\n private overlayService2: Overlay,\r\n private appRef: ApplicationRef) {\r\n\r\n }\r\n\r\n show(content: any, context?: any, configs?: AXOverlayConfigs): AXOverlayViewRef {\r\n configs = Object.assign({\r\n hasBackdrop: true,\r\n transparentBackdrop: true,\r\n closeOnClickOutside: true\r\n }, configs || {});\r\n // get root viewref\r\n const viewRef: ViewContainerRef = this.appRef.components[0].instance.viewRef;\r\n\r\n let portal: Portal<any>;\r\n // get component by route\r\n if (typeof content === 'string') {\r\n // TODO\r\n }\r\n // create portal from component\r\n else if (content instanceof TemplateRef) {\r\n portal = new TemplatePortal(content, viewRef, context);\r\n }\r\n else if (typeof content === 'function') {\r\n portal = new ComponentPortal(content, viewRef);\r\n }\r\n let positionStrategy: PositionStrategy;\r\n if (configs.position && configs.targetElement) {\r\n positionStrategy = this.overlayService.position()\r\n .flexibleConnectedTo(configs.targetElement)\r\n .withPositions(\r\n Array.isArray(configs.position) ? configs.position : [configs.position]\r\n )\r\n .withPush(true);\r\n }\r\n else {\r\n positionStrategy = this.overlayService.position().global().centerHorizontally().centerVertically();\r\n }\r\n let scrollStrategy: ScrollStrategy = this.overlayService.scrollStrategies.reposition({ autoClose: true });\r\n if (configs.scroll === 'block') {\r\n scrollStrategy = this.overlayService.scrollStrategies.block();\r\n }\r\n\r\n const config = {\r\n positionStrategy,\r\n scrollStrategy,\r\n hasBackdrop: configs.hasBackdrop,\r\n disposeOnNavigation: true,\r\n backdropClass: configs.backdropClass ? configs.backdropClass : (configs.transparentBackdrop ? 'cdk-overlay-transparent-backdrop' : undefined),\r\n panelClass: configs.panelClass ? configs.panelClass : ['animate__animated', 'animate__fadeIn']\r\n };\r\n // joon nanat dorost sho\r\n let overlayRef = configs.containerElement ? this.overlayService.createOn(configs.containerElement, config) : this.overlayService2.create(config);\r\n\r\n const host = overlayRef.attach(portal);\r\n if (host.instance) {\r\n Object.assign(host.instance, context);\r\n setTimeout(() => {\r\n host.changeDetectorRef.detectChanges();\r\n }, 0);\r\n }\r\n if (configs.closeOnClickOutside) {\r\n merge(\r\n overlayRef.backdropClick(),\r\n overlayRef.detachments(),\r\n ).subscribe(() => {\r\n overlayRef.dispose();\r\n overlayRef = undefined;\r\n if (configs.onBackdropClick) {\r\n configs.onBackdropClick();\r\n }\r\n });\r\n\r\n }\r\n return {\r\n instance: host.instance,\r\n dispose: overlayRef.dispose.bind(overlayRef)\r\n };\r\n }\r\n\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-loading-indicator',\r\n templateUrl: './loading-indicator.component.html'\r\n})\r\nexport class AXLoadingIndicatorComponent implements OnInit {\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n this.size = 80;\r\n }\r\n\r\n @Input()\r\n size: number;\r\n}\r\n","import { Injectable, ComponentRef, EventEmitter } from '@angular/core';\r\nimport { AXRenderService } from '@acorex/core';\r\nimport { AXLoadingPanelComponent } from './loading-panel.component';\r\nimport { AXOverlayService, AXOverlayViewRef } from '../popover/overlay.service';\r\nimport { AXLoadingIndicatorComponent } from './loading-indicator.component';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXLoadingService {\r\n\r\n private _stack: { id: number, component: AXOverlayViewRef }[] = [];\r\n\r\n\r\n constructor(private injection: AXRenderService, private overlayService: AXOverlayService) {\r\n\r\n }\r\n\r\n show(location?: Element): number {\r\n let host: Element;\r\n if (location) {\r\n host = location.closest('.ax-loading-host');\r\n }\r\n const containerElement = (host || location) as HTMLDivElement;\r\n const com = this.overlayService.show(AXLoadingIndicatorComponent, {},\r\n {\r\n closeOnClickOutside: false,\r\n containerElement,\r\n hasBackdrop: true,\r\n backdropClass: ['ax-loading-overlay'],\r\n scroll: 'block'\r\n });\r\n const id = new Date().getTime();\r\n this._stack.push({ id, component: com });\r\n return id;\r\n }\r\n\r\n hide(id): void {\r\n const f = this._stack.find(c => c.id === id);\r\n if (f) {\r\n f.component.dispose();\r\n this._stack = this._stack.filter(c => c.id !== id);\r\n }\r\n }\r\n}","import { Component, ElementRef, ChangeDetectorRef } from '@angular/core';\r\nimport { AXLoadingService } from '../loading/loading.service';\r\n\r\n@Component({\r\n selector: 'ax-page',\r\n template: `\r\n <div class=\"page-content-wrap\">\r\n <div class=\"ax-page-toolbar\">\r\n <ng-content select=\"ax-toolbar\"></ng-content>\r\n </div>\r\n <ng-content select=\"ax-page-content\"></ng-content>\r\n <ng-content select=\"ax-page-footer\"></ng-content>\r\n </div>\r\n`\r\n})\r\nexport class AXPageComponent {\r\n constructor(\r\n private el: ElementRef<HTMLElement>,\r\n private loadingService: AXLoadingService,\r\n private cdr: ChangeDetectorRef,\r\n ) { }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n private _loadingId: number;\r\n\r\n private _isLoading: boolean = false;\r\n public get isLoading(): boolean {\r\n return this._isLoading;\r\n }\r\n public set isLoading(v: boolean) {\r\n this._isLoading = v;\r\n if (this._loadingId && !v) {\r\n this.loadingService.hide(this._loadingId);\r\n this._loadingId = null;\r\n }\r\n if (v) {\r\n this._loadingId = this.loadingService.show(this.el.nativeElement);\r\n }\r\n }\r\n}\r\n","import { EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXDataEvent } from './events.class';\r\nimport { AXMenuItemClickEvent } from '../menu/menu.component';\r\nimport { AXButtonItem } from '@acorex/core';\r\nimport { AXPageComponent } from '../page/page.component';\r\nimport { Subject } from 'rxjs';\r\n\r\nexport const TAB_META_KEY = '__meta__';\r\n\r\nexport class AXPageCloseEvent extends AXDataEvent<any> {\r\n}\r\nexport class AXPageClosing {\r\n cancel: boolean = false;\r\n data?: any;\r\n}\r\n\r\nexport class AXPageResult {\r\n sender: any;\r\n data?: any;\r\n}\r\n\r\nexport class AXPageClosedPromise extends Promise<AXPageResult> {\r\n\r\n private closeMethod: () => void;\r\n constructor(\r\n executor: (resolve: (value?: AXPageResult | PromiseLike<AXPageResult>) => void,\r\n reject: (reason?: any) => void) => void\r\n ) {\r\n super(executor);\r\n }\r\n\r\n public close() {\r\n if (this.closeMethod) {\r\n this.closeMethod();\r\n }\r\n }\r\n}\r\n\r\nexport abstract class AXBasePageComponent {\r\n\r\n @ViewChild(AXPageComponent, { static: true })\r\n private pageContainer: AXPageComponent;\r\n\r\n private _isLoading: boolean = false;\r\n public get isLoading(): boolean {\r\n return this._isLoading;\r\n }\r\n public set isLoading(v: boolean) {\r\n this._isLoading = v;\r\n if (this.pageContainer) {\r\n this.pageContainer.isLoading = this.isLoading;\r\n }\r\n }\r\n\r\n\r\n onClosed: EventEmitter<AXPageCloseEvent> = new EventEmitter<AXPageCloseEvent>();\r\n\r\n close(data?: any) {\r\n this.onClosed.emit({\r\n component: this,\r\n data: data\r\n });\r\n }\r\n\r\n onClosing(e: AXPageClosing): void | Promise<void> {\r\n }\r\n\r\n ngOnDestroy() {\r\n this.onClosed.unsubscribe();\r\n }\r\n}\r\n\r\nexport abstract class AXBasePopupPageComponent extends AXBasePageComponent {\r\n\r\n\r\n\r\n\r\n\r\n\r\n constructor() {\r\n super();\r\n setTimeout(() => {\r\n this.configFooterButtons(this.getFooterButtons());\r\n });\r\n }\r\n\r\n\r\n private _footerButtons: AXButtonItem[] = [];\r\n onFooterButtonsChanged = new Subject<AXButtonItem[]>();\r\n\r\n protected get footerButtons(): AXButtonItem[] {\r\n return this._footerButtons || [];\r\n }\r\n\r\n protected configFooterButtons(buttons?: AXButtonItem[]) {\r\n if (buttons) {\r\n this._footerButtons = buttons;\r\n this.onFooterButtonsChanged.next(buttons);\r\n }\r\n else {\r\n this.onFooterButtonsChanged.next(this.footerButtons);\r\n }\r\n }\r\n\r\n onFooterButtonClick(e: AXMenuItemClickEvent) {\r\n }\r\n\r\n getFooterButtons(): AXButtonItem[] {\r\n return [];\r\n }\r\n}\r\n\r\n\r\n","import { Component, Input, ViewEncapsulation, ElementRef, ViewChild, HostListener } from '@angular/core';\r\nimport { AXBaseButtonComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-button',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: './button.component.html'\r\n})\r\nexport class AXButtonComponent extends AXBaseButtonComponent {\r\n\r\n constructor(private el: ElementRef) {\r\n super();\r\n }\r\n\r\n @ViewChild('container', { static: true }) container: ElementRef<HTMLButtonElement>;\r\n\r\n @Input()\r\n type: string = 'primary';\r\n\r\n @Input()\r\n icon: string;\r\n\r\n @Input()\r\n submitBehavior: boolean = false;\r\n\r\n @Input()\r\n cancelBehavior: boolean = false;\r\n\r\n @Input()\r\n block: boolean = false;\r\n\r\n @Input()\r\n loading: boolean = false;\r\n\r\n @Input()\r\n selected: boolean = false;\r\n\r\n ngAfterViewInit(): void {\r\n if (this.submitBehavior) {\r\n setTimeout(() => {\r\n this.focusButton();\r\n }, 10);\r\n }\r\n }\r\n\r\n\r\n\r\n handleClick(e: MouseEvent) {\r\n if (this.disabled === true) {\r\n this.click.emit({\r\n component: this,\r\n htmlElement: this.el.nativeElement,\r\n htmlEvent: e,\r\n });\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n @HostListener('document:keydown.escape', ['$event'])\r\n onKeydownHandler(e: KeyboardEvent) {\r\n if (this.cancelBehavior) {\r\n this.handleClick(null);\r\n e.stopPropagation();\r\n e.preventDefault();\r\n return false;\r\n }\r\n }\r\n\r\n focusButton() {\r\n this.container.nativeElement.focus();\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXButtonComponent } from './button.component';\r\n\r\nconst COMPONENT = [AXButtonComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXButtonModule { }\r\n","import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewEncapsulation, ElementRef } from '@angular/core';\r\nimport { AXDateTime, AXDateTimeRange, AXCalendarType, AXTranslator } from '@acorex/core';\r\nimport { AXBaseSizableComponent, AXElementSize } from '../../base/element.class';\r\nimport { AXValueEvent } from '../../base/events.class';\r\nimport { AXConfig } from '@acorex/core';\r\n\r\nexport type AXCalendarViewType = 'year' | 'month' | 'day';\r\n\r\nexport type AXCalendarHolidays = AXCalendarHoliday[];\r\nexport type AXCalendarHolidaysFunc = (start: Date, end: Date, type: AXCalendarType) => AXCalendarHoliday[];\r\nexport interface AXCalendarHoliday {\r\n date: Date;\r\n title: string;\r\n description?: string;\r\n}\r\n\r\nexport type AXCalendarWeekends = AXCalendarWeekend[];\r\nexport type AXCalendarWeekendsFunc = (start: Date, end: Date, type: AXCalendarType) => AXCalendarWeekend[];\r\n\r\nexport interface AXCalendarWeekend {\r\n indexDay: number;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-calendar-box',\r\n templateUrl: './calendar-box.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXCalendarBoxComponent implements AXBaseSizableComponent {\r\n weekdays: string[] = [];\r\n\r\n private d = {\r\n jalali: {\r\n locale: AXConfig.get('dateTime.jalali.locale') || 'fa',\r\n dir: 'rtl',\r\n number: 1\r\n },\r\n gregorian: {\r\n locale: AXConfig.get('dateTime.gregorian.locale') || 'en',\r\n dir: 'ltr',\r\n number: 0\r\n }\r\n };\r\n\r\n numRotate: number;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n type: AXCalendarType;\r\n\r\n @Input()\r\n locale: string;\r\n\r\n @Input()\r\n dir: string;\r\n\r\n @Input()\r\n min: Date;\r\n\r\n @Input()\r\n max: Date;\r\n\r\n @Input()\r\n selectableHoliday: boolean = true;\r\n\r\n @Input()\r\n dayStyle = [];\r\n\r\n private getHoliday: AXCalendarHolidays | AXCalendarHolidaysFunc;\r\n\r\n private getWeekend: AXCalendarWeekends | AXCalendarWeekendsFunc;\r\n\r\n @Input('showTodayButton')\r\n public showTodayButton: boolean = false;\r\n\r\n matrix: any[] = [];\r\n rotated: boolean = false;\r\n private _view: AXCalendarViewType = 'day';\r\n @Input()\r\n public get view(): AXCalendarViewType {\r\n return this._view;\r\n }\r\n public set view(v: AXCalendarViewType) {\r\n this._view = v;\r\n this.navigate(0);\r\n }\r\n\r\n private _depth: AXCalendarViewType = 'day';\r\n\r\n @Input()\r\n public get depth(): AXCalendarViewType {\r\n return this._depth;\r\n }\r\n public set depth(v: AXCalendarViewType) {\r\n this._depth = v;\r\n this.view = v;\r\n }\r\n\r\n viewRange: AXDateTimeRange;\r\n private holidays: AXCalendarHoliday[] = [];\r\n private weekends: AXCalendarWeekend[] = [];\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<Date>> = new EventEmitter<AXValueEvent<Date>>();\r\n\r\n @Output()\r\n onClick: EventEmitter<AXValueEvent<Date>> = new EventEmitter<AXValueEvent<Date>>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\r\n private _value: AXDateTime;\r\n @Input()\r\n public get value(): Date {\r\n return this._value?.date;\r\n }\r\n public set value(v: Date) {\r\n let vv: AXDateTime;\r\n if (v) {\r\n vv = AXDateTime.convert(v);\r\n }\r\n let unValidDate = false;\r\n if (this.max || this.min) {\r\n unValidDate = this.isInMInMaxRange(vv);\r\n }\r\n if (!unValidDate) {\r\n if (vv && !vv.equal(this._value)) {\r\n this._value = vv;\r\n this._value.type = this.type;\r\n this.setFocus(this._value.clone());\r\n this.valueChange.emit(vv.date);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: this._value?.date,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n if (v == undefined) {\r\n this._value = null;\r\n this.focusedValue = this.today;\r\n this.viewRange = this.today.month.range;\r\n this.navigate(0);\r\n }\r\n this.onClick.emit({\r\n component: this,\r\n value: this._value?.date,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n focusedValue: AXDateTime;\r\n get today(): AXDateTime {\r\n return new AXDateTime(new Date(), this.type);\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef) {\r\n // set defaults\r\n this.getHoliday = AXConfig.get('dateTime.holidays');\r\n this.getWeekend = AXConfig.get('dateTime.weekends');\r\n }\r\n findDay(date: AXDateTime) {\r\n if (this.dayStyle.find((c) => c.date == date.toISOString().split('T')[0])) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n getStyle(date: AXDateTime) {\r\n if (this.dayStyle.find((c) => c.date == date.toISOString().split('T')[0])) {\r\n return this.dayStyle.find((c) => c.date == date.toISOString().split('T')[0]).style;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n getTitle(date: AXDateTime) {\r\n if (this.dayStyle.find((c) => c.date == date.toISOString().split('T')[0])) {\r\n return this.dayStyle.find((c) => c.date == date.toISOString().split('T')[0]).text;\r\n } else {\r\n return '';\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.focusedValue = new AXDateTime(new Date(), this.type);\r\n //\r\n this.initLayout();\r\n //\r\n this.viewRange = this.today.month.range;\r\n if (this.value) {\r\n this.setFocus(new AXDateTime(this.value, this.type));\r\n } else {\r\n this.setFocus(this.today);\r\n }\r\n\r\n this.view = 'day';\r\n }\r\n\r\n getViewCompaire(view: AXCalendarViewType) {\r\n switch (view) {\r\n case 'day':\r\n return 'YMD';\r\n case 'month':\r\n return 'YM';\r\n case 'year':\r\n return 'Y';\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.navigate(0);\r\n }\r\n\r\n private initLayout() {\r\n if (!this.type) {\r\n this.type = AXConfig.get('dateTime.type') || 'gregorian';\r\n }\r\n if (!this.locale) {\r\n this.locale = this.d[this.type]?.locale || this.locale;\r\n }\r\n if (!this.dir) {\r\n this.dir = this.d[this.type]?.dir || 'ltr';\r\n }\r\n this.numRotate = this.d[this.type]?.number || 0;\r\n const path = 'dateTime.weekdaysShort';\r\n this.weekdays = [\r\n AXTranslator.get(`${path}.sun`, this.locale),\r\n AXTranslator.get(`${path}.mon`, this.locale),\r\n AXTranslator.get(`${path}.tue`, this.locale),\r\n AXTranslator.get(`${path}.wed`, this.locale),\r\n AXTranslator.get(`${path}.thu`, this.locale),\r\n AXTranslator.get(`${path}.fri`, this.locale),\r\n AXTranslator.get(`${path}.sat`, this.locale)\r\n ];\r\n }\r\n\r\n getTodayName() {\r\n return AXTranslator.get('dateTime.today', this.locale);\r\n }\r\n\r\n prev() {\r\n this.navigate(-1);\r\n }\r\n\r\n next() {\r\n this.navigate(1);\r\n }\r\n\r\n rotate(array, n) {\r\n const len = array.length;\r\n return !(n % len) ? array : n > 0 ? array.map((e, i, a) => a[(i + n) % len]) : array.map((e, i, a) => a[(len - ((len - i - n) % len)) % len]);\r\n }\r\n\r\n navigate(value: number | AXDateTime) {\r\n let start: AXDateTime;\r\n let end: AXDateTime;\r\n if (this.view === 'day') {\r\n let fd: AXDateTime;\r\n if (value instanceof AXDateTime) {\r\n fd = value.startOf('month');\r\n } else {\r\n fd = this.viewRange.startTime.add('day', 15).add('month', value).startOf('month');\r\n }\r\n\r\n start = fd.firstDayOfWeek;\r\n end = fd.endOf('month').endDayOfWeek;\r\n\r\n start = start.add('day', -this.numRotate);\r\n end = end.add('day', 7).add('day', -this.numRotate);\r\n\r\n // TODO: apply start of week\r\n if (!this.rotated && this.weekdays.length > 0) {\r\n if (this.type === 'jalali') {\r\n this.weekdays = this.rotate(this.weekdays, -this.numRotate);\r\n } else {\r\n this.weekdays = this.rotate(this.weekdays, this.numRotate);\r\n }\r\n\r\n this.rotated = true;\r\n }\r\n } else if (this.view === 'month') {\r\n let fd: AXDateTime;\r\n if (value instanceof AXDateTime) {\r\n fd = value.startOf('year');\r\n } else {\r\n fd = this.viewRange.startTime.add('day', 15).add('year', value).startOf('year');\r\n }\r\n start = fd;\r\n end = fd.endOf('year');\r\n } else if (this.view === 'year') {\r\n let fd: AXDateTime;\r\n if (value instanceof AXDateTime) {\r\n fd = value.startOf('year');\r\n } else {\r\n fd = this.viewRange.startTime\r\n .add('day', 15)\r\n .add('year', value * 10)\r\n .startOf('year');\r\n }\r\n start = fd.add('year', -4);\r\n end = start.add('year', 8).endOf('year');\r\n }\r\n this.viewRange = new AXDateTimeRange(start, end);\r\n //\r\n if (this.getHoliday && typeof this.getHoliday === 'function') {\r\n this.holidays = this.getHoliday(start.date, end.date, this.type);\r\n }\r\n\r\n if (this.getWeekend && typeof this.getWeekend === 'function') {\r\n this.weekends = this.getWeekend(start.date, end.date, this.type);\r\n }\r\n\r\n //\r\n if (this.view === 'day') {\r\n this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('day', this.type)), 7);\r\n if (this.matrix.length > 0 && this.matrix[0].find((c) => c.nextMonth === false) === undefined) {\r\n this.matrix.splice(0, 1);\r\n }\r\n if (this.matrix[this.matrix.length - 1].find((c) => c.nextMonth === false) === undefined) {\r\n this.matrix.splice(this.matrix.length - 1, 1);\r\n }\r\n } else if (this.view === 'month') {\r\n this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('month', this.type)), 3);\r\n } else if (this.view === 'year') {\r\n this.matrix = this.matrixify(this.applyStyle(this.viewRange.enumurate('year', this.type)), 3);\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private applyStyle(dates: AXDateTime[]): any[] {\r\n const items: any[] = [];\r\n dates.forEach((d, i, j) => {\r\n const item: any = {};\r\n item.date = d;\r\n\r\n item.selected = d.compaireNew(new AXDateTime(this.value, this.type), this.getViewCompaire(this.view), this.type) === 0;\r\n item.focused = d.compaireNew(this.focusedValue, this.getViewCompaire(this.view), this.type) === 0;\r\n item.today = this.today && d.compaireNew(this.today, this.getViewCompaire(this.view), this.type) === 0;\r\n if (this.view === 'day') {\r\n // item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM') !== 0;\r\n item.nextMonth = d.compaireNew(this.viewRange.startTime.add('day', 10), 'YM', this.type) !== 0;\r\n\r\n item.unselect = this.isInMInMaxRange(d);\r\n this.holidays.forEach((h) => {\r\n const comp = d.compaireNew(new AXDateTime(h.date, this.type), 'YMD', this.type);\r\n if (comp === 0) {\r\n item.holiday = true;\r\n if (this.selectableHoliday === false) {\r\n item.unselect = true;\r\n }\r\n }\r\n });\r\n\r\n const indexDay = i - Math.floor(i / 7) * 7;\r\n this.weekends.forEach((cc) => {\r\n if (Number(cc) === indexDay) {\r\n item.holiday = true;\r\n if (this.selectableHoliday === false) {\r\n item.unselect = true;\r\n }\r\n }\r\n });\r\n }\r\n items.push(item);\r\n });\r\n return items;\r\n }\r\n\r\n changeView() {\r\n if (this.view === 'day') {\r\n this.view = 'month';\r\n } else if (this.view === 'month') {\r\n this.view = 'year';\r\n }\r\n }\r\n\r\n matrixify(arr: any[], cols) {\r\n const rows = Math.ceil(arr.length / cols);\r\n const matrix = [];\r\n if (rows * cols === arr.length) {\r\n for (let i = 0; i < arr.length; i += cols) {\r\n matrix.push(arr.slice(i, cols + i));\r\n }\r\n }\r\n return matrix;\r\n }\r\n\r\n setDayClick(event: MouseEvent, item) {\r\n if (item.unselect !== true) {\r\n this.value = item.date.date;\r\n }\r\n\r\n event.stopPropagation();\r\n }\r\n\r\n isInMInMaxRange(d) {\r\n let r = false;\r\n if (d !== undefined) {\r\n if (this.min && !this.max) {\r\n r = d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1;\r\n }\r\n if (this.max && !this.min) {\r\n r = d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;\r\n }\r\n if (this.min && this.max) {\r\n r =\r\n d.compaireNew(new AXDateTime(this.min, this.type), this.getViewCompaire(this.view), this.type) === -1 ||\r\n d.compaireNew(new AXDateTime(this.max, this.type), this.getViewCompaire(this.view), this.type) === 1;\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n setMonthClick(event: MouseEvent, date: AXDateTime) {\r\n if (this.depth === 'month') {\r\n this.value = date.date;\r\n } else {\r\n this.view = 'day';\r\n this.setFocus(new AXDateTime(this.value, this.type).set('year', date.year).set('month', date.monthOfYear));\r\n }\r\n event.stopPropagation();\r\n }\r\n\r\n setYearClick(event: MouseEvent, date: AXDateTime) {\r\n if (this.depth === 'year') {\r\n this.value = date.date;\r\n } else {\r\n this.view = 'month';\r\n this.setFocus(new AXDateTime(this.value, this.type).set('year', date.year));\r\n }\r\n event.stopPropagation();\r\n }\r\n\r\n setFocus(date: AXDateTime) {\r\n this.focusedValue = date;\r\n this.navigate(this.focusedValue);\r\n }\r\n\r\n setToday() {\r\n this.value = this.today.date;\r\n this.view = 'day';\r\n }\r\n\r\n trackByFn(index, item: any) {\r\n return item.date.date.getTime();\r\n }\r\n}\r\n","import { Component, Input, NgZone, ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation, ViewChild, TemplateRef } from '@angular/core';\r\nimport { ElementRef } from '@angular/core';\r\nimport { AXOverlayService, AXOverlayViewRef } from './overlay.service';\r\nimport { AXConnectedPosition } from '@acorex/core';\r\n\r\n\r\n@Component({\r\n selector: 'ax-popover',\r\n templateUrl: './popover.component.html',\r\n styleUrls: ['./popover.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AXPopoverComponent {\r\n constructor(\r\n private overlayService: AXOverlayService,\r\n private zone: NgZone,\r\n private cdr: ChangeDetectorRef) {\r\n\r\n }\r\n //\r\n private targetEl: HTMLElement;\r\n private overlay: AXOverlayViewRef;\r\n @ViewChild('tpl')\r\n private template: TemplateRef<any>;\r\n //\r\n @Input('target') target: string | HTMLElement;\r\n //\r\n @Input('position') position: AXConnectedPosition;\r\n //\r\n @Input('openMode') openMode: 'manual' | 'click' | 'hover' = 'manual';\r\n //\r\n @Input('closeMode') closeMode: 'manual' | 'clickout' | 'mouseout' = 'clickout';\r\n //\r\n private _visible: boolean = false;\r\n @Input()\r\n public get visible(): boolean {\r\n return this._visible;\r\n }\r\n public set visible(v: boolean) {\r\n if (v !== this._visible) {\r\n if (v) {\r\n this.internalShow();\r\n } else {\r\n this.internalHide();\r\n }\r\n this._visible = v;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n //\r\n toggle() {\r\n this.visible = !this.visible;\r\n }\r\n\r\n close() {\r\n this.zone.run(() => {\r\n this.visible = false;\r\n });\r\n }\r\n\r\n open() {\r\n this.zone.run(() => {\r\n this.visible = true;\r\n });\r\n }\r\n\r\n private internalShow() {\r\n if (this.isOpen) {\r\n return;\r\n }\r\n this.overlay = this.overlayService.show(this.template, {}, {\r\n closeOnClickOutside: this.closeMode === 'clickout',\r\n targetElement: this.targetEl,\r\n hasBackdrop: this.closeMode === 'clickout',\r\n position: this.position,\r\n onBackdropClick: () => {\r\n this._visible = false;\r\n }\r\n });\r\n }\r\n\r\n private internalHide() {\r\n if (this.overlay) {\r\n this.overlay.dispose();\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.targetEl = typeof this.target === 'string' ? document.querySelector<HTMLElement>(this.target) : this.target;\r\n //\r\n if (this.closeMode === 'mouseout') {\r\n this.targetEl.addEventListener('mouseout', this.close.bind(this));\r\n }\r\n if (this.openMode === 'hover' && this.targetEl) {\r\n this.targetEl.addEventListener('mouseover', this.open.bind(this));\r\n }\r\n //\r\n if (this.openMode === 'click' && this.targetEl) {\r\n this.targetEl.addEventListener('click', this.open.bind(this));\r\n }\r\n }, 100);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.openMode === 'click' && this.targetEl) {\r\n this.targetEl.removeEventListener('mouseover', this.open.bind(this));\r\n this.targetEl.removeEventListener('click', this.open.bind(this));\r\n this.targetEl.removeEventListener('mouseout', this.open.bind(this));\r\n }\r\n }\r\n\r\n get isOpen(): boolean {\r\n return this.visible;\r\n }\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AXPopoverComponent } from \"./popover.component\";\r\n\r\n@NgModule({\r\n declarations: [AXPopoverComponent],\r\n imports: [CommonModule],\r\n exports: [AXPopoverComponent],\r\n providers: []\r\n})\r\nexport class AXPopoverModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXCalendarBoxComponent } from './calendar-box.component';\r\nimport { AXCoreModule } from '@acorex/core';\r\nimport { AXPopoverModule } from '../../popover/popover.module';\r\nimport { AXButtonModule } from '../../button/button.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXCalendarBoxComponent],\r\n imports: [CommonModule, AXButtonModule, AXPopoverModule, AXCoreModule],\r\n exports: [AXCalendarBoxComponent],\r\n providers: []\r\n})\r\nexport class AXCalendarBoxModule {\r\n}\r\n","import { Component, ContentChildren, QueryList, Input, Attribute } from '@angular/core';\r\nimport { AXSchedulerViewType } from './scheduler.class';\r\n\r\n@Component({\r\n selector: 'ax-scheduler-view',\r\n template: ``\r\n})\r\nexport class AXSchedulerViewProperty {\r\n\r\n constructor(\r\n @Attribute('type') public type: AXSchedulerViewType,\r\n @Attribute('caption') public caption: string,\r\n @Attribute('name') public name: string,\r\n ) {\r\n\r\n }\r\n\r\n @Input()\r\n public interval: number;\r\n\r\n\r\n ngOnInit(): void {\r\n if (!this.interval) {\r\n this.interval = 1;\r\n }\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ax-scheduler-views',\r\n template: `\r\n <ng-content>\r\n </ng-content>`,\r\n})\r\nexport class AXSchedulerViewsProperty {\r\n @ContentChildren(AXSchedulerViewProperty) views: QueryList<AXSchedulerViewProperty>;\r\n constructor() { }\r\n}\r\n","import { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\nimport { EventEmitter } from '@angular/core';\r\n\r\n\r\n\r\n\r\nexport type AXSchedulerViewType = 'day' | 'week' | 'month' | 'timeline' | 'agenda';\r\n\r\nexport interface AXSchedulerRequestDataArge {\r\n startTime: AXDateTime;\r\n endTime: AXDateTime;\r\n events: AXSchedulerEvent[];\r\n}\r\n\r\nexport abstract class AXAsyncEventArgs {\r\n onComplete: EventEmitter<any> = new EventEmitter<any>(true);\r\n complete(): void {\r\n if (this.onComplete) {\r\n this.onComplete.emit(this);\r\n }\r\n }\r\n}\r\n\r\nexport class AXSchedulerEventChangeArgs extends AXAsyncEventArgs {\r\n canceled: boolean = false;\r\n event: AXSchedulerEvent;\r\n oldSlot: AXSchedulerSlot;\r\n newSlot: AXSchedulerSlot;\r\n}\r\n\r\nexport interface AXSchedulerSlot {\r\n range: AXDateTimeRange;\r\n events?: AXSchedulerEvent[];\r\n uid?: string;\r\n}\r\n\r\nexport interface AXSchedulerEvent {\r\n range: AXDateTimeRange;\r\n title: string;\r\n description?: string;\r\n uid: string;\r\n color: string;\r\n}\r\n\r\nexport interface AXSchedulerOccasion {\r\n range: AXDateTimeRange;\r\n title: string;\r\n description?: string;\r\n blocked?: boolean;\r\n}\r\n","export abstract class AXToolbarItem\r\n{\r\n alignment:\"start\"|\"end\"|\"center\"=\"center\";\r\n}","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ElementRef,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n NgZone,\r\n ChangeDetectorRef,\r\n TemplateRef,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { AXPlacement, AXMenuItem } from '@acorex/core';\r\nimport { AXBaseSizableComponent, AXElementSize } from '../base/element.class';\r\nimport { AXEvent } from '../base/events.class';\r\n\r\nexport class AXMenuItemClickEvent extends AXEvent<AXMenuItem, MouseEvent> {\r\n name: string;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-menu',\r\n templateUrl: './menu.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXMenuComponent implements AXBaseSizableComponent {\r\n\r\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) {\r\n }\r\n\r\n @ContentChild(TemplateRef, { static: true })\r\n _contentMenuTemplate: TemplateRef<any>;\r\n\r\n private _menuTemplate: TemplateRef<any>;\r\n @Input()\r\n public get menuTemplate(): TemplateRef<any> {\r\n return this._menuTemplate ? this._menuTemplate : this._contentMenuTemplate;\r\n }\r\n public set menuTemplate(v: TemplateRef<any>) {\r\n this._menuTemplate = v;\r\n }\r\n\r\n resizeChangeObserver: any;\r\n\r\n @Input()\r\n rtl: boolean;\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXMenuItemClickEvent> = new EventEmitter<AXMenuItemClickEvent>();\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n public selection: 'none' | 'single' | 'multiple' = 'none';\r\n\r\n @Input()\r\n public mode: 'click' | 'context' | 'visible' | 'manual' = 'visible';\r\n\r\n @Input()\r\n public target: string;\r\n\r\n @Input()\r\n public floatAlignment: AXPlacement;\r\n\r\n @Input()\r\n public floatPlacemnet: AXPlacement;\r\n\r\n public currentTarget: HTMLElement;\r\n\r\n @Input()\r\n public direction: 'vertical' | 'horizontal' = 'horizontal';\r\n\r\n private _items: AXMenuItem[];\r\n @Input()\r\n public get items(): AXMenuItem[] {\r\n return this._items;\r\n }\r\n public set items(v: AXMenuItem[]) {\r\n this._items = v;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n\r\n handleItemClick(e: MouseEvent, item?: AXMenuItem) {\r\n e.stopPropagation();\r\n if (item && (!item.items || !item.items.filter((c) => c.visible !== false).length) && !item.disable) {\r\n const m = {\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e,\r\n data: item,\r\n name: item?.name\r\n };\r\n if (item.onClick) {\r\n item.onClick();\r\n }\r\n else {\r\n this.onItemClick.emit(m);\r\n }\r\n\r\n return;\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ElementRef,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n NgZone,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ContentChild,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { AXToolbarItem } from '../toolbar-item';\r\nimport { AXMenuComponent, AXMenuItemClickEvent } from '../../menu/menu.component';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-toolbar-menu',\r\n templateUrl: './toolbar-menu.component.html',\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarMenuComponent }],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AXToolbarMenuComponent extends AXToolbarItem {\r\n \r\n constructor(\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n @ViewChild('menu', { static: true }) menu: AXMenuComponent\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXMenuItemClickEvent> = new EventEmitter<AXMenuItemClickEvent>();\r\n\r\n @ContentChild(TemplateRef, { static: true })\r\n _contentMenuTemplate: TemplateRef<any>;\r\n\r\n\r\n private _menuTemplate: TemplateRef<any>;\r\n @Input()\r\n public get menuTemplate(): TemplateRef<any> {\r\n return this._menuTemplate ? this._menuTemplate : this._contentMenuTemplate;\r\n }\r\n public set menuTemplate(v: TemplateRef<any>) {\r\n this._menuTemplate = v;\r\n }\r\n\r\n\r\n @Input()\r\n public selection: 'none' | 'single' | 'multiple' = 'none';\r\n\r\n private _items: AXMenuItem[];\r\n @Input()\r\n public get items(): AXMenuItem[] {\r\n return this._items;\r\n }\r\n public set items(v: AXMenuItem[]) {\r\n this._items = v;\r\n this.update();\r\n }\r\n\r\n\r\n handleItemClick(item?: AXMenuItemClickEvent) {\r\n this.onItemClick.emit(item);\r\n }\r\n\r\n\r\n public close(): void {\r\n // this.menu.close();\r\n }\r\n\r\n update() {\r\n //this.menu.update();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n}\r\n","import { Component, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\nimport { AXToolbarItem } from '../../../toolbar/toolbar-item';\r\nimport { AXToolbarMenuComponent } from '../../../toolbar/menu/toolbar-menu.component';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-scheduler-view',\r\n template: `\r\n <ax-toolbar-menu [items]=\"items\" selection=\"single\" (onItemClick)=\"onItemClick($event)\"></ax-toolbar-menu>\r\n `,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarSchedulerViewsComponent }]\r\n})\r\nexport class AXToolbarSchedulerViewsComponent {\r\n constructor() { }\r\n\r\n @ViewChild(AXToolbarMenuComponent, { static: true }) menu: AXToolbarMenuComponent;\r\n items: AXMenuItem[] = [];\r\n\r\n update(): void {\r\n this.menu.update();\r\n }\r\n\r\n @Output()\r\n onViewChanged: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n onItemClick(e: AXMenuItem) {\r\n this.onViewChanged.emit(e.name);\r\n }\r\n\r\n}\r\n","import { Input, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { AXDateTime, AXDateTimeRange, TimeUnit } from '@acorex/core';\r\nimport { Output, Directive } from '@angular/core';\r\nimport { AXSchedulerSlot, AXSchedulerEventChangeArgs, AXSchedulerEvent, AXSchedulerViewType } from '../scheduler.class';\r\n\r\n\r\n\r\n\r\n\r\n@Directive()\r\nexport abstract class AXSchedulerBaseViewComponent implements OnDestroy {\r\n\r\n type: AXSchedulerViewType;\r\n timeSlot: number = 1;\r\n\r\n interval: number = 1;\r\n\r\n abstract updateSize(): void;\r\n\r\n abstract next(): void;\r\n\r\n abstract prev(): void;\r\n\r\n abstract navigate(date: AXDateTime): void;\r\n\r\n get dateRange(): AXDateTimeRange {\r\n if (this.slots && this.slots.length) {\r\n return new AXDateTimeRange(this.slots[0].range.startTime, this.slots[this.slots.length - 1].range.startTime);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n today: AXDateTime = new AXDateTime();\r\n\r\n\r\n\r\n @Output()\r\n onNavigatorDateChanged: EventEmitter<AXDateTime> = new EventEmitter<AXDateTime>();\r\n\r\n private _navigatorDate: AXDateTime;\r\n public get navigatorDate(): AXDateTime {\r\n return this._navigatorDate;\r\n }\r\n public set navigatorDate(v: AXDateTime) {\r\n this._navigatorDate = v;\r\n this.onNavigatorDateChanged.emit(v);\r\n }\r\n\r\n events: AXSchedulerEvent[] = [];\r\n\r\n slots: AXSchedulerSlot[] = [];\r\n\r\n getEvents(range: AXDateTimeRange, unit: TimeUnit) {\r\n return this.events.filter(c => c.range.startTime.equal(range.startTime, unit))\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.updateSize();\r\n }\r\n\r\n @Output()\r\n onEventChanged: EventEmitter<AXSchedulerEventChangeArgs> = new EventEmitter<AXSchedulerEventChangeArgs>(true);\r\n\r\n\r\n ngOnDestroy(): void {\r\n if (this.onEventChanged) {\r\n this.onEventChanged.unsubscribe();\r\n }\r\n if (this.onNavigatorDateChanged) {\r\n this.onEventChanged.unsubscribe();\r\n }\r\n if (this.slots) {\r\n this.slots = null;\r\n }\r\n if (this.events) {\r\n this.events = null;\r\n }\r\n }\r\n\r\n\r\n onDragDropOnDay(e, time?: number) {\r\n const el = e.item.element.nativeElement as HTMLElement;\r\n if (e.previousContainer !== e.container) {\r\n el.style.opacity = '0';\r\n const r: AXSchedulerEventChangeArgs = new AXSchedulerEventChangeArgs();\r\n r.event = e.item.data;\r\n r.oldSlot = e.previousContainer.data;\r\n r.newSlot = e.container.data;\r\n //\r\n r.onComplete.subscribe((er: AXSchedulerEventChangeArgs) => {\r\n el.style.opacity = '1';\r\n if (!er.canceled) {\r\n const slotTime = er.newSlot.range.startTime.startOf();\r\n const z = er.event.range.startTime.clone();\r\n const durDay = slotTime.duration(z.startOf(), 'days');\r\n const durTime = slotTime.duration(z, 'hours');\r\n const eventRange = er.event.range;\r\n //\r\n // if (time && slotTime.add('hour', time).hour + eventRange.duration('hours') > 24) {\r\n // return;\r\n // }\r\n if (time) {\r\n return;\r\n }\r\n er.event.range.startTime = er.event.range.startTime.add('day', durDay);\r\n er.event.range.endTime = er.event.range.endTime.add('day', durDay);\r\n er.oldSlot.events = er.oldSlot.events.filter(c => c.uid !== er.event.uid);\r\n if (time) {\r\n er.event.range.startTime = er.event.range.startTime.set('hour', time);\r\n let durTime = er.event.range.startTime.duration(z, 'hours') % 24;\r\n er.event.range.endTime = er.event.range.endTime.add('hour', durTime);\r\n }\r\n er.newSlot.events.push(er.event);\r\n\r\n }\r\n });\r\n this.onEventChanged.emit(r);\r\n }\r\n }\r\n\r\n}","import { Component, ElementRef, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXSchedulerSlot, AXSchedulerEvent } from '../../scheduler.class';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\n\r\n@Component({\r\n templateUrl: './scheduler-daytime-view.component.html',\r\n styleUrls: ['./scheduler-daytime-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerDayTimeViewComponent }]\r\n})\r\nexport class AXSchedulerDayTimeViewComponent extends AXSchedulerBaseViewComponent {\r\n constructor(private elm: ElementRef<HTMLDivElement>, private cdr: ChangeDetectorRef) { super(); }\r\n times: any[] = [];\r\n private vScroll: HTMLElement;\r\n private container: HTMLElement;\r\n private view: HTMLElement;\r\n private header: HTMLElement;\r\n private body: HTMLElement;\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.vScroll = this.elm.nativeElement.querySelector<HTMLElement>('.v-scroll');\r\n this.header = this.elm.nativeElement.querySelector<HTMLElement>('.header');\r\n this.body = this.elm.nativeElement.querySelector<HTMLElement>('.body');\r\n this.view = this.elm.nativeElement.querySelector<HTMLElement>('.view');\r\n this.container = this.elm.nativeElement.closest('.view-container') as HTMLElement;\r\n }\r\n\r\n updateSize(): void {\r\n const firstTr = this.body.querySelector('tr');\r\n if (firstTr) {\r\n let index = 0;\r\n this.header.querySelectorAll('th').forEach(c => {\r\n const td = firstTr.children.item(index++) as HTMLElement;\r\n td.style.width = `${c.offsetWidth}px`;\r\n });\r\n this.vScroll.style.height = `calc(100% - ${this.header.clientHeight}px)`;\r\n if (this.container) {\r\n this.view.style.height = `${this.container.clientHeight}px`;\r\n }\r\n }\r\n this.arrangeEvents();\r\n }\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n this.times = [];\r\n this.slots = [];\r\n for (let i = 0; i < this.interval; i++) {\r\n const d = date.addDay(i);\r\n const range = new AXDateTimeRange(d, d);\r\n const slot: AXSchedulerSlot = {\r\n range,\r\n events: this.getEvents(range, 'day')\r\n };\r\n this.slots.push(slot);\r\n }\r\n for (let i = 0; i < 24; i++) {\r\n this.times.push({\r\n display: ('0' + i).slice(-2) + ':00',\r\n value: i\r\n });\r\n }\r\n this.navigatorDate = date;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addDay(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addDay(-this.interval));\r\n }\r\n\r\n arrangeEvents() {\r\n const events = this.elm.nativeElement.querySelectorAll<HTMLElement>('.event');\r\n if (events.length) {\r\n const height = events[0].closest('td').offsetHeight;\r\n events.forEach(e => {\r\n const uid = e.attributes.getNamedItem('data-uid').value;\r\n const event = this.events.find(c => c.uid === uid);\r\n const dur = Math.ceil(Math.abs(event.range.duration('hours')));\r\n let total = dur + 1;\r\n if (event.range.startTime.hour + total > 23) {\r\n total = 24 - event.range.startTime.hour;\r\n }\r\n e.style.height = (total * height) + 'px';\r\n });\r\n }\r\n }\r\n\r\n findEventIndex(event: AXSchedulerEvent): number {\r\n const a = this.events.filter(c =>\r\n c.range.startTime.equal(event.range.startTime, 'day')\r\n ).sort((d1, d2) => {\r\n return d1.range.startTime.compaireNew(d2.range.startTime);\r\n });\r\n\r\n return a.indexOf(event);\r\n }\r\n}\r\n","import { Component, ElementRef, ChangeDetectorRef, ViewEncapsulation, HostListener, NgZone } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXSchedulerEvent, AXSchedulerEventChangeArgs } from '../../scheduler.class';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\n\r\n@Component({\r\n templateUrl: './scheduler-month-view.component.html',\r\n styleUrls: ['./scheduler-month-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerMonthViewComponent }]\r\n})\r\nexport class AXSchedulerMonthViewComponent extends AXSchedulerBaseViewComponent {\r\n\r\n\r\n constructor(\r\n private elm: ElementRef<HTMLDivElement>,\r\n private zone: NgZone,\r\n private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n @HostListener('wheel', ['$event'])\r\n onKeydownHandler(e: MouseWheelEvent) {\r\n if (e.deltaY > 0) {\r\n this.navigate(this.navigatorDate.addMonth(1))\r\n }\r\n else if (e.deltaY < 0) {\r\n this.navigate(this.navigatorDate.addMonth(-1))\r\n }\r\n }\r\n\r\n weekDays: any[] = [\r\n {\r\n index: 0, title: 'Sunday'\r\n },\r\n {\r\n index: 1, title: 'Moday'\r\n },\r\n {\r\n index: 2, title: 'Tuesday'\r\n },\r\n {\r\n index: 3, title: 'Wednesday'\r\n },\r\n {\r\n index: 4, title: 'Thursday'\r\n },\r\n {\r\n index: 5, title: 'Friday'\r\n },\r\n {\r\n index: 6, title: 'Saturday'\r\n }];\r\n startDayOfWeek = 'Moday';\r\n\r\n\r\n\r\n private container: HTMLElement;\r\n private view: HTMLElement;\r\n private header: HTMLElement;\r\n private body: HTMLElement;\r\n\r\n\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.header = this.elm.nativeElement.querySelector<HTMLElement>('.header');\r\n this.body = this.elm.nativeElement.querySelector<HTMLElement>('.body');\r\n this.view = this.elm.nativeElement.querySelector<HTMLElement>('.view');\r\n this.container = this.elm.nativeElement.closest('.view-container') as HTMLElement;\r\n\r\n }\r\n\r\n\r\n updateSize(): void {\r\n const firstTr = this.body.querySelector('tr');\r\n if (firstTr) {\r\n let index = 0;\r\n this.header.querySelectorAll('th').forEach(c => {\r\n const td = firstTr.children.item(index++) as HTMLElement;\r\n td.style.width = `${c.offsetWidth}px`;\r\n });\r\n this.body.style.height = `calc(100% - ${this.header.clientHeight}px)`;\r\n if (this.container) {\r\n this.view.style.height = `${this.container.clientHeight}px`;\r\n }\r\n }\r\n this.arrangeEvents();\r\n }\r\n\r\n matrixify(arr, rows, cols) {\r\n const matrix = [];\r\n if (rows * cols === arr.length) {\r\n for (let i = 0; i < arr.length; i += cols) {\r\n matrix.push(arr.slice(i, cols + i));\r\n }\r\n }\r\n return matrix;\r\n }\r\n\r\n matrixSlots: any;\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n\r\n const start = date.month.range.startTime.firstDayOfWeek;\r\n const end = date.month.range.startTime.endDayOfWeek;\r\n const dur = end.duration(start);\r\n this.slots = [];\r\n for (let i = 0; i < dur; i++) {\r\n const d = start.addDay(i);\r\n const range: AXDateTimeRange = new AXDateTimeRange(d, d);\r\n this.slots.push({\r\n range,\r\n events: this.getEvents(range, 'day'),\r\n uid: range.startTime.date.getTime().toString()\r\n });\r\n }\r\n const dayInWeek = 7;\r\n const rows = Math.floor(dur / dayInWeek);\r\n this.matrixSlots = this.matrixify(this.slots, rows, dayInWeek);\r\n this.navigatorDate = date;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addMonth(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addMonth(-this.interval));\r\n }\r\n\r\n arrangeEvents() {\r\n this.slots.forEach(slot => {\r\n const slotTd = this.elm.nativeElement.querySelector<HTMLElement>(`[data-uid='` + slot.uid + `']`);\r\n const viewMoreDiv = slotTd.querySelector<HTMLElement>('.view-more');\r\n let viewMore = 0;\r\n viewMoreDiv.style.display = 'none';\r\n const width = slotTd.offsetWidth;\r\n slot.events.forEach(event => {\r\n const e = slotTd.querySelector<HTMLElement>(`[data-uid='` + event.uid + `']`);\r\n if (e) {\r\n const dur = Math.ceil(Math.abs(event.range.duration()));\r\n e.style.visibility = 'unset';\r\n e.style.width = (dur * width) + 'px';\r\n e.style.top = ((this.findEventIndex(event)) * 25) + 'px';\r\n if (e.getBoundingClientRect().bottom >= slotTd.getBoundingClientRect().bottom) {\r\n viewMore++;\r\n e.style.visibility = 'hidden';\r\n viewMoreDiv.style.display = 'unset';\r\n viewMoreDiv.innerHTML = `+${viewMore} more`;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n findEventIndex(event: AXSchedulerEvent): number {\r\n const a = this.events.filter(c =>\r\n c.range.startTime.equal(event.range.startTime, 'days')\r\n ).sort((d1, d2) => {\r\n const v = d1.range.startTime.compaireNew(d2.range.startTime, 'YMDhm');\r\n return v;\r\n });\r\n return a.indexOf(event);\r\n }\r\n\r\n private dragEnterSlot: HTMLElement;\r\n private dragPreview: HTMLElement;\r\n private dragHour: number = null;\r\n onDragStarted(event) {\r\n this.zone.runOutsideAngular(() => {\r\n this.dragEnterSlot = event.source.dropContainer.element.nativeElement;\r\n this.elm.nativeElement.addEventListener('mousemove', this.drageMouseMove.bind(this));\r\n });\r\n }\r\n onDragEntered(event) {\r\n this.dragPreview = document.querySelector<HTMLElement>('.cdk-drag-preview');\r\n this.dragEnterSlot = event.container.element.nativeElement;\r\n }\r\n onDragEnded(event) {\r\n this.dragEnterSlot = null;\r\n this.dragPreview = null;\r\n this.zone.runOutsideAngular(() => {\r\n this.elm.nativeElement.removeEventListener('mousemove', this.drageMouseMove.bind(this));\r\n });\r\n }\r\n\r\n private drageMouseMove(e: MouseEvent) {\r\n this.zone.runOutsideAngular(() => {\r\n if (!this.dragPreview) {\r\n this.dragPreview = document.querySelector<HTMLElement>('.cdk-drag-preview');\r\n }\r\n if (this.dragEnterSlot && this.dragPreview) {\r\n const diff = this.dragPreview.getBoundingClientRect().top - this.dragEnterSlot.getBoundingClientRect().top;\r\n const hour = Math.round((diff / this.dragEnterSlot.getBoundingClientRect().height) * 24);\r\n this.dragPreview.querySelector('.ax-sch-str').innerHTML = `${hour > 0 ? hour : 0}:00`;\r\n this.dragHour = hour;\r\n }\r\n });\r\n }\r\n\r\n onDragDropOnDay(e) {\r\n const el = e.item.element.nativeElement as HTMLElement;\r\n if (e.previousContainer !== e.container) {\r\n el.style.opacity = '0';\r\n const r: AXSchedulerEventChangeArgs = new AXSchedulerEventChangeArgs();\r\n r.event = e.item.data;\r\n r.oldSlot = e.previousContainer.data;\r\n r.newSlot = e.container.data;\r\n //\r\n r.onComplete.subscribe((er: AXSchedulerEventChangeArgs) => {\r\n el.style.opacity = '1';\r\n if (!er.canceled) {\r\n const slotTime = er.newSlot.range.startTime.startOf();\r\n const z = er.event.range.startTime.clone();\r\n const durDay = slotTime.duration(z.startOf(), 'days');\r\n er.event.range.startTime = er.event.range.startTime.add('day', durDay);\r\n if (this.dragHour != null) {\r\n er.event.range.startTime = er.event.range.startTime.set('hour', this.dragHour);\r\n er.event.range.startTime = er.event.range.startTime.set('minute', 0);\r\n }\r\n er.event.range.endTime = er.event.range.endTime.add('day', durDay);\r\n er.oldSlot.events = er.oldSlot.events.filter(c => c.uid !== er.event.uid);\r\n er.newSlot.events.push(er.event);\r\n }\r\n });\r\n this.onEventChanged.emit(r);\r\n }\r\n\r\n }\r\n\r\n}\r\n","\r\nimport { Component, OnInit, Input, Output, EventEmitter, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild } from '@angular/core';\r\n\r\nimport { AXSchedulerViewType } from '../scheduler.class';\r\nimport { AXCalendarBoxComponent } from '../../calendar-box/calendar-box.component';\r\n\r\nimport { AXMenuItem, AXDateTime, AXDateTimeRange } from '@acorex/core';\r\nimport { AXToolbarItem } from '../../../toolbar/toolbar-item';\r\nimport { AXToolbarMenuComponent } from '../../../toolbar/menu/toolbar-menu.component';\r\nimport { AXPopoverComponent } from '../../../popover/popover.component';\r\nimport { AXValueEvent } from '../../../base/events.class';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-scheduler-navigator',\r\n template: `\r\n <div id=\"nav\">\r\n <ax-toolbar-menu [items]=\"items\" (onItemClick)=\"onItemClick($event)\"></ax-toolbar-menu>\r\n <ax-popover target=\"#nav\" placement=\"bottom-end\" alignment=\"top-end\" #pop>\r\n <ax-calendar-box (onValueChanged)=\"onDateChange($event)\" [depth]=\"viewDepth\" #cal></ax-calendar-box>\r\n </ax-popover>\r\n</div>`,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarSchedulerNavigatorComponent }],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXToolbarSchedulerNavigatorComponent {\r\n constructor(private cdr: ChangeDetectorRef) { }\r\n\r\n @ViewChild(AXToolbarMenuComponent, { static: true })\r\n toolbar: AXToolbarMenuComponent;\r\n\r\n @ViewChild('pop', { static: true })\r\n pop: AXPopoverComponent;\r\n\r\n @ViewChild('cal', { static: true })\r\n cal: AXCalendarBoxComponent;\r\n\r\n viewDepth: string = 'day';\r\n\r\n\r\n items: AXMenuItem[] = [];\r\n\r\n ngAfterViewInit(): void {\r\n this.items = [\r\n {\r\n name: 'prev',\r\n startIcon: 'fas fa-angle-left',\r\n tooltip: 'Prev'\r\n },\r\n {\r\n name: 'today',\r\n text: 'Today',\r\n tooltip: 'Today'\r\n },\r\n {\r\n name: 'next',\r\n startIcon: 'fas fa-angle-right',\r\n tooltip: 'Next'\r\n },\r\n {\r\n name: 'current',\r\n\r\n }];\r\n }\r\n\r\n\r\n @Output()\r\n onNavigate: EventEmitter<'next' | 'back' | AXDateTime> = new EventEmitter<'next' | 'back' | AXDateTime>();\r\n\r\n onItemClick(e: AXMenuItem) {\r\n if (e.name === 'current') {\r\n this.pop.toggle();\r\n }\r\n else if (e.name === 'today') {\r\n this.goto(new AXDateTime());\r\n }\r\n else {\r\n this.onNavigate.emit(e.name as any);\r\n this.pop.close();\r\n }\r\n }\r\n\r\n\r\n onDateChange(e: AXValueEvent<AXDateTime>) {\r\n this.goto(e.value);\r\n }\r\n\r\n goto(date: AXDateTime) {\r\n this.onNavigate.emit(date);\r\n this.pop.close();\r\n }\r\n\r\n\r\n set(range: AXDateTimeRange, type: AXSchedulerViewType) {\r\n if (range) {\r\n let text: string = '';\r\n const calDate: AXDateTime = range.startTime;\r\n const sameDay = range.startTime.compaireNew(range.endTime, 'YMD') === 0;\r\n const sameMonth = range.startTime.compaireNew(range.endTime, 'YM') === 0;\r\n const sameYear = range.startTime.compaireNew(range.endTime, 'Y') === 0;\r\n if (type !== 'month' && sameDay) {\r\n text = range.startTime.format('MMMM DD, YYYY');\r\n }\r\n //\r\n else if (type !== 'month' && sameMonth && sameYear) {\r\n text = `${range.startTime.format('MMMM DD')} - ${range.endTime.format('DD, YYYY')}`;\r\n }\r\n else if (type !== 'month' && sameYear) {\r\n text = `${range.startTime.format('MMM DD')} - ${range.endTime.format('MMM DD, YYYY')}`;\r\n }\r\n else if (type !== 'month') {\r\n text = `${range.startTime.format('MMM DD, YYYY')} - ${range.endTime.format('MMM DD, YYYY')}`;\r\n }\r\n else if (type === 'month') {\r\n text = range.startTime.add('day', 15).format('MMMM YYYY');\r\n }\r\n this.items[3].text = text;\r\n if (type === 'month') {\r\n this.viewDepth = 'month';\r\n }\r\n else {\r\n this.viewDepth = 'day';\r\n }\r\n //\r\n this.cal.focusedValue = calDate;\r\n this.cal.navigate(calDate);\r\n this.pop.close();\r\n //\r\n this.toolbar.update();\r\n }\r\n }\r\n\r\n}\r\n","import { Component, ElementRef, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXSchedulerSlot } from '../../scheduler.class';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\n\r\n@Component({\r\n templateUrl: './scheduler-agenda-view.component.html',\r\n styleUrls: ['./scheduler-agenda-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerAgendaViewComponent }]\r\n})\r\nexport class AXSchedulerAgendaViewComponent extends AXSchedulerBaseViewComponent {\r\n constructor(\r\n private elm: ElementRef<HTMLDivElement>,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n hideEmptyDays: boolean = true;\r\n\r\n updateSize() {\r\n }\r\n\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n this.slots = [];\r\n for (let i = 0; i < this.interval; i++) {\r\n let d = date.addDay(i);\r\n const range = new AXDateTimeRange(d, d);\r\n const slot: AXSchedulerSlot = {\r\n range,\r\n events: this.getEvents(range, 'day')\r\n }\r\n if (this.hideEmptyDays && slot.events.length === 0) {\r\n continue;\r\n }\r\n this.slots.push(slot);\r\n }\r\n this.navigatorDate = date;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addDay(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addDay(-this.interval));\r\n }\r\n}\r\n","import { Component, OnInit, Input, ElementRef, ChangeDetectorRef, ViewEncapsulation } from '@angular/core';\r\nimport { AXSchedulerBaseViewComponent } from '../scheduler-view.component';\r\nimport { AXDateTime, AXDateTimeRange } from '@acorex/core';\r\nimport { AXSchedulerSlot } from '../../scheduler.class';\r\n\r\n@Component({\r\n templateUrl: './scheduler-timeline-view.component.html',\r\n styleUrls:['./scheduler-timeline-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXSchedulerBaseViewComponent, useExisting: AXSchedulerTimelineViewComponent }]\r\n})\r\nexport class AXSchedulerTimelineViewComponent extends AXSchedulerBaseViewComponent {\r\n constructor(private elm: ElementRef<HTMLDivElement>, private cdr: ChangeDetectorRef) { super(); }\r\n\r\n\r\n\r\n\r\n times: any[] = []\r\n\r\n //private hScroll: HTMLElement;\r\n private vScroll: HTMLElement;\r\n private container: HTMLElement;\r\n private view: HTMLElement;\r\n private header: HTMLElement;\r\n private body: HTMLElement;\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.vScroll = this.elm.nativeElement.querySelector<HTMLElement>(\".v-scroll\");\r\n //this.hScroll = this.elm.nativeElement.querySelector<HTMLElement>(\".h-scroll\");\r\n this.header = this.elm.nativeElement.querySelector<HTMLElement>(\".header\");\r\n this.body = this.elm.nativeElement.querySelector<HTMLElement>(\".body\");\r\n this.view = this.elm.nativeElement.querySelector<HTMLElement>(\".view\");\r\n\r\n this.container = this.elm.nativeElement.closest(\".view-container\") as HTMLElement;\r\n // this.hScroll.addEventListener(\"scroll\", () => {\r\n // this.updateSize();\r\n // });\r\n }\r\n\r\n\r\n updateSize(): void {\r\n // let firstTr = this.body.querySelector('tr');\r\n // if (firstTr) {\r\n // let index = 0;\r\n // this.header.querySelectorAll('th').forEach(c => {\r\n // let td = firstTr.children.item(index++) as HTMLElement;\r\n // td.style.width = `${c.offsetWidth}px`;\r\n // })\r\n // this.vScroll.style.height = `calc(100% - ${this.header.clientHeight}px)`;\r\n // //this.vScroll.style.width = `${this.hScroll.clientWidth + this.hScroll.scrollLeft}px`;\r\n // if (this.container)\r\n // this.view.style.height = `${this.container.clientHeight}px`;\r\n // }\r\n }\r\n\r\n navigate(date: AXDateTime = new AXDateTime()) {\r\n this.navigatorDate = date;\r\n this.times=[];\r\n this.slots = [];\r\n for (let i = 0; i < this.interval; i++) {\r\n let d = date.addDay(i);\r\n let range = new AXDateTimeRange(d, d);\r\n let slot: AXSchedulerSlot = {\r\n range: range,\r\n events: this.getEvents(range, \"day\")\r\n }\r\n this.slots.push(slot);\r\n }\r\n for (let i = 0; i < 24; i++) {\r\n this.times.push({\r\n display:('0' + i).slice(-2) + \":00\",\r\n value:i\r\n });\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n\r\n next(): void {\r\n this.navigate(this.navigatorDate.addDay(this.interval));\r\n }\r\n prev(): void {\r\n this.navigate(this.navigatorDate.addDay(-this.interval));\r\n }\r\n\r\n arrangeEvents()\r\n {\r\n \r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, ElementRef, ViewChild } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXToolbarItem } from '../toolbar-item';\r\nimport { AXValueEvent } from '../../base/events.class';\r\nimport { AXBaseInputComponent } from '../../base/element.class';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-search',\r\n templateUrl: './toolbar-search.component.html',\r\n styleUrls: ['./toolbar-search.component.scss'],\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarSearchComponent }]\r\n})\r\n\r\nexport class AXToolbarSearchComponent {\r\n constructor() { }\r\n\r\n private searchChangeObserver: any;\r\n\r\n @ViewChild('input', { static: true }) inputSearch: ElementRef;\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<string>> = new EventEmitter<AXValueEvent<string>>();\r\n\r\n private _text: string;\r\n @Input()\r\n public get text(): string {\r\n return this._text;\r\n }\r\n public set text(v: string) {\r\n if (v !== this._text) {\r\n const old = this._text;\r\n this._text = v;\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n public focus() {\r\n this.inputSearch.nativeElement.focus();\r\n }\r\n\r\n onSearchChanged(text: string) {\r\n if (!this.searchChangeObserver) {\r\n Observable.create(observer => {\r\n\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(500))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.text = c;\r\n });\r\n }\r\n this.searchChangeObserver.next(text);\r\n }\r\n}\r\n","import { EventEmitter } from '@angular/core';\r\n\r\n\r\n\r\nexport interface AXSortParams {\r\n field?: string;\r\n sort?: 'asc' | 'desc';\r\n}\r\nexport interface AXGroups {\r\n field?: string;\r\n}\r\n\r\nexport interface AXFilterParams {\r\n field?: string;\r\n filters?: AXFilterConditionParams[];\r\n}\r\n\r\nexport interface AXFilterConditionParams {\r\n dataType?: 'text' | 'number' | 'date';\r\n type?: 'contains' | 'equal' | 'notEqual';\r\n value?: any;\r\n}\r\n\r\nexport interface AXDataSourceReadParams {\r\n skip?: number;\r\n take?: number;\r\n sort?: AXSortParams;\r\n filter?: AXFilterParams[];\r\n searchText?: string;\r\n group?: AXDataSourceGroupParams;\r\n requestId?: any;\r\n extra?: any;\r\n}\r\n\r\nexport class AXDataSourceReceivedResult {\r\n result?: any;\r\n requestId?: any;\r\n}\r\n\r\nexport interface AXDataSourceGroupParams {\r\n parentData: any;\r\n keys: string[];\r\n fields: string[];\r\n}\r\n\r\n\r\nexport abstract class AXDataSourceRead {\r\n abstract fetch(params: AXDataSourceReadParams): void;\r\n abstract dataReceived: EventEmitter<any>;\r\n}","import { Component, ContentChild, EventEmitter, Input } from \"@angular/core\";\r\nimport { AXDataSourceReadParams, AXDataSourceRead, AXDataSourceReceivedResult } from './read-param';\r\nimport { AXBaseEvent, AXValueEvent } from '../base/events.class';\r\nimport { AXDataEvent } from '../base/events.class';\r\n\r\n\r\nexport class AXDataSourceReceivedEvent extends AXDataEvent<AXDataSourceReceivedResult>\r\n{\r\n\r\n}\r\n\r\n\r\n@Component({\r\n selector: \"ax-data-source\",\r\n template: \"<ng-content></ng-content>\"\r\n})\r\nexport class AXDataSourceComponent {\r\n\r\n onDataReceived: EventEmitter<AXDataSourceReceivedEvent> = new EventEmitter<AXDataSourceReceivedEvent>();\r\n onFetchStart: EventEmitter<AXBaseEvent> = new EventEmitter<AXBaseEvent>();\r\n\r\n @Input()\r\n provideData: (params: AXDataSourceReadParams) => Promise<any>;\r\n\r\n @Input()\r\n params: any;\r\n\r\n fetch(params: AXDataSourceReadParams) {\r\n this.onFetchStart.emit({ component: this });\r\n if (this.provideData) {\r\n if (params === null) {\r\n params = this.params === undefined ? null : this.params;\r\n } else {\r\n params.extra = this.params;\r\n }\r\n\r\n //\r\n this.provideData(params).then(_data => {\r\n const data: AXDataSourceReceivedResult = new AXDataSourceReceivedResult();\r\n data.result = _data;\r\n data.requestId = params == null ? null : params.requestId;\r\n this.onDataReceived.emit({\r\n component: this,\r\n data: data\r\n });\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n ContentChild,\r\n Input,\r\n ViewEncapsulation,\r\n ElementRef,\r\n ViewChild,\r\n ComponentRef,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n NgZone,\r\n ViewContainerRef\r\n} from '@angular/core';\r\nimport { AXSchedulerViewsProperty, AXSchedulerViewProperty } from './scheduler-views.property';\r\nimport { AXToolbarSchedulerViewsComponent } from './toolbars/scheduler-toolbar-views';\r\nimport { AXSchedulerDayTimeViewComponent } from './views/daytime/scheduler-daytime-view.component';\r\nimport { ComponentPortal, CdkPortalOutlet } from '@angular/cdk/portal';\r\nimport { AXSchedulerBaseViewComponent } from './views/scheduler-view.component';\r\nimport { AXSchedulerMonthViewComponent } from './views/month/scheduler-month-view.component';\r\nimport { AXToolbarSchedulerNavigatorComponent } from './toolbars/scheduler-toolbar-navigator';\r\nimport { AXSchedulerAgendaViewComponent } from './views/agenda/scheduler-agenda-view.component';\r\nimport { AXSchedulerTimelineViewComponent } from './views/timeline/scheduler-timeline-view.component';\r\nimport { AXSchedulerEventChangeArgs, AXSchedulerEvent } from './scheduler.class';\r\nimport { AXMenuItem, AXDateTime } from '@acorex/core';\r\nimport { AXToolbarSearchComponent } from '../../toolbar/search/toolbar-search.component';\r\nimport { AXDataSourceComponent } from '../../data-source/datasource.component';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-scheduler',\r\n templateUrl: './scheduler.component.html',\r\n styleUrls: ['./scheduler.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXSchedulerComponent {\r\n constructor(\r\n private elm: ElementRef<HTMLDivElement>,\r\n private zone: NgZone,\r\n private cdr: ChangeDetectorRef\r\n ) { }\r\n\r\n @ViewChild(CdkPortalOutlet, { static: true })\r\n private portalOutlet: CdkPortalOutlet\r\n\r\n\r\n @ViewChild('container', { static: true })\r\n private container: ElementRef<HTMLElement>;\r\n\r\n @ContentChild(AXSchedulerViewsProperty, { static: true })\r\n private viewManager: AXSchedulerViewsProperty;\r\n\r\n @ContentChild(AXToolbarSchedulerViewsComponent, { static: true })\r\n private toolbarView: AXToolbarSchedulerViewsComponent;\r\n @ContentChild(AXToolbarSchedulerNavigatorComponent, { static: true })\r\n private toolbarNavigator: AXToolbarSchedulerNavigatorComponent;\r\n\r\n @ContentChild(AXToolbarSearchComponent, { static: true })\r\n searchInput: AXToolbarSearchComponent;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private dataSource: AXDataSourceComponent;\r\n\r\n view: AXSchedulerBaseViewComponent;\r\n\r\n\r\n private _currentView: string;\r\n @Input()\r\n public get currentView(): string {\r\n return this._currentView;\r\n }\r\n public set currentView(v: string) {\r\n this.setView(v);\r\n }\r\n\r\n private viewItems: AXMenuItem[] = [];\r\n private today = new AXDateTime();\r\n private navigatorDate = new AXDateTime();\r\n searchText: string;\r\n\r\n @Input()\r\n events: AXSchedulerEvent[] = [];\r\n\r\n @Output()\r\n onEventChanged: EventEmitter<AXSchedulerEventChangeArgs> = new EventEmitter<AXSchedulerEventChangeArgs>();\r\n\r\n setView(name: string) {\r\n this._currentView = name;\r\n if (this.viewManager.views) {\r\n this.viewItems.forEach(c => {\r\n c.selected = false;\r\n });\r\n this.viewItems.find(c => c.name == name).selected = true;\r\n const selected = this.viewManager.views.find(c => c.name == name);\r\n this.createView(selected);\r\n }\r\n }\r\n\r\n\r\n private createView(selected: AXSchedulerViewProperty) {\r\n this.startAnim();\r\n if (this.view) {\r\n this.view.ngOnDestroy();\r\n }\r\n let portal: ComponentPortal<AXSchedulerBaseViewComponent>;\r\n this.portalOutlet.detach();\r\n let interval = selected.interval;\r\n if (selected.type === 'day') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerDayTimeViewComponent);\r\n }\r\n if (selected.type === 'week') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerDayTimeViewComponent);\r\n interval = selected.interval * 7;\r\n }\r\n if (selected.type === 'month') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerMonthViewComponent);\r\n }\r\n if (selected.type === 'agenda') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerAgendaViewComponent);\r\n }\r\n if (selected.type === 'timeline') {\r\n portal = new ComponentPortal<AXSchedulerBaseViewComponent>(AXSchedulerTimelineViewComponent);\r\n }\r\n const compRef: ComponentRef<AXSchedulerBaseViewComponent> = this.portalOutlet.attach(portal);\r\n this.view = compRef.instance;\r\n this.view.type = selected.type;\r\n this.view.interval = interval;\r\n //\r\n this.view.onEventChanged.subscribe(e => {\r\n this.onEventChanged.emit(e);\r\n });\r\n this.view.onNavigatorDateChanged.subscribe((e) => {\r\n this.navigatorDate = e;\r\n this.setNavigatorText();\r\n this.startAnim();\r\n });\r\n this.refresh();\r\n }\r\n\r\n private setNavigatorText() {\r\n if (this.toolbarNavigator) {\r\n this.toolbarNavigator.set(this.view.dateRange, this.view.type);\r\n }\r\n }\r\n\r\n private startAnim() {\r\n this.container.nativeElement.classList.remove('ax-anim-fade-in-fwd');\r\n this.container.nativeElement.style.opacity = '0';\r\n setTimeout(() => {\r\n this.container.nativeElement.classList.add('ax-anim-fade-in-fwd');\r\n }, 250);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(_ => {\r\n this.viewManager.views.forEach(v => {\r\n this.viewItems.push({\r\n groupName: 'view',\r\n name: v.name,\r\n text: v.caption\r\n });\r\n });\r\n //\r\n this.dataSource.onDataReceived.subscribe(e => {\r\n this.events = e;\r\n this.view.events = this.events;\r\n if (this.searchText && this.view.events && this.view.events.length) {\r\n this.navigatorDate = this.view.events[0].range.startTime;\r\n }\r\n if (this.navigatorDate) {\r\n this.view.navigate(this.navigatorDate);\r\n }\r\n else {\r\n this.view.navigate(this.today);\r\n }\r\n });\r\n //\r\n if (this.toolbarView) {\r\n this.toolbarView.onViewChanged.subscribe(c => {\r\n this.currentView = c;\r\n });\r\n this.toolbarView.items = this.viewItems;\r\n }\r\n //\r\n if (this.toolbarNavigator) {\r\n this.toolbarNavigator.onNavigate.subscribe(c => {\r\n if (c === 'next') {\r\n this.view.next();\r\n }\r\n else if (c === 'prev') {\r\n this.view.prev();\r\n }\r\n else {\r\n this.view.navigate(c);\r\n }\r\n });\r\n }\r\n if (this.searchInput) {\r\n this.searchInput.onValueChanged.subscribe(c => {\r\n this.searchText = c;\r\n if (c) {\r\n this.viewItems.forEach(c => { c.visible = false; });\r\n const x: AXSchedulerViewProperty = new AXSchedulerViewProperty('agenda', 'Search', 'VIEW_SEARCH');\r\n x.interval = 100;\r\n this.createView(x);\r\n this.refresh();\r\n }\r\n else {\r\n this.viewItems.forEach(c => { c.visible = true; });\r\n this.setView(this._currentView);\r\n }\r\n this.toolbarView.update();\r\n });\r\n }\r\n //\r\n this.setView(this.currentView);\r\n this.refresh();\r\n });\r\n }\r\n\r\n ngAfterViewChecked(): void {\r\n this.updateSize();\r\n }\r\n\r\n private updateSize() {\r\n this.zone.runOutsideAngular(() => {\r\n const toolbar = this.elm.nativeElement.querySelector<HTMLElement>(\r\n '.ax-scheduler-toolbar'\r\n );\r\n if (toolbar) {\r\n this.container.nativeElement.style.height = `calc(100% - ${toolbar.clientHeight}px)`;\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.portalOutlet.detach();\r\n }\r\n\r\n refresh() {\r\n this.dataSource.fetch({\r\n searchText: this.searchText,\r\n });\r\n }\r\n\r\n}\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar',\r\n templateUrl: './toolbar.component.html',\r\n styleUrls: ['./toolbar.component.scss'],\r\n encapsulation:ViewEncapsulation.None\r\n})\r\nexport class AXToolbarComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void { }\r\n \r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXToolbarItem } from '../toolbar-item';\r\n\r\n@Component({\r\n selector: 'ax-toolbar-title',\r\n template: `\r\n <ng-container *ngIf=\"text; else elseTemplate\">\r\n <div class=\"title\">{{text}}</div>\r\n </ng-container>\r\n <ng-template #elseTemplate>\r\n <ng-content></ng-content>\r\n </ng-template>`,\r\n styles: [`\r\n .title{\r\n height: 100%;\r\n display: flex;\r\n align-items: center;\r\n }\r\n `],\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarTitleComponent }]\r\n})\r\nexport class AXToolbarTitleComponent {\r\n constructor() { }\r\n\r\n private _text: string;\r\n @Input()\r\n public get text(): string {\r\n return this._text;\r\n }\r\n public set text(v: string) {\r\n if (v !== this._text) {\r\n this._text = v;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport { AXToolbarItem } from \"../toolbar-item\";\r\nimport { AXBaseMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: \"ax-toolbar-group-button\",\r\n template: `\r\n <div class=\"btn-group\" role=\"group\">\r\n <button\r\n type=\"button\"\r\n *ngFor=\"let item of items\"\r\n class=\"btn btn-sm {{ item.style }}\"\r\n [class.active]=\"item.selected\"\r\n (click)=\"onClick(item)\"\r\n [title]=\"item.tooltip\"\r\n >\r\n <i class=\"{{ item.icon }}\"></i>\r\n {{ item.text }}\r\n </button>\r\n </div>\r\n `,\r\n providers: [\r\n { provide: AXToolbarItem, useExisting: AXToolbarButtonGroupComponent }\r\n ]\r\n})\r\nexport class AXToolbarButtonGroupComponent {\r\n constructor() { }\r\n\r\n @Input()\r\n items: AXBaseMenuItem[] = [];\r\n\r\n @Output()\r\n itemClick: EventEmitter<AXBaseMenuItem> = new EventEmitter<AXBaseMenuItem>();\r\n\r\n @Input()\r\n mode: \"single\" | \"multiple\" = \"single\";\r\n\r\n onClick(item: AXBaseMenuItem) {\r\n if (this.mode == \"single\") {\r\n this.items.forEach(c => {\r\n c.selected = false;\r\n });\r\n item.selected = true;\r\n this.itemClick.emit(item);\r\n } else {\r\n if (item.selected) {\r\n item.selected = false;\r\n } else {\r\n item.selected = true;\r\n this.itemClick.emit(item);\r\n }\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ViewContainerRef,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { SubItemsEvent } from './menu-item.component';\r\nimport { Overlay, OverlayRef, ConnectedPosition } from '@angular/cdk/overlay';\r\nimport { TemplatePortal, ComponentPortal } from '@angular/cdk/portal';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-menu2',\r\n template: `\r\n <div class=\"ax ax-menu ax-menu-vertical\" [attr.data-level]=\"level\">\r\n <ax-menu-item\r\n *ngFor=\"let item of items\"\r\n [level]=\"level\"\r\n [item]=\"item\"\r\n (showSubMenu)=\"showSubmenu($event)\">\r\n </ax-menu-item>\r\n </div>\r\n `,\r\n styleUrls: ['./menu2.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXMenu2Component implements OnDestroy {\r\n subItemsOverlays = new Array<OverlayRef>();\r\n level: number = 0;\r\n\r\n @Input() items: AXMenuItem[];\r\n @Output() selected = new EventEmitter<AXMenuItem>();\r\n //@ViewChild(TemplateRef) template;\r\n\r\n constructor(\r\n private overlay: Overlay,\r\n private viewContainerRef: ViewContainerRef,\r\n private elementRef: ElementRef\r\n ) { }\r\n\r\n showSubmenu(event: SubItemsEvent) {\r\n const position: ConnectedPosition[] = [];\r\n if (event.level === 0) {\r\n position.push({\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n });\r\n } else {\r\n position.push({\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n });\r\n }\r\n\r\n const positionStrategy = this.overlay\r\n .position()\r\n .flexibleConnectedTo(event.element)\r\n .withPositions(position);\r\n const overlayRef = this.overlay.create({\r\n positionStrategy,\r\n hasBackdrop: false,\r\n backdropClass: 'cdk-overlay-transparent-backdrop'\r\n });\r\n this.subItemsOverlays.push(overlayRef);\r\n const portal = new ComponentPortal(AXMenu2Component, this.viewContainerRef);\r\n\r\n const com = overlayRef.attach(portal);\r\n com.instance.level = event.level + 1;\r\n com.instance.items = event.item.items;\r\n }\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n public onDocumentClick(target) {\r\n const clickedInside = this.elementRef.nativeElement.contains(target);\r\n if (!clickedInside) {\r\n this.hideOverlays();\r\n }\r\n }\r\n\r\n hideOverlays() {\r\n this.subItemsOverlays.forEach((o) => o.dispose());\r\n this.subItemsOverlays.length = 0;\r\n }\r\n ngOnDestroy() {\r\n this.hideOverlays();\r\n }\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-menu-item',\r\n template: `\r\n <div class=\"ax-menu-item {{item.style}}\" [attr.data-level]=\"level\" (click)=\"showSubItems($event)\" [ngClass]=\"{'disabled': item.disable}\" >\r\n <i *ngIf=\"item.startIcon\" class=\"icon {{item.startIcon}}\"></i>\r\n <span class=\"text\">{{ item.text }}</span>\r\n <i *ngIf=\"item.endIcon\" class=\"icon {{item.endIcon}}\"></i>\r\n <i class=\"far fa-angle-down icon drop-icon\" *ngIf=\"item?.items?.length && item.text\"></i>\r\n </div>\r\n `,\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXMenuItemComponent {\r\n @Input() item: AXMenuItem;\r\n @Input() level: number;\r\n @Output() showSubMenu = new EventEmitter<SubItemsEvent>();\r\n\r\n constructor(private element: ElementRef) { }\r\n\r\n showSubItems(event: Event) {\r\n event.stopPropagation();\r\n if (this.item?.items?.length) {\r\n this.showSubMenu.emit({ item: this.item, element: this.element, level: this.level });\r\n }\r\n }\r\n}\r\nexport interface SubItemsEvent {\r\n element: ElementRef;\r\n item: AXMenuItem;\r\n level: number;\r\n}\r\n","import { Directive, Input, ElementRef, HostListener, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[axTooltip]'\r\n})\r\nexport class AXTooltipDirective {\r\n @Input('tooltip') tooltipTitle: string;\r\n @Input() placement: string = 'top';\r\n @Input() delay: number = 500;\r\n tooltip: HTMLElement;\r\n offset = 17;\r\n\r\n constructor(private el: ElementRef, private renderer: Renderer2) {\r\n \r\n }\r\n\r\n\r\n @HostListener('mouseenter') onMouseEnter() {\r\n if (!this.tooltip) {\r\n this.show();\r\n }\r\n }\r\n\r\n @HostListener('mouseleave') onMouseLeave() {\r\n if (this.tooltip) {\r\n this.hide();\r\n }\r\n }\r\n\r\n show() {\r\n this.create();\r\n this.setPosition();\r\n this.renderer.addClass(this.tooltip, 'ax-tooltip-show');\r\n }\r\n\r\n hide() {\r\n if (this.tooltip) {\r\n try {\r\n this.renderer.removeClass(this.tooltip, 'ax-tooltip-show');\r\n this.renderer.removeChild(document.body, this.tooltip);\r\n this.tooltip = null;\r\n } catch (error) {}\r\n }\r\n }\r\n\r\n create() {\r\n if(this.tooltipTitle){\r\n this.tooltip = this.renderer.createElement('span');\r\n\r\n this.renderer.appendChild(\r\n this.tooltip,\r\n this.renderer.createText(this.tooltipTitle) // textNode\r\n );\r\n\r\n this.renderer.appendChild(document.body, this.tooltip);\r\n\r\n this.renderer.addClass(this.tooltip, 'ax-tooltip');\r\n this.renderer.addClass(this.tooltip, `ax-tooltip-${this.placement}`);\r\n this.renderer.setStyle(this.tooltip, '-webkit-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-moz-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, '-o-transition', `opacity ${this.delay}ms`);\r\n this.renderer.setStyle(this.tooltip, 'transition', `opacity ${this.delay}ms`);\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.hide();\r\n }\r\n\r\n setPosition() {\r\n const hostPos = this.el.nativeElement.getBoundingClientRect();\r\n\r\n const tooltipPos = this.tooltip.getBoundingClientRect();\r\n\r\n const scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\r\n\r\n let top;\r\n let left;\r\n\r\n if (this.placement === 'top') {\r\n top = hostPos.top - tooltipPos.height - this.offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n }\r\n\r\n if (this.placement === 'bottom') {\r\n top = hostPos.bottom + this.offset;\r\n left = hostPos.left + (hostPos.width - tooltipPos.width) / 2;\r\n }\r\n\r\n if (this.placement === 'left') {\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.left - tooltipPos.width - this.offset;\r\n }\r\n\r\n if (this.placement === 'right') {\r\n top = hostPos.top + (hostPos.height - tooltipPos.height) / 2;\r\n left = hostPos.right + this.offset;\r\n }\r\n\r\n this.renderer.setStyle(this.tooltip, 'top', `${top + scrollPos}px`);\r\n this.renderer.setStyle(this.tooltip, 'left', `${left}px`);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTooltipDirective } from './tooltip.directive';\r\n\r\n@NgModule({\r\n declarations: [AXTooltipDirective],\r\n imports: [ CommonModule ],\r\n exports: [AXTooltipDirective],\r\n providers: [],\r\n})\r\nexport class AXTooltipModule {}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXMenuComponent } from './menu.component';\r\nimport { AXMenu2Component } from './menu2.component';\r\nimport { AXMenuItemComponent } from './menu-item.component';\r\nimport { AXTooltipModule } from '../tooltip/tooltip.module';\r\n@NgModule({\r\n declarations: [AXMenuComponent, AXMenu2Component, AXMenuItemComponent],\r\n imports: [CommonModule,AXTooltipModule],\r\n exports: [AXMenuComponent, AXMenu2Component, AXMenuItemComponent],\r\n providers: []\r\n})\r\nexport class AXMenuModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToolbarComponent } from './toolbar.component';\r\nimport { AXToolbarMenuComponent } from './menu/toolbar-menu.component';\r\nimport { AXToolbarSearchComponent } from './search/toolbar-search.component';\r\nimport { AXToolbarTitleComponent } from './title/toolbar-title.component';\r\nimport { AXToolbarButtonGroupComponent } from './group-button/toolbar-group-button.component';\r\nimport { AXPopoverModule } from '../popover/popover.module';\r\nimport { AXMenuModule } from '../menu/menu.module';\r\n\r\nconst COMPONENTS = [\r\n AXToolbarComponent,\r\n AXToolbarMenuComponent,\r\n AXToolbarSearchComponent,\r\n AXToolbarTitleComponent,\r\n AXToolbarButtonGroupComponent\r\n]\r\n\r\n@NgModule({\r\n declarations: [COMPONENTS],\r\n imports: [CommonModule, AXPopoverModule, AXMenuModule],\r\n exports: [COMPONENTS],\r\n providers: [],\r\n})\r\nexport class AXToolbarModule { }","import { NgModule } from '@angular/core';\r\nimport { AXSchedulerComponent } from './scheduler.component';\r\nimport { AXSchedulerViewsProperty, AXSchedulerViewProperty } from './scheduler-views.property';\r\nimport { AXSchedulerDayTimeViewComponent } from './views/daytime/scheduler-daytime-view.component';\r\nimport { AXToolbarSchedulerViewsComponent } from './toolbars/scheduler-toolbar-views';\r\nimport { AXCoreModule } from '@acorex/core';\r\nimport { AXSchedulerMonthViewComponent } from './views/month/scheduler-month-view.component';\r\nimport { PortalModule } from '@angular/cdk/portal';\r\nimport { AXToolbarSchedulerNavigatorComponent } from './toolbars/scheduler-toolbar-navigator';\r\nimport { AXSchedulerAgendaViewComponent } from './views/agenda/scheduler-agenda-view.component';\r\nimport { AXSchedulerTimelineViewComponent } from './views/timeline/scheduler-timeline-view.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { AXCalendarBoxModule } from '../calendar-box/calendar-box.module';\r\n\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToolbarModule } from '../../toolbar/toolbar.module';\r\nimport { AXPopoverModule } from '../../popover/popover.module';\r\n\r\n@NgModule({\r\n declarations: [\r\n AXSchedulerComponent,\r\n AXSchedulerViewsProperty,\r\n AXSchedulerViewProperty,\r\n AXSchedulerDayTimeViewComponent,\r\n AXSchedulerMonthViewComponent,\r\n AXSchedulerAgendaViewComponent,\r\n AXSchedulerTimelineViewComponent,\r\n AXToolbarSchedulerViewsComponent,\r\n AXToolbarSchedulerNavigatorComponent\r\n ],\r\n imports: [CommonModule,AXCoreModule, AXCalendarBoxModule, AXToolbarModule, AXPopoverModule, PortalModule, DragDropModule],\r\n exports: [\r\n AXSchedulerComponent,\r\n AXSchedulerViewsProperty,\r\n AXSchedulerViewProperty,\r\n AXSchedulerDayTimeViewComponent,\r\n AXSchedulerMonthViewComponent,\r\n AXSchedulerAgendaViewComponent,\r\n AXSchedulerTimelineViewComponent,\r\n AXToolbarSchedulerViewsComponent,\r\n AXToolbarSchedulerNavigatorComponent\r\n ],\r\n entryComponents: [\r\n AXSchedulerMonthViewComponent,\r\n AXSchedulerDayTimeViewComponent,\r\n AXSchedulerAgendaViewComponent,\r\n AXSchedulerTimelineViewComponent\r\n ],\r\n providers: [],\r\n})\r\nexport class AXSchedulerModule { }","import {\r\n Component,\r\n ViewEncapsulation,\r\n Output,\r\n EventEmitter,\r\n Input,\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n ViewChild,\r\n ElementRef\r\n} from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXBaseValueComponent, AXElementSize } from '../base/element.class';\r\nimport { AXValueEvent, AXHtmlEvent } from '../base/events.class';\r\n\r\nexport class AXCheckBoxItemClick extends AXHtmlEvent<MouseEvent> {\r\n value?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-check-box',\r\n templateUrl: './checkbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXCheckBoxComponent extends AXBaseComponent implements AXBaseSizableComponent, AXBaseValueComponent<boolean> {\r\n @ViewChild('input', { static: true }) input: ElementRef<HTMLInputElement>;\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n disabled: boolean = false;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n label: string = '';\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n @Input()\r\n indeterminate: boolean = false;\r\n\r\n focus(): void {}\r\n constructor(protected cdr: ChangeDetectorRef, private ref: ElementRef) {\r\n super();\r\n }\r\n // Value\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<boolean>> = new EventEmitter<AXValueEvent<boolean>>();\r\n @Output()\r\n valueChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n //\r\n @Output()\r\n onClick: EventEmitter<AXCheckBoxItemClick> = new EventEmitter<AXCheckBoxItemClick>();\r\n\r\n private _value?: boolean = false;\r\n public get value(): boolean {\r\n return this._value;\r\n }\r\n\r\n @Input()\r\n public set value(v: boolean) {\r\n if (v != this._value || v !== undefined) {\r\n const old = this._value;\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n // handelChange(e) {\r\n // const val = e.target.checked;\r\n // this.value = val;\r\n // }\r\n\r\n ngOnInit(): void {\r\n if (!this.indeterminate && this.value == null) {\r\n this.value = false;\r\n }\r\n }\r\n\r\n handleClick(e: MouseEvent) {\r\n // e.preventDefault();\r\n // e.stopPropagation();\r\n setTimeout(() => {\r\n if (!this.disabled && !this.readonly) {\r\n //TODO: check intermddiate;\r\n // this.value = !this.value;\r\n this.onClick.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n htmlEvent: e,\r\n value: this.value\r\n });\r\n }\r\n }, 100);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXCheckBoxComponent } from './checkbox.component';\r\n@NgModule({\r\n declarations: [AXCheckBoxComponent],\r\n imports: [CommonModule, FormsModule],\r\n exports: [AXCheckBoxComponent],\r\n providers: []\r\n})\r\nexport class AXCheckBoxModule { }\r\n","import { Component, Input, ElementRef, HostListener, ViewChild, Output, EventEmitter } from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\nimport { AXElementSize } from '../base/element.class';\r\nimport { AXBaseEvent } from '../base/events.class';\r\n\r\n@Component({\r\n selector: 'ax-context-menu',\r\n templateUrl: './context-menu.component.html',\r\n host: { class: 'ax context-menu-container' }\r\n})\r\nexport class AXContextMenuComponent {\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n width: number;\r\n\r\n @Input()\r\n items: AXMenuItem[] = [];\r\n\r\n @Output()\r\n onItemClick: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onClosed: EventEmitter<AXBaseEvent> = new EventEmitter<AXBaseEvent>();\r\n\r\n @ViewChild('contex')\r\n contex: ElementRef<HTMLUListElement>;\r\n\r\n\r\n\r\n show: boolean = false;\r\n\r\n constructor(private container: ElementRef) {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n }\r\n\r\n close() {\r\n this.show = false;\r\n this.onClosed.emit({\r\n component: this\r\n });\r\n }\r\n\r\n\r\n\r\n open(_left, _top, _rtl = false) {\r\n this.show = true;\r\n setTimeout(() => {\r\n const containRec = this.container.nativeElement.getBoundingClientRect();\r\n let left = _rtl === false ? _left : _left - containRec.width;\r\n let top = _top;\r\n if (_rtl === false && _left + containRec.width > window.innerWidth) {\r\n left = window.innerWidth - containRec.width;\r\n } else if (_rtl === true && _left - containRec.width < 0) {\r\n left = 0;\r\n }\r\n if (top + containRec.height > window.innerHeight) {\r\n top = _top - containRec.height;\r\n }\r\n this.container.nativeElement.style.left = left + 'px';\r\n this.container.nativeElement.style.top = top + 'px';\r\n\r\n }, 5);\r\n\r\n\r\n }\r\n\r\n\r\n\r\n handleClickItem(item: AXMenuItem) {\r\n if (!item.disable || item.disable === undefined) {\r\n this.onItemClick.emit(item);\r\n }\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input, Output, EventEmitter, ComponentFactoryResolver, Injector, ViewContainerRef } from '@angular/core';\r\nimport { AXMenuItem } from '@acorex/core';\r\nimport { AXBaseEvent } from '../base/events.class';\r\nimport { AXContextMenuComponent } from './context-menu.component';\r\nimport { Subscription } from 'rxjs';\r\n\r\nexport type AXContextMenuPromiseFunction = (item: any) => Promise<AXMenuItem[]>;\r\nexport type AXContextMenuFunction = (item: any) => AXMenuItem[];\r\nexport class AXContextMenuItemClickEvent extends AXBaseEvent {\r\n dataItem?: any;\r\n menuItem: AXMenuItem;\r\n}\r\n\r\n@Directive({\r\n selector: '[axContextMenu]'\r\n})\r\nexport class AXContextMenuDirective {\r\n @Input()\r\n contextMenu: AXContextMenuComponent;\r\n\r\n @Input()\r\n contextDataItem: any;\r\n\r\n @Input()\r\n contextMenuItems: AXMenuItem[] | AXContextMenuPromiseFunction | AXContextMenuFunction;\r\n\r\n @Output()\r\n onContextMenuItemClick: EventEmitter<AXContextMenuItemClickEvent> = new EventEmitter<AXContextMenuItemClickEvent>();\r\n\r\n @Input()\r\n rtl: boolean = false;\r\n\r\n internalItems: AXMenuItem[] = [];\r\n\r\n private clickSubscribe: Subscription;\r\n private closeSubscribe: Subscription;\r\n\r\n @HostListener('contextmenu', ['$event'])\r\n onContextMenu(e: MouseEvent) {\r\n this.getMenuItems().then(items => {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n this.createContextMenu();\r\n this.contextMenu.items = items;\r\n\r\n\r\n this.contextMenu.open(e.x, e.y, this.rtl);\r\n\r\n\r\n });\r\n }\r\n\r\n\r\n\r\n constructor(\r\n private ref: ElementRef,\r\n private factoryResolver: ComponentFactoryResolver,\r\n private viewContainerRef: ViewContainerRef,\r\n private injector: Injector\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n createContextMenu(): void {\r\n const wrapper = document.createElement('div');\r\n wrapper.classList.add('ax-overlay-wrapper');\r\n wrapper.addEventListener('click', this.wrapperClick.bind(this));\r\n wrapper.addEventListener('contextmenu', this.wrapperRClick.bind(this));\r\n //\r\n document.body.appendChild(wrapper);\r\n const factory = this.factoryResolver.resolveComponentFactory(AXContextMenuComponent);\r\n const componentRef = this.viewContainerRef.createComponent(factory);\r\n this.contextMenu = componentRef.instance;\r\n wrapper.appendChild(componentRef.location.nativeElement);\r\n //\r\n this.clearComponentSubscriptions();\r\n this.createComponentSubscriptions();\r\n }\r\n\r\n wrapperClick(e: MouseEvent) {\r\n this.remove();\r\n }\r\n\r\n wrapperRClick(e: MouseEvent) {\r\n if (document.elementsFromPoint(e.clientX, e.clientY).includes(this.ref.nativeElement)) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n this.contextMenu.open(e.x, e.y, this.rtl);\r\n }\r\n else {\r\n e.preventDefault();\r\n this.remove();\r\n }\r\n }\r\n\r\n\r\n\r\n private clearComponentSubscriptions() {\r\n if (this.clickSubscribe) {\r\n this.clickSubscribe.unsubscribe();\r\n this.clickSubscribe = undefined;\r\n }\r\n if (this.closeSubscribe) {\r\n this.closeSubscribe.unsubscribe();\r\n this.closeSubscribe = undefined;\r\n }\r\n }\r\n\r\n private createComponentSubscriptions() {\r\n this.clickSubscribe = this.contextMenu.onItemClick.subscribe(c => {\r\n this.remove();\r\n this.onContextMenuItemClick.emit({\r\n component: this,\r\n dataItem: this.contextDataItem,\r\n htmlElement: this.ref.nativeElement,\r\n menuItem: c\r\n });\r\n });\r\n this.closeSubscribe = this.contextMenu.onClosed.subscribe(c => {\r\n this.clearComponentSubscriptions();\r\n });\r\n }\r\n\r\n private remove() {\r\n this.viewContainerRef.clear();\r\n this.clearComponentSubscriptions();\r\n document.querySelector('.ax-overlay-wrapper')?.remove();\r\n }\r\n\r\n private getMenuItems(): Promise<AXMenuItem[]> {\r\n return new Promise<AXMenuItem[]>((resolve, reject) => {\r\n if (typeof (this.contextMenuItems) === 'function') {\r\n const val = this.contextMenuItems(this.contextDataItem);\r\n if (val instanceof Promise) {\r\n val.then(_data => {\r\n resolve(_data);\r\n });\r\n } else {\r\n resolve(val);\r\n }\r\n } else if (Array.isArray(this.contextMenuItems)) {\r\n resolve(this.contextMenuItems);\r\n }\r\n else {\r\n resolve([]);\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.clearComponentSubscriptions();\r\n }\r\n}\r\n","import { NgModule, Input } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXContextMenuComponent } from './context-menu.component';\r\nimport { AXContextMenuDirective } from './context-menu.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXContextMenuComponent, AXContextMenuDirective],\r\n imports: [CommonModule],\r\n exports: [AXContextMenuComponent, AXContextMenuDirective],\r\n providers: [],\r\n})\r\nexport class AXContextMenuModule {\r\n\r\n}","import { Input, ChangeDetectorRef, EventEmitter, Output, Directive } from '@angular/core';\r\n\r\nexport interface AXFilterColumn {\r\n field: string;\r\n caption: string;\r\n type?: 'text' | 'selection' | 'date' | 'number';\r\n options?: any;\r\n}\r\n\r\nexport interface AXFilterColumnGroup {\r\n caption?: string;\r\n columns: AXFilterColumn[];\r\n}\r\n\r\nexport interface AXFilterCondition {\r\n field: string;\r\n condition: string;\r\n dataType: 'string' | 'date' | 'datetime' | 'time' | 'number';\r\n value: any;\r\n}\r\n\r\nexport interface AXFilterPredefined {\r\n name: string;\r\n title: string;\r\n value: AXFilterCondition[];\r\n}\r\n\r\n@Directive()\r\nexport abstract class AXFilterColumnComponent {\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n\r\n }\r\n operator: string = 'equal';\r\n value: any = null;\r\n @Input()\r\n field: string = null;\r\n\r\n @Output()\r\n valueChange: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\r\n @Output()\r\n activeChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n private _active: boolean;\r\n @Input()\r\n public get active(): boolean {\r\n return this._active;\r\n }\r\n public set active(v: boolean) {\r\n this._active = v;\r\n this.activeChange.emit(v);\r\n }\r\n\r\n\r\n abstract get condition(): AXFilterCondition;\r\n\r\n clear() {\r\n this.active = false;\r\n this.value = null;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setFilter(value: any, operator: string) {\r\n this.active = true;\r\n this.operator = operator;\r\n this.value = value;\r\n this.cdr.detectChanges();\r\n }\r\n}\r\n\r\n\r\n","import { Component, Input, ChangeDetectionStrategy, ChangeDetectorRef, ViewEncapsulation, EventEmitter } from '@angular/core';\r\nimport { Output } from '@angular/core';\r\nimport { AXSelectionList } from '@acorex/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXBaseValueComponent, AXElementSize } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-selection-list',\r\n templateUrl: './selection-list.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXSelectionListComponent extends AXBaseComponent\r\n implements AXBaseSizableComponent {\r\n private _selectedItems: any[] = [];\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n value: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n direction: string = 'horizontal';\r\n\r\n @Input()\r\n items: Array<AXSelectionList> = [];\r\n\r\n @Input()\r\n mode: string = 'single';\r\n\r\n @Input()\r\n textField: string = 'text';\r\n\r\n @Input()\r\n valueField: string = 'value';\r\n\r\n @Output()\r\n selectedItemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Input()\r\n public get selectedItems(): any[] {\r\n return this._selectedItems || [];\r\n }\r\n public set selectedItems(v: any[]) {\r\n this._selectedItems = v;\r\n this.selectedItemsChange.emit(this.selectedItems);\r\n this.cdr.detectChanges();\r\n }\r\n\r\n @Output()\r\n selectedValuesChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Input()\r\n public get selectedValues(): any[] {\r\n return this._selectedItems.map(c => c[this.valueField]) || [];\r\n }\r\n public set selectedValues(v: any[]) {\r\n const old = this.selectedValues;\r\n if (v == null) {\r\n v = [];\r\n }\r\n if (JSON.stringify(old) != JSON.stringify(v)) {\r\n this.selectedItems = this.items.filter(c => v.includes(c[this.valueField]));\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.cdr.detectChanges();\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n onCheckValueChange(value: any, checked: boolean) {\r\n if(!this.disabled){\r\n if (this.mode === 'single') {\r\n this.selectedValues = [value];\r\n } else {\r\n if (checked) {\r\n if (!this.selectedValues.includes(value)) {\r\n this.selectedValues = [...this.selectedValues, ...[value]];\r\n }\r\n } else {\r\n this.selectedValues = this.selectedValues.filter(c => c !== value);\r\n }\r\n }\r\n }\r\n \r\n }\r\n focus(): void {\r\n }\r\n\r\n onvalueChanged(e) {\r\n if(!this.disabled){\r\n this.selectedItemsChange.emit([e]);\r\n\r\n }\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, ChangeDetectorRef, ViewChild, EventEmitter, Output } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { AXDateTime } from '@acorex/core';\r\nimport { AXSelectionListComponent } from '../../selection-list/selection-list.component';\r\n\r\n@Component({\r\n selector: 'ax-filter-column-date',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <ax-selection-list [items]=\"items\" mode=\"single\" direction=\"vertical\" (selectedItemsChange)=\"onSelectedChanged($event)\">\r\n </ax-selection-list>\r\n </div>\r\n <div class=\"ax-filter-section-value\" [hidden]=\"!showCustom\">\r\n <ax-date-picker label=\"From\" [(value)]=\"fromDate\" (onValueChanged)=\"dateChange($event)\"></ax-date-picker>\r\n <ax-date-picker label=\"To\" [(value)]=\"toDate\" (onValueChanged)=\"dateChange($event)\"></ax-date-picker>\r\n </div>\r\n <div class=\"ax-filter-section-value\" [hidden]=\"!showSpecific\">\r\n <ax-date-picker label=\"Date\" [(value)]=\"fromDate\" (onValueChanged)=\"dateChange($event)\"></ax-date-picker> \r\n </div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnDateComponent }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXFilterColumnDateComponent extends AXFilterColumnComponent {\r\n @ViewChild(AXSelectionListComponent, { static: true }) selection: AXSelectionListComponent;\r\n\r\n items: any = [\r\n {\r\n text: 'Today',\r\n value: 'today'\r\n },\r\n {\r\n text: 'This Week',\r\n value: 'this-week'\r\n },\r\n {\r\n text: 'This Month',\r\n value: 'this-month'\r\n },\r\n {\r\n text: 'This Year',\r\n value: 'this-year'\r\n },\r\n {\r\n text: 'Specific',\r\n value: 'specific'\r\n },\r\n {\r\n text: 'Range',\r\n value: 'range'\r\n }\r\n ];\r\n\r\n fromDate: AXDateTime = new AXDateTime();\r\n toDate: AXDateTime = new AXDateTime();\r\n\r\n selectedItem: any = null;\r\n\r\n showCustom: boolean = false;\r\n showSpecific: boolean = false;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.selection.selectedItems = [this.items[0]];\r\n }\r\n dateChange(e) {\r\n this.valueChange.emit();\r\n }\r\n onSelectedChanged(items: any[]) {\r\n\r\n this.selectedItem = items[0];\r\n this.showCustom = this.selectedItem && this.selectedItem.value == 'range';\r\n this.showSpecific = this.selectedItem && this.selectedItem.value == 'specific';\r\n this.cdr.detectChanges();\r\n this.valueChange.emit();\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n let today = new AXDateTime();\r\n switch (this.selectedItem.value) {\r\n case 'today':\r\n this.fromDate = this.toDate = today;\r\n\r\n return {\r\n condition: 'equal',\r\n field: this.field,\r\n dataType: 'date',\r\n value: this.fromDate.toISOString()\r\n }\r\n case 'specific':\r\n return {\r\n condition: 'equal',\r\n field: this.field,\r\n dataType: 'date',\r\n value: this.fromDate.toISOString()\r\n }\r\n case 'this-week':\r\n this.toDate = today.endOf('week');\r\n this.fromDate = today.startOf('week');\r\n break;\r\n case 'this-month':\r\n this.toDate = today.endOf('month')\r\n this.fromDate = today.startOf('month');\r\n break;\r\n case 'this-year':\r\n this.toDate = today.endOf('year')\r\n this.fromDate = today.startOf('year');\r\n break;\r\n }\r\n\r\n return {\r\n condition: 'between',\r\n field: this.field,\r\n dataType: 'date',\r\n value: [this.fromDate.toISOString(), this.toDate.toISOString()]\r\n }\r\n }\r\n}\r\n","import { Component, ChangeDetectorRef } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'ax-filter-column-number',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <div>\r\n <select (ngModelChange)=\"onOperatorChange($event)\" class=\"form-control form-control-sm\" [(ngModel)]=\"operator\">\r\n <option *ngFor=\"let o of operators\" value=\"{{o.value}}\">\r\n {{o.title}}\r\n </option>\r\n </select>\r\n </div>\r\n <div>\r\n <ax-text-box placeholder=\"Type here\" (textChange)=\"onTextChange($event)\" [(value)]=\"value\" *ngIf=\"operator!='is-not-empty' && operator!='is-empty'\">\r\n </ax-text-box>\r\n </div>\r\n</div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnNumberComponent }\r\n ]\r\n})\r\nexport class AXFilterColumnNumberComponent extends AXFilterColumnComponent {\r\n\r\n operator: string = 'equal';\r\n\r\n operators: any[] = [\r\n {\r\n title: 'is',\r\n value: 'equal'\r\n },\r\n {\r\n title: `isn't`,\r\n value: 'not-equal'\r\n },\r\n {\r\n title: 'less than',\r\n value: 'less-than'\r\n },\r\n {\r\n title: 'less than or equal',\r\n value: 'less-than-equal'\r\n },\r\n {\r\n title: 'greater than',\r\n value: 'greater-than'\r\n },\r\n {\r\n title: 'greater than or equal',\r\n value: 'greater-than-equal'\r\n },\r\n {\r\n title: 'is empty',\r\n value: 'is-empty'\r\n },\r\n {\r\n title: `isn't empty`,\r\n value: 'is-not-empty'\r\n }\r\n ];\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n private searchChangeObserver: any;\r\n onOperatorChange(e) {\r\n\r\n this.valueChange.emit();\r\n\r\n }\r\n onTextChange(e) {\r\n // TODO: Check this method work correctly\r\n if (!this.searchChangeObserver) {\r\n return new Observable(observer => {\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(500))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.valueChange.emit();\r\n });\r\n }\r\n this.searchChangeObserver.next(e);\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n return {\r\n condition: this.operator,\r\n field: this.field,\r\n dataType: 'number',\r\n value: this.value\r\n };\r\n }\r\n\r\n}\r\n","import { Component, Input, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { AXCheckItem } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-filter-column-selection',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <ax-selection-list [items]=\"items\" (selectedItemsChange)=\"onSelectChange($event)\" [mode]=\"mode\" direction=\"vertical\" [(selectedItems)]=\"selectedItems\">\r\n </ax-selection-list>\r\n </div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnSelectionComponent }\r\n ],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXFilterColumnSelectionComponent extends AXFilterColumnComponent {\r\n\r\n\r\n selectedItems: any[] = [];\r\n\r\n @Input()\r\n items: AXCheckItem[] = [];\r\n\r\n @Input()\r\n mode = 'single';\r\n\r\n @Input()\r\n dataType: any = 'number';\r\n\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n const values = this.selectedItems.map(c => c.value);\r\n if (values.length === 0) {\r\n return null;\r\n\r\n }\r\n return {\r\n condition: this.mode === 'single' ? 'equal' : 'contains',\r\n field: this.field,\r\n dataType: this.dataType,\r\n value: this.mode === 'single' ? values[0] : values\r\n }\r\n }\r\n clear() {\r\n this.selectedItems = [];\r\n super.clear();\r\n }\r\n onSelectChange(e) {\r\n this.valueChange.emit();\r\n\r\n }\r\n\r\n setFilter(value: any, operator: string) {\r\n if (value instanceof Array) {\r\n this.selectedItems = this.items.filter(c => value.some(z => z === c.value));\r\n }\r\n else {\r\n this.selectedItems = [this.items.find(c => c.value === value)];\r\n }\r\n super.setFilter(value, operator);\r\n }\r\n}\r\n","import { Component,ChangeDetectorRef } from '@angular/core';\r\nimport { AXFilterCondition, AXFilterColumnComponent } from '../filter.class';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { Observable } from 'rxjs';\r\n@Component({\r\n selector: 'ax-filter-column-string',\r\n template: `\r\n <div class=\"ax-filter-section\">\r\n <div>\r\n <select (ngModelChange)=\"onOperatorChange($event)\" class=\"form-control form-control-sm\" [(ngModel)]=\"operator\">\r\n <option *ngFor=\"let o of operators\" value=\"{{o.value}}\">\r\n {{o.title}}\r\n </option>\r\n </select>\r\n </div>\r\n <div>\r\n <ax-text-box placeholder=\"Type here\" (textChange)=\"onTextChange($event)\" [(value)]=\"value\" *ngIf=\"operator!='is-not-empty' && operator!='is-empty'\">\r\n </ax-text-box>\r\n </div>\r\n</div>\r\n `,\r\n providers: [\r\n { provide: AXFilterColumnComponent, useExisting: AXFilterColumnStringComponent }\r\n ]\r\n})\r\nexport class AXFilterColumnStringComponent extends AXFilterColumnComponent {\r\n\r\n\r\n operator: string = 'contains';\r\n operators: any[] = [\r\n {\r\n title: 'is',\r\n value: 'equal'\r\n },\r\n {\r\n title: `isn't`,\r\n value: 'not-equal'\r\n },\r\n {\r\n title: 'contains',\r\n value: 'contains'\r\n },\r\n {\r\n title: 'not contains',\r\n value: 'not-contains'\r\n },\r\n {\r\n title: 'start with',\r\n value: 'start-with'\r\n },\r\n {\r\n title: 'end with',\r\n value: 'end-with'\r\n },\r\n {\r\n title: 'is empty',\r\n value: 'is-empty'\r\n },\r\n {\r\n title: `isn't empty`,\r\n value: 'is-not-empty'\r\n }\r\n ];\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n private searchChangeObserver: any;\r\n\r\n onOperatorChange(e) {\r\n\r\n this.valueChange.emit();\r\n\r\n }\r\n\r\n // TODO: Check this method work correctly\r\n onTextChange(e) {\r\n if (!this.searchChangeObserver) {\r\n return new Observable(observer => {\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(500))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.valueChange.emit();\r\n });\r\n }\r\n this.searchChangeObserver.next(e);\r\n }\r\n\r\n get condition(): AXFilterCondition {\r\n return {\r\n condition: this.operator,\r\n field: this.field,\r\n dataType: 'string',\r\n value: this.value\r\n }\r\n }\r\n}\r\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ViewChild, ElementRef, Input } from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-text-box',\r\n templateUrl: './textbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXTextBoxComponent }]\r\n})\r\nexport class AXTextBoxComponent extends AXBaseTextComponent {\r\n\r\n @Input()\r\n mask: any;\r\n\r\n @Input()\r\n type: 'text' | 'number' | 'tel' | 'url' | 'password' | 'search' = 'text';\r\n\r\n @Input()\r\n showMask: boolean = true;\r\n\r\n @Input()\r\n maxLength: number;\r\n\r\n @Input()\r\n maskGuid: boolean = false;\r\n\r\n @Input()\r\n maskPlaceholder: string = '_';\r\n\r\n @Input()\r\n maskKeepCharPositions: boolean = false;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n}\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-toast-wrapper',\r\n template: '',\r\n styleUrls: ['./toast-wrapper.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXToastWrapperComponent implements OnInit {\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { Component, OnInit, Input, ElementRef, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n templateUrl: './toast-message.component.html',\r\n styleUrls: ['./toast-message.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXToastMessageComponent implements OnInit {\r\n constructor(private elRef: ElementRef) { }\r\n\r\n @Input() title: string = '';\r\n @Input() message: string;\r\n @Input() timeOut: number = 6000;\r\n @Input() closeable: boolean = false;\r\n\r\n @Input() type: 'info' | 'success' | 'warning' | 'error' = 'info';\r\n\r\n style: string = 'info';\r\n icon: string = '';\r\n toastWidth: number = 100;\r\n\r\n ngOnInit(): void {\r\n if (this.timeOut) {\r\n const interval = setInterval(() => {\r\n --this.toastWidth;\r\n if (this.toastWidth === 0) {\r\n clearInterval(interval);\r\n this.close();\r\n }\r\n }, this.timeOut / 100);\r\n }\r\n switch (this.type) {\r\n case 'success':\r\n this.style = 'success';\r\n break;\r\n case 'warning':\r\n this.style = 'warning';\r\n break;\r\n case 'error':\r\n this.style = 'error';\r\n break;\r\n default:\r\n this.style = 'info';\r\n break;\r\n }\r\n switch (this.type) {\r\n case 'success':\r\n this.icon = 'fas fa-check-circle';\r\n break;\r\n case 'warning':\r\n this.icon = 'fas fa-exclamation-triangle';\r\n break;\r\n case 'error':\r\n this.icon = 'fas fa-exclamation-circle';\r\n break;\r\n default:\r\n this.icon = 'fas fa-info-circle';\r\n break;\r\n }\r\n }\r\n close() {\r\n this.elRef.nativeElement.parentElement.removeChild(this.elRef.nativeElement);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AXRenderService } from '@acorex/core';\r\nimport { AXToastWrapperComponent } from './toast-wrapper/toast-wrapper.component';\r\nimport { AXToastMessageComponent } from './toast-message/toast-message.component';\r\n\r\nexport interface IToastOptions {\r\n timeOut?: number;\r\n title?: string;\r\n closeable?: boolean;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXToastService {\r\n\r\n constructor(private injectionService: AXRenderService) { }\r\n\r\n info(message: string, options?: IToastOptions) {\r\n this.show(message, 'info', options);\r\n }\r\n\r\n success(message: string, options?: IToastOptions) {\r\n this.show(message, 'success', options);\r\n }\r\n\r\n warning(message: string, options?: IToastOptions) {\r\n this.show(message, 'warning', options);\r\n }\r\n\r\n error(message: string, options?: IToastOptions) {\r\n this.show(message, 'error', options);\r\n }\r\n\r\n private show(\r\n message: string,\r\n type: 'success' | 'info' | 'error' | 'warning',\r\n options?: IToastOptions\r\n ) {\r\n const opt = Object.assign(\r\n {\r\n message,\r\n type\r\n },\r\n options\r\n );\r\n\r\n const wrapper = document.querySelector('ax-toast-wrapper');\r\n if (!wrapper) {\r\n const toastWrapper = this.injectionService.appendComponent(\r\n AXToastWrapperComponent\r\n );\r\n this.injectionService.appendComponent(\r\n AXToastMessageComponent,\r\n opt,\r\n toastWrapper.location.nativeElement\r\n );\r\n } else {\r\n this.injectionService.appendComponent(\r\n AXToastMessageComponent,\r\n opt,\r\n wrapper\r\n );\r\n }\r\n }\r\n}\r\n","import { Component, Input, ViewChild, ViewChildren, QueryList, ViewEncapsulation, ChangeDetectionStrategy, Output, EventEmitter, ChangeDetectorRef, ElementRef, ViewContainerRef } from '@angular/core';\r\nimport { AXFilterColumnGroup, AXFilterColumnComponent, AXFilterCondition, AXFilterPredefined } from '../filter.class';\r\nimport { AXMenuItem, AXHtmlUtil, AXKeyboardEvent } from '@acorex/core';\r\nimport { AXMenuComponent } from '../../menu/menu.component';\r\nimport { AXTextBoxComponent } from '../../textbox/textbox.component';\r\nimport { AXToastService } from '../../toast/toast.service';\r\nimport { AXValueEvent } from '../../base/events.class';\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-filter-panel',\r\n templateUrl: './filter-panel.component.html',\r\n styleUrls: ['./filter-panel.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXFilterPanelComponent {\r\n\r\n @ViewChild('panel', { static: true }) panel: ElementRef<HTMLDivElement>;\r\n @ViewChild('footer', { static: true }) footer: ElementRef<HTMLDivElement>;\r\n @ViewChild('savedList', { static: true }) savedList: ElementRef<HTMLDivElement>;\r\n @ViewChild('body', { static: true }) body: ElementRef<HTMLDivElement>;\r\n @ViewChild('menu', { static: false }) menu: AXMenuComponent;\r\n @ViewChild('tbxName', { static: true }) tbxName: AXTextBoxComponent;\r\n\r\n @ViewChildren(AXFilterColumnComponent) filters: QueryList<AXFilterColumnComponent>;\r\n\r\n @Input()\r\n groups: AXFilterColumnGroup[] = [];\r\n\r\n @Input()\r\n predefinedFilters: AXFilterPredefined[] = [];\r\n\r\n @Input()\r\n mode: 'click' | 'immediate' = 'click';\r\n\r\n saveItems: AXMenuItem[] = [\r\n {\r\n name: 'saveAs',\r\n text: 'Save',\r\n startIcon: 'fas fa-save',\r\n items: [\r\n {\r\n name: 'save',\r\n text: 'Save current'\r\n },\r\n {\r\n name: 'saveAs',\r\n text: 'Save as New'\r\n }\r\n ]\r\n },\r\n\r\n ];\r\n\r\n @Output()\r\n filterChange: EventEmitter<AXFilterCondition[]> = new EventEmitter<AXFilterCondition[]>();\r\n\r\n constructor(private cdr: ChangeDetectorRef, private toast: AXToastService) { }\r\n\r\n apply() {\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }\r\n\r\n public clear() {\r\n this.filters.forEach(e => {\r\n e.clear();\r\n });\r\n this.predefinedFilters.forEach(c => {\r\n (c as any).selected = false;\r\n });\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }\r\n\r\n onValueChange(e) {\r\n if (this.mode === 'immediate') {\r\n setTimeout(() => {\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }, 50);\r\n\r\n }\r\n }\r\n\r\n onCheckValueChange(v, e: AXValueEvent<boolean>) {\r\n\r\n\r\n if (!e.value && this.mode === 'immediate') {\r\n this.filters.forEach(c => {\r\n if (c.field === v.field) {\r\n c.clear();\r\n }\r\n })\r\n setTimeout(() => {\r\n this.filterChange.emit(this.value.filter(c => c.field !== v.field));\r\n this.updateMenu();\r\n }, 50);\r\n\r\n }\r\n }\r\n\r\n get value(): AXFilterCondition[] {\r\n const con: AXFilterCondition[] = [];\r\n if (this.filters) {\r\n this.filters.forEach(e => {\r\n\r\n if (e.active && e.condition && ((e.condition.value != null) || (e.condition.value == null && (e.condition.condition === 'is-empty' || e.condition.condition === 'is-not-empty')))) {\r\n con.push(e.condition);\r\n }\r\n });\r\n }\r\n return con;\r\n }\r\n\r\n\r\n\r\n public load(filters: AXFilterCondition[]): void {\r\n this.filters.forEach(e => {\r\n e.clear();\r\n });\r\n this.cancelSaveFilter();\r\n filters.forEach(f => {\r\n const col = this.filters.find(c => c.field === f.field);\r\n if (col) {\r\n col.setFilter(f.value, f.condition);\r\n }\r\n\r\n });\r\n this.filterChange.emit(this.value);\r\n this.updateMenu();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n const footer = this.panel.nativeElement.querySelector('.footer');\r\n if (!footer) {\r\n this.body.nativeElement.style.height = 'calc(100% - 110px)';\r\n }\r\n setTimeout(() => {\r\n if (this.predefinedFilters) {\r\n this.setFilterByIndex(0);\r\n }\r\n else {\r\n this.clear();\r\n }\r\n }, 100);\r\n this.applySize();\r\n }\r\n\r\n setFilterByIndex(index: number) {\r\n const f = this.predefinedFilters[index];\r\n if (f) {\r\n this.setFilterByName(f.name);\r\n }\r\n }\r\n\r\n setFilterByName(name: string) {\r\n const f = this.predefinedFilters.find(c => c.name === name);\r\n if (f) {\r\n this.load(f.value);\r\n this.predefinedFilters.forEach(c => {\r\n (c as any).selected = false;\r\n });\r\n (f as any).selected = true;\r\n }\r\n }\r\n\r\n\r\n\r\n removeFilter(f: AXFilterPredefined) {\r\n this.predefinedFilters = this.predefinedFilters.filter(c => c.name != f.name);\r\n this.updateMenu();\r\n }\r\n\r\n private get\r\n currentFilter(): AXFilterPredefined {\r\n return this.predefinedFilters.find(c => (c as any).selected);\r\n }\r\n\r\n\r\n private applySize() {\r\n let h = 0;\r\n h += this.footer.nativeElement.getBoundingClientRect().height;\r\n h += this.savedList.nativeElement.getBoundingClientRect().height;\r\n h += 10;\r\n this.body.nativeElement.style.height = `calc(100% - ${h}px)`;\r\n }\r\n\r\n // SAVE FILTERS\r\n\r\n private updateMenu(): void {\r\n setTimeout(() => {\r\n this.saveItems[0].items[0].visible = this.currentFilter != null;\r\n this.saveItems[0].items[1].visible = this.currentFilter != null;\r\n // this.menu.update();\r\n }, 100);\r\n }\r\n\r\n applySaveFilter() {\r\n const f = this.currentFilter;\r\n if (f) {\r\n // TODO\r\n // this.tbxName.validate().then(c => {\r\n // if (c.result) {\r\n // f.value = this.value;\r\n // (f as any).isInEdit = false;\r\n // (f as any).isNew = false;\r\n // f.title = this.tbxName.value;\r\n // this.toast.success('Filter saved successfully.');\r\n // this.updateMenu();\r\n // }\r\n // });\r\n }\r\n }\r\n\r\n cancelSaveFilter() {\r\n const f = this.currentFilter;\r\n if (f) {\r\n if ((f as any).isNew) {\r\n this.removeFilter(f);\r\n }\r\n else {\r\n (f as any).isInEdit = false;\r\n }\r\n }\r\n this.updateMenu();\r\n }\r\n\r\n onMenuItemClick(e: AXMenuItem) {\r\n if (e.name === 'save') {\r\n this.applySaveFilter();\r\n }\r\n if (e.name === 'saveAs') {\r\n const f = {\r\n name: AXHtmlUtil.getUID(),\r\n title: '',\r\n value: this.value\r\n };\r\n this.predefinedFilters.push(f);\r\n (f as any).isNew = true;\r\n this.setFilterByName(f.name);\r\n this.handleRenameClick(f)\r\n }\r\n }\r\n\r\n tbxNameOnKey(e: AXKeyboardEvent) {\r\n if (e.type === 'keyup' && e.key === 'Enter') {\r\n this.applySaveFilter();\r\n }\r\n if (e.type === 'keyup' && e.key === 'Escape') {\r\n this.cancelSaveFilter();\r\n }\r\n }\r\n\r\n handleRenameClick(f: AXFilterPredefined) {\r\n (f as any).isInEdit = true;\r\n this.cdr.detectChanges();\r\n setTimeout(() => {\r\n this.tbxName.value = f.title;\r\n this.tbxName.focus();\r\n }, 50);\r\n }\r\n}\r\n","import { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { AXHtmlUtil, AXMenuItem } from '@acorex/core';\r\nimport { AXFilterPanelComponent } from '../filter-panel/filter-panel.component';\r\nimport { AXToolbarItem } from '../../toolbar/toolbar-item';\r\nimport { AXToolbarMenuComponent } from '../../toolbar/menu/toolbar-menu.component';\r\nimport { AXMenuComponent } from '../../menu/menu.component';\r\n\r\n\r\n@Component({\r\n selector: 'ax-toolbar-filter-view',\r\n templateUrl: './filter-toolbar.component.html',\r\n styleUrls: ['./filter-toolbar.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarFilterViewComponent }]\r\n})\r\nexport class AXToolbarFilterViewComponent {\r\n constructor() { }\r\n _uid: string = AXHtmlUtil.getUID();\r\n\r\n @ViewChild('menu', { static: true }) menu: AXToolbarMenuComponent;\r\n @ViewChild('contextMenu', { static: true }) contextMenu: AXMenuComponent;\r\n\r\n @Input()\r\n filterPanel: AXFilterPanelComponent;\r\n\r\n contextMenuItems: AXMenuItem[] = [\r\n // {\r\n // name: 'addFolder',\r\n // startIcon: 'fas fa-folder',\r\n // text: 'New Folder',\r\n // },\r\n {\r\n name: 'remove',\r\n startIcon: 'fas fa-trash',\r\n text: 'Delete',\r\n },\r\n ];\r\n\r\n\r\n\r\n menuItems: AXMenuItem[] = [\r\n {\r\n name: 'root',\r\n startIcon: 'fas fa-filter',\r\n text: 'Select All',\r\n items: [\r\n {\r\n name: 'selectAll',\r\n style: 'f',\r\n text: 'Select All',\r\n },\r\n // {\r\n // split: true,\r\n // name: 'addFolder',\r\n // startIcon: 'fas fa-folder',\r\n // text: 'New Folder',\r\n // },\r\n {\r\n divider: true,\r\n name: 'save',\r\n startIcon: 'fas fa-save',\r\n text: 'Save'\r\n },\r\n {\r\n divider: true,\r\n name: 'saveAs',\r\n startIcon: 'fas fa-save',\r\n text: 'Save As...'\r\n }\r\n ]\r\n }\r\n\r\n ];\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.selectAll();\r\n this.addPredefinedList();\r\n }, 100);\r\n }\r\n\r\n addPredefinedList() {\r\n this.filterPanel.predefinedFilters.forEach(c => {\r\n const item = {\r\n name: c.name,\r\n text: c.title,\r\n type: 'f',\r\n startIcon: 'fas',\r\n data: c.value,\r\n style: this._uid,\r\n uid: AXHtmlUtil.getUID()\r\n };\r\n this.root.items.splice(1, 0, item);\r\n });\r\n this.update();\r\n }\r\n\r\n public selectAll(): void {\r\n this.setCurrent(this.root.items[0]);\r\n this.filterPanel.clear();\r\n this.update();\r\n this.menu.close();\r\n // this.contextMenu.close();\r\n }\r\n\r\n itemClick(e: AXMenuItem) {\r\n\r\n if (e.style === 'f') {\r\n if (e.name === 'selectAll') {\r\n this.selectAll();\r\n }\r\n else {\r\n this.setCurrent(e);\r\n this.filterPanel.load(e.data);\r\n }\r\n }\r\n else {\r\n if (e.name === 'saveAs') {\r\n const name = prompt('Please enter the name;');\r\n if (name) {\r\n const item = {\r\n text: name,\r\n type: 'f',\r\n style: this._uid,\r\n startIcon: 'fas',\r\n data: this.filterPanel.value,\r\n uid: AXHtmlUtil.getUID()\r\n };\r\n this.root.items.splice(1, 0, item);\r\n this.setCurrent(item);\r\n }\r\n\r\n }\r\n if (e.name === 'save') {\r\n const selected = this.findSelected();\r\n if (selected) {\r\n selected.data = this.filterPanel.value;\r\n }\r\n }\r\n }\r\n this.update();\r\n }\r\n\r\n private findSelected(): AXMenuItem {\r\n return this.root.items.find(c => c.selected);\r\n }\r\n\r\n private get root(): AXMenuItem {\r\n return this.menuItems[0];\r\n }\r\n\r\n public update(): void {\r\n this.menu.update();\r\n setTimeout(() => {\r\n // this.contextMenu.update();\r\n }, 100);\r\n\r\n }\r\n\r\n private setCurrent(e: AXMenuItem) {\r\n this.root.text = e.text;\r\n this.root.items.filter(c => c.style === 'f').forEach(c => {\r\n c.selected = false;\r\n c.startIcon = 'fas';\r\n });\r\n e.selected = true;\r\n e.startIcon = 'fas fa-check';\r\n this.root.items.find(c => c.name === 'save').visible = e.name !== 'selectAll';\r\n }\r\n\r\n onCtxClick(e: AXMenuItem) {\r\n const target = this.contextMenu.currentTarget as HTMLElement;\r\n const menuId = target.getAttribute('data-uid');\r\n if (e.name === 'remove' && menuId) {\r\n this.root.items = this.root.items.filter(c => c.uid !== menuId);\r\n this.selectAll();\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ContentChild,\r\n TemplateRef,\r\n} from \"@angular/core\";\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n animate,\r\n transition,\r\n} from \"@angular/animations\";\r\nimport { AXBaseSizableComponent, AXElementSize } from \"../base/element.class\";\r\n\r\n@Component({\r\n selector: \"ax-panel-box\",\r\n templateUrl: \"./panel-box.component.html\",\r\n styleUrls: [\"./panel-box.component.scss\"],\r\n animations: [\r\n trigger(\"visibilityChanged\", [\r\n state(\r\n \"shown\",\r\n style({\r\n height: \"*\",\r\n opacity: 1,\r\n })\r\n ),\r\n state(\r\n \"hidden\",\r\n style({\r\n height: \"0px\",\r\n opacity: 0,\r\n padding: 0,\r\n })\r\n ),\r\n transition(\"Void => *\", animate(\"0ms\")),\r\n transition(\"shown => hidden\", animate(\"200ms\")),\r\n transition(\"hidden => shown\", animate(\"200ms\")),\r\n ]),\r\n ],\r\n})\r\nexport class AXPanelBoxComponent implements AXBaseSizableComponent {\r\n @ContentChild(\"header\", { static: true })\r\n headerTemplate: TemplateRef<any>;\r\n\r\n @Input() size: AXElementSize = \"md\";\r\n\r\n @Input() type: string = \"\";\r\n\r\n // @Input()\r\n // caption: string = 'Caption';\r\n\r\n private _caption: string = \"caption\";\r\n @Input()\r\n get caption(): string {\r\n return this._caption;\r\n }\r\n set caption(val: string) {\r\n this._caption = val === \"\" ? \"caption\" : val;\r\n }\r\n\r\n @Output()\r\n collapsedChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n private _collapsed: boolean = false;\r\n\r\n @Input()\r\n get collapsed(): boolean {\r\n return this._collapsed;\r\n }\r\n set collapsed(val: boolean) {\r\n if (val !== this._collapsed) {\r\n this._collapsed = val;\r\n this.collapsedChange.emit(this._collapsed);\r\n }\r\n }\r\n\r\n @Input() allowCollapse: boolean = true;\r\n\r\n toggle() {\r\n if (this.allowCollapse) {\r\n this.collapsed = !this.collapsed;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPanelBoxComponent } from './panel-box.component';\r\n@NgModule({\r\n declarations: [AXPanelBoxComponent],\r\n imports: [CommonModule],\r\n exports: [AXPanelBoxComponent],\r\n providers: []\r\n})\r\nexport class AXPanelBoxModule {}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n ViewChild,\r\n Input,\r\n ElementRef,\r\n AfterViewInit,\r\n HostListener,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef, ViewContainerRef, TemplateRef, OnDestroy, DebugElement\r\n} from '@angular/core';\r\nimport { AXBaseDropdownComponent } from '../base/element.class';\r\nimport { AXHtmlEvent } from '../base/events.class';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { TemplatePortal } from '@angular/cdk/portal';\r\nimport { AXConfig } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-drop-down',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display:contents;' }\r\n})\r\nexport class AXDropdownComponent extends AXBaseDropdownComponent implements AfterViewInit, OnDestroy {\r\n @ViewChild('baseTemplate') baseTemplate: TemplateRef<any>;\r\n @ViewChild('content', { static: false }) content: ElementRef<HTMLDivElement>;\r\n @ViewChild('endButtons', { static: false }) endButtons: ElementRef<HTMLDivElement>;\r\n @ViewChild('el', { static: true }) dropdownEL: ElementRef<HTMLDivElement>;\r\n\r\n @Input()\r\n rtl: boolean = AXConfig.get('layout.rtl');\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n loading: boolean = false;\r\n\r\n @Output()\r\n dropdownToggle: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onButtonClick: EventEmitter<AXHtmlEvent<MouseEvent>> = new EventEmitter<AXHtmlEvent<MouseEvent>>();\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeydownHandler(e: KeyboardEvent) {\r\n if (!this.disabled && e.key === 'Enter' && e.type === 'keydown') {\r\n if (!this.readonly) {\r\n this.toggle();\r\n // this.dropdownToggle.emit({ mode: 'enter' });\r\n }\r\n }\r\n if (e.key === 'Escape') {\r\n if (this.isOpen) {\r\n this.close();\r\n e.stopPropagation();\r\n }\r\n }\r\n }\r\n\r\n\r\n dropdownWidth: number;\r\n\r\n private overlayRef: OverlayRef;\r\n private templatePortal: TemplatePortal;\r\n\r\n constructor(private cdr: ChangeDetectorRef,\r\n private ref: ElementRef<HTMLDivElement>,\r\n private overlay: Overlay,\r\n private viewContainerRef: ViewContainerRef\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n setTimeout(() => {\r\n this.ref.nativeElement.classList.add(this.rtl ? 'rtl' : 'ltr');\r\n this.dropdownEL.nativeElement.classList.add(this.rtl ? 'rtl' : 'ltr')\r\n }, 5);\r\n\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n\r\n if (this.fitParent === true) {\r\n this.dropdownWidth = this.dropdownEL.nativeElement.offsetWidth;\r\n } else {\r\n this.dropdownWidth = null;\r\n }\r\n\r\n setTimeout(() => {\r\n if (this.endButtons && this.endButtons.nativeElement.childNodes.length !== 0) {\r\n this.content.nativeElement.style.paddingInlineEnd = this.endButtons.nativeElement.clientWidth + 'px';\r\n }\r\n }, 5);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.overlayRef?.detach();\r\n this.overlayRef?.dispose();\r\n }\r\n\r\n handleArrowClick(e: AXHtmlEvent<MouseEvent>) {\r\n setTimeout(() => {\r\n this.toggle();\r\n }, 0);\r\n }\r\n\r\n toggle() {\r\n if (this.disabled !== true) {\r\n this.isOpen ? this.close() : this.open();\r\n }\r\n }\r\n\r\n close() {\r\n if (!this.isOpen) {\r\n return;\r\n }\r\n this.overlayRef?.detach();\r\n this.dropdownToggle.emit({ mode: 'close' });\r\n }\r\n\r\n open() {\r\n if (this.isOpen) {\r\n return;\r\n }\r\n this.ensureOverlayCreated();\r\n this.overlayRef.attach(this.templatePortal);\r\n this.dropdownToggle.emit({ mode: 'open' });\r\n }\r\n\r\n private ensureOverlayCreated() {\r\n if (!this.overlayRef) {\r\n const targetEl = document.querySelector<HTMLElement>('#' + this.uid);\r\n const positionStrategy = this.overlay.position()\r\n .flexibleConnectedTo(targetEl)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'bottom'\r\n }\r\n ])\r\n .withPush(false);\r\n this.overlayRef = this.overlay.create({\r\n positionStrategy,\r\n //width: this.dropdownEL.nativeElement.clientWidth,\r\n scrollStrategy: this.overlay.scrollStrategies.reposition({\r\n autoClose: true\r\n }),\r\n hasBackdrop: true,\r\n backdropClass: 'cdk-overlay-transparent-backdrop'\r\n });\r\n this.overlayRef.setDirection(this.rtl ? 'rtl' : 'ltr');\r\n this.overlayRef.backdropClick().subscribe(() => this.close());\r\n }\r\n if (!this.templatePortal) {\r\n this.templatePortal = new TemplatePortal(this.baseTemplate, this.viewContainerRef);\r\n }\r\n }\r\n\r\n get isOpen(): boolean {\r\n return this.overlayRef ? this.overlayRef.hasAttached() : false;\r\n }\r\n\r\n\r\n focus() { }\r\n}\r\n","import {\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n Component,\r\n ElementRef,\r\n ContentChild,\r\n AfterViewInit,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXValidatableComponent, AXBaseSizableComponent, AXElementSize, AXBaseValueComponent } from '../base/element.class';\r\nimport { AXCalendarType, AXDateTime, AXConfig } from '@acorex/core';\r\nimport { AXValueEvent } from '../base/events.class';\r\nimport { AXValidation } from '../validation/validation.component';\r\n\r\nexport class AXDataPickerChangeEvent extends AXValueEvent<Date> {\r\n isUserChange: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-date-picker',\r\n templateUrl: './date-picker.component.html',\r\n styleUrls: ['./date-picker.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXDatePickerComponent }],\r\n host: { style: 'display: contents;' }\r\n})\r\nexport class AXDatePickerComponent extends AXValidatableComponent implements AXBaseSizableComponent {\r\n @ViewChild('dropdown', { static: true })\r\n dropdown: AXDropdownComponent;\r\n\r\n @ViewChild('input', { static: true })\r\n input: AXTextBoxComponent;\r\n\r\n @Input()\r\n dayStyle = [];\r\n\r\n // mmddyyyy: any = [/[0-1]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/];\r\n yyyyMMdd: any = [/[1-2]/, /[0-9]/, /[0-9]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[0-3]/, /[0-9]/];\r\n ddMMyyyy: any = [/[0-3]/, /[0-9]/, '-', /[0-1]/, /[0-9]/, '-', /[1-9]/, /[0-9]/, /[0-9]/, /[0-9]/];\r\n yyyyddMM: any = [/[1-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '-', /[0-3]/, /[0-9]/, '-', /[0-1]/, /[0-9]/];\r\n // yyyyMMdd1: any = [/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-3]/, /[0-9]/];\r\n // ddMMyyyy2: any = [/[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/, '/', /[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/];\r\n // yyyyddMM3: any = [/[0-9]/, /[0-9]/, /[0-9]/, /[0-9]/, '/', /[0-3]/, /[0-9]/, '/', /[0-1]/, /[0-9]/];\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n @Input() placeholder: string = '';\r\n\r\n @Input()\r\n min: Date;\r\n\r\n @Input()\r\n max: Date;\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n allowClear: boolean = false;\r\n\r\n @Input()\r\n textAlign: 'right' | 'left' | null = null;\r\n\r\n @Input()\r\n showToday: boolean = false;\r\n\r\n @Input()\r\n selectableHoliday: boolean = true;\r\n\r\n @Input()\r\n dateType: any;\r\n\r\n @Input()\r\n showTodayButton: boolean = true;\r\n\r\n @Input()\r\n openByClick: boolean = false;\r\n\r\n cursorPosition: number = 0;\r\n\r\n model: any = null;\r\n text: string;\r\n\r\n _renderPicker: boolean = false;\r\n\r\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) {\r\n super();\r\n // set defaults\r\n if (AXConfig.get('dateTime.type')) {\r\n this.type = AXConfig.get('dateTime.type');\r\n }\r\n }\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Output()\r\n typeChange: EventEmitter<AXCalendarType> = new EventEmitter<AXCalendarType>();\r\n\r\n private _type: AXCalendarType = 'gregorian';\r\n\r\n @Input()\r\n public get type(): AXCalendarType {\r\n return this._type;\r\n }\r\n\r\n public set type(v: AXCalendarType) {\r\n if (v != this._type) {\r\n this._type = v;\r\n if (this._value) {\r\n this.value = this._value.date;\r\n }\r\n this._setDateType();\r\n this.typeChange.emit(v);\r\n }\r\n }\r\n\r\n selectToday() {\r\n this.value = new Date();\r\n }\r\n\r\n focus(): void {\r\n this.dropdown.focus();\r\n }\r\n\r\n convertMaskToDate(text: string) {\r\n if (this.type == 'jalali') {\r\n var d = new AXDateTime().convertStringToGregorian(text, 'YYYY/M/D');\r\n } else {\r\n }\r\n\r\n return d;\r\n }\r\n\r\n convertMask(date: string) {\r\n let y;\r\n let m;\r\n let d;\r\n switch (this.dateType.mask) {\r\n case this.yyyyMMdd:\r\n y = date.slice(0, 4);\r\n m = date.slice(5, 7);\r\n d = date.slice(8, 10);\r\n break;\r\n case this.ddMMyyyy:\r\n y = date.slice(6, 10);\r\n m = date.slice(3, 5);\r\n d = date.slice(0, 2);\r\n break;\r\n case this.yyyyddMM:\r\n y = date.slice(0, 4);\r\n m = date.slice(8, 10);\r\n d = date.slice(5, 7);\r\n break;\r\n }\r\n\r\n return { year: y, monnth: m, day: d };\r\n }\r\n\r\n textChange(e) {\r\n this.text = e.value;\r\n if (this.text && this.text.indexOf('_') === -1 && this.text.length == 10) {\r\n this.userChange = e.isUserChange;\r\n const date = this.convertMask(this.text);\r\n this.value = this.convertMaskToDate(date.year + '-' + date.monnth + '-' + date.day);\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this._setDateType();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n setTimeout(() => {\r\n this.text = this._value?.toString();\r\n if (this.showToday && !this.value) {\r\n this.selectToday();\r\n }\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n }\r\n\r\n clear() {\r\n this.userChange = true;\r\n this.value = null;\r\n }\r\n\r\n userChange: boolean = false;\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXDataPickerChangeEvent> = new EventEmitter<AXDataPickerChangeEvent>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<Date> = new EventEmitter<Date>();\r\n\r\n private _value: AXDateTime;\r\n @Input()\r\n public get value(): Date {\r\n return this._value?.date;\r\n }\r\n public set value(v: Date) {\r\n this.validate();\r\n const oldValue = this._value;\r\n const old = this.value;\r\n\r\n if (v) {\r\n this._value = new AXDateTime(v, this.type);\r\n } else {\r\n this._value = null;\r\n }\r\n let unValidDate = false;\r\n if (this.max || this.min) {\r\n unValidDate = this.isInMInMaxRange(AXDateTime.convert(v));\r\n }\r\n\r\n if (!unValidDate) {\r\n if ((!v && oldValue) || (this._value && !this._value.equal(oldValue, 'day'))) {\r\n this.text = this._value?.toString();\r\n setTimeout(() => {\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n oldValue: old,\r\n value: v,\r\n isUserChange: this.userChange\r\n });\r\n }, 100);\r\n }\r\n }\r\n this.userChange = false;\r\n }\r\n\r\n private _setDateType() {\r\n switch (this.dateType) {\r\n case 'yyyyMMdd':\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.yyyyMMdd,\r\n keepCharPositions: true\r\n };\r\n break;\r\n case 'ddMMyyyy':\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.ddMMyyyy,\r\n keepCharPositions: true\r\n };\r\n break;\r\n case 'yyyyddMM':\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.yyyyddMM,\r\n keepCharPositions: true\r\n };\r\n break;\r\n\r\n default:\r\n if (this.type == 'gregorian') {\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.ddMMyyyy,\r\n keepCharPositions: true\r\n };\r\n } else if (this.type == 'jalali') {\r\n this.dateType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.yyyyMMdd,\r\n keepCharPositions: true\r\n };\r\n }\r\n break;\r\n }\r\n }\r\n\r\n isInMInMaxRange(d) {\r\n let r = false;\r\n if (d !== undefined) {\r\n if (this.min && !this.max) {\r\n r = d.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1;\r\n }\r\n if (this.max && !this.min) {\r\n r = d.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1;\r\n }\r\n if (this.min && this.max) {\r\n r =\r\n d.compaireNew(new AXDateTime(this.min, this.type), 'YMD', this.type) === -1 ||\r\n d.compaireNew(new AXDateTime(this.max, this.type), 'YMD', this.type) === 1;\r\n }\r\n }\r\n return r;\r\n }\r\n\r\n onDateChange(e) {\r\n this.userChange = true;\r\n this.dropdown.close();\r\n\r\n //this.clearValidationStyle(this.ref.nativeElement);\r\n }\r\n\r\n onClick(e) {\r\n this.userChange = true;\r\n this.dropdown.close();\r\n }\r\n\r\n onStartfocus() {\r\n if (this.text == undefined || this.text == null || this.text == '') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n }\r\n\r\n handleInputFocus() {\r\n if (this.openByClick) {\r\n this._renderPicker = true;\r\n this.dropdown.open();\r\n } else {\r\n this.onStartfocus();\r\n }\r\n\r\n // this.input.input.nativeElement.focus();\r\n }\r\n handleInputBlur() {\r\n if (this.text && this.text.indexOf('_') != -1) {\r\n this.text = '';\r\n this.value = null;\r\n }\r\n }\r\n\r\n handleButtonClick() {\r\n this._renderPicker = true;\r\n setTimeout(() => {\r\n this.dropdown.toggle();\r\n });\r\n }\r\n\r\n handleKeyPress(e: KeyboardEvent) {\r\n if (e.type == 'keydown' || e.type == 'keypress' || e.type == 'keyup') {\r\n if (e.key === 'Delete') {\r\n e.preventDefault();\r\n }\r\n if (e.key === 'Backspace') {\r\n }\r\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\r\n if (this.input.input.nativeElement.selectionStart || this.input.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.input.nativeElement.selectionStart;\r\n }\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n\r\n const inputChar = String.fromCharCode(e.charCode);\r\n if (this.text != undefined) {\r\n const ind1 = this.text.charAt(0);\r\n const ind2 = this.text.charAt(1);\r\n const ind3 = this.text.charAt(2);\r\n const ind4 = this.text.charAt(3);\r\n const ind5 = this.text.charAt(4);\r\n const ind6 = this.text.charAt(5);\r\n const ind7 = this.text.charAt(6);\r\n const ind8 = this.text.charAt(7);\r\n const ind9 = this.text.charAt(8);\r\n const ind10 = this.text.charAt(9);\r\n switch (this.dateType.mask) {\r\n case this.yyyyMMdd:\r\n if (e.type == 'keypress') {\r\n this.handleClick();\r\n if (\r\n (ind6 == '1' && ind7 == '_' && inputChar >= '3') ||\r\n (((ind6 == '0' && ind7 == '_') || (ind9 == '0' && ind10 == '_')) && inputChar == '0')\r\n ) {\r\n e.preventDefault();\r\n } else if (ind9 == '3' && ind10 == '_') {\r\n if (ind6 + ind7 <= '06' && inputChar >= '2') {\r\n e.preventDefault();\r\n } else if (ind6 + ind7 > '06' && inputChar >= '1') {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n if (this.text.indexOf('_') === -1 && this.text !== '') {\r\n if (e.type === 'keydown') {\r\n if (e.key === 'ArrowUp') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) + 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n if (this.cursorPosition >= 5 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) < 12) {\r\n if (Number(ind6 + ind7) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '01' + ind8 + ind9 + ind10;\r\n }\r\n }\r\n if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) < 31) {\r\n if (Number(ind9 + ind10) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) + 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) + 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '01';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // e.preventDefault();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n // e.preventDefault();\r\n } else if (e.key === 'ArrowDown') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) - 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else if (this.cursorPosition > 4 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) > 1) {\r\n if (Number(ind6 + ind7) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '12' + ind8 + ind9 + ind10;\r\n }\r\n } else if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) > 1) {\r\n if (Number(ind9 + ind10) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) - 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) - 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '31';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.type === 'keyup') {\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.setCaret();\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n break;\r\n case this.ddMMyyyy:\r\n if (e.type === 'keypress') {\r\n this.handleClick();\r\n if (\r\n (ind4 == '1' && ind5 == '_' && inputChar >= '3') ||\r\n (((ind1 == '0' && ind2 == '_') || (ind4 == '0' && ind5 == '_')) && inputChar == '0')\r\n ) {\r\n e.preventDefault();\r\n } else {\r\n if (ind1 == '3' && ind2 == '_' && inputChar >= '2') {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n if (this.text.indexOf('_') === -1 && this.text !== '') {\r\n if (e.type === 'keydown') {\r\n if (e.key === 'ArrowUp') {\r\n if (this.cursorPosition >= 6) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + String(Number(ind7 + ind8 + ind9 + ind10) + 1);\r\n }\r\n if (this.cursorPosition > 2 && this.cursorPosition <= 5) {\r\n if (Number(ind4 + ind5) < 12) {\r\n if (Number(ind4 + ind5) < 9) {\r\n this.text = ind1 + ind2 + ind3 + '0' + String(Number(ind4 + ind5) + 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + String(Number(ind4 + ind5) + 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + '01' + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n }\r\n if (this.cursorPosition <= 2) {\r\n if (Number(ind1 + ind2) < 31) {\r\n if (Number(ind1 + ind2) < 9) {\r\n this.text = '0' + String(Number(ind1 + ind2) + 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = String(Number(ind1 + ind2) + 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = '01' + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n } else if (e.key === 'ArrowDown') {\r\n if (this.cursorPosition >= 6) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + String(Number(ind7 + ind8 + ind9 + ind10) - 1);\r\n } else if (this.cursorPosition > 2 && this.cursorPosition <= 5) {\r\n if (Number(ind4 + ind5) > 1) {\r\n if (Number(ind4 + ind5) < 11) {\r\n this.text = ind1 + ind2 + ind3 + '0' + String(Number(ind4 + ind5) - 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + String(Number(ind4 + ind5) - 1) + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + '12' + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else if (this.cursorPosition <= 2) {\r\n if (Number(ind1 + ind2) > 1) {\r\n if (Number(ind1 + ind2) < 11) {\r\n this.text = '0' + String(Number(ind1 + ind2) - 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = String(Number(ind1 + ind2) - 1) + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = '31' + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.type === 'keyup') {\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.setCaret();\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n break;\r\n\r\n case this.yyyyddMM:\r\n if (e.type === 'keypress') {\r\n if (\r\n (ind9 === '1' && ind10 == '_' && inputChar >= '3') ||\r\n (((ind6 == '0' && ind7 == '_') || (ind9 == '0' && ind10)) && inputChar == '0')\r\n ) {\r\n e.preventDefault();\r\n } else if (ind6 == '3' && ind7 == '_' && inputChar >= '2') {\r\n e.preventDefault();\r\n }\r\n setTimeout(() => {\r\n this.handleClick();\r\n }, 0);\r\n }\r\n if (this.text.indexOf('_') === -1 && this.text !== '') {\r\n if (e.type === 'keydown') {\r\n if (e.key === 'ArrowUp') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) + 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n }\r\n if (this.cursorPosition > 4 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) < 31) {\r\n if (Number(ind6 + ind7) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) + 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '01' + ind8 + ind9 + ind10;\r\n }\r\n }\r\n if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) < 12) {\r\n if (Number(ind9 + ind10) < 9) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) + 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) + 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '01';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n } else if (e.key === 'ArrowDown') {\r\n if (this.cursorPosition <= 4) {\r\n this.text = String(Number(ind1 + ind2 + ind3 + ind4) - 1) + ind5 + ind6 + ind7 + ind8 + ind9 + ind10;\r\n } else if (this.cursorPosition > 4 && this.cursorPosition <= 7) {\r\n if (Number(ind6 + ind7) > 1) {\r\n if (Number(ind6 + ind7) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '0' + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + String(Number(ind6 + ind7) - 1) + ind8 + ind9 + ind10;\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + '31' + ind8 + ind9 + ind10;\r\n }\r\n } else if (this.cursorPosition >= 8) {\r\n if (Number(ind9 + ind10) > 1) {\r\n if (Number(ind9 + ind10) < 11) {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '0' + String(Number(ind9 + ind10) - 1);\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + String(Number(ind9 + ind10) - 1);\r\n }\r\n } else {\r\n this.text = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + '12';\r\n }\r\n }\r\n // this.input.input.nativeElement.style.caretColor = 'transparent';\r\n // setTimeout(() => {\r\n // this.setCaret();\r\n // this.input.input.nativeElement.style.caretColor = 'auto';\r\n // }, 0);\r\n }\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.input.input.nativeElement.style.caretColor = 'transparent';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n }\r\n if (e.type === 'keyup') {\r\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\r\n this.setCaret();\r\n this.input.input.nativeElement.style.caretColor = 'auto';\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n handleClick() {\r\n if (this.input.input.nativeElement.selectionStart || this.input.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n setCaretPosition(ctrl, pos) {\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n }\r\n }\r\n\r\n setCaret() {\r\n this.setCaretPosition(this.input.input.nativeElement, this.cursorPosition);\r\n }\r\n}\r\n","import {\r\n Component, Input, ChangeDetectorRef, ChangeDetectionStrategy,\r\n ViewEncapsulation, ContentChild, ViewChild, ElementRef\r\n} from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXElementSize, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-form-group',\r\n templateUrl: './form-group.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' }\r\n})\r\nexport class AXFormGroupComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @ViewChild('div')\r\n div: ElementRef\r\n\r\n @ContentChild(AXValidatableComponent)\r\n private component: AXValidatableComponent;\r\n\r\n required: boolean = false;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.required = this.component?.validation?.rules?.some(c => c.type === 'required');\r\n if (this.required) {\r\n this.div.nativeElement.classList.add('required-state')\r\n\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXFormGroupComponent } from './form-group.component';\r\n\r\nconst COMPONENT = [AXFormGroupComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXFormGroupModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTextBoxComponent } from './textbox.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\nimport { FormsModule } from '@angular/forms';\r\nconst COMPONENT = [AXTextBoxComponent];\r\nconst MODULES = [CommonModule, AXButtonModule, TextMaskModule, FormsModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: []\r\n})\r\nexport class AXTextBoxModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDropdownComponent } from './dropdown.component';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXPopoverModule } from '../popover/popover.module';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\n\r\nconst COMPONENT = [AXDropdownComponent];\r\nconst MODULES = [CommonModule, AXFormGroupModule, AXTextBoxModule, AXButtonModule, AXPopoverModule, OverlayModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXDropdownModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXDatePickerComponent } from './date-picker.component';\r\nimport { AXDropdownModule } from '../dropdown/dropdown.module';\r\nimport { AXCalendarBoxModule } from '../calendar/calendar-box/calendar-box.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\n\r\n@NgModule({\r\n declarations: [AXDatePickerComponent],\r\n imports: [CommonModule, FormsModule, AXDropdownModule, AXCalendarBoxModule, AXButtonModule, AXTextBoxModule, TextMaskModule, FormsModule],\r\n exports: [AXDatePickerComponent],\r\n providers: []\r\n})\r\nexport class AXDatePickerModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToastService } from './toast.service';\r\nimport { AXToastWrapperComponent } from './toast-wrapper/toast-wrapper.component';\r\nimport { AXToastMessageComponent } from './toast-message/toast-message.component';\r\n@NgModule({\r\n declarations: [AXToastWrapperComponent, AXToastMessageComponent],\r\n imports: [CommonModule],\r\n exports: [AXToastWrapperComponent],\r\n entryComponents: [AXToastWrapperComponent, AXToastMessageComponent],\r\n providers: [AXToastService]\r\n})\r\nexport class AXToastModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSelectionListComponent } from './selection-list.component';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [AXSelectionListComponent],\r\n imports: [CommonModule, FormsModule, AXCheckBoxModule],\r\n exports: [AXSelectionListComponent],\r\n providers: []\r\n})\r\nexport class AXSelectionListModule { }\r\n","import {\r\n Component,\r\n OnInit,\r\n QueryList,\r\n ContentChildren,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ElementRef,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { AXValidationResult } from './validation.class';\r\nimport { AXValidatableComponent } from '../base/element.class';\r\nimport { AXBaseEvent } from '../base/events.class';\r\n@Component({\r\n selector: 'ax-validation-form',\r\n template: '<ng-content></ng-content>'\r\n})\r\nexport class AXValidationFormComponent {\r\n\r\n constructor(private ref: ElementRef, private cdr: ChangeDetectorRef) { }\r\n\r\n\r\n private widgets: AXValidatableComponent[] = [];\r\n\r\n\r\n @ContentChildren(AXValidatableComponent, { descendants: true })\r\n private widgetsQuery: QueryList<AXValidatableComponent>;\r\n\r\n @Input()\r\n validateOn: 'blur' | 'change' | 'submit' = 'submit';\r\n\r\n @Output()\r\n onInit: EventEmitter<AXBaseEvent> = new EventEmitter<AXBaseEvent>();\r\n\r\n\r\n ngAfterViewInit() {\r\n\r\n this.onInit.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n\r\n validate(): Promise<AXValidationResult> {\r\n this.widgets.push(...this.widgetsQuery.toArray().filter(c => !this.widgets.includes(c)));\r\n //\r\n this.widgets.forEach(w => {\r\n if (w.validation && w.validation.validateOn == null) {\r\n w.validation.validateOn = this.validateOn;\r\n }\r\n });\r\n\r\n return new Promise<AXValidationResult>(resolve => {\r\n if (!this.widgets || this.widgets.length === 0) {\r\n return Promise.resolve({ result: true });\r\n }\r\n Promise.all(this.widgets.map((c) => c.validate())).then((rules: any) => {\r\n const failed = rules.filter((c: any) => !c.result);\r\n if (failed.length) {\r\n resolve({\r\n result: false,\r\n items: failed\r\n });\r\n }\r\n else {\r\n resolve({ result: true });\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n addWidget(widget: AXValidatableComponent) {\r\n this.widgets.push(widget);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXValidationFormComponent } from './validation-form.component';\r\nimport { AXValidationComponent } from './validation.component';\r\nimport { AXValidationRuleComponent, AXValidationRules } from './validation-rule.widget';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXValidationFormComponent, AXValidationComponent, AXValidationRuleComponent],\r\n imports: [CommonModule],\r\n exports: [AXValidationFormComponent, AXValidationComponent, AXValidationRuleComponent],\r\n providers: []\r\n})\r\nexport class AXValidationModule {\r\n constructor() {\r\n AXValidationRules.addRule('email', {\r\n message: AXTranslator.get('validation.messages.email'),\r\n type: 'regex',\r\n value: /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/\r\n })\r\n AXValidationRules.addRule('phone', {\r\n message: AXTranslator.get('validation.messages.phone'),\r\n type: 'regex',\r\n value: /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/\r\n })\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXFilterPanelComponent } from './filter-panel/filter-panel.component';\r\nimport { AXFilterColumnStringComponent } from './columns/filter-column-string.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXFilterColumnSelectionComponent } from './columns/filter-column-selection.component';\r\nimport { AXFilterColumnDateComponent } from './columns/filter-column-date.component';\r\nimport { AXFilterColumnNumberComponent } from './columns/filter-column-number.component';\r\nimport { AXToolbarFilterViewComponent } from './toolbar/filter-toolbar.component';\r\nimport { AXPanelBoxModule } from '../panel-box/panel-box.module';\r\nimport { AXDatePickerModule } from '../date-picker/date-picker.module';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXToastModule } from '../toast/toast.module';\r\nimport { AXToolbarModule } from '../toolbar/toolbar.module';\r\nimport { AXMenuModule } from '../menu/menu.module';\r\nimport { AXSelectionListModule } from '../selection-list/selection-list.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXValidationModule } from '../validation/validation.module';\r\n\r\n\r\n\r\n\r\nconst COMPONENTS = [\r\n AXFilterPanelComponent,\r\n AXFilterColumnStringComponent,\r\n AXFilterColumnSelectionComponent,\r\n AXFilterColumnDateComponent,\r\n AXFilterColumnNumberComponent,\r\n AXToolbarFilterViewComponent,\r\n]\r\n\r\n@NgModule({\r\n declarations: [COMPONENTS],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXPanelBoxModule,\r\n AXDatePickerModule,\r\n AXCheckBoxModule,\r\n AXTextBoxModule,\r\n AXValidationModule,\r\n AXToastModule,\r\n AXToolbarModule,\r\n AXMenuModule,\r\n AXSelectionListModule,\r\n AXButtonModule\r\n ],\r\n exports: [COMPONENTS],\r\n providers: [],\r\n})\r\nexport class AXFilterModule { }","import { ContentChild, Input, Directive } from '@angular/core';\r\nimport { AXDataSourceComponent } from '../../data-source/datasource.component';\r\nimport { AXDataSourceReadParams } from '../../data-source/read-param';\r\nimport { AXBaseComponent } from '../../base/element.class';\r\n\r\n\r\nexport abstract class AXDataListComponent extends AXBaseComponent {\r\n\r\n\r\n\r\n @Input()\r\n items: any[] = [];\r\n\r\n // @ContentChild(AXDataSourceComponent, { static: true })\r\n // private _contentDataSource: AXDataSourceComponent;\r\n\r\n // private _dataSource: AXDataSourceComponent;\r\n\r\n // @Input()\r\n // public get dataSource(): AXDataSourceComponent {\r\n // return this._dataSource ? this._dataSource : this._contentDataSource;\r\n // }\r\n\r\n // public set dataSource(v: AXDataSourceComponent) {\r\n // this._dataSource = v;\r\n // }\r\n\r\n\r\n abstract dataSource: AXDataSourceComponent;\r\n\r\n\r\n // ngAfterContentInit(): void {\r\n // this.configDataList();\r\n // }\r\n\r\n\r\n protected configDataList() {\r\n if (this.dataSource) {\r\n this.dataSource.onDataReceived.subscribe(c => {\r\n this.dataReceived(c.data.result);\r\n });\r\n }\r\n }\r\n\r\n private dataReceived(data: any) {\r\n this.items = data;\r\n }\r\n\r\n private params: AXDataSourceReadParams = {};\r\n\r\n fetch(params: AXDataSourceReadParams = {}) {\r\n this.params = params;\r\n if (this.dataSource) {\r\n this.dataSource.fetch(params);\r\n }\r\n }\r\n\r\n refresh() {\r\n this.fetch(this.params);\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXToolbarItem } from '../../toolbar/toolbar-item';\r\nimport { AXValueEvent } from '../../base/events.class';\r\n\r\nexport type AXListViewDirection = \"vertical\" | \"vertical-wrap\" | \"horizontal-wrap\" | \"horizontal\";\r\n\r\n@Component({\r\n selector: 'ax-toolbar-list-view',\r\n template: `\r\n <div class=\"btn-group\" role=\"group\">\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"vertical\" [class.active]=\"direction=='vertical'\" (click)=\"direction='vertical'\" title=\"vertical\">\r\n <i class=\"far fa-bars\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"verticalWrap\" [class.active]=\"direction=='vertical-wrap'\" (click)=\"direction='vertical-wrap'\" title=\"vertical-wrap\">\r\n <i class=\"far fa-grip-horizontal\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"horizontalWrap\" [class.active]=\"direction=='horizontal-wrap'\" title=\"horizontal-wrap'\" (click)=\"direction='horizontal-wrap'\" title=\"horizontal-wrap\">\r\n <i class=\"far fa-bars fa-rotate-90\"></i>\r\n </button>\r\n <button type=\"button\" class=\"btn btn-light btn-sm\" *ngIf=\"horizontal\" [class.active]=\"direction=='horizontal'\" (click)=\"direction='horizontal'\" title=\"horizontal\">\r\n <i class=\"far fa-grip-horizontal fa-rotate-90\"></i>\r\n </button>\r\n </div>\r\n `,\r\n providers: [{ provide: AXToolbarItem, useExisting: AXToolbarListViewComponent }]\r\n})\r\nexport class AXToolbarListViewComponent {\r\n constructor() { }\r\n\r\n @Input('vertical')\r\n vertical: boolean = true;\r\n\r\n @Input('vertical-wrap')\r\n verticalWrap: boolean = true;\r\n\r\n @Input('horizontal-wrap')\r\n horizontalWrap: boolean = true;\r\n\r\n @Input('horizontal')\r\n horizontal: boolean = true;\r\n\r\n\r\n @Output()\r\n onDirectionChanged: EventEmitter<AXValueEvent<AXListViewDirection>> = new EventEmitter<AXValueEvent<AXListViewDirection>>();\r\n\r\n private _direction: AXListViewDirection = \"vertical\";\r\n @Input()\r\n public get direction(): AXListViewDirection {\r\n return this._direction;\r\n }\r\n public set direction(v: AXListViewDirection) {\r\n if (v != this._direction) {\r\n const old = this._direction;\r\n this._direction = v;\r\n this.onDirectionChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n}\r\n","import {\r\n Component,\r\n ContentChild,\r\n TemplateRef,\r\n Input,\r\n Output,\r\n EventEmitter\r\n} from \"@angular/core\";\r\nimport { AXDataListComponent } from \"../core/data-list.component\";\r\nimport {\r\n AXToolbarListViewComponent,\r\n AXListViewDirection\r\n} from \"./toolbar-list-view.component\";\r\nimport { ViewEncapsulation } from \"@angular/core\";\r\nimport { AXToolbarSearchComponent } from '../../toolbar/search/toolbar-search.component';\r\nimport { AXToolbarComponent } from '../../toolbar/toolbar.component';\r\nimport { AXEvent, AXValueEvent } from '../../base/events.class';\r\nimport { AXDataSourceComponent } from '../../data-source/datasource.component';\r\n\r\n\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: \"ax-list\",\r\n templateUrl: \"./list.component.html\",\r\n styleUrls: [\"./list.component.scss\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXListComponent extends AXDataListComponent {\r\n constructor() {\r\n super();\r\n }\r\n @Input() width: string = \"\";\r\n @Input() height: string = \"auto\";\r\n\r\n @Input(\"dropId\") public dropId: string;\r\n @Input(\"connectedList\") public connectedList: string[] = [];\r\n\r\n @Input() public allowMoveItem: boolean = false;\r\n\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n private _dataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n public get dataSource(): AXDataSourceComponent {\r\n return this._dataSource ? this._dataSource : this._contentDataSource;\r\n }\r\n\r\n public set dataSource(v: AXDataSourceComponent) {\r\n this._dataSource = v;\r\n }\r\n\r\n\r\n @ContentChild('itemTemplate', { static: true })\r\n _contentItemTemplate: TemplateRef<any>;\r\n\r\n\r\n private _itemTemplate: TemplateRef<any>;\r\n @Input()\r\n public get itemTemplate(): TemplateRef<any> {\r\n return this._itemTemplate ? this._itemTemplate : this._contentItemTemplate;\r\n }\r\n public set itemTemplate(v: TemplateRef<any>) {\r\n this._itemTemplate = v;\r\n }\r\n\r\n\r\n\r\n\r\n @ContentChild('emptyTemplate', { static: true })\r\n _contentEmptyTemplate: TemplateRef<any>;\r\n\r\n private _emptyTemplate: TemplateRef<any>;\r\n @Input()\r\n public get emptyTemplate(): TemplateRef<any> {\r\n return this._emptyTemplate ? this._emptyTemplate : this._contentEmptyTemplate;\r\n }\r\n public set emptyTemplate(v: TemplateRef<any>) {\r\n this._emptyTemplate = v;\r\n }\r\n\r\n\r\n @ContentChild(AXToolbarSearchComponent, { static: true })\r\n searchToolbar: AXToolbarSearchComponent;\r\n\r\n @ContentChild(AXToolbarListViewComponent, { static: true })\r\n viewToolbar: AXToolbarListViewComponent;\r\n\r\n @ContentChild(AXToolbarComponent, { static: true })\r\n toolbar: AXToolbarComponent;\r\n\r\n\r\n\r\n @Output()\r\n onDirectionChanged: EventEmitter<AXValueEvent<AXListViewDirection>> = new EventEmitter<AXValueEvent<AXListViewDirection>>();\r\n\r\n private _direction: AXListViewDirection = \"vertical\";\r\n @Input()\r\n public get direction(): AXListViewDirection {\r\n return this._direction;\r\n }\r\n public set direction(v: AXListViewDirection) {\r\n if (this._direction != v) {\r\n const old = this._direction;\r\n this._direction = v;\r\n this.setDirection(v);\r\n this.onDirectionChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n\r\n ngAfterViewInit(): void {\r\n this.fetch();\r\n if (this.viewToolbar) {\r\n this.viewToolbar.onDirectionChanged.subscribe(c => {\r\n this.direction = c.value;\r\n });\r\n }\r\n }\r\n\r\n private setDirection(e: AXListViewDirection) {\r\n this.direction = e;\r\n }\r\n\r\n\r\n\r\n // dragDrop(event: CdkDragDrop<any[]>) {\r\n // if (event.previousContainer === event.container) {\r\n // moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);\r\n // } else {\r\n // transferArrayItem(event.previousContainer.data,\r\n // event.container.data,\r\n // event.previousIndex,\r\n // event.currentIndex);\r\n // }\r\n // }\r\n dragDrop(event: any) {\r\n\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AXDataSourceComponent } from './datasource.component';\r\nimport { AXHttpModule } from '@acorex/core';\r\n\r\n@NgModule({\r\n declarations: [AXDataSourceComponent],\r\n imports: [],\r\n exports: [AXDataSourceComponent],\r\n providers: [],\r\n})\r\nexport class AXDataSourceModule { }","import { NgModule } from '@angular/core';\r\nimport { AXListComponent } from './list.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXToolbarListViewComponent } from './toolbar-list-view.component';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { AXDataSourceModule } from '../../data-source/datasource.module';\r\n\r\n@NgModule({\r\n declarations: [AXListComponent, AXToolbarListViewComponent],\r\n imports: [CommonModule, AXDataSourceModule, DragDropModule],\r\n exports: [AXListComponent, AXToolbarListViewComponent],\r\n providers: [],\r\n})\r\nexport class AXListModule { }","import { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';\r\nimport { AXButtonItem } from '@acorex/core';\r\nimport { AXMenuItemClickEvent } from '../menu/menu.component';\r\nimport { AXBasePopupPageComponent } from '../base/base-page.class';\r\n\r\n@Component({\r\n selector: 'ax-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXDialogComponent extends AXBasePopupPageComponent {\r\n message: any;\r\n\r\n buttons: AXButtonItem[] = [];\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n onClick: Function;\r\n\r\n onFooterButtonClick(e: AXMenuItemClickEvent) {\r\n if (this.onClick) {\r\n this.onClick(e.data);\r\n }\r\n }\r\n\r\n getFooterButtons(): AXButtonItem[] {\r\n return this.buttons;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDialogComponent } from './dialog.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\n\r\n@NgModule({\r\n declarations: [AXDialogComponent],\r\n imports: [CommonModule, AXButtonModule,AXTranslatorModule],\r\n exports: [AXDialogComponent],\r\n providers: [],\r\n})\r\nexport class AXDialogModule { }","import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n ViewChild,\r\n ViewContainerRef,\r\n OnInit,\r\n ComponentFactoryResolver,\r\n ViewEncapsulation,\r\n HostListener,\r\n ElementRef,\r\n ComponentRef,\r\n OnDestroy,\r\n Output,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { AXBaseComponent } from '../base/element.class';\r\nimport { AXPageCloseEvent, TAB_META_KEY } from '../base/base-page.class';\r\nimport { AXButtonItem, AXRenderService } from '@acorex/core';\r\nimport { AXLoadingService } from '../loading/loading.service';\r\nimport { Subscription } from 'rxjs';\r\n\r\n@Component({\r\n templateUrl: './popup.component.html',\r\n styleUrls: ['./popup.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class AXPopupComponent extends AXBaseComponent implements OnDestroy {\r\n\r\n isLoading: boolean = true;\r\n _loadingId: number;\r\n private onFooterButtonsSubscription: Subscription;\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private ref: ElementRef<HTMLDivElement>,\r\n private rendererService: AXRenderService,\r\n private loadingService: AXLoadingService,\r\n private cdr: ChangeDetectorRef,\r\n ) {\r\n super();\r\n }\r\n\r\n ngAfterViewInit() {\r\n console.log('popup');\r\n this._loadingId = this.loadingService.show(this.ref.nativeElement.querySelector('.ax-popup-body-container'));\r\n if (typeof this.content === 'string') {\r\n this.rendererService.findLoadedComponentByRoute(this.content, 20).then(route => {\r\n setTimeout(() => {\r\n this.loadComponent(route?.component);\r\n }, 300);\r\n });\r\n }\r\n else if (this.content instanceof TemplateRef) {\r\n const view = this.content.createEmbeddedView({ $implicit: this.data });\r\n this.popupBody.insert(view);\r\n this.isLoading = false;\r\n this.loadingService.hide(this._loadingId);\r\n }\r\n else if (typeof this.content === 'function') {\r\n setTimeout(() => {\r\n this.loadComponent(this.content);\r\n });\r\n }\r\n }\r\n\r\n\r\n private loadComponent(component: any) {\r\n\r\n if (component == null) {\r\n //TODO: 404 page component\r\n console.error(`Invalid page Component! ${this.content}`);\r\n return;\r\n }\r\n ///\r\n try {\r\n const factory = this.resolver.resolveComponentFactory(component);\r\n this.comRef = this.popupBody.createComponent(factory);\r\n const com = this.comRef.instance as any;\r\n if (com.onClosed) {\r\n com.onClosed.subscribe((e: AXPageCloseEvent) => {\r\n this.onClosed.emit(e);\r\n });\r\n }\r\n this[TAB_META_KEY].component = com;\r\n Object.assign(this[TAB_META_KEY].component, this.data);\r\n //\r\n if (com.getFooterButtons) {\r\n this.footerButtons = com.getFooterButtons();\r\n }\r\n if (com.onFooterButtonsChanged) {\r\n this.onFooterButtonsSubscription = (com.onFooterButtonsChanged as EventEmitter<AXButtonItem[]>).subscribe(c => {\r\n this.footerButtons = c;\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n //\r\n this.focus();\r\n this.isLoading = false;\r\n this.loadingService.hide(this._loadingId);\r\n setTimeout(() => {\r\n this.comRef.changeDetectorRef.detectChanges();\r\n }, 100);\r\n this.cdr.detectChanges();\r\n } catch (error) {\r\n //TODO: 404 page component\r\n console.error(error);\r\n }\r\n }\r\n\r\n @ViewChild('popupBody', { read: ViewContainerRef, static: true })\r\n private popupBody: ViewContainerRef;\r\n\r\n @HostListener('keydown.escape', ['$event'])\r\n onKeydownHandler(event: KeyboardEvent) {\r\n if (this.closable) {\r\n this.onCloseClick();\r\n }\r\n }\r\n\r\n private comRef: ComponentRef<any>;\r\n\r\n title: string;\r\n\r\n onClosed: EventEmitter<AXPageCloseEvent> = new EventEmitter<AXPageCloseEvent>();\r\n\r\n size: 'sm' | 'md' | 'lg' | 'full' = 'sm';\r\n modal: boolean = true;\r\n\r\n data: any = {};\r\n\r\n maximizable: boolean = false;\r\n\r\n closable: boolean = true;\r\n\r\n content: any;\r\n\r\n headerButtons: AXButtonItem[] = [];\r\n\r\n footerButtons: AXButtonItem[] = [];\r\n\r\n onCloseClick() {\r\n this.onClosed.emit({\r\n component: this[TAB_META_KEY].component,\r\n htmlElement: this.ref.nativeElement,\r\n });\r\n this.cdr.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.comRef) {\r\n this.comRef.destroy();\r\n }\r\n if (this.onFooterButtonsSubscription) {\r\n this.onFooterButtonsSubscription.unsubscribe();\r\n }\r\n this.cdr.detectChanges();\r\n this.loadingService.hide(this._loadingId);\r\n }\r\n\r\n focus() {\r\n setTimeout(() => this.ref.nativeElement.focus());\r\n }\r\n\r\n onFullScreen() { }\r\n\r\n handleFooterButtonClick(e: AXButtonItem) {\r\n if (e.onClick) {\r\n e.onClick();\r\n }\r\n else if (this[TAB_META_KEY].component.onFooterButtonClick) {\r\n this[TAB_META_KEY].component.onFooterButtonClick({\r\n component: this[TAB_META_KEY].component,\r\n name: e.name,\r\n data: e,\r\n htmlElement: this.ref.nativeElement,\r\n });\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AXPopupComponent } from './popup.component';\r\nimport { AXButtonItem } from '@acorex/core';\r\nimport { TAB_META_KEY, AXPageClosedPromise, AXPageCloseEvent } from '../base/base-page.class';\r\nimport { AXOverlayService, AXOverlayViewRef } from '../popover/overlay.service';\r\nimport { options } from '@amcharts/amcharts4/core';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXPopupService {\r\n private stack: Array<AXPopupComponent> = [];\r\n\r\n constructor(private overlayService: AXOverlayService) { }\r\n\r\n\r\n open(content: any, title: string): AXPageClosedPromise;\r\n open(\r\n content: any,\r\n options?: {\r\n title: string;\r\n closable?: boolean;\r\n maximizable?: boolean;\r\n size?: 'sm' | 'md' | 'lg' | 'full';\r\n data?: any;\r\n footerButtons?: AXButtonItem[],\r\n modal?: boolean\r\n }\r\n ): AXPageClosedPromise;\r\n\r\n open(arg1, arg2): AXPageClosedPromise {\r\n const options: any = {\r\n closable: true,\r\n size: 'md',\r\n maximizable: false,\r\n footerButtons: [],\r\n modal: true,\r\n };\r\n\r\n if (typeof arg2 === 'string') {\r\n options.title = arg2;\r\n } else {\r\n Object.assign(options, arg2);\r\n }\r\n const com = this.overlayService.show(AXPopupComponent, options, {\r\n transparentBackdrop: false,\r\n hasBackdrop: options.modal,\r\n closeOnClickOutside: false,\r\n scroll: 'block'\r\n });\r\n const popup = com.instance as AXPopupComponent;\r\n popup.content = arg1;\r\n popup[TAB_META_KEY] = {};\r\n if (options.size) {\r\n popup.size = options.size;\r\n }\r\n if (options.footerButtons) {\r\n popup.footerButtons = options.footerButtons;\r\n }\r\n this.stack.push(popup);\r\n popup.onClosed.subscribe(c => {\r\n this.closePopup(popup, com, c);\r\n });\r\n const promise = new AXPageClosedPromise((resolve) => {\r\n popup[TAB_META_KEY].close = (e) => {\r\n if (resolve) {\r\n resolve(e);\r\n }\r\n };\r\n });\r\n promise['closeMethod'] = () => { popup.onCloseClick(); };\r\n return promise;\r\n }\r\n\r\n\r\n private closePopup(popup: AXPopupComponent, com: AXOverlayViewRef, result: AXPageCloseEvent) {\r\n const closeFunc = (e) => {\r\n com.dispose();\r\n this.stack.pop();\r\n delete e.cancel;\r\n popup[TAB_META_KEY].close(e);\r\n if (this.stack.length) { this.stack.reverse()[0].focus(); }\r\n };\r\n const e = { cancel: false };\r\n const closingFunc = popup[TAB_META_KEY]?.component?.onClosing;\r\n if (closingFunc) {\r\n const res = closingFunc(e);\r\n if (res instanceof Promise) {\r\n res.then(() => {\r\n if (e == null || e.cancel !== true) {\r\n closeFunc(result);\r\n }\r\n });\r\n }\r\n else {\r\n if (e == null || e.cancel !== true) {\r\n closeFunc(result);\r\n }\r\n }\r\n } else {\r\n closeFunc(result);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { AXDialogComponent } from './dialog.component';\r\nimport { AXPopupService } from '../popup/popup.service';\r\nimport { AXButtonItem, AXTranslator } from '@acorex/core';\r\n\r\nexport class AXDialogAlertResult {\r\n private _executor: (close: (e?: any) => void) => void;\r\n constructor(\r\n executor: (close: (e?: any) => void) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.closeAction);\r\n }, 50);\r\n }\r\n\r\n private closeAction: (e?: any) => void;\r\n\r\n close(action: (e?: any) => void): AXDialogAlertResult {\r\n this.closeAction = action;\r\n return this;\r\n }\r\n\r\n}\r\n\r\nexport class AXDialogConfirmResult {\r\n private _executor: (okay: () => void, cancel: () => void, final: () => void) => void;\r\n constructor(\r\n executor: (okay: () => void, cancel: () => void, final: () => void) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.okayAction, this.cancelAction, this.finalAction);\r\n }, 50);\r\n }\r\n\r\n private okayAction: () => void;\r\n private cancelAction: () => void;\r\n private finalAction: () => void;\r\n\r\n okay(action: () => void): AXDialogConfirmResult {\r\n this.okayAction = action;\r\n return this;\r\n }\r\n cancel(action: () => void): AXDialogConfirmResult {\r\n this.cancelAction = action;\r\n\r\n return this;\r\n }\r\n final(action: () => void) {\r\n this.finalAction = action;\r\n }\r\n}\r\n\r\n\r\nexport class AXDialogResult {\r\n private _executor: (then: (name: string) => void, final: () => void) => void;\r\n constructor(\r\n executor: (then: (name: string) => void, final: () => void) => void\r\n ) {\r\n this._executor = executor;\r\n setTimeout(() => {\r\n this._executor(this.thenAction, this.finalAction);\r\n }, 50);\r\n }\r\n\r\n private thenAction: (name: string) => void;\r\n private finalAction: () => void;\r\n\r\n then(action: (name: string) => void): AXDialogResult {\r\n this.thenAction = action;\r\n return this;\r\n }\r\n\r\n final(action: () => void) {\r\n this.finalAction = action;\r\n }\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXDialogService {\r\n\r\n constructor(private popupService: AXPopupService) {\r\n\r\n }\r\n\r\n alert(title: string, message: string): AXDialogAlertResult {\r\n return new AXDialogAlertResult((close) => {\r\n const popup = this.popupService.open(AXDialogComponent, {\r\n title,\r\n size: 'sm',\r\n closable: false,\r\n\r\n data: {\r\n message,\r\n buttons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n }\r\n ],\r\n onClick: (e) => {\r\n popup.close()\r\n close();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n confirm(title: string, message: string): AXDialogConfirmResult {\r\n return new AXDialogConfirmResult((okay, cancel, final) => {\r\n const popup = this.popupService.open(AXDialogComponent, {\r\n title,\r\n size: 'sm',\r\n closable: false,\r\n\r\n data: {\r\n buttons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n }\r\n ],\r\n message,\r\n onClick: (e) => {\r\n popup.close()\r\n if (e.name === 'confirm' && okay) {\r\n okay();\r\n }\r\n if (e.name === 'cancel' && cancel) {\r\n cancel();\r\n }\r\n if (final) {\r\n final();\r\n }\r\n }\r\n }\r\n })\r\n });\r\n }\r\n\r\n\r\n show(title: string, message: string, closable: boolean = false, ...buttons: AXButtonItem[]): AXDialogResult {\r\n return new AXDialogResult((then, final) => {\r\n const popup = this.popupService.open(AXDialogComponent, {\r\n title,\r\n size: 'sm',\r\n closable,\r\n data: {\r\n message,\r\n buttons,\r\n onClick: (e) => {\r\n popup.close();\r\n if (then) {\r\n then(e.name);\r\n }\r\n if (final) {\r\n final();\r\n }\r\n }\r\n }\r\n });\r\n });\r\n }\r\n}","import { Component, OnInit, Input } from '@angular/core';\r\nimport {\r\n trigger,\r\n state,\r\n style,\r\n transition,\r\n animate,\r\n} from '@angular/animations';\r\n@Component({\r\n selector: 'ax-drawer',\r\n templateUrl: './drawer.component.html',\r\n animations: [\r\n trigger('slideInOut', [\r\n state(\r\n 'in',\r\n style({\r\n transform: 'translate3d(0,0,0)',\r\n })\r\n ),\r\n state(\r\n 'out',\r\n style({\r\n transform: 'translate3d(100%, 0, 0)',\r\n })\r\n ),\r\n transition('in => out', animate('200ms ease-in-out')),\r\n transition('out => in', animate('200ms ease-in-out')),\r\n ]),\r\n ],\r\n})\r\nexport class AXDrawerComponent {\r\n constructor() {}\r\n\r\n @Input()\r\n width: number = 300;\r\n\r\n drawerState: string = 'out';\r\n\r\n ngOnDestroy(): void {\r\n document.querySelector('body').classList.remove('ax-drawer-underlay');\r\n }\r\n toggle() {\r\n const body = document.querySelector('body');\r\n\r\n if (this.drawerState === 'out') {\r\n this.drawerState = 'in';\r\n body.classList.add('ax-drawer-underlay');\r\n } else {\r\n this.drawerState = 'out';\r\n body.classList.remove('ax-drawer-underlay');\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDrawerComponent } from './drawer.component';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\n@NgModule({\r\n declarations: [AXDrawerComponent],\r\n imports: [CommonModule, BrowserAnimationsModule],\r\n exports: [AXDrawerComponent],\r\n providers: []\r\n})\r\nexport class AXDrawerModule {}\r\n","import { Component, OnInit, ViewEncapsulation, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { trigger, state, style, transition, animate } from '@angular/animations';\r\nimport { AXBaseSizableComponent, AXElementSize } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-fieldset',\r\n templateUrl: './fieldset.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n animations: [\r\n trigger('visibilityChanged', [\r\n state(\r\n 'shown',\r\n style({\r\n height: '*',\r\n opacity: 1\r\n })\r\n ),\r\n state(\r\n 'hidden',\r\n style({\r\n height: '0px',\r\n opacity: 0,\r\n padding: 0\r\n })\r\n ),\r\n transition('Void => *', animate('0ms')),\r\n transition('shown => hidden', animate('200ms')),\r\n transition('hidden => shown', animate('200ms'))\r\n ])\r\n ]\r\n})\r\nexport class AXFieldsetComponent implements AXBaseSizableComponent {\r\n @Input()\r\n size: AXElementSize = \"md\";\r\n\r\n @Input()\r\n caption: string = '';\r\n\r\n @Input()\r\n allowCollapse: boolean = false;\r\n\r\n collapsed: boolean = false;\r\n toggle() {\r\n if (this.allowCollapse) {\r\n this.collapsed = !this.collapsed;\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXFieldsetComponent } from './fieldset.component';\r\n\r\n@NgModule({\r\n declarations: [AXFieldsetComponent],\r\n imports: [ CommonModule ],\r\n exports: [AXFieldsetComponent],\r\n providers: [],\r\n})\r\nexport class AXFieldsetModule {}","import { Component, OnInit, ViewEncapsulation, Input } from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXElementSize } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-label',\r\n templateUrl: './label.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXLabelComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n constructor() {\r\n super();\r\n }\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n ngOnInit(): void {}\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXLabelComponent } from './label.component';\r\n\r\nconst COMPONENT = [AXLabelComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXLabelModule { }","import { Component, OnInit, Input, ElementRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-loading-panel',\r\n template: `\r\n <div onclick=\"return false;\" class=\"ax ax-loading-panel ax-overlay-wrapper ax-overlay-modal ax-loading-overlay\" *ngIf=\"visible\" >\r\n <ax-loading-indicator tabindex=\"0\" cdkTrapFocus>\r\n </ax-loading-indicator>\r\n </div>\r\n `\r\n})\r\nexport class AXLoadingPanelComponent implements OnInit {\r\n\r\n constructor(private ref: ElementRef<HTMLDivElement>) {\r\n\r\n }\r\n\r\n @Input()\r\n visible: boolean = false;\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n ngAfterViewInit() {\r\n const host = this.ref.nativeElement.closest('.ax-loading-host');\r\n }\r\n\r\n show() {\r\n this.visible = true;\r\n }\r\n\r\n hide() {\r\n this.visible = false;\r\n }\r\n}\r\n\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXLoadingIndicatorComponent } from './loading-indicator.component';\r\nimport { AXLoadingPanelComponent } from './loading-panel.component';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\n\r\n@NgModule({\r\n declarations: [AXLoadingIndicatorComponent, AXLoadingPanelComponent],\r\n imports: [CommonModule, A11yModule],\r\n exports: [AXLoadingIndicatorComponent, AXLoadingPanelComponent],\r\n providers: [],\r\n})\r\nexport class AXLoadingModule { }","import { Component, Input, ElementRef, HostListener, ChangeDetectorRef, ChangeDetectionStrategy, AfterViewInit, OnInit } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n@Component({\r\n selector: 'ax-number-box',\r\n templateUrl: './number-box.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXNumberBoxComponent }]\r\n})\r\nexport class AXNumberBoxComponent extends AXBaseTextComponent implements OnInit {\r\n @Input() min: number = null;\r\n @Input() max: number = null;\r\n\r\n @Input()\r\n showSeparator: boolean = false;\r\n @Input()\r\n showCurrency: boolean = false;\r\n\r\n @Input()\r\n showCounter: boolean = true;\r\n\r\n @Input()\r\n scrollWeel: boolean = true;\r\n\r\n @Input()\r\n showDoubleCounter: boolean = false;\r\n\r\n userQuestionUpdate = new Subject<string>();\r\n\r\n userEdite: boolean = false;\r\n\r\n tmp: any;\r\n count: number;\r\n findDots: boolean = false;\r\n findMinus: boolean = false;\r\n cursorPosition: number = 0;\r\n dotPosition: number;\r\n textValue: string;\r\n decimalConstant: number = 0.1;\r\n lastStep: number = null;\r\n\r\n @Input() intStep: number = 1;\r\n @Input() decimalNumber: number = null;\r\n @Input() customStep: number = null;\r\n\r\n private _values: string;\r\n public get value(): string {\r\n return this._values;\r\n }\r\n public set value(v: string) {\r\n if (v === '-') {\r\n this.textValue = '-';\r\n this._values = '-';\r\n } else {\r\n if (v === '' || v == null || v === undefined ? true : isNaN(Number(v.toString().replace(/,/g, ''))) === false) {\r\n if (v === '' || v == null || v === undefined) {\r\n this.textValue = '';\r\n const old = this._values;\r\n this._values = null;\r\n\r\n if (this._values !== old) {\r\n this.valueChange.emit(null);\r\n this.onValueChanged.emit({\r\n isUserChange: this.userEdite,\r\n component: this,\r\n value: null,\r\n oldValue:\r\n this.showSeparator && old\r\n ? old === '-'\r\n ? null\r\n : Number(old.replace(/,/g, ''))\r\n : old === null || old === undefined\r\n ? null\r\n : old === '-'\r\n ? null\r\n : Number(old),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.userEdite = false;\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n } else {\r\n v = v.toString();\r\n\r\n // this.addCommas(v.toString());\r\n this.textValue = this.showSeparator && v ? this.addCommas(v.toString()) : v;\r\n\r\n // if (this.textValue.indexOf('.') !== -1) {\r\n // // const dottt= (this.textValue.length-1) - this.textValue.indexOf('.')\r\n // if (this.textValue.length - 1 - this.textValue.indexOf('.') < this.decimalNumber) {\r\n // const a = this.decimalNumber - (this.textValue.length - 1 - this.textValue.indexOf('.'));\r\n // const z = '0';\r\n // this.textValue = this.textValue + '0';\r\n // }\r\n // }\r\n\r\n if (this._values) {\r\n const old = this._values;\r\n if (old.toString().search(/\\./g) !== v.toString().search(/\\./g)) {\r\n if (this.cursorPosition <= old.search(/\\./g)) {\r\n this.cursorPosition = v.search(/\\./g);\r\n } else {\r\n this.cursorPosition = v.length;\r\n }\r\n }\r\n }\r\n if (v !== this._values) {\r\n const old = this._values;\r\n this._values = v;\r\n this.valueChange.emit(this.showSeparator && v ? Number(v.replace(/,/g, '')) : Number(v));\r\n this.onValueChanged.emit({\r\n isUserChange: this.userEdite,\r\n component: this,\r\n value: this.showSeparator && v ? Number(v.replace(/,/g, '')) : Number(v),\r\n oldValue:\r\n this.showSeparator && old\r\n ? old === '-'\r\n ? null\r\n : Number(old.replace(/,/g, ''))\r\n : old === null || old === undefined\r\n ? null\r\n : old === '-'\r\n ? null\r\n : Number(old),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.userEdite = false;\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n }\r\n } else {\r\n this.textValue = '';\r\n v = null;\r\n const old = this._values;\r\n this._values = null;\r\n\r\n if (this._values !== old) {\r\n this.valueChange.emit(null);\r\n this.onValueChanged.emit({\r\n isUserChange: this.userEdite,\r\n component: this,\r\n value: null,\r\n oldValue:\r\n this.showSeparator && old\r\n ? old === '-'\r\n ? null\r\n : Number(old.replace(/,/g, ''))\r\n : old === null || old === undefined\r\n ? null\r\n : old === '-'\r\n ? null\r\n : Number(old),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.userEdite = false;\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n }\r\n }\r\n }\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n this.textAlign = 'left';\r\n }\r\n\r\n addCommas2(x) {\r\n return x.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\r\n }\r\n\r\n addCommas(nStr) {\r\n nStr += '';\r\n const x = nStr.split('.');\r\n let x1 = x[0];\r\n const x2 = x.length > 1 ? '.' + x[1] : '';\r\n const rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n }\r\n return x1 + x2;\r\n }\r\n\r\n ngOnInit() {\r\n if (this.disabled === false) {\r\n if (this.scrollWeel === true) {\r\n setTimeout(() => {\r\n this.input.nativeElement.addEventListener('wheel', (e) => {\r\n this.handleWheel(e);\r\n });\r\n }, 500);\r\n }\r\n }\r\n\r\n // this.value = this.min.toString();\r\n }\r\n\r\n handleWheel(event) {\r\n if ((event as any).wheelDelta > 0) {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n\r\n this.upStepHandel();\r\n this.delaySearch();\r\n\r\n setTimeout(() => {\r\n this.setCaret();\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n if ((event as any).wheelDelta < 0) {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n\r\n this.downStepHandel();\r\n this.delaySearch();\r\n\r\n setTimeout(() => {\r\n this.setCaret();\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n event.stopPropagation();\r\n event.preventDefault();\r\n }\r\n\r\n handleKeyPress(event: any) {\r\n this.userEdite = true;\r\n const NumberDotpattern = /[0-9\\.]/g;\r\n const NumberMinusPattern = /[0-9\\-]/g;\r\n\r\n const inputChar = String.fromCharCode(event.charCode);\r\n\r\n if (this.value && this.value.toString().match(/\\./g) === null) {\r\n this.findDots = false;\r\n }\r\n if (this.value && this.value.toString().search('-') === null) {\r\n this.findMinus = false;\r\n }\r\n\r\n // get cursur position when key press\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n this.cursorPosition += 1;\r\n }\r\n\r\n // control cursor when in first Index\r\n if (this.cursorPosition <= 1) {\r\n if (!NumberMinusPattern.test(inputChar)) {\r\n event.preventDefault();\r\n }\r\n if (this.value && this.value.match(/\\-/g)) {\r\n event.preventDefault();\r\n }\r\n }\r\n // control cursor when in another index\r\n if (this.cursorPosition !== 1) {\r\n if (event.keyCode !== 8 && !NumberDotpattern.test(inputChar)) {\r\n event.preventDefault();\r\n } else {\r\n // for contor decimal figur = 0 or null\r\n if (this.decimalNumber === null || this.decimalNumber === 0) {\r\n if (inputChar === '.') {\r\n event.preventDefault();\r\n }\r\n }\r\n // control decimal number (figur of decimal)\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n const figureAfterDot = this.value.length - this.value.indexOf('.');\r\n const dotIndex = this.value.indexOf('.');\r\n if (dotIndex - 1 + dotIndex + figureAfterDot > dotIndex - 1 + dotIndex + this.decimalNumber && this.cursorPosition - 1 > dotIndex) {\r\n event.preventDefault();\r\n }\r\n }\r\n // control '.' input\r\n if (inputChar === '.') {\r\n const lastChar = this.value.toString().charAt(this.value.length - 1);\r\n // control . when last char is -\r\n if (lastChar.toString().match(/\\-/g)) {\r\n event.preventDefault();\r\n }\r\n // control . when find first dot\r\n if (this.findDots) {\r\n event.preventDefault();\r\n }\r\n this.findDots = true;\r\n this.findMinus = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleKeyUp(event: KeyboardEvent) {\r\n this.userEdite = true;\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n this.setCaret();\r\n }\r\n\r\n if (event.key === 'ArrowDown') {\r\n this.setCaret();\r\n }\r\n\r\n // left & right Button\r\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n // home button\r\n if (event.key === 'Home') {\r\n this.cursorPosition = 0;\r\n }\r\n\r\n // end button\r\n if (event.key === 'End') {\r\n this.cursorPosition = this.value.length;\r\n }\r\n\r\n // set delay with rxjs\r\n this.delaySearch();\r\n\r\n // backspace Control\r\n if (event.key === 'Backspace') {\r\n if (this.value === null || this.value.length <= 0) {\r\n this.cursorPosition = 0;\r\n } else {\r\n this.cursorPosition -= 1;\r\n }\r\n }\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent) {\r\n this.userEdite = true;\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n if (this.readonly === false) {\r\n const countAfterDot =\r\n this.value !== null && this.value !== '' && this.value !== undefined\r\n ? this.value.toString().length - 1 - this.value.toString().indexOf('.')\r\n : 0;\r\n const defaultStep: number =\r\n countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);\r\n // step and +- with up key and down key\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n this.dotPosition = this.value.indexOf('.');\r\n if (this.dotPosition >= this.cursorPosition) {\r\n if (event.key === 'ArrowDown') {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = this.tmp - +this.intStep;\r\n if (this.min === null || Number(this.count) >= Number(this.min)) {\r\n // this.value = this.count.toFixed(this.decimalNumber);\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = this.tmp + +this.intStep;\r\n if (this.max === null || Number(this.count) <= Number(this.max)) {\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n } else {\r\n if (event.key === 'ArrowDown') {\r\n if (this.min === null || Number(this.value) > Number(this.min)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) - this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) - defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp') {\r\n if (this.max === null || Number(this.value) < Number(this.max)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) + this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) + defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (event.key === 'ArrowDown') {\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.min === null || Number(this.value) > parseInt(this.min.toString())) {\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n this.tmp = +this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp - +this.intStep;\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n if (event.key === 'ArrowUp') {\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.max === null || Number(this.value) < parseInt(this.max.toString())) {\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n this.tmp = this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp + +this.intStep;\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n // stop when keydown\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return false;\r\n }\r\n }\r\n\r\n handleClick() {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n delaySearch() {\r\n Observable.create((observer) => {\r\n this.userQuestionUpdate = observer;\r\n });\r\n this.userQuestionUpdate.pipe(debounceTime(1000), distinctUntilChanged()).subscribe((text: string) => this.checkMinMax(text));\r\n // this.userQuestionUpdate.next((e.target as any).value);\r\n setTimeout(() => {\r\n this.userQuestionUpdate.next(this.input.nativeElement.value);\r\n }, 50);\r\n }\r\n\r\n checkMinMax(text) {\r\n if (this.min !== null) {\r\n if (+text < this.min) {\r\n this.value = '';\r\n }\r\n }\r\n if (this.max !== null) {\r\n if (+text > this.max) {\r\n this.value = '';\r\n }\r\n }\r\n }\r\n\r\n doGetCaretPosition(ctrl) {\r\n let CaretPos = 0;\r\n if (ctrl.selectionStart || ctrl.selectionStart === 0) {\r\n CaretPos = ctrl.selectionStart;\r\n return CaretPos;\r\n }\r\n }\r\n\r\n setCaretPosition(ctrl, pos) {\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n } else if (ctrl.createTextRange) {\r\n const range = ctrl.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', pos);\r\n range.moveStart('character', pos);\r\n range.select();\r\n }\r\n }\r\n\r\n setCaret() {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n }\r\n\r\n upStepHandel() {\r\n this.userEdite = true;\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.readonly === false) {\r\n const countAfterDot =\r\n this.value !== null && this.value !== '' && this.value !== undefined\r\n ? this.value.toString().length - 1 - this.value.toString().indexOf('.')\r\n : 0;\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n const defaultStep: number =\r\n countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);\r\n this.dotPosition = this.value.toString().indexOf('.') + 1;\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n if (this.dotPosition > this.cursorPosition) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = this.tmp + +this.intStep;\r\n if (this.max === null || Number(this.count) <= this.max) {\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n } else {\r\n if (this.max === null || Number(this.value) < Number(this.max)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) + this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) + defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.max === null || Number(this.value) < parseInt(this.max.toString())) {\r\n this.tmp = this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp + +this.intStep;\r\n\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n downStepHandel() {\r\n this.userEdite = true;\r\n if (this.min != null && this.value == null) {\r\n this.value = this.min.toString();\r\n } else {\r\n if (this.readonly === false) {\r\n const countAfterDot =\r\n this.value !== null && this.value !== '' && this.value !== undefined\r\n ? this.value.toString().length - 1 - this.value.toString().indexOf('.')\r\n : 0;\r\n if (this.value == null) {\r\n this.value = '0';\r\n } else {\r\n const defaultStep: number =\r\n countAfterDot > this.decimalNumber ? Math.pow(this.decimalConstant, this.decimalNumber) : Math.pow(this.decimalConstant, countAfterDot);\r\n this.dotPosition = this.value.toString().indexOf('.') + 1;\r\n if (this.value && this.value.toString().match(/\\./g)) {\r\n if (this.dotPosition > this.cursorPosition) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.value.replace(/,/g, '')) - +this.intStep;\r\n if (this.min === null || Number(this.count) >= this.min) {\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot).replace(/,/g, '');\r\n }\r\n } else {\r\n if (this.min === null || Number(this.value) > Number(this.min)) {\r\n if (this.customStep !== null) {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.lastStep =\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) +\r\n parseFloat(this.customStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot)) -\r\n parseFloat(defaultStep.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot));\r\n this.count = parseFloat(this.tmp) - this.lastStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n } else {\r\n this.tmp = parseFloat(this.value.replace(/,/g, ''));\r\n this.count = parseFloat(this.tmp) - defaultStep;\r\n this.value = this.count.toFixed(countAfterDot > this.decimalNumber ? this.decimalNumber : countAfterDot);\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.min === null || Number(this.value) > parseInt(this.min.toString())) {\r\n this.tmp = +this.value.toString().replace(/,/g, '');\r\n this.count = +this.tmp - +this.intStep;\r\n this.value = this.count.toString().replace(/,/g, '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXNumberBoxComponent } from './number-box.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [AXNumberBoxComponent],\r\n imports: [CommonModule, AXButtonModule, FormsModule],\r\n exports: [AXNumberBoxComponent],\r\n providers: []\r\n})\r\nexport class AXNumberBoxModule {}\r\n","import { Component, ElementRef } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-page-content',\r\n template: `\r\n <div class='ax-page-content'>\r\n <div class='inner-content'>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n `,\r\n styles: [\r\n ':host { height:100% }'\r\n ]\r\n})\r\nexport class AXPageContentComponent {\r\n constructor(private el: ElementRef) { }\r\n}\r\n","import {\r\n Component\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ax-page-footer',\r\n template:\r\n `<div class='ax-page-footer' >\r\n <ng-content></ng-content>\r\n </div>`\r\n})\r\n\r\nexport class AXPageFooterComponent { };","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPageContentComponent } from './content.component';\r\nimport { AXPageFooterComponent } from './footer.component';\r\nimport { AXPageComponent } from './page.component';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\n\r\n@NgModule({\r\n declarations: [AXPageContentComponent, AXPageFooterComponent, AXPageComponent],\r\n imports: [CommonModule, AXLoadingModule],\r\n exports: [AXPageContentComponent, AXPageFooterComponent, AXPageComponent],\r\n providers: [],\r\n})\r\nexport class AXPageModule { }","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ViewChild, ElementRef } from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-password-box',\r\n templateUrl: './password-box.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXPasswordBoxComponent }]\r\n})\r\nexport class AXPasswordBoxComponent extends AXBaseTextComponent {\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n\r\n type: 'text' | 'password' = 'password';\r\n eyeIcon: string = 'far fa-eye';\r\n\r\n handleShowPassword() {\r\n this.eyeIcon = 'far fa-eye-slash';\r\n if (this.type === 'password') {\r\n this.type = 'text';\r\n this.eyeIcon = 'far fa-eye-slash';\r\n } else {\r\n this.type = 'password';\r\n this.eyeIcon = 'far fa-eye';\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPasswordBoxComponent } from './password-box.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\n\r\nconst COMPONENT = [AXPasswordBoxComponent];\r\nconst MODULES = [CommonModule, AXButtonModule,AXFormGroupModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: []\r\n})\r\nexport class AXPasswordBoxModule {}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPopupComponent } from './popup.component';\r\nimport { AXPopupService } from './popup.service';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\n@NgModule({\r\n declarations: [AXPopupComponent],\r\n imports: [CommonModule, DragDropModule, A11yModule, AXButtonModule, AXTranslatorModule, AXLoadingModule],\r\n exports: [AXPopupComponent],\r\n entryComponents: [AXPopupComponent],\r\n providers: [AXPopupService]\r\n})\r\nexport class AXPopupModule { }\r\n","import { Component, Input } from '@angular/core';\r\nimport { AXBaseComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-progress-bar',\r\n templateUrl: './progress-bar.component.html'\r\n})\r\nexport class AXProgressBarComponent extends AXBaseComponent {\r\n @Input() progress: number = 0;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXProgressBarComponent } from './progress-bar.component';\r\n\r\n@NgModule({\r\n declarations: [AXProgressBarComponent],\r\n imports: [CommonModule],\r\n exports: [AXProgressBarComponent],\r\n entryComponents: [AXProgressBarComponent],\r\n providers: []\r\n})\r\nexport class AXProgressBarModule {}\r\n","import { AXDataEvent } from '../base/events.class';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\nexport type AXQueryBuilderDataType = 'string' | 'number' | 'date' | 'time' | 'datetime' | 'boolean';\r\nexport type AXQueryBuilderGroupItem = AXQueryBuilderGroup | AXQueryBuilderRule;\r\nexport type AXQueryBuilderControlType = 'textBox' | 'selectBox' | 'numberBox' | 'dataPicker' | 'lov' | 'boolean';\r\nexport type AXQueryBuilderStringType = 'simple' | 'sql' | 'sodoco' | 'elastic';\r\n\r\nexport class AXQueryBuilderControl {\r\n type: AXQueryBuilderControlType = 'textBox';\r\n options: any = {};\r\n}\r\n\r\nexport class AXQueryBuilderRule {\r\n dataField: string;\r\n caption: string;\r\n dataType: AXQueryBuilderDataType;\r\n control: AXQueryBuilderControl;\r\n operator: string;\r\n value?: any;\r\n text?: string;\r\n dataFieldItem: any;\r\n valueItem?: any;\r\n onDemandLabel?: string;\r\n}\r\n\r\nexport class AXQueryBuilderGroup {\r\n items: AXQueryBuilderGroupItem[];\r\n condition: string;\r\n queryString: string;\r\n queryStringElastic:string\r\n}\r\nexport class AXQueryBuilderField {\r\n caption: string;\r\n dataField: string;\r\n dataType: AXQueryBuilderDataType;\r\n default?: any;\r\n options?: any;\r\n}\r\n\r\nexport class AXQueryBuilderRuleEvent extends AXDataEvent<AXQueryBuilderRuleEvent> {\r\n items: AXQueryBuilderRule;\r\n}\r\n\r\nexport class AXQueryBuilderGroupEvent extends AXDataEvent<AXQueryBuilderGroupEvent> {\r\n items?: AXQueryBuilderRule;\r\n groups: AXQueryBuilderGroup;\r\n}\r\n\r\nexport class AXQueryBuilderPopup {\r\n name: string;\r\n type: string;\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, ElementRef, ChangeDetectionStrategy, ViewChild } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXBaseTextComponent } from '../base/element.class';\r\nimport { AXBaseEvent, AXValueEvent } from '../base/events.class';\r\n\r\n\r\n@Component({\r\n selector: 'ax-search-box',\r\n templateUrl: './searchbox.component.html',\r\n host: { style: 'display: contents;' },\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXSearchBoxComponent extends AXBaseTextComponent {\r\n\r\n @Output()\r\n public textChanged: EventEmitter<AXValueEvent<any>> = new EventEmitter<AXValueEvent<any>>();\r\n @Output()\r\n onButtonClick: EventEmitter<AXValueEvent<any>> = new EventEmitter<AXValueEvent<any>>();\r\n\r\n @Input()\r\n placeholder: string = 'جستجو ...';\r\n\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n\r\n private _text: string;\r\n @Input()\r\n public get text(): string {\r\n return this._text;\r\n }\r\n public set text(v: string) {\r\n if (v !== this._text) {\r\n const old = this._text;\r\n this._text = v;\r\n this.textChanged.emit({\r\n component: this,\r\n value: v,\r\n oldValue: old\r\n });\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.value = '';\r\n this.text = '';\r\n }\r\n\r\n onSearchChanged(text: string) {\r\n if (!this.searchChangeObserver) {\r\n Observable.create(observer => {\r\n\r\n this.searchChangeObserver = observer;\r\n })\r\n .pipe(debounceTime(this.delay))\r\n .pipe(distinctUntilChanged())\r\n .subscribe(c => {\r\n this.text = c;\r\n this.value = c;\r\n });\r\n }\r\n\r\n this.searchChangeObserver.next(text);\r\n }\r\n\r\n @Input()\r\n delay: number = 500;\r\n\r\n private searchChangeObserver: any;\r\n\r\n handleKeyEvent(e: KeyboardEvent) {\r\n // this.searchChangeObserver.next(this.text);\r\n this.onkey.emit(e);\r\n }\r\n\r\n click(e: MouseEvent) {\r\n this.onButtonClick.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n value: this.text\r\n });\r\n // this.searchChangeObserver.next(this.text);\r\n }\r\n}\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n ContentChild,\r\n NgZone,\r\n QueryList,\r\n ContentChildren,\r\n TemplateRef\r\n} from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXBaseSizableComponent, AXBaseInputComponent, AXElementSize, AXValidatableComponent } from '../base/element.class';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXValidation } from '../validation/validation.component';\r\nimport { AXDataSourceReadParams } from '../data-source/read-param';\r\nimport { AXBaseEvent } from '../base/events.class';\r\nimport { AXSearchBoxComponent } from '../searchbox/searchbox.component';\r\nimport { AXConfig } from '@acorex/core';\r\nimport { differenceBy } from 'lodash';\r\nexport class AXSelectBoxSelectionChangedEvent extends AXBaseEvent {\r\n constructor(component: any, public selectedItems: any[], public selectedValues: any[] | any) {\r\n super();\r\n this.component = component;\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'ax-select-box',\r\n templateUrl: './selectbox.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBoxComponent }]\r\n})\r\nexport class AXSelectBoxComponent extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseInputComponent {\r\n @Input() showDropDownButton: boolean = true;\r\n\r\n @ContentChild(TemplateRef, { static: true })\r\n rowTemplate: TemplateRef<any>;\r\n\r\n @Input()\r\n rowInputTemplate: TemplateRef<any>;\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n span: ElementRef<HTMLElement>;\r\n\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n textbox: AXTextBoxComponent;\r\n\r\n @ViewChild('listContainer', { static: true })\r\n listContainer: ElementRef<HTMLDivElement>;\r\n\r\n @ViewChild('serchBox', { static: false })\r\n serchBox: AXSearchBoxComponent;\r\n\r\n @ViewChild('textBoxSelectBox', { static: true })\r\n textBoxSelectBox: AXTextBoxComponent;\r\n\r\n @Input() showCheckBox: boolean = true;\r\n\r\n @Input() readonly: boolean = false;\r\n\r\n @Input() rtl: boolean = AXConfig.get('layout.rtl');\r\n\r\n @Input() disabled: boolean = false;\r\n\r\n @Input() placeholder: string;\r\n\r\n @Input() size: AXElementSize = 'md';\r\n\r\n @Input() allowNull: boolean = true;\r\n\r\n @Input() textAlign: 'right' | 'left' | null = null;\r\n\r\n @Input() bufferSize: number = 20;\r\n\r\n @Input() remoteOperation: boolean = false;\r\n\r\n @Output()\r\n dropdownToggle: EventEmitter<any> = new EventEmitter<any>();\r\n // this input is Private and only use in LOV\r\n\r\n currentfocusedIndex: number = -1;\r\n showLoading: boolean = false;\r\n\r\n skip: number = -1;\r\n searchText: string = '';\r\n // @Input()\r\n // chipsWidth: string = '';\r\n\r\n text: string = '';\r\n totalCount: number = 0;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n private _dataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n public get dataSource(): AXDataSourceComponent {\r\n return this._dataSource ? this._dataSource : this._contentDataSource;\r\n }\r\n\r\n public set dataSource(v: AXDataSourceComponent) {\r\n this._dataSource = v;\r\n }\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef, private zone: NgZone) {\r\n super();\r\n }\r\n\r\n @ViewChild('d', { static: true })\r\n dropdown: AXDropdownComponent;\r\n\r\n @Input() allowSearch: boolean = true;\r\n @Input() textField: string = 'text';\r\n @Input() valueField: string = 'value';\r\n @Input() mode: 'single' | 'multiple' = 'single';\r\n itemRemove: boolean = false;\r\n @Output() itemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Output() onBlur: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output() onFocus: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n private _items: any[] = [];\r\n @Input()\r\n public get items(): any[] {\r\n return this._items;\r\n }\r\n public set items(v: any[]) {\r\n this._items = v;\r\n if (this.itemsChange) {\r\n this.itemsChange.emit(v);\r\n }\r\n if (this.itemsStatusObserver) {\r\n this.itemsStatusObserver.next(this.items.length);\r\n }\r\n }\r\n\r\n hasSelectedValue: boolean = false;\r\n itemsFiltered: any[] = [];\r\n\r\n // #endregion\r\n\r\n dropDownDisabled: boolean = false;\r\n\r\n @Output()\r\n selectionChanged: EventEmitter<AXSelectBoxSelectionChangedEvent> = new EventEmitter<AXSelectBoxSelectionChangedEvent>();\r\n\r\n @Output()\r\n selectedItemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n private _selectedItems: any[] = [];\r\n @Input()\r\n public get selectedItems(): any[] {\r\n return this._selectedItems || [];\r\n }\r\n public set selectedItems(v: any[]) {\r\n this.setSelectedItemsChange(v);\r\n // if (!v) {\r\n // v = [];\r\n // }\r\n\r\n // const old = this.selectedItems;\r\n // if (JSON.stringify(old) !== JSON.stringify(v)) {\r\n // this._selectedItems = this.mode == 'single' ? v.slice(0, 1) : [...new Set(v)]; //[...new Set(v[0])] : [...new Set(v)];\r\n // this._selectedItems.forEach((c) => (c.selected = true));\r\n // this.selectedItemsChange.emit(this._selectedItems);\r\n // this.selectedValuesChange.emit(this.selectedValues);\r\n // this.clearValidationStyle(this.ref.nativeElement);\r\n // this.waitForData(() => {\r\n // if (this._selectedItems) {\r\n // this.items.forEach((c) => (c.selected = this._selectedItems.some((i) => i[this.valueField] == c[this.valueField])));\r\n // }\r\n // });\r\n // }\r\n }\r\n\r\n setSelectedItemsChange(v: any[], old: any[] = this.selectedItems) {\r\n if (!v) {\r\n v = [];\r\n }\r\n\r\n // const old = this.selectedItems;\r\n if (JSON.stringify(old) !== JSON.stringify(v)) {\r\n this._selectedItems = this.mode == 'single' ? v.slice(0, 1) : [...new Set(v)]; //[...new Set(v[0])] : [...new Set(v)];\r\n this._selectedItems.forEach((c) => (c.selected = true));\r\n this.selectedItemsChange.emit(this._selectedItems);\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n this.clearValidationStyle(this.ref.nativeElement);\r\n this.waitForData(() => {\r\n if (this._selectedItems) {\r\n this.items.forEach((c) => (c.selected = this._selectedItems.some((i) => i[this.valueField] == c[this.valueField])));\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.rowTemplate === undefined && this.rowInputTemplate != undefined) {\r\n this.rowTemplate = this.rowInputTemplate;\r\n }\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n scrolled(e) {\r\n if (\r\n this.remoteOperation &&\r\n this.totalCount > this.items.length &&\r\n this.listContainer.nativeElement.scrollHeight != 0 &&\r\n this.listContainer.nativeElement.scrollHeight - this.listContainer.nativeElement.scrollTop - 300 < 50\r\n ) {\r\n if (this.skip !== this.items.length) {\r\n this.showLoading = true;\r\n this.skip = this.items.length;\r\n const params: AXDataSourceReadParams = {};\r\n params.skip = this.items.length;\r\n params.take = this.bufferSize; //* (Math.floor(this.items.length / this.bufferSize) + 1);\r\n if (this.textbox) {\r\n params.searchText = this.text;\r\n } else {\r\n params.searchText = null;\r\n }\r\n this.fetch(params);\r\n }\r\n }\r\n }\r\n private setSelectedItems(v: any[], isUserInput: boolean) {\r\n let changed = false;\r\n if (isUserInput) {\r\n changed = JSON.stringify(v) !== JSON.stringify(this.selectedItems);\r\n }\r\n this.selectedItems = v;\r\n this.setSelectedIndex();\r\n if (isUserInput && changed) {\r\n this.emitSelectionChangedEvent();\r\n }\r\n }\r\n\r\n private searchChangeObserver: any;\r\n\r\n delay: number = 500;\r\n\r\n textChanged(e) {\r\n if ((e.value === null || e.value === undefined || e.value === '') && (e.oldValue === null || e.oldValue === undefined || e.oldValue === '')) {\r\n } else {\r\n this.currentfocusedIndex = -1;\r\n if (this.remoteOperation) {\r\n this.searchText = this.text;\r\n // this.searchText = e.value;\r\n // this.text = e.value;\r\n // this.items = [];\r\n if (this.items) {\r\n let t = this.items.length;\r\n for (let i = 0; i < t; i++) {\r\n this.items.pop();\r\n }\r\n }\r\n\r\n // this.items.forEach((element) => {\r\n // this.items.pop();\r\n // });\r\n const params: AXDataSourceReadParams = {};\r\n params.searchText = this.text;\r\n // params.searchText = e.value;\r\n params.skip = 0;\r\n params.take = this.bufferSize;\r\n this.fetch(params);\r\n }\r\n }\r\n }\r\n\r\n onButtonClick(e) {\r\n console.log('onButtonClick', e);\r\n }\r\n\r\n private setSelectedIndex(sign: -1 | 1 | null = null): void {\r\n if (sign == null) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.currentfocusedIndex = this.items\r\n .filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))\r\n .indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n } else {\r\n this.currentfocusedIndex = this.items.indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n }\r\n } else {\r\n sign === -1 ? this.currentfocusedIndex-- : this.currentfocusedIndex++;\r\n }\r\n\r\n if (this.remoteOperation) {\r\n this.itemsFiltered = this.items;\r\n } else {\r\n this.itemsFiltered = this.text\r\n ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))\r\n : this.items;\r\n }\r\n\r\n this.currentfocusedIndex =\r\n this.currentfocusedIndex < 0\r\n ? 0\r\n : this.currentfocusedIndex >= this.itemsFiltered.length\r\n ? this.itemsFiltered.length - 1\r\n : this.currentfocusedIndex;\r\n //\r\n // set scroll\r\n if (this.listContainer) {\r\n this.zone.runOutsideAngular(() => {\r\n const itemDiv = this.listContainer.nativeElement.querySelector(`.list-item:nth-child(${this.currentfocusedIndex})`);\r\n if (itemDiv) {\r\n itemDiv.scrollIntoView({ behavior: 'smooth' });\r\n }\r\n });\r\n }\r\n }\r\n\r\n @Output()\r\n selectedValuesChange: EventEmitter<any[] | any> = new EventEmitter<any[] | any>();\r\n\r\n @Input()\r\n public get selectedValues(): any[] | any {\r\n if (this.mode === 'single') {\r\n return this._selectedItems.map((c) => c[this.valueField])[0];\r\n } else {\r\n return this._selectedItems.map((c) => c[this.valueField]) || [];\r\n }\r\n }\r\n\r\n public set selectedValues(v: any[] | any) {\r\n if (this.compareSelectedValues(v)) {\r\n return;\r\n }\r\n if (v == null) {\r\n this.selectedItems = [];\r\n } else {\r\n if (v !== undefined) {\r\n if (v != [] && v != '' && v != null) {\r\n this.hasSelectedValue = true;\r\n }\r\n\r\n this.waitForData(() => {\r\n if (this.mode === 'single') {\r\n if (this.items.filter((c) => v == c[this.valueField])) {\r\n this.selectedItems = this.items.filter((c) => v == c[this.valueField]);\r\n } else {\r\n this.selectedItems = [];\r\n }\r\n } else {\r\n if (Array.isArray(v)) {\r\n if (this.selectedItems.length > v.length) {\r\n this.selectedItems = this.selectedItems.filter((c) => v.includes(c[this.valueField]));\r\n } else {\r\n let addId = [];\r\n v.forEach((vId) => {\r\n addId.push({\r\n [this.valueField]: vId\r\n });\r\n });\r\n\r\n let newId = differenceBy(addId, this.selectedItems, this.valueField);\r\n let vv = [];\r\n newId.forEach((rc) => {\r\n vv.push(rc[this.valueField]);\r\n });\r\n this.items\r\n .filter((c) => vv.includes(c[this.valueField]))\r\n .forEach((res) => {\r\n this.selectedItems.push(res);\r\n });\r\n // this.selectedItems.push(this.items.filter((c) => vv.includes(c[this.valueField])));\r\n this.setSelectedItemsChange(this.selectedItems, vv.length > 0 ? [1] : this.selectedItems);\r\n }\r\n\r\n // this.selectedItems = this.items.filter((c) => v.includes(c[this.valueField]));\r\n } else if (v) {\r\n this.selectedItems = this.items.filter((c) => v === c[this.valueField]);\r\n } else {\r\n this.selectedItems = [];\r\n }\r\n }\r\n this.selectedValuesChange.emit(this.selectedValues);\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n });\r\n }\r\n }\r\n }\r\n\r\n private compareSelectedValues(newValue: any[] | any) {\r\n const currentValue = this.selectedValues;\r\n return (currentValue == null && newValue == null) || JSON.stringify(currentValue) === JSON.stringify(newValue);\r\n }\r\n\r\n private setSelectedValues(v: any[] | any, isUserInput: boolean) {\r\n const changed = isUserInput ? !this.compareSelectedValues(v) : false;\r\n this.selectedValues = v;\r\n if (isUserInput && changed) {\r\n this.emitSelectionChangedEvent();\r\n }\r\n }\r\n\r\n private emitSelectionChangedEvent() {\r\n this.selectionChanged.emit(new AXSelectBoxSelectionChangedEvent(this, this.selectedItems, this.selectedValues));\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.bufferSize < 10) {\r\n this.bufferSize = 10;\r\n }\r\n if (this.mode == 'single') {\r\n this.showCheckBox = false;\r\n }\r\n if (!this.remoteOperation || (this.remoteOperation && this.hasSelectedValue)) {\r\n this.refresh();\r\n }\r\n }\r\n dropdownToggleSelecBox(e) {\r\n this.text = '';\r\n if (this.dropdown.isOpen) {\r\n this.refresh();\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 1);\r\n } else {\r\n // this.refresh();\r\n }\r\n this.dropdownToggle.emit(e);\r\n }\r\n\r\n ngAfterContentInit() {\r\n // if (!this.allowSearch) {\r\n // if (this.readonly == false) {\r\n // this.itemRemove = true;\r\n // this.readonly = true;\r\n // }\r\n // }\r\n this.initValidation(this.ref, 'selectedItems', this.validation);\r\n if (this.dataSource) {\r\n // if (this.allowSearch == false) {\r\n // this.fetch();\r\n // }\r\n this.dataSource.onDataReceived.subscribe((c) => {\r\n this.showLoading = false;\r\n this.dataReceived(c.data.result);\r\n });\r\n }\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private dataReceived(data: any) {\r\n if (this.remoteOperation) {\r\n if (this.searchText && this.searchText != null && this.searchText !== '') {\r\n if (data.totalCount) {\r\n if (this.items.length == 0) {\r\n //this.items = data.items;\r\n data.items.forEach((item) => {\r\n this.items.push(item);\r\n });\r\n } else {\r\n data.items.forEach((item) => {\r\n this.items.push(item);\r\n });\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n }\r\n\r\n this.totalCount = data.totalCount;\r\n } else {\r\n if (this.items.length == 0) {\r\n this.items = data.items;\r\n } else {\r\n data.items.forEach((item) => {\r\n this.items.push(item);\r\n });\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n }\r\n this.totalCount = data.items == undefined ? 0 : data.items.length;\r\n }\r\n } else if (data.items && data.items.length === data.totalCount) {\r\n this.items = data.items;\r\n this.totalCount = data.items.length;\r\n } else if (data.totalCount) {\r\n data.items.forEach((elm) => {\r\n this.items.push(elm);\r\n });\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n this.totalCount = data.totalCount;\r\n } else {\r\n data.forEach((elm) => {\r\n this.items.push(elm);\r\n // if (this.itemsStatusObserver) {\r\n // this.itemsStatusObserver.next(this.items.length);\r\n // }\r\n });\r\n this.totalCount = data.length;\r\n }\r\n } else {\r\n this.items = data;\r\n }\r\n\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n // private params: AXDataSourceReadParams = {};\r\n\r\n fetch(params: AXDataSourceReadParams = {}) {\r\n // this.params = params;\r\n if (this.dataSource) {\r\n this.showLoading = true;\r\n this.dataSource.fetch(params);\r\n }\r\n }\r\n\r\n refresh() {\r\n const params: AXDataSourceReadParams = {};\r\n if (this.remoteOperation) {\r\n params.skip = 0;\r\n this.skip = 0;\r\n params.take = this.bufferSize;\r\n }\r\n if (this.dataSource != undefined) {\r\n // this.items = [];\r\n // this.items.forEach((element) => {\r\n // this.items.pop();\r\n // });\r\n\r\n if (this.items) {\r\n let t = this.items.length;\r\n for (let i = 0; i < t; i++) {\r\n this.items.pop();\r\n }\r\n }\r\n\r\n this.fetch(params);\r\n }\r\n }\r\n\r\n handleItemRemoveClick(item) {\r\n if (this.mode === 'single') {\r\n // this.selectedItems = null;\r\n this.setSelectedValues(null, true);\r\n // this.selectedItemsChange.emit(this._selectedItems);\r\n // this.clearValidationStyle(this.ref.nativeElement);\r\n } else {\r\n // this.selectedItems = this.selectedItems.filter((c) => c !== item);\r\n this.setSelectedItems(\r\n this.selectedItems.filter((c) => c[this.valueField] !== item[this.valueField]),\r\n true\r\n );\r\n // this._selectedItems = this._selectedItems.filter(c => c !== item);\r\n // this.selectedItemsChange.emit(this._selectedItems);\r\n // this.clearValidationStyle(this.ref.nativeElement);\r\n }\r\n // this.text = '';\r\n this.validate();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n onFocusTextBox(e) {}\r\n\r\n onTextBoxClick(e) {\r\n if (this.disabled == false && this.readonly == false) {\r\n this.dropdown.open();\r\n }\r\n }\r\n\r\n handleItemClick(e: MouseEvent, item: any) {\r\n const value = item[this.valueField];\r\n\r\n if (this.mode === 'single') {\r\n // this.selectedValues = value;\r\n this.setSelectedValues(value, true);\r\n } else {\r\n const exists = this.selectedValues.slice(0);\r\n if (exists.includes(value)) {\r\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\r\n this.handleItemRemoveClick(item);\r\n }\r\n } else {\r\n exists.push(value);\r\n // this.selectedValues = exists;\r\n this.setSelectedValues(exists, true);\r\n }\r\n }\r\n\r\n if (this.mode == 'single') {\r\n this.text = '';\r\n this.dropdown.close();\r\n this.cdr.markForCheck();\r\n }\r\n // if (e.stopPropagation() == undefined) {\r\n // e.stopPropagation();\r\n // }\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n e.stopPropagation();\r\n }\r\n\r\n handleKeyEventSearch(e: KeyboardEvent) {\r\n if (this.disabled || this.readonly) {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n return false;\r\n }\r\n if (e.key === 'Escape') {\r\n this.text = null;\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && e.type === 'keydown') {\r\n if (this.mode === 'single') {\r\n this.currentfocusedIndex = this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1);\r\n this.selectedItemByIndex(this.currentfocusedIndex);\r\n } else {\r\n if (this.dropdown.isOpen) {\r\n this.setSelectedIndex(e.key === 'ArrowDown' ? 1 : -1);\r\n } else {\r\n this.dropdown.open();\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n }\r\n }\r\n // if (e.key == 'Enter' && this.dropdown.isOpen && this.mode == 'single') {\r\n // this.dropdown.close();\r\n // setTimeout(() => {\r\n // this.dropdown.focus();\r\n // }, 0);\r\n // }\r\n //e.stopPropagation();\r\n //e.preventDefault();\r\n e.stopImmediatePropagation();\r\n if (e.type === 'keydown' && e.key == 'Enter' && this.dropdown.isOpen) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.itemsFiltered = this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()));\r\n if (this.itemsFiltered.length === 1) {\r\n this.currentfocusedIndex = 0;\r\n }\r\n } else {\r\n this.itemsFiltered = this.items;\r\n }\r\n\r\n if (\r\n this.selectedItems.filter((c) => c[this.valueField] === this.itemsFiltered[this.currentfocusedIndex][this.valueField]).length > 0 &&\r\n this.mode == 'multiple'\r\n ) {\r\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.selectedItems = this.selectedItems.filter(\r\n (c) =>\r\n c !==\r\n this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[this.currentfocusedIndex]\r\n );\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.valueField] !== this.items[this.currentfocusedIndex][this.valueField]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.mode == 'multiple') {\r\n if (this.currentfocusedIndex != -1) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n if (this.itemsFiltered.length === 1) {\r\n this.selectedItems.push(this.itemsFiltered[0]);\r\n } else {\r\n this.selectedItems.push(this.itemsFiltered[this.currentfocusedIndex]);\r\n }\r\n } else {\r\n this.selectedItems.push(this.items[this.currentfocusedIndex]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.text && this.itemsFiltered?.length === 1) {\r\n this.setSelectedItems(this.itemsFiltered, true);\r\n }\r\n if (this.mode == 'single') {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n }\r\n }\r\n e.stopPropagation();\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n isChar(str: string) {\r\n if (\r\n str.includes('Shift') ||\r\n str.includes('Tab') ||\r\n str.includes('Control') ||\r\n str.includes('Alt') ||\r\n str.includes('CapsLock') ||\r\n str.includes('Meta') ||\r\n str.includes('ContextMenu') ||\r\n str.includes('Enter') ||\r\n str.includes('Backspace') ||\r\n str.includes('PrintScreen') ||\r\n str.includes('ScrollLock') ||\r\n str.includes('Pause') ||\r\n str.includes('Home') ||\r\n str.includes('End') ||\r\n str.includes('Insert') ||\r\n str.includes('PageUp') ||\r\n str.includes('Delete') ||\r\n str.includes('PageDown') ||\r\n str.includes('NumLock') ||\r\n str.includes('Escape') ||\r\n str.includes('Arrow') ||\r\n str.includes('ّF1') ||\r\n str.includes('F2') ||\r\n str.includes('F3') ||\r\n str.includes('F4') ||\r\n str.includes('F5') ||\r\n str.includes('F6') ||\r\n str.includes('F7') ||\r\n str.includes('F8') ||\r\n str.includes('F9') ||\r\n str.includes('F10') ||\r\n str.includes('F11') ||\r\n str.includes('F12')\r\n ) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n handleKeyEvent(e: any) {\r\n // const NumberMinusPattern = /[a-zA-Z0-9\\-]/g;\r\n // const Farsi = /[پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ\\s]+$/;\r\n // const inputChar = String.fromCharCode(e.charCode);\r\n // const patternEn = /^[a-zA-Z0-9]*$/;\r\n // const pattern = /^[\\u0600-\\u06FF\\s]+$/;\r\n const inputChar = e.key;\r\n if (\r\n (inputChar != 'Backspace' &&\r\n inputChar != 'Backspace' &&\r\n inputChar != 'Tab' &&\r\n inputChar != 'Enter' &&\r\n inputChar != 'Escape' &&\r\n inputChar != 'ArrowDown' &&\r\n inputChar != 'ArrowUp') ||\r\n e.code === 'Space' ||\r\n e.ctrlKey == true\r\n ) {\r\n e.preventDefault();\r\n }\r\n if (\r\n e.key === 'Backspace' &&\r\n e.type === 'keydown' &&\r\n ((this.allowNull === true && this.selectedItems.length > 0) || (this.allowNull === false && this.selectedItems.length > 1))\r\n ) {\r\n this.selectedItems.pop();\r\n this.emitSelectionChangedEvent();\r\n }\r\n if (this.disabled || this.readonly) {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n return false;\r\n }\r\n const INPUT = String.fromCharCode(e.keyCode);\r\n if (this.isChar(e.key) && this.allowSearch && e.ctrlKey == false) {\r\n this.dropdown.open();\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n this.text = e.key;\r\n }\r\n\r\n if (e.key === 'Escape') {\r\n this.text = null;\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && e.type === 'keydown') {\r\n if (this.mode === 'single') {\r\n this.selectedItemByIndex(this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1));\r\n } else {\r\n if (this.dropdown.isOpen) {\r\n // this.setSelectedIndex((e.key === 'ArrowDown' ? 1 : -1));\r\n if (this.allowSearch == false) {\r\n this.setSelectedIndex(e.key === 'ArrowDown' ? 1 : -1);\r\n } else {\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n } else {\r\n this.dropdown.open();\r\n if (this.allowSearch == true) {\r\n setTimeout(() => {\r\n if (this.serchBox) {\r\n this.serchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (this.allowSearch === false) {\r\n if (e.type === 'keydown' && e.key == 'Enter' && this.dropdown.isOpen) {\r\n e.stopImmediatePropagation();\r\n if (\r\n this.selectedItems.filter((c) => c[this.valueField] === this.itemsFiltered[this.currentfocusedIndex][this.valueField]).length > 0 &&\r\n this.mode == 'multiple'\r\n ) {\r\n if (this.allowNull == true || (this.allowNull == false && this.selectedItems.length > 1)) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.selectedItems = this.selectedItems.filter(\r\n (c) =>\r\n c !==\r\n this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[this.currentfocusedIndex]\r\n );\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.valueField] !== this.items[this.currentfocusedIndex][this.valueField]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.mode == 'multiple') {\r\n if (this.currentfocusedIndex != -1) {\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n if (this.itemsFiltered.length === 1) {\r\n this.selectedItems.push(this.itemsFiltered[0]);\r\n } else {\r\n this.selectedItems.push(this.itemsFiltered[this.currentfocusedIndex]);\r\n }\r\n } else {\r\n this.selectedItems.push(this.items[this.currentfocusedIndex]);\r\n }\r\n this.emitSelectionChangedEvent();\r\n }\r\n } else {\r\n if (this.text && this.itemsFiltered.length === 1) {\r\n this.setSelectedItems(this.itemsFiltered, true);\r\n }\r\n if (this.mode == 'single') {\r\n this.dropdown.close();\r\n setTimeout(() => {\r\n this.textBoxSelectBox.focus();\r\n }, 0);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n this.cdr.markForCheck();\r\n }\r\n\r\n focus(): void {\r\n this.textbox.focus();\r\n }\r\n\r\n selectedItemByIndex(index: number) {\r\n let item = [];\r\n if (!this.remoteOperation && this.text && this.text !== '') {\r\n this.itemsFiltered = this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()));\r\n\r\n item = this.itemsFiltered[index];\r\n } else {\r\n item = this.items[index];\r\n }\r\n //\r\n // const item = this.text ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))[index] : this.items[index];\r\n if (item) {\r\n this.setSelectedItems([item], true);\r\n }\r\n\r\n this.setSelectedIndex();\r\n }\r\n\r\n getItems(): any[] {\r\n if (this.items == null) {\r\n return [];\r\n }\r\n return !this.remoteOperation && this.text && this.text !== ''\r\n ? this.items.filter((c) => (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase()))\r\n : this.items;\r\n }\r\n\r\n isItemSelected(item: any): boolean {\r\n return this.selectedItems && this.selectedItems.filter((c) => c[this.valueField] === item[this.valueField]).length > 0;\r\n }\r\n\r\n private itemsStatusObserver: any;\r\n private waitForData(callbackfn: () => void) {\r\n if (this.items && this.items.length) {\r\n callbackfn();\r\n } else if (!this.itemsStatusObserver) {\r\n Observable.create((observer) => {\r\n this.itemsStatusObserver = observer;\r\n })\r\n .pipe(debounceTime(100))\r\n .pipe(distinctUntilChanged())\r\n .subscribe((c) => {\r\n callbackfn();\r\n });\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, Input, ViewEncapsulation, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXQueryBuilderRule, AXQueryBuilderGroup, AXQueryBuilderRuleEvent, AXQueryBuilderControl } from './query-builder.class';\r\nimport { AXTranslator } from '@acorex/core';\r\nimport { AXSelectBoxComponent } from '../selectbox/selectbox.component';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXValidationFormComponent } from '../validation/validation-form.component';\r\n\r\n@Component({\r\n selector: 'ax-query-rule',\r\n templateUrl: 'query-builder-rule.component.html',\r\n host: { class: 'ax ax-query-rule' },\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXQueryBuilderRuleComponent implements OnInit {\r\n @ViewChild('selectBox') selectBox: AXSelectBoxComponent;\r\n @ViewChild('selectBoxValue') selectBoxValue: AXSelectBoxComponent;\r\n\r\n @ViewChild('selectBoxBoolean') selectBoxBoolean: AXSelectBoxComponent;\r\n\r\n @ViewChild('textBoxNameValue') textBoxNameValue: AXTextBoxComponent;\r\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\r\n @Input()\r\n isEditing: boolean = true;\r\n\r\n @Input()\r\n rule: AXQueryBuilderRule;\r\n\r\n @Input()\r\n parent: AXQueryBuilderGroup;\r\n\r\n @Input()\r\n fields: any[] = [];\r\n\r\n @Output()\r\n onRuleDelete: EventEmitter<AXQueryBuilderRuleEvent> = new EventEmitter<AXQueryBuilderRuleEvent>();\r\n\r\n @Output()\r\n ruleChanged: EventEmitter<AXQueryBuilderRuleEvent> = new EventEmitter<AXQueryBuilderRuleEvent>();\r\n\r\n showValue: boolean = false;\r\n\r\n isOnDemandLabel: boolean = false;\r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n\r\n ngAfterViewInit(): void {\r\n //Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.\r\n //Add 'implements AfterViewInit' to the class.\r\n if (this.rule.onDemandLabel) {\r\n this.isOnDemandLabel = true;\r\n }\r\n }\r\n provideDataBoolean = (e) => {\r\n return new Promise((resolve) => {\r\n resolve([\r\n {\r\n value: 'true',\r\n text: AXTranslator.get('queryBuilder.true')\r\n },\r\n {\r\n value: 'false',\r\n text: AXTranslator.get('queryBuilder.false')\r\n }\r\n\r\n ])\r\n })\r\n }\r\n\r\n saveRule() {\r\n this.form.validate().then(c => {\r\n });\r\n }\r\n\r\n\r\n provideDataOperator = (e) => {\r\n\r\n return new Promise((resolve) => {\r\n if (this.rule.dataType === 'string') {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'contains',\r\n text: AXTranslator.get('queryBuilder.contains')\r\n },\r\n {\r\n value: 'start-with',\r\n text: AXTranslator.get('queryBuilder.start-with')\r\n },\r\n {\r\n value: 'end-with',\r\n text: AXTranslator.get('queryBuilder.end-with')\r\n },\r\n {\r\n value: 'not-equal',\r\n text: AXTranslator.get('queryBuilder.not-equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n if (this.rule.dataType === 'number') {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'gt',\r\n text: AXTranslator.get('queryBuilder.greater-than')\r\n },\r\n {\r\n value: 'gte',\r\n text: AXTranslator.get('queryBuilder.greater-than-equal')\r\n },\r\n {\r\n value: 'lt',\r\n text: AXTranslator.get('queryBuilder.less-than')\r\n },\r\n {\r\n value: 'lte',\r\n text: AXTranslator.get('queryBuilder.less-than-equal')\r\n },\r\n {\r\n value: 'not-equal',\r\n text: AXTranslator.get('queryBuilder.not-equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n if (this.rule.dataType === 'boolean') {\r\n resolve([\r\n {\r\n value: 'equal',\r\n text: AXTranslator.get('queryBuilder.equal')\r\n },\r\n {\r\n value: 'null',\r\n text: AXTranslator.get('queryBuilder.null')\r\n },\r\n {\r\n value: 'not-null',\r\n text: AXTranslator.get('queryBuilder.not-null')\r\n }\r\n ]);\r\n }\r\n resolve([]);\r\n });\r\n };\r\n\r\n handleEditClick() {\r\n this.isEditing = true;\r\n }\r\n\r\n handleCommitClick() {\r\n this.isEditing = false;\r\n this.ruleChanged.emit({ items: this.rule, component: this });\r\n }\r\n handleRemoveClick() {\r\n this.onRuleDelete.emit({ items: this.rule, component: this });\r\n }\r\n captionChange(e) {\r\n if (e.selectedItems[0]) {\r\n this.rule.caption = e.selectedItems[0].caption;\r\n this.rule.dataField = e.selectedItems[0].dataField;\r\n this.rule.dataType = e.selectedItems[0].dataType;\r\n this.rule.control = e.selectedItems[0].control || new AXQueryBuilderControl();\r\n this.rule.dataFieldItem[0] = e.selectedItems[0];\r\n }\r\n\r\n if (this.selectBox) {\r\n this.selectBox.refresh();\r\n }\r\n\r\n this.rule.value = null;\r\n if (this.rule.control.type === 'selectBox') {\r\n this.selectBoxValue.refresh();\r\n }\r\n if (this.rule.control.type == 'boolean') {\r\n this.selectBoxBoolean.refresh();\r\n }\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n\r\n operatorChange(e) {\r\n this.rule.operator = e[0].value;\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n\r\n\r\n if (e[0].value !== 'null' && e[0].value !== 'not-null') {\r\n this.showValue = true;\r\n\r\n } else {\r\n this.showValue = false;\r\n this.rule.value = '';\r\n this.rule.text = '';\r\n this.rule.valueItem = [];\r\n this.rule.onDemandLabel = '';\r\n\r\n }\r\n }\r\n valueChange(e) {\r\n // this.rule.text = e.value == undefined ? e[0].value : (e.value == null ? '' : e.value);\r\n this.rule.text = e[0] ? (e[0].value == null ? '' : e[0].value) : (e.value == null ? '' : e.value);\r\n this.rule.onDemandLabel = '';\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n onDemandLabelChange(e) {\r\n // this.rule.onDemandLabel = e.value == undefined ? '????|' + e[0].value : '????|' + e.value;\r\n this.rule.onDemandLabel = e[0] ? '????|' + (e[0].value == null ? '' : e[0].value) : '????|' + (e.value == null ? '' : e.value)\r\n this.rule.value = '';\r\n this.rule.text = '';\r\n this.rule.valueItem = [];\r\n\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n valueBooleanChange(e) {\r\n // this.rule.text = e.value == undefined ? e[0].value : (e.value == null ? '' : e.value);\r\n this.rule.text = e[0] ? (e[0].value == null ? '' : e[0].value) : (e.value == null ? '' : e.value);\r\n this.rule.value = e.value == undefined ? e[0].value : e.value;\r\n this.rule.onDemandLabel = '';\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n }\r\n getOnDemandName(v) {\r\n return v ? v.split('|')[1] : '';\r\n }\r\n selectedItemsChange(e) {\r\n let n = this.getOption('textField');\r\n this.rule.text = e[0][n];\r\n if (this.rule && this.rule.control.options.valueField) {\r\n this.rule.value = e[0][this.rule.control.options.valueField];\r\n } else {\r\n this.rule.value = e[0].value;\r\n }\r\n this.rule.valueItem[0] = e[0];\r\n this.ruleChanged.emit({ component: this, items: this.rule });\r\n this.rule.onDemandLabel = '';\r\n }\r\n onDemandLabel(e) {\r\n // if (e.value && (this.rule.onDemandLabel == '????|' || this.rule.onDemandLabel === undefined || this.rule.onDemandLabel === null || this.rule.onDemandLabel === '')) {\r\n // this.textBoxNameValue.focus();\r\n // }\r\n if (e.value == false) {\r\n this.rule.onDemandLabel = '';\r\n }\r\n this.isOnDemandLabel = e.value;\r\n }\r\n getProvideData = (e) => {\r\n if (this.rule && this.rule.control.options && this.rule.control.options.dataSource) {\r\n return this.rule.control.options.dataSource({ ...e, optionsData: { ...this.rule.control.options } });\r\n }\r\n };\r\n\r\n getOption(name: string) {\r\n return this.rule.control.options ? this.rule.control.options[name] : null;\r\n }\r\n}\r\n","import { AXButtonItem, AXTranslator } from '@acorex/core';\r\nimport { ChangeDetectorRef, Component, ViewChild } from '@angular/core';\r\nimport { AXBasePopupPageComponent } from '../../base/base-page.class';\r\nimport { AXMenuItemClickEvent } from '../../menu/menu.component';\r\nimport { AXQueryBuilderGroup, AXQueryBuilderPopup, AXQueryBuilderRule } from '../query-builder.class';\r\n\r\nimport { AXDataSourceReadParams } from '../../data-source/read-param'\r\nimport { AXToastService } from '../../toast/toast.service';\r\nimport { AXValidationFormComponent } from '../../validation/validation-form.component';\r\n@Component({\r\n templateUrl: './query-builder-popup.component.html'\r\n})\r\n\r\nexport class AXQueryBuilderPopupComponent extends AXBasePopupPageComponent {\r\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\r\n constructor(private toast: AXToastService) {\r\n super();\r\n }\r\n group: AXQueryBuilderGroup;\r\n items: AXQueryBuilderRule[] = [];\r\n groupCopy: AXQueryBuilderGroup;\r\n complateValue: boolean = true;\r\n provideData: any;\r\n makeJsonString(items: any[]) {\r\n return new Promise((resolve, reject) => {\r\n items.forEach((element, index, array) => {\r\n if (element.items) {\r\n this.makeJsonString(element.items);\r\n } else {\r\n if (element.control && element.control.options && (element.control.options.dataSource === '' || element.control.options.dataSource === undefined)) {\r\n element.control.options.dataSource = this.provideData;\r\n }\r\n }\r\n if (index === array.length - 1) {\r\n resolve(array[0]);\r\n }\r\n });\r\n });\r\n }\r\n ngAfterViewInit() {\r\n var groupString = JSON.stringify(this.group);\r\n this.groupCopy = JSON.parse(groupString);\r\n this.makeJsonString(this.groupCopy.items);\r\n for (let i = 0; i < this.groupCopy.items.length; i++) {\r\n this.getNoValueRule(this.groupCopy.items[i]);\r\n }\r\n if (this.items.length < 1) {\r\n this.close(this.group);\r\n }\r\n\r\n }\r\n getValue(v) {\r\n return v.indexOf('????') == 0 ? v.split('|')[1] : v;\r\n }\r\n getNoValueRule(gr) {\r\n // for (let i = 0; i < gr.items.length; i++) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.getNoValueRule(gr.items[i]);\r\n }\r\n\r\n } else {\r\n if (gr.onDemandLabel?.indexOf('????') == 0) {\r\n this.items.push(gr);\r\n }\r\n }\r\n\r\n // }\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n\r\n textValueChange(e, rule) {\r\n rule.value = e.value;\r\n rule.text = e.value;\r\n\r\n }\r\n selectedItemsChange(e, rule) {\r\n let n = this.getOption('textField', rule);\r\n rule.text = e[0][n];\r\n if (rule && rule.control.options.valueField) {\r\n rule.value = e[0][rule.control.options.valueField];\r\n } else {\r\n rule.value = e[0].value;\r\n }\r\n rule.valueItem[0] = e[0];\r\n\r\n }\r\n valueChange(e, rule) {\r\n rule.value = e.value;\r\n rule.text = e.value;\r\n\r\n }\r\n valueBooleanChange(e, rule) {\r\n rule.text = e.value == undefined ? e[0].value : e.value;\r\n rule.value = e.value == undefined ? e[0].value : e.value;\r\n\r\n }\r\n getOption(name: string, rule) {\r\n return rule.control.options ? rule.control.options[name] : null;\r\n }\r\n getProvideData = (e: AXDataSourceReadParams) => {\r\n if (e.extra && e.extra.control.options && e.extra.control.options.dataSource) {\r\n return e.extra.control.options.dataSource({ ...e, optionsData: { ...e.extra.control.options } });\r\n }\r\n };\r\n\r\n provideDataBoolean = (e) => {\r\n return new Promise((resolve) => {\r\n resolve([\r\n {\r\n value: 'true',\r\n text: AXTranslator.get('queryBuilder.true')\r\n },\r\n {\r\n value: 'false',\r\n text: AXTranslator.get('queryBuilder.false')\r\n }\r\n\r\n ])\r\n })\r\n }\r\n\r\n findNullValue(gr) {\r\n for (let i = 0; i < gr.length; i++) {\r\n if (gr[i].value === null || gr[i].value === undefined || gr[i].value === '') {\r\n this.complateValue = false;\r\n }\r\n }\r\n\r\n\r\n // if (gr.condition) {\r\n // for (let i = 0; i < gr.items.length; i++) {\r\n // this.findNullValue(gr.items[i]);\r\n // }\r\n\r\n // } else {\r\n // if (gr.onDemandLabel?.indexOf('????') == 0 || gr.value === null || gr.value === undefined || gr.value === '') {\r\n // this.complateValue = false;\r\n // }\r\n // }\r\n\r\n }\r\n\r\n onFooterButtonClick(e: AXMenuItemClickEvent) {\r\n if (e.name === 'confirm') {\r\n this.form.validate().then(c => {\r\n if (c.result === true) {\r\n this.close(this.groupCopy);\r\n }\r\n });\r\n }\r\n if (e.name === 'cancel') {\r\n this.close();\r\n }\r\n\r\n }\r\n\r\n getFooterButtons(): AXButtonItem[] {\r\n return [\r\n {\r\n text: AXTranslator.get('common.confirm'),\r\n name: 'confirm',\r\n style: 'ax primary',\r\n icon: 'far fa-check-circle'\r\n },\r\n {\r\n text: AXTranslator.get('common.cancel'),\r\n name: 'cancel',\r\n style: 'ax light',\r\n icon: 'far fa-times-circle'\r\n }\r\n ]\r\n }\r\n}","import { AXQueryBuilderGroup, AXQueryBuilderStringType } from \"./query-builder.class\";\r\nimport { Injectable } from '@angular/core';\r\nimport { AXPopupService } from '../popup/popup.service';\r\nimport { AXQueryBuilderPopupComponent } from './query-builder-popup/query-builder-popup.component'\r\nimport { AXToastService } from '../toast/toast.service';\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXQueryBuilderService {\r\n constructor(private popup: AXPopupService, private toast: AXToastService) {\r\n\r\n }\r\n canOpen: boolean = false;\r\n canRun: boolean = false;\r\n public runQuery(group: AXQueryBuilderGroup, provideData) {\r\n\r\n return new Promise((resolve) => {\r\n this.canOpen = false;\r\n for (let i = 0; i < group.items.length; i++) {\r\n this.getNoValueRule(group.items[i]);\r\n }\r\n if (this.canOpen) {\r\n this.canRun = true;\r\n for (let i = 0; i < group.items.length; i++) {\r\n if (this.canRun == true) {\r\n this.findNullValue(group.items[i])\r\n }\r\n }\r\n if (this.canRun) {\r\n this.popup.open(AXQueryBuilderPopupComponent, { data: { group: group, provideData: provideData }, title: \"دریافت مقادیر\" }).then(c => {\r\n resolve(c)\r\n })\r\n }\r\n } else {\r\n resolve(group);\r\n }\r\n })\r\n\r\n\r\n\r\n }\r\n\r\n findNullValue(gr) {\r\n if (this.canRun == true) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.findNullValue(gr.items[i]);\r\n }\r\n\r\n } else {\r\n if (gr.onDemandLabel == '????|') {\r\n this.canRun = false;\r\n this.toast.error('لطفا نام متغیر های مورد نیاز را کامل کنید')\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n private getNoValueRule(gr) {\r\n // for (let i = 0; i < gr.items.length; i++) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.getNoValueRule(gr.items[i]);\r\n }\r\n\r\n } else {\r\n if (gr.onDemandLabel?.indexOf('????') == 0) {\r\n this.canOpen = true;\r\n }\r\n }\r\n\r\n // }\r\n }\r\n\r\n public getQueryString(group: AXQueryBuilderGroup, type: AXQueryBuilderStringType): string {\r\n let query = '';\r\n switch (type) {\r\n case 'simple':\r\n if (group.items.length > 0) {\r\n query = ' ( ';\r\n }\r\n for (let i = 0; i < group.items.length; i++) {\r\n const item = group.items[i];\r\n if (item instanceof AXQueryBuilderGroup) {\r\n \r\n query = query + item.queryString;\r\n \r\n } else {\r\n \r\n query = query + ' ' + item.caption + ' ' + item.operator + ' ' + item.value;\r\n \r\n }\r\n if (i !== group.items.length - 1 && query != ' ( ') {\r\n query = query + ' ' + group.condition;\r\n }\r\n \r\n }\r\n if (group.items.length > 0) {\r\n query = query + ' ) ';\r\n } \r\n break;\r\n \r\n case 'elastic':\r\n if (group.items.length > 0) {\r\n query = ' ( ';\r\n }\r\n for (let i = 0; i < group.items.length; i++) {\r\n const item = group.items[i];\r\n if (item instanceof AXQueryBuilderGroup) {\r\n \r\n query = query + item.queryStringElastic;\r\n \r\n } else {\r\n \r\n query = query + ' ' + item.dataField + ' ' + item.operator + ' ' + item.value;\r\n \r\n }\r\n if (i !== group.items.length - 1 && query != ' ( ') {\r\n query = query + ' ' + group.condition;\r\n }\r\n \r\n }\r\n if (group.items.length > 0) {\r\n query = query + ' ) ';\r\n } \r\n \r\n break;\r\n case 'sql':\r\n \r\n break;\r\n }\r\n \r\n \r\n\r\n\r\n return query;\r\n }\r\n\r\n}","import { Component, OnInit, Input, ViewEncapsulation, Output, EventEmitter, ViewChild } from '@angular/core';\r\nimport { AXValidationFormComponent } from '../validation/validation-form.component';\r\nimport { AXQueryBuilderRuleComponent } from './query-builder-rule.component';\r\nimport { AXQueryBuilderGroup, AXQueryBuilderGroupEvent, AXQueryBuilderRuleEvent, AXQueryBuilderRule } from './query-builder.class';\r\nimport { AXQueryBuilderService } from './query-builder.service'\r\n@Component({\r\n selector: 'ax-query-group',\r\n templateUrl: 'query-builder-group.component.html',\r\n host: { class: 'ax ax-query-group' },\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXQueryBuilderGroupComponent implements OnInit {\r\n\r\n @ViewChild('queryRule') queryRule: AXQueryBuilderRuleComponent;\r\n @ViewChild(AXValidationFormComponent) form: AXValidationFormComponent;\r\n @Input()\r\n group: AXQueryBuilderGroup;\r\n\r\n collapsed: boolean = false;\r\n\r\n @Input()\r\n parent: AXQueryBuilderGroup;\r\n\r\n @Input()\r\n fields: any[] = [];\r\n\r\n //ruleIsEditing: boolean = true;\r\n\r\n @Output()\r\n groupRuleChanged: EventEmitter<AXQueryBuilderGroupEvent> = new EventEmitter<AXQueryBuilderGroupEvent>();\r\n\r\n showGroupCondition: boolean = false;\r\n\r\n constructor(private qs: AXQueryBuilderService) { }\r\n\r\n ngOnInit() { }\r\n\r\n ruleDelete(e: AXQueryBuilderRuleEvent) {\r\n this.group.items = this.group.items.filter(c => c !== e.items);\r\n this.ruleChanged(null);\r\n }\r\n handleRemoveClick() {\r\n this.parent.items = this.parent.items.filter(c => c !== this.group);\r\n this.groupRuleChanged.emit({ groups: this.group, component: this });\r\n }\r\n saveRule() {\r\n // this.form.validate().then(c => {\r\n // });\r\n // return this.queryRule.saveRule();\r\n }\r\n addRule() {\r\n const item: AXQueryBuilderRule = new AXQueryBuilderRule();\r\n if (this.fields.length > 0) {\r\n // item.caption = this.fields[0].caption;\r\n // item.dataType = this.fields[0].dataType;\r\n // item.dataField = this.fields[0].dataField;\r\n } else {\r\n\r\n }\r\n\r\n item.operator = 'equal';\r\n\r\n if (item.dataType === 'string') {\r\n item.value = '';\r\n }\r\n if (item.dataType === 'number') {\r\n item.value = 0;\r\n }\r\n\r\n if (this.group.items == undefined) {\r\n this.group.items = [];\r\n }\r\n this.group.items.push(item);\r\n this.ruleChanged(null);\r\n }\r\n addGroup() {\r\n this.showGroupCondition = true;\r\n }\r\n addGroupOR() {\r\n this.makeGroup(\"OR\");\r\n }\r\n addGroupAND() {\r\n this.makeGroup(\"AND\");\r\n }\r\n makeGroup(_condition) {\r\n let r: AXQueryBuilderGroup = new AXQueryBuilderGroup();\r\n r.condition = _condition;\r\n r.items = [];\r\n r.queryString = '';\r\n if (this.group.items == undefined) {\r\n this.group.items = [];\r\n }\r\n this.group.items.push(r);\r\n this.showGroupCondition = false;\r\n this.ruleChanged(null);\r\n }\r\n changeDetailMode() {\r\n //if (this.parent) {\r\n this.collapsed = !this.collapsed;\r\n // this.ruleIsEditing = false;\r\n //}\r\n }\r\n\r\n handleChangeClick() {\r\n if (this.group.condition == 'OR') {\r\n this.group.condition = 'AND';\r\n } else {\r\n this.group.condition = 'OR';\r\n }\r\n this.ruleChanged(null);\r\n\r\n }\r\n\r\n ruleChanged(e) {\r\n this.group.queryString = this.qs.getQueryString(this.group, 'simple');\r\n this.group.queryStringElastic = this.qs.getQueryString(this.group,'elastic')\r\n this.groupRuleChanged.emit({ groups: this.group, component: this });\r\n }\r\n\r\n\r\n}","import { AXBaseComponent } from '../base/element.class';\r\nimport { Component, Input, Output, EventEmitter, ElementRef, ViewEncapsulation, ViewChild } from '@angular/core';\r\nimport { AXTranslator, AXHtmlUtil } from '@acorex/core';\r\nimport { AXQueryBuilderGroup, AXQueryBuilderGroupEvent, AXQueryBuilderGroupItem } from './query-builder.class';\r\nimport { AXQueryBuilderGroupComponent } from './query-builder-group.component';\r\nimport { AXToastService } from '../toast/toast.service';\r\n\r\n\r\n\r\n\r\n\r\n@Component({\r\n selector: 'ax-query-builder',\r\n templateUrl: './query-builder.component.html',\r\n styleUrls: ['./query-builder.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXQueryBuilderComponent extends AXBaseComponent {\r\n\r\n @ViewChild('queryGroup') queryGroup: AXQueryBuilderGroupComponent;\r\n\r\n @Input()\r\n query: AXQueryBuilderGroup;\r\n\r\n rootGroup: AXQueryBuilderGroup = new AXQueryBuilderGroup();\r\n\r\n\r\n ngOnInit(): void {\r\n\r\n\r\n this.rootGroup.condition = this.query.condition ? this.query.condition : \"AND\";\r\n this.rootGroup.items = this.query.items ? this.query.items : [];\r\n\r\n }\r\n\r\n constructor(private ref: ElementRef, private toast: AXToastService) {\r\n super();\r\n }\r\n\r\n @Input()\r\n fields: any[] = [];\r\n\r\n // @Input()\r\n // mode: 'immediate' | 'click' = 'click';\r\n\r\n @Output()\r\n onRuleChanged: EventEmitter<AXQueryBuilderGroupEvent> = new EventEmitter<AXQueryBuilderGroupEvent>();\r\n\r\n saved: boolean = false;\r\n\r\n\r\n public getQueryBuilder() {\r\n return ({ groups: this.rootGroup });\r\n }\r\n\r\n ruleChanged(e) {\r\n this.onRuleChanged.emit({ component: this, groups: this.rootGroup });\r\n }\r\n\r\n\r\n\r\n public saveRule() {\r\n /// return this.queryGroup.saveRule();\r\n return new Promise((resolve, reject) => {\r\n this.saved = true;\r\n for (let i = 0; i < this.rootGroup.items.length; i++) {\r\n if (this.saved == true) {\r\n this.findNullValue(this.rootGroup.items[i])\r\n }\r\n }\r\n if (this.saved == true) {\r\n resolve(this.rootGroup);\r\n } else {\r\n reject();\r\n }\r\n })\r\n\r\n }\r\n\r\n findNullValue(gr) {\r\n if (this.saved == true) {\r\n if (gr.condition) {\r\n for (let i = 0; i < gr.items.length; i++) {\r\n this.findNullValue(gr.items[i]);\r\n }\r\n\r\n } else {\r\n if (gr.onDemandLabel == '????|') {\r\n this.saved = false;\r\n this.toast.error('لطفا نام متغیر های مورد نیاز را کامل کنید')\r\n }\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n // selectionFieldsChanged(e, rules: AXQueryBuilderRule) {\r\n // \r\n // rules.dataField = e.selectedItems[0].dataField;\r\n // rules.caption = e.selectedItems[0].caption;\r\n // rules.dataType = e.selectedItems[0].dataType;\r\n\r\n // // TO DO chack dataType For Def operator and Value\r\n // if (rules.dataType == 'string') {\r\n // rules.operator = this.operatorStringItem[0].id;\r\n // rules.value = 'null';\r\n // }\r\n // if (rules.dataType == 'number') {\r\n // rules.operator = this.operatorNumberItem[0].id;\r\n // rules.value = '0';\r\n // }\r\n\r\n\r\n // this.onRuleChanged.emit({ groups: this.rootGroup, queryString: this.getQueryDisplay(), component: this, htmlElement: this.ref.nativeElement })\r\n // }\r\n\r\n // selectionOparatorChanged(e, rules: AXQueryBuilderRule) {\r\n // rules.operator = e.selectedItems[0].id;\r\n // }\r\n\r\n // provideDataFields = (e) => {\r\n // return new Promise((resolve) => {\r\n // resolve(this.fields);\r\n // });\r\n // }\r\n\r\n // provideDataOperatorString = (e) => {\r\n // return new Promise((resolve) => {\r\n // resolve(this.operatorStringItem);\r\n // });\r\n // }\r\n // provideDataOperatorNumber = (e) => {\r\n // return new Promise((resolve) => {\r\n // resolve(this.operatorNumberItem);\r\n // });\r\n // }\r\n\r\n // private getQueryDisplay(gr = this.list, _condition = this.list[0].condition) {\r\n // var cap: string = '(';\r\n\r\n // for (let j = 0; j < gr.length; j++) {\r\n // if (j > 0) {\r\n // cap = cap + _condition;\r\n // }\r\n // cap = cap + \" ( \";\r\n // for (let i = 0; i < gr[j].items.length; i++) {\r\n // if (gr[j].items[i].value && gr[j].items[i].operator && gr[j].items[i].caption || ((gr[j].items[i].operator == \"is-empty\" || gr[j].items[i].operator == \"is-not-empty\") && gr[j].items[i].caption)) {\r\n // var opr: string;\r\n // if (gr[j].items[i].dataType == \"number\" || gr[j].items[i].dataType == \"date\" || gr[j].items[i].dataType == \"dateTime\") {\r\n // let d = this.operatorNumberItem.filter(c => c.id == gr[j].items[i].operator);\r\n // opr = d[0].text;\r\n // } else {\r\n // let d = this.operatorStringItem.filter(c => c.id == gr[j].items[i].operator);\r\n // opr = d[0].text;\r\n // }\r\n // if ((gr[j].items[i].operator == \"is-empty\" || gr[j].items[i].operator == \"is-not-empty\")) {\r\n\r\n // if (i === gr[j].items.length - 1) {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\";\r\n // } else {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\" + \" \" + opr + \" \" + gr[j].condition;\r\n // }\r\n // } else {\r\n // var val: string;\r\n\r\n // if (gr[j].items[i].dataType == 'date') {\r\n // // val = moment(item.value).locale('fa').format('YYYY/MM/DD');\r\n // } else if (gr[j].items[i].dataType == 'dateTime') {\r\n // // val = moment(item.value).locale('fa').format('HH:mm YYYY/MM/DD');\r\n // } else {\r\n // val = gr[j].items[i].value;\r\n // }\r\n // if (i === gr[j].items.length - 1) {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\" + \" \" + opr + \" \" + val\r\n // } else {\r\n // cap = cap + \" \" + \"[\" + gr[j].items[i].caption + \"]\" + \" \" + opr + \" \" + val + \" \" + gr[j].condition\r\n // }\r\n\r\n // }\r\n // }\r\n // }\r\n\r\n // if (gr[j].groups && gr[j].groups.length > 0) {\r\n // let c = this.getQueryDisplay(gr[j].groups, gr[j].condition);\r\n // if (c != \"( ) \") {\r\n // if (gr[j].items.length > 0 || j > 0) {\r\n // cap = cap + \" \" + gr[j].condition + \" \" + c + \" \";\r\n // } else {\r\n // cap = cap + \" \" + c + \" \";\r\n // }\r\n\r\n // }\r\n // }\r\n\r\n // cap = cap + \" ) \";\r\n // };\r\n\r\n // cap = cap + \" ) \";\r\n // return cap;\r\n // }\r\n\r\n // deleteGroup(groupOut: AXQueryBuilderGroup, groupIn: AXQueryBuilderGroup) {\r\n // groupOut.items = groupOut.items.filter(c => c.id != groupIn.id);\r\n // }\r\n\r\n // deleteRule1(group: AXQueryBuilderGroup, rule: AXQueryBuilderRule) {\r\n // group.items = group.items.filter(c => c.id != rule.id);\r\n // }\r\n\r\n\r\n // addRule(group: AXQueryBuilderGroup) {\r\n // const item: AXQueryBuilderRule = new AXQueryBuilderRule();\r\n // group.items.push(item);\r\n // }\r\n\r\n // addGroupAND(group: AXQueryBuilderGroup) {\r\n // this.addGroupOnClick(group);\r\n // group.condition = \"AND\";\r\n // }\r\n // addGroupOR(group: AXQueryBuilderGroup) {\r\n // this.addGroupOnClick(group);\r\n // group.condition = \"OR\";\r\n // }\r\n\r\n // addGroupOnClick(groups: AXQueryBuilderGroup) {\r\n // let r: AXQueryBuilderGroup = new AXQueryBuilderGroup();\r\n // r.condition = \"\";\r\n // r.items = [];\r\n // if (groups.items == undefined) {\r\n // groups.items = [];\r\n // }\r\n // groups.items.push(r);\r\n // }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSearchBoxComponent } from './searchbox.component';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXSearchBoxComponent],\r\n imports: [CommonModule, AXTextBoxModule, AXButtonModule, AXFormGroupModule, AXTranslatorModule, FormsModule],\r\n exports: [AXSearchBoxComponent],\r\n providers: []\r\n})\r\nexport class AXSearchBoxModule { }\r\n","import {\r\n Component,\r\n ViewEncapsulation,\r\n ChangeDetectionStrategy,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n ViewChild,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n ContentChild,\r\n NgZone,\r\n HostListener\r\n} from '@angular/core';\r\nimport { AXTextBoxComponent } from '../textbox/textbox.component';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXBaseSizableComponent, AXBaseInputComponent, AXElementSize, AXValidatableComponent, AXBaseValueComponent } from '../base/element.class';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXValidation } from '../validation/validation.component';\r\nimport { AXDataSourceReadParams } from '../data-source/read-param';\r\nimport { AXSearchBoxComponent } from '../searchbox/searchbox.component';\r\nimport { AXConfig, AXObjectUtil, AXTranslator } from '@acorex/core';\r\nimport { AXValueEvent } from '../base/events.class';\r\n\r\n\r\nexport class AXSelectBoxValueChangedEvent extends AXValueEvent<any | any[]> {\r\n value?: any;\r\n oldValue?: any;\r\n isUserInput: boolean = false;\r\n selectedKeys?: any[];\r\n selectedItems?: any[];\r\n}\r\n\r\n@Component({\r\n selector: 'ax-select-box2',\r\n templateUrl: './selectbox2.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXSelectBox2Component }]\r\n})\r\nexport class AXSelectBox2Component extends AXValidatableComponent implements AXBaseSizableComponent, AXBaseInputComponent, AXBaseValueComponent<any>{\r\n\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n span: ElementRef<HTMLElement>;\r\n\r\n @ViewChild(AXTextBoxComponent, { static: true })\r\n textbox: AXTextBoxComponent;\r\n\r\n @ViewChild('listContainer', { static: true })\r\n listContainer: ElementRef<HTMLDivElement>;\r\n\r\n @ViewChild('searchBox', { static: false })\r\n searchBox: AXSearchBoxComponent;\r\n\r\n @ViewChild('textBoxSelectBox', { static: true })\r\n textBoxSelectBox: AXTextBoxComponent;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n @ViewChild('d', { static: true })\r\n dropdown: AXDropdownComponent;\r\n\r\n\r\n @Input() showDropDownButton: boolean = true;\r\n @Input() readonly: boolean = false;\r\n @Input() rtl: boolean = AXConfig.get('layout.rtl');\r\n @Input() disabled: boolean;\r\n @Input() placeholder: string;\r\n @Input() size: AXElementSize = 'md';\r\n @Input() allowNull: boolean = true;\r\n @Input() textAlign: 'right' | 'left' | null = null;\r\n @Input() bufferSize: number = 10;\r\n @Input() remoteOperation: boolean = false;\r\n @Input() allowSearch: boolean = true;\r\n @Input() textField: string = 'text';\r\n @Input() valueField: string = 'value';\r\n @Input() selectionMode: 'single' | 'multiple' = 'single';\r\n @Input() selectionDataMode: 'value' | 'item' = 'value';\r\n\r\n currentfocusedIndex: number = -1;\r\n showLoading: boolean = false;\r\n skip: number = -1;\r\n searchText: string = '';\r\n text: string = '';\r\n totalCount: number = 0;\r\n itemsFiltered: any[] = [];\r\n\r\n private isUserInput: boolean = false;\r\n\r\n private _dataSource: AXDataSourceComponent;\r\n @Input()\r\n public get dataSource(): AXDataSourceComponent {\r\n return this._dataSource ? this._dataSource : this._contentDataSource;\r\n }\r\n public set dataSource(v: AXDataSourceComponent) {\r\n this._dataSource = v;\r\n }\r\n\r\n private _validation: AXValidation;\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ref: ElementRef, private zone: NgZone) {\r\n super();\r\n }\r\n\r\n\r\n private _value: any | any[];\r\n @Input()\r\n public get value(): any | any[] {\r\n return this._value;\r\n }\r\n public set value(v: any | any[]) {\r\n if (v !== this._value) {\r\n const oldValue = AXObjectUtil.deepJSONClone(this._value);\r\n if (this.selectionMode === 'multiple') {\r\n this._value = Array.isArray(v) ? v : (v ? [v] : []);\r\n } else {\r\n this._value = Array.isArray(v) ? v[0] : v;\r\n }\r\n this.valueChange.emit(this._value);\r\n this.onValueChanged.emit({\r\n component: this,\r\n htmlElement: this.ref.nativeElement,\r\n isUserInput: this.isUserInput,\r\n oldValue,\r\n value: this._value,\r\n selectedKeys: this.selectedItems.map(c => c[this.valueField]),\r\n selectedItems: this.selectedItems.slice()\r\n });\r\n this.isUserInput = false;\r\n this.renderSelection();\r\n }\r\n }\r\n\r\n\r\n private _selectedItems: any[];\r\n public get selectedItems(): any[] {\r\n return this._selectedItems || [];\r\n }\r\n\r\n private _items: any[] = [];\r\n @Input()\r\n public get items(): any[] {\r\n return this._items;\r\n }\r\n public set items(v: any[]) {\r\n this._items = v;\r\n if (this.itemsChange) {\r\n this.itemsChange.emit(v);\r\n }\r\n this.renderSelection();\r\n }\r\n\r\n @Output()\r\n itemsChange: EventEmitter<any[]> = new EventEmitter<any[]>();\r\n\r\n @Output()\r\n onBlur: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onFocus: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n public valueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n public onValueChanged: EventEmitter<AXSelectBoxValueChangedEvent> = new EventEmitter<AXSelectBoxValueChangedEvent>();\r\n\r\n\r\n\r\n ngOnInit() {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n scrolled(e) {\r\n if (this.remoteOperation && this.totalCount > this.items.length && this.listContainer.nativeElement.scrollHeight != 0\r\n && this.listContainer.nativeElement.scrollHeight - this.listContainer.nativeElement.scrollTop - 300 < 50) {\r\n this.showLoading = true;\r\n\r\n if (this.skip !== this.items.length) {\r\n this.skip = this.items.length;\r\n\r\n const params: AXDataSourceReadParams = {};\r\n params.skip = this.items.length;\r\n params.take = this.bufferSize * (Math.floor(this.items.length / this.bufferSize) + 1);\r\n if (this.textbox) {\r\n params.searchText = this.text;\r\n } else {\r\n params.searchText = null;\r\n }\r\n this.fetch(params);\r\n }\r\n }\r\n }\r\n\r\n textChanged(e) {\r\n this.currentfocusedIndex = -1;\r\n if (this.remoteOperation) {\r\n this.searchText = this.text;\r\n this.items = [];\r\n const params: AXDataSourceReadParams = {};\r\n params.searchText = this.text;\r\n params.skip = 0;\r\n params.take = this.bufferSize;\r\n this.fetch(params);\r\n }\r\n }\r\n\r\n private renderSelection() {\r\n const func = () => {\r\n if (!this.value) {\r\n return [];\r\n }\r\n if ((this.items?.length > 0) && this.selectionDataMode == 'value') {\r\n const orgRes = this.items.filter(i => {\r\n if (Array.isArray(this.value)) {\r\n return this.value.some(ii => {\r\n if (typeof ii === 'object') {\r\n return i[this.valueField] === ii[this.valueField];\r\n }\r\n else {\r\n return i[this.valueField] === ii;\r\n }\r\n });\r\n }\r\n else {\r\n if (typeof this.value === 'object') {\r\n return i[this.valueField] === this.value[this.valueField];\r\n }\r\n else {\r\n return i[this.valueField] === this.value;\r\n }\r\n }\r\n });\r\n if (orgRes.length > 0) {\r\n return orgRes;\r\n }\r\n }\r\n if (Array.isArray(this.value)) {\r\n return this.value.map(ii => {\r\n if (typeof ii === 'object' && ii[this.textField]) {\r\n return ii;\r\n }\r\n else {\r\n const fake: any = {};\r\n fake[this.valueField] = this.value;\r\n fake[this.textField] = AXTranslator.get('common.loading');\r\n return fake;\r\n }\r\n });\r\n }\r\n else {\r\n if (typeof this.value === 'object' && this.value[this.textField]) {\r\n return [this.value];\r\n }\r\n else {\r\n const fake: any = {};\r\n fake[this.valueField] = this.value;\r\n fake[this.textField] = AXTranslator.get('common.loading');\r\n return [fake];\r\n }\r\n }\r\n };\r\n this._selectedItems = func();\r\n this.cdr.markForCheck();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.bufferSize < 10) {\r\n this.bufferSize = 10;\r\n }\r\n if (!this.remoteOperation) {\r\n this.refresh();\r\n }\r\n }\r\n\r\n dropdownToggle(e) {\r\n if (this.dropdown.isOpen) {\r\n this.currentfocusedIndex = this.getItems().indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n this.focusOnSearchBox();\r\n this.focusOnCurrentFocusedIndex();\r\n }\r\n else {\r\n this.focus();\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n if (this.dataSource) {\r\n if (this.allowSearch === false) {\r\n this.fetch();\r\n }\r\n this.dataSource.onDataReceived.subscribe((c) => {\r\n this.showLoading = false;\r\n this.dataReceived(c.data.result);\r\n });\r\n }\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private dataReceived(data: any) {\r\n if (this.remoteOperation) {\r\n if (this.searchText && this.searchText != null && this.searchText !== '') {\r\n if (data.totalCount) {\r\n this.items = data.items;\r\n this.totalCount = data.totalCount;\r\n } else {\r\n this.items = data.items;\r\n this.totalCount = data.items == undefined ? 0 : data.items.length;\r\n }\r\n\r\n }\r\n else if (data.items && data.items.length === data.totalCount) {\r\n this.items = data.items;\r\n this.totalCount = data.items.length;\r\n }\r\n else if (data.totalCount) {\r\n data.items.forEach(elm => {\r\n this.items.push(elm);\r\n });\r\n this.totalCount = data.totalCount;\r\n } else {\r\n data.forEach(elm => {\r\n this.items.push(elm);\r\n });\r\n this.totalCount = data.length;\r\n }\r\n } else {\r\n this.items = data;\r\n }\r\n this.renderSelection();\r\n this.cdr.markForCheck();\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n fetch(params: AXDataSourceReadParams = {}) {\r\n if (this.dataSource) {\r\n this.showLoading = true;\r\n this.dataSource.fetch(params);\r\n }\r\n }\r\n\r\n refresh() {\r\n const params: AXDataSourceReadParams = {};\r\n if (this.remoteOperation) {\r\n params.skip = 0;\r\n this.skip = 0;\r\n params.take = this.bufferSize;\r\n }\r\n if (this.dataSource !== undefined) {\r\n this.items = [];\r\n this.fetch(params);\r\n }\r\n }\r\n\r\n handleItemRemoveClick(item) {\r\n this.text = '';\r\n this.isUserInput = true;\r\n if (Array.isArray(this.value)) {\r\n this.value = this.value.filter(c => (typeof c === 'object') ? c[this.valueField] !== item[this.valueField] : c !== item[this.valueField]);\r\n }\r\n else {\r\n this.value = null;\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n\r\n\r\n onTextBoxClick(e) {\r\n if (this.disabled === false && this.readonly === false) {\r\n this.open();\r\n }\r\n }\r\n\r\n handleItemClick(e: MouseEvent, item: any) {\r\n this.isUserInput = true;\r\n if (this.selectionMode === 'single') {\r\n this.selectItems(item);\r\n this.close();\r\n }\r\n else {\r\n if (Array.isArray(this.value) && this.value.length > 0) {\r\n if (this.value.some(c => this.internalGetItemValue(c) === this.internalGetItemValue(item))) {\r\n this.unselectItems(item);\r\n }\r\n else {\r\n this.selectItems(item);\r\n }\r\n }\r\n else {\r\n this.selectItems(item);\r\n }\r\n }\r\n this.cdr.markForCheck();\r\n this.focusOnSearchBox();\r\n }\r\n\r\n private internalGetItemByDataMode(item: any) {\r\n return this.selectionDataMode === 'item' ? item : item[this.valueField];\r\n }\r\n\r\n private internalGetItemValue(item: any) {\r\n return typeof item === 'object' ? item[this.valueField] : item;\r\n }\r\n\r\n @HostListener('document:keydown', ['$event'])\r\n handleKeyDown(e: KeyboardEvent) {\r\n if (e.key === 'Escape' || this.disabled || this.readonly) {\r\n this.close();\r\n e.preventDefault();\r\n return;\r\n }\r\n const isLetter = new RegExp(/[a-zA-Z0-9\\-]/).test(String.fromCharCode(e.keyCode));\r\n if (this.textbox.isFocused()) {\r\n if (e.key === 'Backspace' && e.type === 'keydown' &&\r\n ((this.allowNull === true && this.selectedItems.length > 0) ||\r\n (this.allowNull === false && this.selectedItems.length > 1))) {\r\n this.isUserInput = true;\r\n this.unselectItems(this.selectedItems.pop());\r\n e.preventDefault();\r\n return;\r\n }\r\n else if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0 && !this.dropdown.isOpen && e.type === 'keydown') {\r\n if (this.selectionMode === 'single') {\r\n this.isUserInput = true;\r\n this.selectedItemByIndex(this.currentfocusedIndex + (e.key === 'ArrowDown' ? 1 : -1));\r\n if (e.ctrlKey) {\r\n this.open();\r\n }\r\n }\r\n else {\r\n this.open();\r\n }\r\n e.preventDefault();\r\n return;\r\n }\r\n else if (isLetter) {\r\n this.text = e.key;\r\n this.open();\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n if (this.dropdown.isOpen) {\r\n if ((e.key === 'ArrowDown' || e.key === 'ArrowUp') && this.getItems().length > 0) {\r\n this.isUserInput = true;\r\n this.selectItemByNav((e.key === 'ArrowDown' ? 1 : -1));\r\n e.preventDefault();\r\n return;\r\n }\r\n if ((e.key === 'Enter' || e.code === 'Space')) {\r\n const focusedItem = this.getItems()[this.currentfocusedIndex];\r\n if (focusedItem) {\r\n\r\n if (this.selectionMode === 'single') {\r\n this.isUserInput = true;\r\n this.selectItems(focusedItem);\r\n this.close();\r\n }\r\n else {\r\n this.isUserInput = true;\r\n this.toggleSelect(focusedItem);\r\n }\r\n }\r\n e.preventDefault();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n unselectItems(...items: any[]) {\r\n if (!items || items.length === 0) {\r\n this.value = null;\r\n }\r\n else if (Array.isArray(this.value)) {\r\n this.value = this.value.filter(c => !items.some(d =>\r\n this.internalGetItemValue(c) === this.internalGetItemValue(d))\r\n );\r\n }\r\n else {\r\n this.value = null;\r\n }\r\n this.cdr.markForCheck();\r\n }\r\n\r\n selectItems(...items: any[]) {\r\n if (items && items.length) {\r\n if (this.selectionMode === 'single') {\r\n this.value = this.internalGetItemByDataMode(items[0]);\r\n }\r\n else {\r\n this.value = (this.value || []).concat(items.map(c => this.internalGetItemByDataMode(c)));\r\n }\r\n }\r\n }\r\n\r\n\r\n toggleSelect(...items: any[]) {\r\n if (items && items.length) {\r\n items.forEach(item => {\r\n this.selectedItems.includes(item) ? this.unselectItems(item) : this.selectItems(item);\r\n });\r\n }\r\n }\r\n\r\n\r\n close() {\r\n this.dropdown.close();\r\n }\r\n\r\n open() {\r\n this.dropdown.open();\r\n }\r\n\r\n focus(): void {\r\n this.text = null;\r\n this.textbox.focus();\r\n }\r\n\r\n private focusOnSearchBox() {\r\n const inputedVal = this.text;\r\n if (this.allowSearch === true) {\r\n setTimeout(() => {\r\n if (this.searchBox) {\r\n this.searchBox.value = inputedVal;\r\n this.searchBox.focus();\r\n }\r\n }, 0);\r\n }\r\n else {\r\n this.textbox.focus();\r\n }\r\n }\r\n\r\n getItems(): any[] {\r\n if (this.items == null) {\r\n return [];\r\n }\r\n return (!this.remoteOperation && this.text && this.text !== '') ? this.items.filter((c) =>\r\n (c[this.textField] as string).toLowerCase().includes(this.text.toLowerCase())) : this.items;\r\n }\r\n\r\n isItemSelected(item: any): boolean {\r\n return this.selectedItems.some(c => c[this.valueField] === item[this.valueField]);\r\n }\r\n\r\n private selectItemByNav(sign: -1 | 1 | null = null): void {\r\n if (sign == null) {\r\n this.currentfocusedIndex = this.getItems().indexOf(this.selectedItems[this.selectedItems.length - 1]);\r\n }\r\n else {\r\n sign === -1 ? this.currentfocusedIndex-- : this.currentfocusedIndex++;\r\n }\r\n if (this.currentfocusedIndex < 0) {\r\n this.currentfocusedIndex = 0;\r\n }\r\n if (this.currentfocusedIndex > this.getItems().length - 1) {\r\n this.currentfocusedIndex = this.getItems().length - 1;\r\n }\r\n\r\n // set scroll\r\n this.focusOnCurrentFocusedIndex();\r\n }\r\n\r\n private focusOnCurrentFocusedIndex() {\r\n if (this.listContainer) {\r\n this.zone.runOutsideAngular(() => {\r\n const itemDiv = this.listContainer.nativeElement.querySelector(`.list-item:nth-child(${this.currentfocusedIndex})`);\r\n if (itemDiv) {\r\n itemDiv.scrollIntoView({ behavior: 'auto' });\r\n }\r\n });\r\n }\r\n }\r\n\r\n selectedItemByIndex(index: number) {\r\n if (index < 0) {\r\n index = 0;\r\n }\r\n if (index > this.getItems().length - 1) {\r\n index = this.getItems().length - 1;\r\n }\r\n this.selectItems(this.getItems()[index]);\r\n this.currentfocusedIndex = index;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXSelectBoxComponent } from './selectbox.component';\r\nimport { AXDropdownModule } from '../dropdown/dropdown.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXTranslatorModule, AXScrollModule } from '@acorex/core';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\nimport { AXSearchBoxModule } from '../searchbox/searchbox.module';\r\nimport { AXSelectBox2Component } from './selectbox2.component';\r\n\r\n\r\nconst COMPONENT = [AXSelectBoxComponent, AXSelectBox2Component];\r\nconst MODULES = [\r\n CommonModule,\r\n AXDropdownModule,\r\n AXTextBoxModule,\r\n AXTranslatorModule,\r\n AXScrollModule,\r\n AXCheckBoxModule,\r\n AXLoadingModule,\r\n AXSearchBoxModule\r\n];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: []\r\n})\r\nexport class AXSelectBoxModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { AXQueryBuilderComponent } from './query-builder.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXPanelBoxModule } from '../panel-box/panel-box.module';\r\nimport { AXSelectBoxModule } from '../selectbox/selectbox.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXQueryBuilderRuleComponent } from './query-builder-rule.component';\r\nimport { AXQueryBuilderGroupComponent } from './query-builder-group.component';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { AXNumberBoxModule } from '../number-box/number-box.module';\r\nimport { AXDataSourceModule } from '../data-source/datasource.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\nimport { AXQueryBuilderPopupComponent } from './query-builder-popup/query-builder-popup.component';\r\nimport { AXLabelModule } from '../label/label.module';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXValidationModule } from '../validation/validation.module';\r\nimport { AXQueryBuilderService } from './query-builder.service';\r\n\r\nconst MODUELS = [\r\n CommonModule,\r\n AXButtonModule,\r\n AXPanelBoxModule,\r\n AXSelectBoxModule,\r\n AXDataSourceModule,\r\n AXTextBoxModule,\r\n AXNumberBoxModule,\r\n AXFormGroupModule,\r\n AXTranslatorModule,\r\n AXLabelModule,\r\n AXCheckBoxModule,\r\n AXValidationModule\r\n]\r\n\r\n@NgModule({\r\n declarations: [AXQueryBuilderComponent, AXQueryBuilderGroupComponent, AXQueryBuilderRuleComponent, AXQueryBuilderPopupComponent],\r\n imports: [MODUELS],\r\n exports: [AXQueryBuilderComponent],\r\n providers: [AXQueryBuilderService],\r\n entryComponents: [AXQueryBuilderPopupComponent]\r\n})\r\n\r\nexport class AXQueryBuilderModule { }","import { Component, ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation, Output, Input, EventEmitter } from '@angular/core';\r\nimport { AXBaseComponent, AXBaseSizableComponent, AXBaseValueComponent, AXElementSize } from '../base/element.class';\r\nimport { AXValueEvent } from '../base/events.class';\r\n\r\n@Component({\r\n selector: 'ax-switch',\r\n templateUrl: './switch.component.html',\r\n styleUrls: ['./switch.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class AXSwitchComponent extends AXBaseComponent implements AXBaseSizableComponent, AXBaseValueComponent<boolean> {\r\n\r\n\r\n @Output()\r\n onValueChanged: EventEmitter<AXValueEvent<boolean>> = new EventEmitter<AXValueEvent<boolean>>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @Input()\r\n tabIndex: number = 0;\r\n\r\n private _value: boolean;\r\n @Input()\r\n public get value(): boolean {\r\n return this._value;\r\n }\r\n public set value(v: boolean) {\r\n if (this._value !== v) {\r\n const oldValue = this._value;\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n oldValue,\r\n value: v\r\n });\r\n }\r\n }\r\n\r\n\r\n @Input()\r\n readonly: boolean;\r\n\r\n @Input()\r\n disabled: boolean;\r\n\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super();\r\n }\r\n\r\n focus(): void { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXSwitchComponent } from './switch.component';\r\n\r\n@NgModule({\r\n declarations: [AXSwitchComponent],\r\n imports: [CommonModule, FormsModule],\r\n exports: [AXSwitchComponent],\r\n entryComponents: [AXSwitchComponent],\r\n providers: [],\r\n})\r\nexport class AXSwitchModule {\r\n\r\n}","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { AXHtmlUtil } from '@acorex/core';\r\nimport { AXPageClosing, AXPageResult, TAB_META_KEY, AXPageClosedPromise } from '../base/base-page.class';\r\n\r\nexport interface AXTabPage {\r\n title: string;\r\n content: any;\r\n closable?: boolean;\r\n data?: any;\r\n pinned?: boolean;\r\n}\r\n\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AXTabPageService {\r\n\r\n\r\n\r\n tabs: AXTabPage[] = new Array<AXTabPage>();\r\n opened = new Subject<AXTabPage>();\r\n activated = new Subject<AXTabPage>();\r\n closed = new Subject<AXTabPage>();\r\n changed = new Subject();\r\n\r\n\r\n\r\n constructor() { }\r\n\r\n open(content: any, title: string): AXPageClosedPromise;\r\n open(content: any, title: string, data?: any): AXPageClosedPromise;\r\n open(options: AXTabPage): AXPageClosedPromise;\r\n\r\n open(arg1, arg2?, arg3?) {\r\n let newTab: AXTabPage;\r\n if (typeof arg1 === 'object') {\r\n const options = Object.assign({ closable: true }, arg1);\r\n newTab = {\r\n title: options.title,\r\n closable: options.closable,\r\n content: options.content,\r\n data: options.data,\r\n pinned: options.pinned\r\n };\r\n } else {\r\n newTab = {\r\n title: arg2,\r\n closable: true,\r\n content: arg1,\r\n data: arg3,\r\n };\r\n }\r\n newTab[TAB_META_KEY] = {};\r\n newTab[TAB_META_KEY].uid = AXHtmlUtil.getUID();\r\n //\r\n const existTab = this.tabs.find((c) => newTab[TAB_META_KEY].uid && c[TAB_META_KEY].uid === newTab[TAB_META_KEY].uid) ||\r\n this.findExistTab(newTab.content, newTab.data);\r\n //\r\n if (existTab) {\r\n return Promise.resolve(this.active(existTab));\r\n }\r\n this.tabs.push(newTab);\r\n this.tabs\r\n .filter((c) => c[TAB_META_KEY].uid !== newTab[TAB_META_KEY].uid)\r\n .forEach((t) => {\r\n t[TAB_META_KEY].active = false;\r\n });\r\n this.opened.next(newTab);\r\n this.active(newTab);\r\n const promise = new AXPageClosedPromise((resolve) => {\r\n newTab[TAB_META_KEY].close = (e) => {\r\n if (resolve) {\r\n delete e.cancel;\r\n resolve(e);\r\n }\r\n };\r\n });\r\n promise['closeMethod'] = () => { this.close(newTab); };\r\n return promise;\r\n }\r\n\r\n close(tab: AXTabPage) {\r\n const e = { cancel: false };\r\n const closingFunc = tab[TAB_META_KEY].component?.onClosing;\r\n if (closingFunc) {\r\n const res = closingFunc(e);\r\n if (res instanceof Promise) {\r\n res.then(() => {\r\n if (e == null || e.cancel !== true) {\r\n this.doCloseAction(tab, e);\r\n }\r\n });\r\n }\r\n else {\r\n if (e == null || e.cancel !== true) {\r\n this.doCloseAction(tab, e);\r\n }\r\n }\r\n } else {\r\n this.doCloseAction(tab, e);\r\n }\r\n }\r\n\r\n private doCloseAction(tab: AXTabPage, e: AXPageClosing): void {\r\n const currentTab = this.tabs.find((c) => c[TAB_META_KEY].uid == tab[TAB_META_KEY].uid);\r\n if (!currentTab) {\r\n return;\r\n }\r\n const index = this.tabs.indexOf(currentTab);\r\n this.tabs = this.tabs.filter(c => c != currentTab);\r\n const prev = index > 0 ? this.tabs[index - 1] : this.tabs[0];\r\n if (prev) {\r\n this.active(prev);\r\n }\r\n this.closed.next(currentTab);\r\n this.changed.next();\r\n if (currentTab[TAB_META_KEY].close) {\r\n currentTab[TAB_META_KEY].close(e);\r\n }\r\n }\r\n\r\n active(tab: AXTabPage): AXPageResult;\r\n active(uid: string): AXPageResult;\r\n active(): AXPageResult;\r\n active(arg1?): AXPageResult {\r\n if (!arg1) {\r\n return {\r\n sender: this.tabs.find((c) => c[TAB_META_KEY].active === true)\r\n }\r\n }\r\n if (typeof arg1 === 'object') {\r\n const tab = <AXTabPage>arg1;\r\n tab[TAB_META_KEY].active = true;\r\n this.tabs\r\n .filter((c) => c[TAB_META_KEY].uid !== tab[TAB_META_KEY].uid)\r\n .forEach((t) => {\r\n t[TAB_META_KEY].active = false;\r\n });\r\n this.activated.next(tab);\r\n this.changed.next();\r\n return {\r\n sender: tab\r\n }\r\n } else if (typeof arg1 === 'string') {\r\n const tab = this.tabs.find((c) => c[TAB_META_KEY].uid === arg1);\r\n if (tab) {\r\n return this.active(tab);\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n clear(): void {\r\n this.tabs.forEach((c) => {\r\n this.close(c);\r\n });\r\n this.tabs = [];\r\n }\r\n\r\n private findExistTab(component: any, data: any): AXTabPage {\r\n try {\r\n if (!data) {\r\n data = {};\r\n }\r\n const result = this.tabs.find((c: any) =>\r\n c.content === component &&\r\n ((!c.data) ||\r\n JSON.stringify(data) === JSON.stringify(c.data))\r\n );\r\n return result;\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ViewContainerRef, ComponentFactoryResolver, ElementRef, ComponentRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AXTabPage, AXTabPageService } from './tab-page.service';\r\nimport { AXRenderService } from '@acorex/core';\r\nimport { AXBasePageComponent, AXPageCloseEvent, TAB_META_KEY } from '../base/base-page.class';\r\nimport { AXLoadingService } from '../loading/loading.service';\r\n\r\n@Component({\r\n selector: 'ax-tab-page-host',\r\n template: `\r\n <div class='ax-loading-host'>\r\n <div class='ax-tab-page-host' >\r\n <div [hidden]=\"isLoading\" style=\"height:100%\" class='ax-tab-page-host-container'>\r\n <ng-template #container></ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n `\r\n})\r\n\r\nexport class AXTabPageHostComponent implements OnInit {\r\n\r\n tab: AXTabPage;\r\n component: AXBasePageComponent;\r\n private componentRef: ComponentRef<any>;\r\n isLoading: boolean;\r\n _loadingId: number;\r\n\r\n @ViewChild('container', { read: ViewContainerRef, static: true })\r\n private container: ViewContainerRef;\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private ref: ElementRef<HTMLDivElement>,\r\n private rendererService: AXRenderService,\r\n private tabService: AXTabPageService,\r\n private loadingService: AXLoadingService,\r\n private cdr: ChangeDetectorRef,\r\n ) {\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.isLoading = true;\r\n }\r\n\r\n async ngAfterViewInit() {\r\n this._loadingId = this.loadingService.show(this.ref.nativeElement.querySelector('.ax-tab-page-host-container'));\r\n //\r\n let data: any = {};\r\n //\r\n let component: any;\r\n if (typeof this.tab.content === 'string') {\r\n const route = await this.rendererService.findLoadedComponentByRoute(this.tab.content, 20);\r\n component = route?.component;\r\n data = Object.assign(data, route.data);\r\n }\r\n else if (typeof this.tab.content === 'function') {\r\n component = this.tab.content;\r\n }\r\n if (component == null) {\r\n // TODO: 404 page component\r\n this.isLoading = false;\r\n console.error(`Invalid page Component! ${this.tab.content}`);\r\n return;\r\n }\r\n //\r\n data = Object.assign(data, this.tab.data);\r\n //\r\n try {\r\n const factory = this.resolver.resolveComponentFactory(component);\r\n this.componentRef = this.container.createComponent(factory);\r\n if (!this.componentRef.instance.onClosed) {\r\n throw Error('The Component must be inherited from AXBasePageComponent!');\r\n }\r\n this.componentRef.instance.onClosed.subscribe((e: AXPageCloseEvent) => {\r\n this.tabService.close(this.tab);\r\n });\r\n //\r\n const com = this.componentRef.instance as any;\r\n //\r\n Object.assign(com, data);\r\n //\r\n this.tab[TAB_META_KEY].component = com;\r\n this.isLoading = false;\r\n this.loadingService.hide(this._loadingId);\r\n this.componentRef.changeDetectorRef.detectChanges();\r\n } catch (error) {\r\n // TODO: 404 page component\r\n console.error(error);\r\n } finally {\r\n //this.isLoading = false;\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.componentRef) {\r\n this.componentRef.hostView.destroy();\r\n this.componentRef.destroy();\r\n this.container.clear();\r\n }\r\n this.loadingService.hide(this._loadingId);\r\n }\r\n}","import { Component, ViewChild, ViewContainerRef, ComponentFactoryResolver, ComponentRef, ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AXTabPageService } from './tab-page.service';\r\nimport { TAB_META_KEY } from '../base/base-page.class';\r\nimport { AXTabPageHostComponent } from './tab-page-host.component';\r\nimport { Subscription } from 'rxjs';\r\n\r\n\r\n@Component({\r\n selector: 'ax-tab-page-renderer',\r\n template: `<template #container></template>`,\r\n host: { 'class': 'ax tab-page-renderer' }\r\n})\r\nexport class AXTabPageRendererComponent {\r\n\r\n childs: ComponentRef<AXTabPageHostComponent>[] = [];\r\n\r\n @ViewChild('container', { read: ViewContainerRef }) container: ViewContainerRef;\r\n\r\n private subscriptions: Subscription[] = [];\r\n\r\n constructor(\r\n private resolver: ComponentFactoryResolver,\r\n private tabService: AXTabPageService,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n this.subscriptions.push(tabService.activated.subscribe(tab => {\r\n this.childs.forEach((v: ComponentRef<AXTabPageHostComponent>) => {\r\n v.changeDetectorRef.detach();\r\n v.location.nativeElement.hidden = true;\r\n });\r\n const v = this.childs.find(t => (t as any).uid === tab[TAB_META_KEY].uid) as ComponentRef<AXTabPageHostComponent>;\r\n if (v) {\r\n v.location.nativeElement.hidden = false;\r\n v.changeDetectorRef.reattach();\r\n }\r\n else {\r\n try {\r\n const factory = this.resolver.resolveComponentFactory(AXTabPageHostComponent);\r\n const componentRef = this.container.createComponent(factory);\r\n (componentRef as any).uid = tab[TAB_META_KEY].uid;\r\n const host = componentRef.instance as AXTabPageHostComponent;\r\n host.tab = tab;\r\n this.childs.push(componentRef);\r\n setTimeout(() => {\r\n componentRef.changeDetectorRef.detectChanges();\r\n }, 10);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n }));\r\n\r\n this.subscriptions.push(tabService.closed.subscribe(tab => {\r\n const hostref = this.childs.find(c => (c as any).uid === tab[TAB_META_KEY].uid);\r\n if (hostref) {\r\n hostref.destroy();\r\n }\r\n this.childs = this.childs.filter(c => (c as any).uid !== tab[TAB_META_KEY].uid);\r\n }));\r\n }\r\n\r\n ngOnDestroy() {\r\n this.tabService.clear();\r\n this.subscriptions.forEach(s => {\r\n s.unsubscribe();\r\n });\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTabPageRendererComponent } from './tab-page-Renderer.component';\r\nimport { AXTabPageService } from './tab-page.service';\r\nimport { AXLoadingModule } from '../loading/loading.module';\r\nimport { AXTabPageHostComponent } from './tab-page-host.component';\r\n\r\n@NgModule({\r\n declarations: [AXTabPageRendererComponent, AXTabPageHostComponent],\r\n imports: [CommonModule, AXLoadingModule],\r\n exports: [AXTabPageRendererComponent],\r\n entryComponents: [AXTabPageRendererComponent, AXTabPageHostComponent],\r\n providers: [AXTabPageService],\r\n})\r\nexport class AXTabPageModule { }","import { Component, OnInit, Input, Output, EventEmitter, ElementRef } from '@angular/core';\r\nimport { AXBaseEvent } from '../base/events.class';\r\n\r\nexport declare class AXTabStripItem {\r\n id: string;\r\n name?: string;\r\n text?: string;\r\n tooltip?: string;\r\n icon?: string;\r\n visible?: boolean;\r\n disable?: boolean;\r\n data?: any;\r\n style?: string;\r\n active?: boolean;\r\n}\r\n\r\nexport class AXTabStripChangedEvent extends AXBaseEvent {\r\n seledtedTab: AXTabStripItem;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-tab-strip',\r\n templateUrl: './tab-strip.component.html'\r\n})\r\nexport class AXTabStripComponent implements OnInit {\r\n constructor(private ref: ElementRef) {}\r\n\r\n ngOnInit(): void {}\r\n\r\n @Input()\r\n items: AXTabStripItem[] = [];\r\n\r\n @Output()\r\n onTabChanged: EventEmitter<AXTabStripChangedEvent> = new EventEmitter<AXTabStripChangedEvent>();\r\n\r\n handleClick(i: AXTabStripItem) {\r\n this.items.forEach((c) => (c.active = false));\r\n i.active = true;\r\n this.onTabChanged.emit({\r\n component: this,\r\n seledtedTab: i,\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTabStripComponent } from './tab-strip.component';\r\n\r\n@NgModule({\r\n declarations: [AXTabStripComponent],\r\n imports: [CommonModule],\r\n exports: [AXTabStripComponent],\r\n providers: []\r\n})\r\nexport class AXTabStripModule {}\r\n","/**\r\n * This directive is used as an anchor to get access\r\n * to the ViewContainerRef which here is exposed via\r\n * the public member `viewContainer`\r\n *\r\n * Theres an ALTERNATIVE to explicitly using the anchor directive.\r\n * Read in the blog post\r\n */\r\n\r\nimport { Directive, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[dynamic-tabs]'\r\n})\r\nexport class DynamicTabsDirective {\r\n constructor(public viewContainer: ViewContainerRef) {}\r\n}\r\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\r\n@Component({\r\n selector: 'ax-tab',\r\n templateUrl: './tab.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTabComponent {\r\n @Input() caption: string;\r\n @Input() name: string;\r\n @Input() active = false;\r\n @Input() isCloseable = false;\r\n @Input() template: any;\r\n @Input() dataContext: any;\r\n @Input() icon: string;\r\n}\r\n","/**\r\n * The main component that renders single TabComponent\r\n * instances.\r\n */\r\n\r\nimport {\r\n Component,\r\n ContentChildren,\r\n QueryList,\r\n AfterContentInit,\r\n ViewChild,\r\n ComponentFactoryResolver,\r\n ViewEncapsulation,\r\n Attribute,\r\n Output,\r\n EventEmitter,\r\n ElementRef\r\n} from '@angular/core';\r\n\r\nimport { AXTabComponent } from './tab.component';\r\nimport { DynamicTabsDirective } from './dynamic-tabs.directive';\r\nimport { AXDataEvent } from '../base/events.class';\r\n\r\n@Component({\r\n selector: 'ax-tab-view',\r\n templateUrl: './tab-view.component.html',\r\n styleUrls: ['./tab-view.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTabViewComponent implements AfterContentInit {\r\n dynamicTabs: AXTabComponent[] = [];\r\n\r\n @ContentChildren(AXTabComponent) tabs: QueryList<AXTabComponent>;\r\n\r\n @ViewChild(DynamicTabsDirective) dynamicTabPlaceholder: DynamicTabsDirective;\r\n\r\n @Output()\r\n onActiveTab: EventEmitter<AXDataEvent<any>> = new EventEmitter<AXDataEvent<any>>();\r\n /*\r\n Alternative approach of using an anchor directive\r\n would be to simply get hold of a template variable\r\n as follows\r\n */\r\n // @ViewChild('container', {read: ViewContainerRef}) dynamicTabPlaceholder;\r\n\r\n constructor(\r\n private ref: ElementRef,\r\n private _componentFactoryResolver: ComponentFactoryResolver,\r\n @Attribute('fullWidth') public fullWidth: boolean = false\r\n ) {}\r\n\r\n // contentChildren are set\r\n ngAfterContentInit() {\r\n // get all active tabs\r\n const activeTabs = this.tabs.filter((tab) => tab.active);\r\n\r\n // if there is no active tab set, activate the first\r\n if (activeTabs.length === 0 && this.tabs.first) {\r\n this.selectTab(this.tabs.first);\r\n }\r\n }\r\n\r\n openTab(title: string, template, isCloseable = false, icon = null, data = null) {\r\n // get a component factory for our AXTabComponent\r\n const componentFactory = this._componentFactoryResolver.resolveComponentFactory(AXTabComponent);\r\n\r\n // fetch the view container reference from our anchor directive\r\n const viewContainerRef = this.dynamicTabPlaceholder.viewContainer;\r\n\r\n // alternatively...\r\n // let viewContainerRef = this.dynamicTabPlaceholder;\r\n\r\n // create a component instance\r\n const componentRef = viewContainerRef.createComponent(componentFactory);\r\n\r\n // set the according properties on our component instance\r\n const instance: AXTabComponent = componentRef.instance as AXTabComponent;\r\n instance.caption = title;\r\n instance.template = template;\r\n instance.dataContext = data;\r\n instance.isCloseable = isCloseable;\r\n instance.icon = icon;\r\n\r\n // remember the dynamic component for rendering the\r\n // tab navigation headers\r\n this.dynamicTabs.push(componentRef.instance as AXTabComponent);\r\n\r\n //componentRef.changeDetectorRef.detectChanges();\r\n\r\n // set it active\r\n this.selectTab(this.dynamicTabs[this.dynamicTabs.length - 1]);\r\n }\r\n\r\n selectTab(tab: AXTabComponent) {\r\n // deactivate all tabs\r\n this.tabs.toArray().forEach((tab) => (tab.active = false));\r\n this.dynamicTabs.forEach((tab) => (tab.active = false));\r\n\r\n // activate the tab the user has clicked on.\r\n tab.active = true;\r\n this.onActiveTab.emit({ component: this, data: tab, htmlElement: this.ref.nativeElement });\r\n }\r\n\r\n closeTab(tab: AXTabComponent) {\r\n for (let i = 0; i < this.dynamicTabs.length; i++) {\r\n if (this.dynamicTabs[i] === tab) {\r\n // remove the tab from our array\r\n this.dynamicTabs.splice(i, 1);\r\n\r\n // destroy our dynamically created component again\r\n const viewContainerRef = this.dynamicTabPlaceholder.viewContainer;\r\n // let viewContainerRef = this.dynamicTabPlaceholder;\r\n viewContainerRef.remove(i);\r\n\r\n // set tab index to 1st one\r\n this.selectTab(this.tabs.first);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n closeActiveTab() {\r\n const activeTabs = this.dynamicTabs.filter((tab) => tab.active);\r\n if (activeTabs.length > 0) {\r\n // close the 1st active tab (should only be one at a time)\r\n this.closeTab(activeTabs[0]);\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTabComponent } from './tab.component';\r\nimport { AXTabViewComponent } from './tab-view.component';\r\nimport { DynamicTabsDirective } from './dynamic-tabs.directive';\r\n@NgModule({\r\n declarations: [AXTabComponent, AXTabViewComponent, DynamicTabsDirective],\r\n imports: [CommonModule],\r\n exports: [AXTabComponent, AXTabViewComponent, DynamicTabsDirective],\r\n providers: []\r\n})\r\nexport class AXTabViewModule {}\r\n","import { Component, ChangeDetectionStrategy, ViewEncapsulation, ChangeDetectorRef, ViewChild, ElementRef, Input } from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: 'ax-text-area',\r\n templateUrl: './textarea.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXTextAreaComponent }]\r\n})\r\nexport class AXTextAreaComponent extends AXBaseTextComponent {\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n }\r\n\r\n @Input()\r\n rows: number = 0;\r\n @Input()\r\n cols: number = 0;\r\n\r\n @Input()\r\n maxLength: number = null;\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTextAreaComponent } from './textarea.component';\r\n\r\nconst COMPONENT = [AXTextAreaComponent];\r\nconst MODULES = [CommonModule];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENT],\r\n imports: [...MODULES],\r\n exports: [...COMPONENT],\r\n providers: [],\r\n})\r\nexport class AXTextAreaModule { }","import {\r\n Component,\r\n OnInit,\r\n ChangeDetectorRef,\r\n ElementRef,\r\n Input,\r\n ViewChild,\r\n ChangeDetectionStrategy,\r\n EventEmitter,\r\n Output,\r\n ContentChild\r\n\r\n} from '@angular/core';\r\nimport { AXBaseTextComponent, AXValidatableComponent } from '../base/element.class';\r\nimport { _ } from 'ag-grid-community';\r\nimport { AXValueEvent } from '../base/events.class';\r\nimport { AXTranslator } from '@acorex/core';\r\n\r\nexport class AXTimePickerItemChangedEvent {\r\n minute?: number;\r\n second?: number;\r\n hour?: number;\r\n time: string;\r\n\r\n}\r\nexport class AXTimePickerChangedEvent extends AXValueEvent<AXTimePickerItemChangedEvent> { }\r\n\r\n@Component({\r\n selector: 'ax-time-picker',\r\n templateUrl: './time-picker.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: { style: 'display: contents;' },\r\n providers: [{ provide: AXValidatableComponent, useExisting: AXTimePickerComponent }]\r\n})\r\nexport class AXTimePickerComponent extends AXBaseTextComponent implements OnInit {\r\n @Output()\r\n onValueChanged: EventEmitter<AXTimePickerChangedEvent> = new EventEmitter<AXTimePickerChangedEvent>();\r\n\r\n // @ViewChild('input', { static: true })\r\n // @ContentChild('input', { static: true })\r\n // input: ElementRef<HTMLInputElement>;\r\n\r\n @Input()\r\n timeType: any;\r\n\r\n type: string = 'HHmm';\r\n @Input()\r\n showCurentTime: boolean = false;\r\n\r\n clearDisabled: boolean = true;\r\n HHmmss: any = [/[0-2]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n HHmm: any = [/[0-2]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n HH: any = [/[0-2]/, /[0-9]/];\r\n hhmmss: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n hhmm: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n hh: any = [/[0-1]/, /[0-9]/];\r\n // TODO: apply am pm from locale\r\n hhmmssam: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ' ', /[a|p|ق|ب]/, AXTranslator.get('dateTime.dayTime.m')];\r\n hhmmam: any = [/[0-1]/, /[0-9]/, ':', /[0-5]/, /[0-9]/, ' ', /[a|p|ق|ب]/, AXTranslator.get('dateTime.dayTime.m')];\r\n hham: any = [/[0-1]/, /[0-9]/, ' ', /[a|p|ق|ب]/, AXTranslator.get('dateTime.dayTime.m')];\r\n textValue: string = '';\r\n\r\n valueHam: string = '-- ' + AXTranslator.get('dateTime.dayTime.am');\r\n valueMam: string = '--:-- ' + AXTranslator.get('dateTime.dayTime.am');\r\n valueSam: string = '--:--:-- ' + AXTranslator.get('dateTime.dayTime.am');\r\n\r\n\r\n private _values: string;\r\n public get value(): string {\r\n return this._values;\r\n }\r\n public set value(v: string) {\r\n if (v === '' || v == null || v === '--:--:--' || v === '--:--' || v === '--' || v === this.valueSam || v === this.valueMam || v === this.valueHam) {\r\n this.clearDisabled = false;\r\n\r\n const old = this._values;\r\n switch (this.type) {\r\n case 'HHmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'HHmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'HH':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'hhmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'hh':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmssam':\r\n this.textValue = this.valueSam;\r\n break;\r\n case 'hhmmam':\r\n this.textValue = this.valueMam;\r\n break;\r\n case 'hham':\r\n this.textValue = this.valueHam;\r\n break;\r\n }\r\n\r\n this._values = null;\r\n if (v !== old) {\r\n this.valueChange.emit(null);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: { hour: null, minute: null, second: null, time: null },\r\n oldValue: { time: old },\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n } else {\r\n this.clearDisabled = true;\r\n if (this._values && v) {\r\n const old = this._values;\r\n const ind1 = v.charAt(0);\r\n const ind2 = v.charAt(1);\r\n const ind3 = v.charAt(2);\r\n const ind4 = v.charAt(3);\r\n const ind5 = v.charAt(4);\r\n const ind6 = v.charAt(5);\r\n const ind7 = v.charAt(6);\r\n const ind8 = v.charAt(7);\r\n const ind9 = v.charAt(8);\r\n const ind10 = v.charAt(9);\r\n\r\n const indOld4 = old.charAt(9);\r\n const indOld7 = old.charAt(9);\r\n const indOld10 = old.charAt(9);\r\n\r\n // handle hhmmssAm\r\n if (ind1 === '-' && ind2 !== '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 5);\r\n this.cursorPosition = 5;\r\n }, 0);\r\n }\r\n if (ind7 === '-' && ind8 !== '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + '0' + ind8 + ind9 + ind10 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 8);\r\n this.cursorPosition = 8;\r\n }, 0);\r\n }\r\n if (indOld10 === '-' && this.timeType.mask === this.hhmmssam) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && this.timeType.mask === this.hhmmam) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && this.timeType.mask === this.hhmmam) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5 + ind6 + ind7 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 5);\r\n this.cursorPosition = 5;\r\n }, 0);\r\n }\r\n if (indOld7 === '-' && this.timeType.mask === this.hhmmam) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && this.timeType.mask === this.hham) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + AXTranslator.get('dateTime.dayTime.m');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (indOld4 === '-' && this.timeType.mask === this.hham) {\r\n this.textValue = ind1 + ind2 + ind3 + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && (this.timeType.mask === this.hhmmss || this.timeType.mask === this.HHmmss)) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && (this.timeType.mask === this.hhmmss || this.timeType.mask === this.HHmmss)) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5 + ind6 + ind7 + ind8;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 6);\r\n this.cursorPosition = 6;\r\n }, 0);\r\n }\r\n if (ind7 === '-' && ind8 !== '-' && (this.timeType.mask === this.hhmmss || this.timeType.mask === this.HHmmss)) {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + '0' + ind8;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 9);\r\n this.cursorPosition = 9;\r\n }, 0);\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && (this.timeType.mask === this.hhmm || this.timeType.mask === this.HHmm)) {\r\n this.textValue = '0' + ind2 + ind3 + ind4 + ind5;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n if (ind4 === '-' && ind5 !== '-' && (this.timeType.mask === this.hhmm || this.timeType.mask === this.HHmm)) {\r\n this.textValue = ind1 + ind2 + ind3 + '0' + ind5;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 5);\r\n this.cursorPosition = 5;\r\n }, 0);\r\n }\r\n\r\n //\r\n if (ind1 === '-' && ind2 !== '-' && (this.timeType.mask === this.hh || this.timeType.mask === this.HH)) {\r\n this.textValue = '0' + ind2;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 2);\r\n this.cursorPosition = 2;\r\n }, 0);\r\n }\r\n }\r\n if (v !== this._values) {\r\n const old = this._values;\r\n this.textValue = v;\r\n this._values = (v && v.indexOf('-') === -1) ? v : null;\r\n if (v.indexOf('-') === -1) {\r\n this.valueChange.emit(v);\r\n this.onValueChanged.emit({\r\n component: this,\r\n value: {\r\n time: v,\r\n hour: Number(v[0] + v[1]),\r\n minute: v[3] && v[3] !== AXTranslator.get('dateTime.dayTime.a') && v[3] !== AXTranslator.get('dateTime.dayTime.p') ? Number(v[3] + v[4]) : null,\r\n second: v[6] && v[6] !== AXTranslator.get('dateTime.dayTime.a') && v[6] !== AXTranslator.get('dateTime.dayTime.p') ? Number(v[6] + v[7]) : null\r\n },\r\n oldValue: { time: old },\r\n htmlElement: this.ref.nativeElement\r\n });\r\n this.cdr.detectChanges();\r\n this.clearValidationStyle(this.input.nativeElement);\r\n }\r\n }\r\n }\r\n }\r\n\r\n cursorPosition: number = 0;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, ref: ElementRef) {\r\n super(cdr, ref);\r\n \r\n this.timeType = 'HHmm';\r\n }\r\n clearValue() {\r\n this.clear();\r\n this.handleInputFocus();\r\n }\r\n\r\n ngOnInit(): void {\r\n switch (this.timeType) {\r\n case 'HHmmss':\r\n this.type = 'HHmmss';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HHmmss,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--:--';\r\n break;\r\n case 'HHmm':\r\n this.type = 'HHmm';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HHmm,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--';\r\n break;\r\n case 'HH':\r\n this.type = 'HH';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HH,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--';\r\n break;\r\n case 'hhmmss':\r\n this.type = 'hhmmss';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmmss,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--:--';\r\n break;\r\n case 'hhmm':\r\n this.type = 'hhmm';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmm,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--';\r\n break;\r\n case 'hh':\r\n this.type = 'hh';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hh,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--';\r\n break;\r\n case 'hhmmssam':\r\n this.type = 'hhmmssam';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmmssam,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : this.valueSam;\r\n break;\r\n case 'hhmmam':\r\n this.type = 'hhmmam';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hhmmam,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : this.valueMam;\r\n\r\n break;\r\n case 'hham':\r\n this.type = 'hham';\r\n\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.hham,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : this.valueHam;\r\n break;\r\n default:\r\n this.type = 'HHmm';\r\n this.timeType = {\r\n guide: true,\r\n showMask: true,\r\n mask: this.HHmm,\r\n keepCharPositions: true,\r\n placeholderChar: '-'\r\n };\r\n this.textValue = this.value ? this.value : '--:--';\r\n break;\r\n\r\n }\r\n if (this.showCurentTime === true) {\r\n const hour = new Date().getHours() > 10 ? new Date().getHours() : '0' + new Date().getHours();\r\n let amHour: any;\r\n\r\n if (new Date().getHours() > 10) {\r\n if (new Date().getHours() > 12) {\r\n if (new Date().getHours() - 12 < 10) {\r\n amHour = '0' + (new Date().getHours() - 12);\r\n } else {\r\n amHour = new Date().getHours();\r\n }\r\n } else {\r\n amHour = new Date().getHours();\r\n }\r\n } else {\r\n amHour = '0' + new Date().getHours();\r\n }\r\n\r\n const min = new Date().getMinutes() > 9 ? new Date().getMinutes() : '0' + new Date().getMinutes();\r\n const sec = new Date().getSeconds() > 9 ? new Date().getSeconds() : '0' + new Date().getSeconds();\r\n if (this.type === 'hh' || this.type === 'hhmm' || this.type === 'hhmmss' || this.type === 'hhmmssam') {\r\n if (hour >= 12) {\r\n this.value = amHour + ':' + min + ':' + sec + ' ' + AXTranslator.get('dateTime.dayTime.pm');\r\n } else {\r\n this.value = amHour + ':' + min + ':' + sec + ' ' + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n } else if (this.type === 'hham') {\r\n if (hour >= 12) {\r\n this.value = amHour + ' ' + AXTranslator.get('dateTime.dayTime.pm');\r\n } else {\r\n this.value = amHour + ' ' + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n } else if (this.type === 'hhmmam') {\r\n if (hour >= 12) {\r\n this.value = amHour + ':' + min + ' ' + AXTranslator.get('dateTime.dayTime.pm');\r\n } else {\r\n this.value = amHour + ':' + min + ' ' + AXTranslator.get('dateTime.dayTime.am');\r\n }\r\n } else {\r\n this.value = hour + ':' + min + ':' + sec;\r\n }\r\n }\r\n }\r\n\r\n onStartfocus() {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n\r\n handleInputFocus() {\r\n this.onStartfocus();\r\n this.input.nativeElement.focus();\r\n }\r\n handleInputBlur(e) {\r\n if (this.textValue.indexOf('-') !== -1) {\r\n switch (this.type) {\r\n case 'HHmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'HHmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'HH':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmss':\r\n this.textValue = '--:--:--';\r\n break;\r\n case 'hhmm':\r\n this.textValue = '--:--';\r\n break;\r\n case 'hh':\r\n this.textValue = '--';\r\n break;\r\n case 'hhmmssam':\r\n this.textValue = this.valueSam;\r\n break;\r\n case 'hhmmam':\r\n this.textValue = this.valueMam;\r\n break;\r\n case 'hham':\r\n this.textValue = this.valueHam;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n handleKeyPress(event: any) {\r\n const inputChar = String.fromCharCode(event.charCode);\r\n const firstChar = this.textValue.charAt(0);\r\n const secondChar = this.textValue.charAt(1);\r\n\r\n setTimeout(() => {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n // this.cursorPosition += 1 ;\r\n }\r\n }, 0);\r\n\r\n if (firstChar === '2') {\r\n if (secondChar === '' || this.textValue.charAt(1) >= '4' || this.cursorPosition < 3) {\r\n if (inputChar >= '4') {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n if (\r\n this.timeType.mask === this.hhmmss ||\r\n this.timeType.mask === this.hhmm ||\r\n this.timeType.mask === this.hh ||\r\n this.timeType.mask === this.hhmmssam ||\r\n this.timeType.mask === this.hhmmam ||\r\n this.timeType.mask === this.hham\r\n ) {\r\n if (firstChar === '1') {\r\n if (secondChar === '' || this.textValue.charAt(1) >= '3' || this.cursorPosition < 3) {\r\n if (inputChar >= '3') {\r\n event.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n if (inputChar === '-') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n handleKeyUp(event: KeyboardEvent) {\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n // up & down button\r\n if (event.key === 'ArrowUp') {\r\n this.setCaret();\r\n }\r\n if (event.key === 'ArrowDown') {\r\n this.setCaret();\r\n }\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n event.preventDefault();\r\n return false;\r\n }\r\n\r\n // left & right Button\r\n if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n // home button\r\n if (event.key === 'Home') {\r\n this.cursorPosition = 0;\r\n }\r\n\r\n // end button\r\n if (event.key === 'End') {\r\n if (this.timeType.mask === this.hhmmssam || this.timeType.mask === this.hhmmam || this.timeType.mask === this.hham) {\r\n if (this.timeType.mask === this.hhmmssam) {\r\n this.cursorPosition = 9;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n this.cursorPosition = 6;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n this.cursorPosition = 3;\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }, 0);\r\n }\r\n } else {\r\n this.cursorPosition = this.textValue.length;\r\n }\r\n }\r\n\r\n // backspace Control\r\n if (event.key === 'Backspace') {\r\n const ind1 = this.textValue.charAt(0);\r\n const ind2 = this.textValue.charAt(1);\r\n const ind3 = this.textValue.charAt(2);\r\n const ind4 = this.textValue.charAt(3);\r\n const ind5 = this.textValue.charAt(4);\r\n const ind6 = this.textValue.charAt(5);\r\n const ind7 = this.textValue.charAt(6);\r\n const ind8 = this.textValue.charAt(7);\r\n const ind9 = this.textValue.charAt(8);\r\n const ind10 = this.textValue.charAt(9);\r\n if (this.timeType.mask === this.hhmmssam) {\r\n if (ind10 === '-') {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + AXTranslator.get('dateTime.dayTime.am');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n }, 0);\r\n }\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n if (ind7 === '-') {\r\n this.textValue = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + AXTranslator.get('dateTime.dayTime.am');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n }, 0);\r\n }\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n if (ind4 === '-') {\r\n this.textValue = ind1 + ind2 + ind3 + AXTranslator.get('dateTime.dayTime.am');\r\n setTimeout(() => {\r\n this.setCaretPosition(this.input.nativeElement, 0);\r\n this.cursorPosition = 0;\r\n }, 0);\r\n }\r\n }\r\n\r\n if (this.textValue.length <= 0) {\r\n this.cursorPosition = 0;\r\n } else {\r\n this.cursorPosition -= 1;\r\n }\r\n }\r\n }\r\n\r\n handleKeyDown(event: KeyboardEvent) {\r\n if (event.key === 'End') {\r\n if (this.timeType.mask === this.hhmmssam || this.timeType.mask === this.hhmmam || this.timeType.mask === this.hham) {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n } else {\r\n this.input.nativeElement.style.caretColor = 'auto';\r\n }\r\n }\r\n\r\n let newValue = this.textValue;\r\n\r\n const ind1 = newValue.charAt(0);\r\n const ind2 = newValue.charAt(1);\r\n const ind3 = this.textValue.charAt(2);\r\n const ind4 = this.textValue.charAt(3);\r\n const ind5 = this.textValue.charAt(4);\r\n const ind6 = this.textValue.charAt(5);\r\n const ind7 = this.textValue.charAt(6);\r\n const ind8 = this.textValue.charAt(7);\r\n const ind9 = this.textValue.charAt(8);\r\n const ind10 = this.textValue.charAt(9);\r\n const ind11 = this.textValue.charAt(10);\r\n\r\n // up key\r\n if (event.key === 'ArrowUp') {\r\n // hour\r\n if (this.cursorPosition <= 2) {\r\n const hourind = ind1 + ind2;\r\n const newHour = +hourind + 1;\r\n newValue = newHour.toString();\r\n if (\r\n this.timeType.mask === this.hhmmss ||\r\n this.timeType.mask === this.hhmm ||\r\n this.timeType.mask === this.hh ||\r\n this.timeType.mask === this.hhmmssam ||\r\n this.timeType.mask === this.hhmmam ||\r\n this.timeType.mask === this.hham\r\n ) {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 12) {\r\n newValue = '01';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n } else {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 23) {\r\n newValue = '00';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n }\r\n const afterHourind = ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const hour = newValue.toString() + afterHourind;\r\n this.textValue = hour;\r\n }\r\n // minute\r\n if (this.cursorPosition >= 3 && this.cursorPosition <= 5) {\r\n const hourind = ind4 + ind5;\r\n const newHour = +hourind + 1;\r\n\r\n newValue = newHour.toString();\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind4 !== '-' && hourind === ind4 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind5 !== '-' && hourind === '-' + ind5) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 59) {\r\n newValue = '00';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforeHourind = ind1 + ind2 + ind3;\r\n const afterHourind = ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const minute = beforeHourind + newValue.toString() + afterHourind;\r\n this.textValue = minute;\r\n }\r\n\r\n // second\r\n if (this.cursorPosition >= 6 && this.cursorPosition <= 8) {\r\n const secondind = ind7 + ind8;\r\n const newSecond = +secondind + 1;\r\n\r\n newValue = newSecond.toString();\r\n if (secondind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind7 !== '-' && secondind === ind7 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind8 !== '-' && secondind === '-' + ind8) {\r\n newValue = '0';\r\n }\r\n if (+newValue > 59) {\r\n newValue = '00';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const afterHourind = ind9 + ind10 + ind11;\r\n const second = beforeHourind + newValue.toString() + afterHourind;\r\n this.textValue = second;\r\n }\r\n\r\n // type am/PM\r\n if (this.timeType.mask === this.hhmmssam) {\r\n if (this.cursorPosition > 8) {\r\n let typeind = ind10.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9;\r\n const afterHourind = ind11;\r\n\r\n if (ind10 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind10 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n if (this.cursorPosition >= 6) {\r\n let typeind = ind7.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const afterHourind = ind8;\r\n\r\n if (ind7 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind7 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n if (this.cursorPosition >= 3) {\r\n let typeind2 = ind4.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3;\r\n const afterHourind = ind5;\r\n\r\n if (ind4 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind4 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind2 + afterHourind;\r\n }\r\n }\r\n }\r\n\r\n // key down\r\n if (event.key === 'ArrowDown') {\r\n // hour\r\n if (this.cursorPosition <= 2) {\r\n const hourind = ind1 + ind2;\r\n const newHour = +hourind - 1;\r\n\r\n newValue = newHour.toString();\r\n if (\r\n this.timeType.mask === this.hhmmss ||\r\n this.timeType.mask === this.hhmm ||\r\n this.timeType.mask === this.hh ||\r\n this.timeType.mask === this.hhmmssam ||\r\n this.timeType.mask === this.hhmmam ||\r\n this.timeType.mask === this.hham\r\n ) {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue < 1) {\r\n newValue = '12';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n } else {\r\n if (hourind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind1 !== '-' && hourind === ind1 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind2 !== '-' && hourind === '-' + ind2) {\r\n newValue = '0';\r\n }\r\n if (+newValue < 0) {\r\n newValue = '23';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n }\r\n const afterHourIndex = ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const hour = newValue.toString() + afterHourIndex;\r\n this.textValue = hour;\r\n }\r\n // minute\r\n if (this.cursorPosition >= 3 && this.cursorPosition <= 5) {\r\n const minuteind = ind4 + ind5;\r\n const newMinute = +minuteind - 1;\r\n\r\n newValue = newMinute.toString();\r\n if (minuteind === '--') {\r\n newValue = '0';\r\n }\r\n if (ind4 !== '-' && minuteind === ind4 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind5 !== '-' && minuteind === '-' + ind5) {\r\n newValue = '0';\r\n }\r\n if (minuteind === '--') {\r\n newValue = '0';\r\n }\r\n if (+newValue < 0) {\r\n newValue = '59';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforeMinuteIndex = ind1 + ind2 + ind3;\r\n const afterMinuteIndex = ind6 + ind7 + ind8 + ind9 + ind10 + ind11;\r\n const minute = beforeMinuteIndex + newValue.toString() + afterMinuteIndex;\r\n this.textValue = minute;\r\n }\r\n\r\n // second\r\n if (this.cursorPosition >= 6 && this.cursorPosition <= 8) {\r\n const secondIndex = ind7 + ind8;\r\n const newSecond = +secondIndex - 1;\r\n\r\n newValue = newSecond.toString();\r\n if (secondIndex === '--') {\r\n newValue = '0';\r\n }\r\n if (ind7 !== '-' && secondIndex === ind7 + '-') {\r\n newValue = '0';\r\n }\r\n if (ind8 !== '-' && secondIndex === '-' + ind8) {\r\n newValue = '0';\r\n }\r\n if (secondIndex === '--') {\r\n newValue = '0';\r\n }\r\n if (+newValue < 0) {\r\n newValue = '59';\r\n } else if (+newValue < 10) {\r\n newValue = '0' + newValue;\r\n }\r\n const beforesecondIndex = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const aftersecondIndex = ind9 + ind10 + ind11;\r\n const second = beforesecondIndex + newValue.toString() + aftersecondIndex;\r\n this.textValue = second;\r\n }\r\n\r\n // type\r\n if (this.timeType.mask === this.hhmmssam) {\r\n if (this.cursorPosition > 8) {\r\n let typeind = ind10.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6 + ind7 + ind8 + ind9;\r\n const afterHourind = ind11;\r\n\r\n if (ind10 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind10 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hhmmam) {\r\n if (this.cursorPosition >= 6) {\r\n let typeind = ind7.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3 + ind4 + ind5 + ind6;\r\n const afterHourind = ind8;\r\n\r\n if (ind7 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind7 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind + afterHourind;\r\n }\r\n }\r\n if (this.timeType.mask === this.hham) {\r\n if (this.cursorPosition >= 3) {\r\n let typeind2 = ind4.toString();\r\n\r\n const beforeHourind = ind1 + ind2 + ind3;\r\n const afterHourind = ind5;\r\n //TO DO this is wrong check index\r\n if (ind4 === AXTranslator.get('dateTime.dayTime.p')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.a');\r\n } else if (ind4 === AXTranslator.get('dateTime.dayTime.a')) {\r\n typeind2 = AXTranslator.get('dateTime.dayTime.p');\r\n }\r\n this.textValue = beforeHourind + typeind2 + afterHourind;\r\n }\r\n }\r\n }\r\n\r\n if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\r\n this.input.nativeElement.style.caretColor = 'transparent';\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return false;\r\n }\r\n if (event.key === 'Delete') {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n handleClick(event: KeyboardEvent) {\r\n if (this.input.nativeElement.selectionStart || this.input.nativeElement.selectionStart === 0) {\r\n this.cursorPosition = this.input.nativeElement.selectionStart;\r\n }\r\n }\r\n\r\n doGetCaretPosition(ctrl) {\r\n let CaretPos = 0;\r\n if (ctrl.selectionStart || ctrl.selectionStart === 0) {\r\n CaretPos = ctrl.selectionStart;\r\n return CaretPos;\r\n }\r\n }\r\n\r\n setCaretPosition(ctrl, pos) {\r\n if (ctrl.setSelectionRange) {\r\n ctrl.focus();\r\n ctrl.setSelectionRange(pos, pos);\r\n } else if (ctrl.createTextRange) {\r\n const range = ctrl.createTextRange();\r\n range.collapse(true);\r\n range.moveEnd('character', pos);\r\n range.moveStart('character', pos);\r\n range.select();\r\n }\r\n }\r\n\r\n setCaret() {\r\n this.setCaretPosition(this.input.nativeElement, this.cursorPosition);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTimePickerComponent } from './time-picker.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TextMaskModule } from 'angular2-text-mask';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTimePickerComponent],\r\n imports: [ CommonModule, FormsModule, AXButtonModule, TextMaskModule ],\r\n exports: [AXTimePickerComponent],\r\n providers: [],\r\n})\r\nexport class AXTimePickerModule {}","import { Component, ViewEncapsulation, Input, ContentChild, Output, EventEmitter, ViewChild, ElementRef, TemplateRef } from '@angular/core';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXDataEvent, AXHtmlEvent, AXValueEvent } from '../base/events.class';\r\nimport { AXBaseComponent } from '../base/element.class';\r\nimport { AXContextMenuItemClickEvent, AXContextMenuPromiseFunction, AXContextMenuFunction } from '../context-menu/context-menu.directive';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\nexport class AXTreeSideMenuNode {\r\n children: AXTreeSideMenuNode[];\r\n itemData: AXTreeSideMenuItemData = new AXTreeSideMenuItemData();\r\n parent: AXTreeSideMenuNode;\r\n}\r\n\r\nexport class AXTreeSideMenuItemData {\r\n selected: boolean;\r\n key: string;\r\n disabled: boolean;\r\n open: boolean;\r\n hasChild: boolean;\r\n item: any;\r\n}\r\n\r\nexport class AXTreeSideMenuItemMovedEvent {\r\n source: AXTreeSideMenuNode;\r\n target: AXTreeSideMenuNode;\r\n resolve: (value: boolean) => void;\r\n}\r\n\r\nexport class AXTreeSideMenuSelectionChangedEvent extends AXValueEvent<AXTreeSideMenuNode> {\r\n component: AXTreeSideMenuComponent;\r\n}\r\n\r\nexport class AXTreeSideMenuItemClick extends AXHtmlEvent<MouseEvent> {\r\n component: AXTreeSideMenuComponent;\r\n item: any;\r\n flag: boolean;\r\n cancel?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-tree-side-menu',\r\n templateUrl: './tree-side-menu.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\n\r\nexport class AXTreeSideMenuComponent extends AXBaseComponent {\r\n @ContentChild(TemplateRef, { static: true })\r\n nodeTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n cssClass: 'single' | 'multiple' = 'single';\r\n\r\n @Input()\r\n selectionMode: 'single' | 'multiple' = 'single';\r\n\r\n @Input()\r\n selectionLevel: 'all' | 'nodes' | 'parents' = 'all';\r\n\r\n @Input()\r\n selectedFieldName: string = null;\r\n\r\n @Input()\r\n selectNodesRecursive: boolean = true;\r\n\r\n @Input()\r\n seletedKeyFields: any[] = [];\r\n\r\n @Input()\r\n keyField: string = 'id';\r\n\r\n @Input()\r\n textField: string ='title'\r\n\r\n @Input()\r\n hasChildField: string = 'child';\r\n\r\n @Input()\r\n bordered: boolean = false;\r\n\r\n @Input()\r\n lazyLoading: boolean = true;\r\n\r\n @Input()\r\n allowDrag: boolean = false;\r\n\r\n @Input()\r\n size: 'md' | 'sm' = 'md';\r\n\r\n @Input()\r\n iconStart:boolean= true;\r\n\r\n @Input()\r\n closeIconName:string= 'fal fa-plus'\r\n\r\n @Input()\r\n openIconName:string='fal fa-minus'\r\n\r\n @Output()\r\n selectionChanged: EventEmitter<AXTreeSideMenuSelectionChangedEvent> = new EventEmitter<AXTreeSideMenuSelectionChangedEvent>();\r\n\r\n @Output()\r\n onItemOpening: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXTreeSideMenuItemClick> = new EventEmitter<AXTreeSideMenuItemClick>();\r\n\r\n @Output()\r\n onItemClosing: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemDrag: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemMoved: EventEmitter<AXTreeSideMenuItemMovedEvent> = new EventEmitter<AXTreeSideMenuItemMovedEvent>();\r\n\r\n @Output()\r\n onContextMenuItemClick: EventEmitter<AXContextMenuItemClickEvent> = new EventEmitter<AXContextMenuItemClickEvent>();\r\n\r\n showSelectBox: boolean = false;\r\n loading: boolean = false;\r\n list: any[] = [];\r\n itemRow: any;\r\n selectedItems: any[] = [];\r\n selectedParents: any[] = [];\r\n loadAllChildren: boolean = false;\r\n listLoad: any[] = [];\r\n itemDrop: any;\r\n itemDrag: any;\r\n validDrop: boolean = true;\r\n lockedDrag: boolean = false;\r\n childField: string = 'childeren';\r\n showContextMenu: boolean = false;\r\n @Input()\r\n contextMenuItems: AXMenuItem[] | AXContextMenuPromiseFunction | AXContextMenuFunction;\r\n\r\n\r\n\r\n constructor(private ref: ElementRef) {\r\n super();\r\n }\r\n\r\n handleOnContextMenuItem(e: AXContextMenuItemClickEvent) {\r\n this.onContextMenuItemClick.emit(e);\r\n }\r\n\r\n refresh() {\r\n this.list = [];\r\n this._contentDataSource.fetch(null);\r\n }\r\n\r\n internalSelectItem(item, userChange: boolean = true) {\r\n if (item[this.hasChildField] === false || this.selectionMode === 'single') {\r\n item.select = !item.select;\r\n if (item.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (item.select === true) {\r\n if (this.selectionMode === 'single') {\r\n this.selectedItems.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedItems = [];\r\n this.selectedItems.push(item);\r\n\r\n } else {\r\n this.selectedItems.push(item);\r\n }\r\n } else {\r\n\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n } else {\r\n item.select = !item.select;\r\n\r\n if (item.parentNode && (this.selectionMode === 'multiple')) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (this.selectionMode === 'multiple') {\r\n this.changeChildSelect(item, item.select);\r\n }\r\n\r\n if (item.select == true) {\r\n if (this.selectionMode === 'multiple') {\r\n\r\n this.selectedParents.push(item);\r\n } else {\r\n this.selectedParents.forEach(e => {\r\n e.select = false;\r\n });\r\n this.selectedParents = [];\r\n this.selectedParents.push(item);\r\n }\r\n } else {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n\r\n }\r\n }\r\n if (userChange) {\r\n this.selectionChanged.emit({\r\n component: this,\r\n value: this.makeNode(item),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n private makeNode(item, addChildren: boolean = true) {\r\n const node: AXTreeSideMenuNode = new AXTreeSideMenuNode();\r\n if (addChildren) {\r\n node.children = item[this.childField] === undefined ? [] : item[this.childField]?.map((m) => this.makeNode(m));\r\n }\r\n node.itemData.disabled = item.disabled === true ? item.disabled : false;\r\n node.itemData.open = item.open === true ? item.open : false;\r\n node.itemData.key = item[this.keyField];\r\n\r\n const c = [];\r\n let i = 0;\r\n for (var k in item) {\r\n i = i + 1;\r\n if (\r\n k != 'select' &&\r\n k != 'hasChild' &&\r\n k != 'loading' &&\r\n k != 'requestId' &&\r\n k != 'disabled' &&\r\n k != 'open' &&\r\n k != 'parentNode' &&\r\n k != 'toggle' &&\r\n k != 'loaded' &&\r\n k != 'indeterminate' &&\r\n k != this.childField\r\n ) {\r\n //c.push({ k: item[k] });\r\n c[k] = item[k];\r\n }\r\n }\r\n node.itemData.item = c; //TO DO\r\n node.itemData.selected = item.select === true ? item.select : false;\r\n node.itemData.hasChild = item[this.hasChildField];\r\n node.parent = item.parentNode === undefined ? null : this.makeNode(item.parentNode, false);\r\n return node;\r\n }\r\n\r\n private changeChildSelect(item, s) {\r\n if (this.selectNodesRecursive) {\r\n item.select = s;\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((elm) => {\r\n if (elm[this.hasChildField] === true) {\r\n elm.select = s;\r\n\r\n\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedParents.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n\r\n\r\n this.changeChildSelect(elm, s);\r\n } else {\r\n elm.select = s;\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedItems.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n }\r\n });\r\n } else {\r\n item.select = s;\r\n\r\n }\r\n }\r\n }\r\n\r\n private changeParentSelect(item) {\r\n if (this.selectNodesRecursive) {\r\n let allselect = true;\r\n let alldeselect = true;\r\n let oneselect = false;\r\n let isindeterminate = false;\r\n\r\n if (item[this.childField]) {\r\n for (let index = 0; index < item[this.childField].length; index++) {\r\n if (item[this.childField][index].select === true) {\r\n alldeselect = false;\r\n oneselect = true;\r\n }\r\n if (item[this.childField][index].select === false || item[this.childField][index].select === undefined) {\r\n allselect = false;\r\n }\r\n if (item[this.childField][index].select === null) {\r\n isindeterminate = true;\r\n alldeselect = false;\r\n oneselect = true;\r\n allselect = false;\r\n }\r\n }\r\n }\r\n\r\n if (oneselect || (isindeterminate && !allselect)) {\r\n item.select = null;\r\n }\r\n if (allselect === true) {\r\n item.select = true;\r\n }\r\n if (alldeselect === true) {\r\n item.select = false;\r\n }\r\n if (item.parentNode && item.parentNode[this.childField] && item.parentNode[this.childField].length > 0) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n }\r\n }\r\n\r\n\r\n ngOnInit(): void {\r\n this.onItemClick.subscribe((data: AXTreeSideMenuItemClick) => {\r\n if (!data.cancel) {\r\n this.toggleNode(data.item, data.flag);\r\n }\r\n })\r\n }\r\n\r\n itemdbClick(e: MouseEvent, item) {\r\n if (this.selectionMode == 'single') {\r\n this.handleOnNodeClick(e, item, true);\r\n }\r\n }\r\n\r\n\r\n handleOnNodeClick(e: MouseEvent, item, flag = false) {\r\n this.onItemClick.emit({\r\n component: this,\r\n htmlEvent: e,\r\n item,\r\n flag\r\n })\r\n }\r\n\r\n toggleNode(item, flag = false) {\r\n //item[this.hasChildField] === false &&\r\n if (this.selectionMode === 'single' && !flag) {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n\r\n } else {\r\n if(item[this.hasChildField] == true){\r\n item.toggle = !item.toggle;\r\n }\r\n\r\n if (this.selectionMode === 'single') {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n }\r\n\r\n if (item[this.hasChildField] === true && item.loaded !== true && this.lazyLoading) {\r\n this.itemRow = item;\r\n const uid = Math.floor(Math.random() * 100000000);\r\n item.requestId = uid;\r\n this.listLoad.push(item);\r\n this._contentDataSource.fetch(item);\r\n this.showLoading(this.itemRow);\r\n }\r\n if (item.toggle && item[this.hasChildField] === true) {\r\n item.open = true;\r\n this.onItemOpening.emit(this.makeNode(item));\r\n } else if (!item.toggle && item[this.hasChildField] === true) {\r\n item.open = false;\r\n this.onItemClosing.emit(this.makeNode(item));\r\n }\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._contentDataSource.fetch(null);\r\n this._contentDataSource.onDataReceived.subscribe((_data) => {\r\n\r\n if (this.list.length === 0) {\r\n this.hideLoading(null);\r\n this.list = _data.data.result;\r\n\r\n this.list.forEach((el) => {\r\n el.select = false;\r\n\r\n if (this.selectionLevel == 'nodes' && el[this.hasChildField] == true) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && el[this.hasChildField] == false) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(el[this.keyField])) {\r\n if (el[this.hasChildField] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(el);\r\n // }\r\n\r\n } else {\r\n this.selectItem(el);\r\n }\r\n }\r\n })\r\n } else if (this.selectedFieldName != null) {\r\n if (el[this.hasChildField] == true && el[this.selectedFieldName] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(el);\r\n // }\r\n\r\n } else if (el[this.selectedFieldName] == true) {\r\n this.selectItem(el);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n });\r\n } else {\r\n this.itemRow = this.listLoad.filter((c) => c.requestId === _data.data.requestId)[0];\r\n this.listLoad = this.listLoad.filter((c) => c.requestId !== _data.data.requestId);\r\n if (this.itemRow !== undefined) {\r\n this.hideLoading(this.itemRow);\r\n const result = _data.data.result;\r\n\r\n if (this.list.length !== 0) {\r\n\r\n if (this.itemRow[this.childField] && this.itemRow[this.childField].length > 0) {\r\n result.forEach((el) => {\r\n this.itemRow[this.childField][this.itemRow[this.childField].length] = el;\r\n });\r\n } else {\r\n this.itemRow[this.childField] = result;\r\n }\r\n\r\n for (let i = 0; i < result.length; i++) {\r\n if (this.selectionLevel == 'nodes' && result[i][this.hasChildField] == true) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && result[i][this.hasChildField] == false) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n if (this.selectionMode !== 'single' && this.selectNodesRecursive) {\r\n result[i].select = this.itemRow.select === (undefined || null) ? false : this.itemRow.select;\r\n\r\n if (\r\n this.itemRow.select === true &&\r\n (this.selectionMode == 'multiple') &&\r\n result[i][this.hasChildField] === false\r\n ) {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== result[i][this.keyField]);\r\n this.selectedItems.push(result[i]);\r\n }\r\n } else {\r\n result[i].select = false;\r\n }\r\n result[i].parentNode = this.itemRow;\r\n\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(result[i][this.keyField])) {\r\n if (result[i][this.hasChildField] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(result[i]);\r\n // }\r\n\r\n } else {\r\n this.selectItem(result[i]);\r\n }\r\n }\r\n })\r\n } else if (this.selectedFieldName != null) {\r\n if (result[i][this.hasChildField] == true && result[i][this.selectedFieldName] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(result[i]);\r\n // }\r\n\r\n } else if (result[i][this.selectedFieldName] == true) {\r\n this.selectItem(result[i]);\r\n }\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n this.itemRow.loaded = true;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.selectionMode !== 'single') {\r\n this.showSelectBox = true;\r\n }\r\n this.showContextMenu = true;\r\n }\r\n\r\n // onItemClick(e, v) {\r\n\r\n // }\r\n\r\n onDragStart(e: Event, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrag = v;\r\n this.onItemDrag.emit(v);\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n onDragEnd(e, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrop = v;\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n drop(e) {\r\n // this.onItemDrop.emit(this.itemDrop);\r\n if (!this.lockedDrag) {\r\n this.validDrop = true;\r\n this.sameChilde(this.itemDrag, this.itemDrop);\r\n if (this.validDrop && this.itemDrag[this.keyField] !== this.itemDrop[this.keyField] && this.itemDrag.parentNode !== this.itemDrop) {\r\n const movedEvent: AXTreeSideMenuItemMovedEvent = new AXTreeSideMenuItemMovedEvent();\r\n movedEvent.source = this.makeNode(this.itemDrag);\r\n movedEvent.target = this.makeNode(this.itemDrop);\r\n this.lockedDrag = true;\r\n this.showLoading(this.itemDrag);\r\n this.showLoading(this.itemDrop);\r\n movedEvent.resolve = (value: boolean) => {\r\n this.hideLoading(this.itemDrag);\r\n this.hideLoading(this.itemDrop);\r\n if (value) {\r\n this.dragDropItem(this.itemDrag, this.itemDrop);\r\n } else {\r\n this.lockedDrag = false;\r\n }\r\n };\r\n this.onItemMoved.emit(movedEvent);\r\n }\r\n }\r\n\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n sameChilde(parent, child) {\r\n if (parent[this.childField] && parent[this.childField].length > 0) {\r\n for (let index = 0; index < parent[this.childField].length; index++) {\r\n if (parent[this.childField][index][this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n if (parent[this.childField][index][this.childField] && parent[this.childField][index][this.childField].length > 0) {\r\n this.sameChilde(parent[this.childField][index], child);\r\n }\r\n }\r\n } else if (parent[this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n }\r\n\r\n dragDropItem(itemChild, itemParent) {\r\n if (this.selectionLevel == 'nodes') {\r\n itemParent.disabledCheckBox = true;\r\n }\r\n\r\n if (itemChild.parentNode) {\r\n itemChild.parentNode[this.childField] = itemChild.parentNode[this.childField].filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n } else {\r\n this.list = this.list.filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n }\r\n itemChild.parentNode = itemParent;\r\n if (itemParent[this.childField] && itemParent[this.childField].length > 0) {\r\n itemParent[this.childField][itemParent[this.childField].length] = itemChild;\r\n } else {\r\n itemParent[this.childField] = [];\r\n itemParent[this.childField][0] = itemChild;\r\n if (itemParent[this.hasChildField] === true) {\r\n this.toggleNode(itemParent);\r\n } else {\r\n itemParent.toggle = !itemParent.toggle;\r\n itemParent.loaded = true;\r\n }\r\n itemParent[this.hasChildField] = true;\r\n }\r\n if (itemChild.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(itemChild.parentNode);\r\n }\r\n this.lockedDrag = false;\r\n\r\n }\r\n\r\n private listChange(field, value) {\r\n for (let index = 0; index < this.list.length; index++) {\r\n this.changeChiled(this.list[index], field, value);\r\n }\r\n this.loadAllChildren = false;\r\n }\r\n\r\n private changeChiled(item, field, value) {\r\n if (field === 'toggle' && (item.loaded === false || item.loaded === undefined)) {\r\n if (this.loadAllChildren === true) {\r\n this.toggleNode(item);\r\n item[field] = value;\r\n }\r\n } else {\r\n item[field] = value;\r\n if (field === 'select' && item[this.hasChildField] === false && value === true) {\r\n this.selectedItems.push(item);\r\n }\r\n }\r\n if (field === 'select') {\r\n item.indeterminate = false;\r\n }\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((element) => {\r\n this.changeChiled(element, field, value);\r\n });\r\n }\r\n }\r\n\r\n private showLoading(item): void {\r\n item.loading = true;\r\n }\r\n\r\n private hideLoading(item): void {\r\n if (item != null) {\r\n item.loading = false;\r\n }\r\n }\r\n\r\n public openAll(loadAll: boolean = false) {\r\n // if (loadAll) {\r\n // this.loadAllChildren = true;\r\n // this.listChange('toggle', true);\r\n //} else {\r\n this.listChange('toggle', true);\r\n // }\r\n }\r\n\r\n public selectItem(item) {\r\n if (item['select'] != true) {\r\n this.internalSelectItem(item, false);\r\n }\r\n }\r\n\r\n\r\n public open(item) {\r\n\r\n if (item['toggle'] !== true) {\r\n this.toggleNode(item, true);\r\n\r\n }\r\n\r\n }\r\n\r\n public scrolIntoView(item) {\r\n let element = document.querySelector(`li[data-id='${item[this.keyField]}']`);\r\n element.scrollIntoView();\r\n }\r\n\r\n public closeAll() {\r\n this.listChange('toggle', false);\r\n }\r\n\r\n public selectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', true);\r\n }\r\n }\r\n\r\n public unSelectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', false);\r\n }\r\n this.selectedItems = [];\r\n }\r\n\r\n public getSelectedNodes(): AXTreeSideMenuNode[] {\r\n const selectItemsNode = [];\r\n this.selectedItems.forEach((e) => {\r\n selectItemsNode.push(this.makeNode(e));\r\n });\r\n return selectItemsNode;\r\n }\r\n\r\n public getSelectedParents(): AXTreeSideMenuNode[] {\r\n const selectItemsParent = [];\r\n this.selectedParents.forEach((e) => {\r\n selectItemsParent.push(this.makeNode(e));\r\n });\r\n return selectItemsParent;\r\n }\r\n\r\n getParentsId(item) {\r\n let keyFields = []\r\n keyFields.push(item[this.keyField]);\r\n if (item.parentNode) {\r\n keyFields.push(...this.getParentsId(item.parentNode));\r\n\r\n }\r\n return keyFields;\r\n }\r\n\r\n public getSelectedKeyFields() {\r\n let keyFields = [];\r\n this.selectedItems.forEach(elm => {\r\n var Ids = this.getParentsId(elm);\r\n if (Ids) {\r\n keyFields.push(Ids)\r\n }\r\n });\r\n return keyFields;\r\n }\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { AXTreeSideMenuComponent } from \"./tree-side-menu.component\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AXDataSourceModule } from \"../data-source/datasource.module\";\r\nimport { AXCheckBoxModule } from \"../checkbox/checkbox.module\";\r\nimport { AXContextMenuModule } from \"../context-menu/context-menu.module\";\r\n\r\n@NgModule({\r\n declarations: [AXTreeSideMenuComponent],\r\n imports: [\r\n AXDataSourceModule,\r\n CommonModule,\r\n AXCheckBoxModule,\r\n AXContextMenuModule,\r\n ],\r\n exports: [AXTreeSideMenuComponent],\r\n providers: [],\r\n})\r\nexport class AXTreeSideMenuModule {}\r\n","import { Component, ViewEncapsulation, Input, ContentChild, Output, EventEmitter, ViewChild, ElementRef, TemplateRef } from '@angular/core';\r\nimport { AXDataSourceComponent } from '../data-source/datasource.component';\r\nimport { AXDataEvent, AXHtmlEvent, AXValueEvent } from '../base/events.class';\r\nimport { AXBaseComponent } from '../base/element.class';\r\nimport { AXContextMenuItemClickEvent, AXContextMenuPromiseFunction, AXContextMenuFunction } from '../context-menu/context-menu.directive';\r\nimport { AXMenuItem } from '@acorex/core';\r\n\r\nexport class AXTreeViewNode {\r\n children: AXTreeViewNode[];\r\n itemData: AXTreeViewItemData = new AXTreeViewItemData();\r\n parent: AXTreeViewNode;\r\n}\r\n\r\nexport class AXTreeViewItemData {\r\n selected: boolean;\r\n key: string;\r\n disabled: boolean;\r\n open: boolean;\r\n hasChild: boolean;\r\n item: any;\r\n}\r\n\r\nexport class AXTreeViewItemMovedEvent {\r\n source: AXTreeViewNode;\r\n target: AXTreeViewNode;\r\n resolve: (value: boolean) => void;\r\n}\r\n\r\nexport class AXTreeViewselectionChangedEvent extends AXValueEvent<AXTreeViewNode> {\r\n component: AXTreeViewComponent;\r\n}\r\n\r\nexport class AXTreeViewseletedKeyFieldsChangedEvent extends AXValueEvent<AXTreeViewNode> {\r\n component: AXTreeViewComponent;\r\n}\r\n\r\nexport class AXTreeViewItemClick extends AXHtmlEvent<MouseEvent> {\r\n component: AXTreeViewComponent;\r\n item: any;\r\n flag: boolean;\r\n cancel?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'ax-tree-view',\r\n templateUrl: './tree-view.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AXTreeViewComponent extends AXBaseComponent {\r\n @ContentChild(TemplateRef, { static: true })\r\n nodeTemplate: TemplateRef<any>;\r\n\r\n @ContentChild(AXDataSourceComponent, { static: true })\r\n private _contentDataSource: AXDataSourceComponent;\r\n\r\n @Input()\r\n selectionMode: 'single' | 'multiple' = 'single';\r\n\r\n @Input()\r\n selectionLevel: 'all' | 'nodes' | 'parents' = 'all';\r\n\r\n // user can set only one of this /selectedFieldName or /seletedKeyFields\r\n //seletedKeyFields set id of nodes and parents\r\n //selectedFieldName set name of fields that set selectes\r\n @Input()\r\n selectedFieldName: string = null;\r\n\r\n @Input()\r\n selectNodesRecursive: boolean = true;\r\n\r\n @Input()\r\n seletedKeyFields: any[] = [];\r\n\r\n @Input()\r\n keyField: string = 'id';\r\n\r\n @Input()\r\n hasChildField: string = 'child';\r\n\r\n @Input()\r\n bordered: boolean = false;\r\n\r\n @Input()\r\n lazyLoading: boolean = true;\r\n\r\n @Input()\r\n allowDrag: boolean = false;\r\n\r\n @Input()\r\n size: 'md' | 'sm' = 'md';\r\n\r\n @Output()\r\n selectionChanged: EventEmitter<AXTreeViewselectionChangedEvent> = new EventEmitter<AXTreeViewselectionChangedEvent>();\r\n\r\n @Output()\r\n seletedKeyFieldsChanged: EventEmitter<AXTreeViewseletedKeyFieldsChangedEvent> = new EventEmitter<AXTreeViewselectionChangedEvent>();\r\n\r\n @Output()\r\n onItemOpening: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemClick: EventEmitter<AXTreeViewItemClick> = new EventEmitter<AXTreeViewItemClick>();\r\n\r\n @Output()\r\n onItemClosing: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemDrag: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @Output()\r\n onItemMoved: EventEmitter<AXTreeViewItemMovedEvent> = new EventEmitter<AXTreeViewItemMovedEvent>();\r\n\r\n @Output()\r\n onContextMenuItemClick: EventEmitter<AXContextMenuItemClickEvent> = new EventEmitter<AXContextMenuItemClickEvent>();\r\n\r\n showSelectBox: boolean = false;\r\n loading: boolean = false;\r\n list: any[] = [];\r\n itemRow: any;\r\n selectedItems: any[] = [];\r\n selectedParents: any[] = [];\r\n loadAllChildren: boolean = false;\r\n listLoad: any[] = [];\r\n itemDrop: any;\r\n itemDrag: any;\r\n validDrop: boolean = true;\r\n lockedDrag: boolean = false;\r\n childField: string = 'childeren';\r\n showContextMenu: boolean = false;\r\n isSelectedItem: boolean = false;\r\n loced: boolean = false;\r\n @Input()\r\n contextMenuItems: AXMenuItem[] | AXContextMenuPromiseFunction | AXContextMenuFunction;\r\n\r\n constructor(private ref: ElementRef) {\r\n super();\r\n }\r\n\r\n handleOnContextMenuItem(e: AXContextMenuItemClickEvent) {\r\n this.onContextMenuItemClick.emit(e);\r\n }\r\n\r\n refresh() {\r\n this.list = [];\r\n this._contentDataSource.fetch(null);\r\n }\r\n\r\n internalSelectItem(item, userChange: boolean = true) {\r\n if (item[this.hasChildField] === false || this.selectionMode === 'single') {\r\n item.select = !item.select;\r\n if (item.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (item.select === true) {\r\n if (this.selectionMode === 'single') {\r\n this.selectedItems.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedItems = [];\r\n this.selectedItems.push(item);\r\n } else {\r\n this.selectedItems.push(item);\r\n }\r\n } else {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n } else {\r\n item.select = !item.select;\r\n\r\n if (item.parentNode && this.selectionMode === 'multiple') {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n if (this.selectionMode === 'multiple') {\r\n this.changeChildSelect(item, item.select);\r\n }\r\n\r\n if (item.select == true) {\r\n if (this.selectionMode === 'multiple') {\r\n this.selectedParents.push(item);\r\n } else {\r\n this.selectedParents.forEach((e) => {\r\n e.select = false;\r\n });\r\n this.selectedParents = [];\r\n this.selectedParents.push(item);\r\n }\r\n } else {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== item[this.keyField]);\r\n }\r\n }\r\n if (userChange) {\r\n this.selectionChanged.emit({\r\n component: this,\r\n value: this.makeNode(item),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n }\r\n\r\n private makeNode(item, addChildren: boolean = true) {\r\n const node: AXTreeViewNode = new AXTreeViewNode();\r\n if (addChildren) {\r\n node.children = item[this.childField] === undefined ? [] : item[this.childField]?.map((m) => this.makeNode(m));\r\n }\r\n node.itemData.disabled = item.disabled === true ? item.disabled : false;\r\n node.itemData.open = item.open === true ? item.open : false;\r\n node.itemData.key = item[this.keyField];\r\n\r\n const c = [];\r\n let i = 0;\r\n for (var k in item) {\r\n i = i + 1;\r\n if (\r\n k != 'select' &&\r\n k != 'hasChild' &&\r\n k != 'loading' &&\r\n k != 'requestId' &&\r\n k != 'disabled' &&\r\n k != 'open' &&\r\n k != 'parentNode' &&\r\n k != 'toggle' &&\r\n k != 'loaded' &&\r\n k != 'indeterminate' &&\r\n k != this.childField\r\n ) {\r\n //c.push({ k: item[k] });\r\n c[k] = item[k];\r\n }\r\n }\r\n node.itemData.item = c; //TO DO\r\n node.itemData.selected = item.select === true ? item.select : false;\r\n node.itemData.hasChild = item[this.hasChildField];\r\n node.parent = item.parentNode === undefined ? null : this.makeNode(item.parentNode, false);\r\n return node;\r\n }\r\n\r\n private changeChildSelect(item, s) {\r\n if (this.selectNodesRecursive) {\r\n item.select = s;\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((elm) => {\r\n if (elm[this.hasChildField] === true) {\r\n elm.select = s;\r\n\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedParents.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedParents = this.selectedParents.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n\r\n this.changeChildSelect(elm, s);\r\n } else {\r\n elm.select = s;\r\n if (s === true && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n this.selectedItems.push(elm);\r\n }\r\n if (s === false && this.selectionMode !== 'single') {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== elm[this.keyField]);\r\n }\r\n }\r\n });\r\n } else {\r\n item.select = s;\r\n }\r\n }\r\n }\r\n\r\n private changeParentSelect(item) {\r\n if (this.selectNodesRecursive) {\r\n let allselect = true;\r\n let alldeselect = true;\r\n let oneselect = false;\r\n let isindeterminate = false;\r\n\r\n if (item[this.childField]) {\r\n for (let index = 0; index < item[this.childField].length; index++) {\r\n if (item[this.childField][index].select === true) {\r\n alldeselect = false;\r\n oneselect = true;\r\n }\r\n if (item[this.childField][index].select === false || item[this.childField][index].select === undefined) {\r\n allselect = false;\r\n }\r\n if (item[this.childField][index].select === null) {\r\n isindeterminate = true;\r\n alldeselect = false;\r\n oneselect = true;\r\n allselect = false;\r\n }\r\n }\r\n }\r\n\r\n if (oneselect || (isindeterminate && !allselect)) {\r\n item.select = null;\r\n }\r\n if (allselect === true) {\r\n item.select = true;\r\n }\r\n if (alldeselect === true) {\r\n item.select = false;\r\n }\r\n if (item.parentNode && item.parentNode[this.childField] && item.parentNode[this.childField].length > 0) {\r\n this.changeParentSelect(item.parentNode);\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.onItemClick.subscribe((data: AXTreeViewItemClick) => {\r\n if (!data.cancel) {\r\n this.toggleNode(data.item, data.flag);\r\n }\r\n });\r\n }\r\n\r\n itemdbClick(e: MouseEvent, item) {\r\n if (this.selectionMode == 'single') {\r\n this.handleOnNodeClick(e, item, true);\r\n }\r\n }\r\n\r\n handleOnNodeClick(e: MouseEvent, item, flag = false) {\r\n // this.internalSelectItem(item);\r\n this.onItemClick.emit({\r\n component: this,\r\n htmlEvent: e,\r\n item,\r\n flag\r\n });\r\n }\r\n\r\n toggleNode(item, flag = false) {\r\n //item[this.hasChildField] === false &&\r\n if (this.selectionMode === 'single' && !flag) {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n } else {\r\n item.toggle = !item.toggle;\r\n if (this.selectionMode === 'single') {\r\n if (this.selectionLevel == 'nodes' && item.hasChild == true) {\r\n } else {\r\n this.internalSelectItem(item);\r\n }\r\n }\r\n\r\n if (item[this.hasChildField] === true && item.loaded !== true && this.lazyLoading) {\r\n this.itemRow = item;\r\n const uid = Math.floor(Math.random() * 100000000);\r\n item.requestId = uid;\r\n this.listLoad.push(item);\r\n this._contentDataSource.fetch(item);\r\n this.showLoading(this.itemRow);\r\n }\r\n if (item.toggle && item[this.hasChildField] === true) {\r\n item.open = true;\r\n this.onItemOpening.emit(this.makeNode(item));\r\n } else if (!item.toggle && item[this.hasChildField] === true) {\r\n item.open = false;\r\n this.onItemClosing.emit(this.makeNode(item));\r\n }\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._contentDataSource.fetch(null);\r\n this._contentDataSource.onDataReceived.subscribe((_data) => {\r\n if (this.list.length === 0) {\r\n this.hideLoading(null);\r\n this.list = _data.data.result;\r\n\r\n this.list.forEach((el) => {\r\n el.disabledCheckBox = false;\r\n el.select = false;\r\n\r\n if (this.selectionLevel == 'nodes' && el[this.hasChildField] == true) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && el[this.hasChildField] == false) {\r\n el.disabledCheckBox = true;\r\n }\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(el[this.keyField])) {\r\n if (el[this.hasChildField] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(el);\r\n // }\r\n } else {\r\n this.selectItem(el);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n });\r\n } else if (this.selectedFieldName != null) {\r\n if (el[this.hasChildField] == true && el[this.selectedFieldName] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(el);\r\n // }\r\n } else if (el[this.selectedFieldName] == true) {\r\n this.selectItem(el);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n });\r\n } else {\r\n this.itemRow = this.listLoad.filter((c) => c.requestId === _data.data.requestId)[0];\r\n this.listLoad = this.listLoad.filter((c) => c.requestId !== _data.data.requestId);\r\n if (this.itemRow !== undefined) {\r\n this.hideLoading(this.itemRow);\r\n const result = _data.data.result;\r\n\r\n if (this.list.length !== 0) {\r\n if (this.itemRow[this.childField] && this.itemRow[this.childField].length > 0) {\r\n result.forEach((el) => {\r\n el.disabledCheckBox = false;\r\n this.itemRow[this.childField][this.itemRow[this.childField].length] = el;\r\n });\r\n } else {\r\n this.itemRow[this.childField] = result;\r\n }\r\n\r\n for (let i = 0; i < result.length; i++) {\r\n if (this.selectionLevel == 'nodes' && result[i][this.hasChildField] == true) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n\r\n if (this.selectionLevel == 'parents' && result[i][this.hasChildField] == false) {\r\n result[i].disabledCheckBox = true;\r\n }\r\n if (this.selectionMode !== 'single' && this.selectNodesRecursive) {\r\n result[i].select = this.itemRow.select === (undefined || null) ? false : this.itemRow.select;\r\n\r\n if (this.itemRow.select === true && this.selectionMode == 'multiple' && result[i][this.hasChildField] === false) {\r\n this.selectedItems = this.selectedItems.filter((c) => c[this.keyField] !== result[i][this.keyField]);\r\n this.selectedItems.push(result[i]);\r\n }\r\n } else {\r\n result[i].select = false;\r\n }\r\n result[i].parentNode = this.itemRow;\r\n\r\n if (this.seletedKeyFields.length > 0) {\r\n this.seletedKeyFields.forEach((n: any) => {\r\n if (n.includes(result[i][this.keyField])) {\r\n if (result[i][this.hasChildField] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(result[i]);\r\n // }\r\n } else {\r\n this.selectItem(result[i]);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n });\r\n } else if (this.selectedFieldName != null) {\r\n if (result[i][this.hasChildField] == true && result[i][this.selectedFieldName] == true) {\r\n // if (this.selectNodesRecursive) {\r\n this.open(result[i]);\r\n // }\r\n } else if (result[i][this.selectedFieldName] == true) {\r\n this.selectItem(result[i]);\r\n this.isSelectedItem = true;\r\n }\r\n }\r\n }\r\n\r\n this.itemRow.loaded = true;\r\n }\r\n }\r\n }\r\n\r\n if (this.isSelectedItem == true && !this.loced) {\r\n this.loced = true;\r\n this.seletedKeyFieldsChanged.emit({\r\n component: this,\r\n // value: this.makeNode(item),\r\n htmlElement: this.ref.nativeElement\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.selectionMode !== 'single') {\r\n this.showSelectBox = true;\r\n }\r\n this.showContextMenu = true;\r\n }\r\n\r\n // onItemClick(e, v) {\r\n\r\n // }\r\n\r\n onDragStart(e: Event, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrag = v;\r\n this.onItemDrag.emit(v);\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n onDragEnd(e, v) {\r\n if (!this.lockedDrag) {\r\n this.itemDrop = v;\r\n }\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n drop(e) {\r\n // this.onItemDrop.emit(this.itemDrop);\r\n if (!this.lockedDrag) {\r\n this.validDrop = true;\r\n this.sameChilde(this.itemDrag, this.itemDrop);\r\n if (this.validDrop && this.itemDrag[this.keyField] !== this.itemDrop[this.keyField] && this.itemDrag.parentNode !== this.itemDrop) {\r\n const movedEvent: AXTreeViewItemMovedEvent = new AXTreeViewItemMovedEvent();\r\n movedEvent.source = this.makeNode(this.itemDrag);\r\n movedEvent.target = this.makeNode(this.itemDrop);\r\n this.lockedDrag = true;\r\n this.showLoading(this.itemDrag);\r\n this.showLoading(this.itemDrop);\r\n movedEvent.resolve = (value: boolean) => {\r\n this.hideLoading(this.itemDrag);\r\n this.hideLoading(this.itemDrop);\r\n if (value) {\r\n this.dragDropItem(this.itemDrag, this.itemDrop);\r\n } else {\r\n this.lockedDrag = false;\r\n }\r\n };\r\n this.onItemMoved.emit(movedEvent);\r\n }\r\n }\r\n\r\n e.stopImmediatePropagation();\r\n }\r\n\r\n sameChilde(parent, child) {\r\n if (parent[this.childField] && parent[this.childField].length > 0) {\r\n for (let index = 0; index < parent[this.childField].length; index++) {\r\n if (parent[this.childField][index][this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n if (parent[this.childField][index][this.childField] && parent[this.childField][index][this.childField].length > 0) {\r\n this.sameChilde(parent[this.childField][index], child);\r\n }\r\n }\r\n } else if (parent[this.keyField] == child[this.keyField]) {\r\n this.validDrop = false;\r\n }\r\n }\r\n\r\n dragDropItem(itemChild, itemParent) {\r\n if (this.selectionLevel == 'nodes') {\r\n itemParent.disabledCheckBox = true;\r\n }\r\n\r\n if (itemChild.parentNode) {\r\n itemChild.parentNode[this.childField] = itemChild.parentNode[this.childField].filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n } else {\r\n this.list = this.list.filter((c) => c[this.keyField] !== itemChild[this.keyField]);\r\n }\r\n itemChild.parentNode = itemParent;\r\n if (itemParent[this.childField] && itemParent[this.childField].length > 0) {\r\n itemParent[this.childField][itemParent[this.childField].length] = itemChild;\r\n } else {\r\n itemParent[this.childField] = [];\r\n itemParent[this.childField][0] = itemChild;\r\n if (itemParent[this.hasChildField] === true) {\r\n this.toggleNode(itemParent);\r\n } else {\r\n itemParent.toggle = !itemParent.toggle;\r\n itemParent.loaded = true;\r\n }\r\n itemParent[this.hasChildField] = true;\r\n }\r\n if (itemChild.parentNode && this.selectionMode !== 'single') {\r\n this.changeParentSelect(itemChild.parentNode);\r\n }\r\n this.lockedDrag = false;\r\n }\r\n\r\n private listChange(field, value) {\r\n for (let index = 0; index < this.list.length; index++) {\r\n this.changeChiled(this.list[index], field, value);\r\n }\r\n this.loadAllChildren = false;\r\n }\r\n\r\n private changeChiled(item, field, value) {\r\n if (field === 'toggle' && (item.loaded === false || item.loaded === undefined)) {\r\n if (this.loadAllChildren === true) {\r\n this.toggleNode(item);\r\n item[field] = value;\r\n }\r\n } else {\r\n item[field] = value;\r\n if (field === 'select' && item[this.hasChildField] === false && value === true) {\r\n this.selectedItems.push(item);\r\n }\r\n }\r\n if (field === 'select') {\r\n item.indeterminate = false;\r\n }\r\n if (item[this.hasChildField] === true && item[this.childField] && item[this.childField].length > 0) {\r\n item[this.childField].forEach((element) => {\r\n this.changeChiled(element, field, value);\r\n });\r\n }\r\n }\r\n\r\n private showLoading(item): void {\r\n item.loading = true;\r\n }\r\n\r\n private hideLoading(item): void {\r\n if (item != null) {\r\n item.loading = false;\r\n }\r\n }\r\n\r\n public openAll(loadAll: boolean = false) {\r\n // if (loadAll) {\r\n // this.loadAllChildren = true;\r\n // this.listChange('toggle', true);\r\n //} else {\r\n this.listChange('toggle', true);\r\n // }\r\n }\r\n\r\n public selectItem(item) {\r\n if (item['select'] != true) {\r\n this.internalSelectItem(item, false);\r\n }\r\n }\r\n\r\n public open(item) {\r\n if (item['toggle'] !== true) {\r\n this.toggleNode(item, true);\r\n }\r\n }\r\n\r\n public scrolIntoView(item) {\r\n let element = document.querySelector(`li[data-id='${item[this.keyField]}']`);\r\n element.scrollIntoView();\r\n }\r\n\r\n public closeAll() {\r\n this.listChange('toggle', false);\r\n }\r\n\r\n public selectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', true);\r\n }\r\n }\r\n\r\n public unSelectAll() {\r\n if (this.selectionMode !== 'single') {\r\n this.listChange('select', false);\r\n }\r\n this.selectedItems = [];\r\n }\r\n\r\n public getSelectedNodes(): AXTreeViewNode[] {\r\n const selectItemsNode = [];\r\n this.selectedItems.forEach((e) => {\r\n selectItemsNode.push(this.makeNode(e));\r\n });\r\n return selectItemsNode;\r\n }\r\n\r\n public getSelectedParents(): AXTreeViewNode[] {\r\n const selectItemsParent = [];\r\n this.selectedParents.forEach((e) => {\r\n selectItemsParent.push(this.makeNode(e));\r\n });\r\n return selectItemsParent;\r\n }\r\n\r\n getParentsId(item) {\r\n let keyFields = [];\r\n keyFields.push(item[this.keyField]);\r\n if (item.parentNode) {\r\n keyFields.push(...this.getParentsId(item.parentNode));\r\n }\r\n return keyFields;\r\n }\r\n\r\n public getSelectedKeyFields() {\r\n let keyFields = [];\r\n this.selectedItems.forEach((elm) => {\r\n var Ids = this.getParentsId(elm);\r\n if (Ids) {\r\n keyFields.push(Ids);\r\n }\r\n });\r\n return keyFields;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { AXTreeViewComponent } from './tree-view.component';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXDataSourceModule } from '../data-source/datasource.module';\r\nimport { AXCheckBoxModule } from '../checkbox/checkbox.module';\r\nimport { AXContextMenuModule } from '../context-menu/context-menu.module';\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTreeViewComponent],\r\n imports: [AXDataSourceModule, CommonModule, AXCheckBoxModule, AXContextMenuModule],\r\n exports: [AXTreeViewComponent],\r\n providers: []\r\n})\r\n\r\nexport class AXTreeViewModule { }","import {\r\n Component,\r\n ViewChild,\r\n Input,\r\n ElementRef,\r\n ViewEncapsulation,\r\n TemplateRef,\r\n Renderer2,\r\n EventEmitter,\r\n Output,\r\n ChangeDetectorRef\r\n} from '@angular/core';\r\nimport { AXUploadFileLoadEvent, AXUploadFileProgressEvent } from './upload-file.events';\r\nimport { AXProgressBarComponent } from '../progress-bar/progress-bar.component';\r\nimport { AXBaseTextComponent, AXElementSize, AXBaseSizableComponent, AXBaseComponent } from '../base/element.class';\r\nimport { AXRenderService } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-upload-file',\r\n templateUrl: './upload-file.component.html',\r\n encapsulation: ViewEncapsulation.None,\r\n host: { style: 'display: block; width:100%; position: relative' }\r\n})\r\nexport class AXUploadFileComponent extends AXBaseComponent implements AXBaseSizableComponent {\r\n private overlayDiv: HTMLElement;\r\n\r\n @Input()\r\n dropRef: HTMLElement;\r\n\r\n @Input()\r\n progressRef: HTMLElement;\r\n\r\n @Input()\r\n label: string;\r\n\r\n @Input()\r\n size: AXElementSize = \"md\";\r\n\r\n @ViewChild('fileInput') fileInput: ElementRef;\r\n\r\n @Input()\r\n type: 'box' | 'inline' | 'hidden' = 'inline';\r\n\r\n @Input()\r\n public template: TemplateRef<any>;\r\n\r\n @Input() disabled: boolean = false;\r\n @Output()\r\n onLoad: EventEmitter<AXUploadFileLoadEvent> = new EventEmitter<AXUploadFileLoadEvent>();\r\n\r\n @Output()\r\n onProgress: EventEmitter<AXUploadFileProgressEvent> = new EventEmitter<AXUploadFileProgressEvent>();\r\n\r\n files: File[] = [];\r\n focus() { }\r\n\r\n fileName: string = '';\r\n constructor(\r\n private el: ElementRef<HTMLElement>,\r\n private injectionService: AXRenderService,\r\n private rendrer: Renderer2,\r\n protected cdr: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n\r\n onDeleteClick(e) {\r\n e.stopPropagation();\r\n }\r\n\r\n onFileChange(e) {\r\n const files = e.target.files;\r\n this.addFile(files[0]);\r\n (this.fileInput.nativeElement as HTMLInputElement).value = null;\r\n }\r\n\r\n open() {\r\n this.fileInput.nativeElement.click();\r\n }\r\n remove() {\r\n this.files = [];\r\n }\r\n ngAfterViewInit(): void {\r\n if (this.dropRef != null) {\r\n } else {\r\n this.dropRef = this.el.nativeElement;\r\n }\r\n //\r\n if (this.progressRef != null) {\r\n } else {\r\n this.progressRef = this.el.nativeElement;\r\n }\r\n //\r\n if (this.type === 'hidden' || this.type === 'box') {\r\n this.overlayDiv = this.rendrer.createElement('div') as HTMLElement;\r\n this.overlayDiv.classList.add('overlay');\r\n this.overlayDiv.innerHTML = `\r\n <div class=\"icon-wrapper\">\r\n <i class=\"far fa-cloud-upload-alt fa-3x\"></i>\r\n <span>Drop File(s) Here</span>\r\n </div>\r\n `;\r\n this.overlayDiv.addEventListener('drag', this.handleOverlayDragOver);\r\n this.overlayDiv.addEventListener('dragover', this.handleOverlayDragOver);\r\n this.overlayDiv.addEventListener('dragleave', this.handleOverlayDragOver);\r\n this.rendrer.appendChild(this.dropRef, this.overlayDiv);\r\n }\r\n //\r\n this.dropRef.classList.add('ax-upload-drop-over');\r\n this.dropRef.addEventListener('dragover', this.handleDragOver.bind(this));\r\n this.dropRef.addEventListener('dragleave', this.handleDragLeave.bind(this));\r\n this.dropRef.addEventListener('drop', this.handleDrop.bind(this));\r\n }\r\n\r\n private handleOverlayDragOver(e: DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n return false;\r\n }\r\n\r\n private handleDragOver(e: DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.overlayDiv.classList.add('show');\r\n return false;\r\n }\r\n\r\n private handleDragLeave(e: DragEvent) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.overlayDiv.classList.remove('show');\r\n return false;\r\n }\r\n\r\n handleDrop(e: DragEvent) {\r\n this.handleDragLeave(e);\r\n for (let i = 0; i < e.dataTransfer.files.length; i++) {\r\n const file = e.dataTransfer.files[i];\r\n this.addFile(file);\r\n }\r\n }\r\n\r\n private addFile(file: File) {\r\n const progressDiv = this.rendrer.createElement('div') as HTMLElement;\r\n progressDiv.classList.add('ax-upload-progress-panel');\r\n const progressLabel = this.rendrer.createElement('small') as HTMLElement;\r\n progressLabel.innerText = file.name;\r\n this.fileName = file.name;\r\n this.rendrer.appendChild(this.progressRef, progressDiv);\r\n const com = this.injectionService.appendComponent(AXProgressBarComponent, { progress: 0 }, progressDiv).instance as AXProgressBarComponent;\r\n this.rendrer.appendChild(progressDiv, progressLabel);\r\n\r\n const reader = new FileReader();\r\n reader.addEventListener('load', (e) => {\r\n this.onLoad.emit({\r\n file,\r\n data: (e as any).target.result\r\n });\r\n //\r\n // Fake Upload\r\n let pv = 0;\r\n let uploaded = 0;\r\n const intv = setInterval(() => {\r\n uploaded += 1024 * 1000;\r\n if (uploaded > e.total) {\r\n uploaded = e.total;\r\n }\r\n pv = Math.ceil((uploaded / e.total) * 100);\r\n com.progress = pv;\r\n this.onProgress.emit({\r\n file,\r\n total: e.total,\r\n uploaded,\r\n value: pv\r\n });\r\n //\r\n if (com.progress >= 100) {\r\n clearInterval(intv);\r\n setTimeout(() => {\r\n this.rendrer.removeChild(this.progressRef, progressDiv);\r\n }, 1000);\r\n }\r\n }, 100);\r\n });\r\n reader.readAsDataURL(file);\r\n this.files.push(file);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXUploadFileComponent } from './upload-file.component';\r\nimport { AXButtonModule } from '../button/button.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { AXProgressBarModule } from '../progress-bar/progress-bar.module';\r\nimport { AXLabelModule } from '../label/label.module';\r\nimport { AXFormGroupModule } from '../form-group/form-group.module';\r\n\r\n@NgModule({\r\n declarations: [AXUploadFileComponent],\r\n imports: [CommonModule, AXButtonModule, AXTextBoxModule, AXProgressBarModule, AXLabelModule, AXFormGroupModule],\r\n exports: [AXUploadFileComponent],\r\n providers: []\r\n})\r\nexport class AXUploadFileModule {}\r\n","import { Component, Input, Output, EventEmitter, ContentChild, TemplateRef, ContentChildren, QueryList } from \"@angular/core\";\r\nimport { AXPanelBoxComponent } from \"../panel-box/panel-box.component\";\r\nimport { AXBaseComponent } from '../base/element.class';\r\n\r\n@Component({\r\n selector: \"ax-accordion\",\r\n template: \"<ng-content></ng-content>\",\r\n})\r\nexport class AXAccordionComponent extends AXBaseComponent {\r\n\r\n @ContentChildren(AXPanelBoxComponent)\r\n panels: QueryList<AXPanelBoxComponent>;\r\n\r\n @Input()\r\n multiple: boolean = false;\r\n\r\n constructor() {\r\n super()\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.panels.forEach(p => {\r\n if (this.multiple == false)\r\n p.collapsed = true;\r\n p.collapsedChange.subscribe((v: boolean) => {\r\n this.handleCollapsedChanged(p, v);\r\n });\r\n });\r\n if (this.multiple == false)\r\n this.panels.first.collapsed = false;\r\n }\r\n\r\n private handleCollapsedChanged(panel: AXPanelBoxComponent, value: boolean) {\r\n if (value == false && this.multiple == false) {\r\n this.panels.forEach(p => {\r\n if (p != panel)\r\n p.collapsed = true;\r\n });\r\n }\r\n }\r\n\r\n\r\n}\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { AXAccordionComponent } from \"./accordion.component\";\r\nimport { AXPanelBoxModule } from \"../panel-box/panel-box.module\";\r\n@NgModule({\r\n declarations: [AXAccordionComponent],\r\n imports: [CommonModule, AXPanelBoxModule],\r\n exports: [AXAccordionComponent],\r\n providers: []\r\n})\r\nexport class AXAccordionModule { }\r\n","import { Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { AXValidatableComponent } from '../base/element.class';\r\n\r\nexport type AXDataType = 'string' | 'number' | 'date' | 'boolean' | 'object';\r\nexport type AXControlType = 'textbox' | 'numberbox' | 'datePicker' | 'switch' | 'custom';\r\n\r\n\r\n\r\nexport interface AXPropertyDef {\r\n name: string;\r\n title: string;\r\n hint?: string;\r\n defaultValue?: any;\r\n editorClass: any;\r\n editorOptions?: any;\r\n visible?: boolean | (() => boolean);\r\n order?: number;\r\n}\r\n\r\nexport interface AXPropertyEditorDef {\r\n title: string;\r\n hint?: string;\r\n defaultValue?: any;\r\n editorClass: any;\r\n editorOptions?: any;\r\n visible?: boolean | (() => boolean);\r\n order?: number;\r\n}\r\n\r\n\r\n\r\n\r\nexport interface AXPropertyConfig {\r\n property: AXPropertyDef;\r\n value: any;\r\n}\r\n\r\n\r\nexport interface AXProperyEditorValueChangeEvent {\r\n property: AXPropertyDef;\r\n value: any;\r\n}\r\n\r\n\r\n\r\nexport abstract class AXProperyEditorComponent<T>{\r\n\r\n\r\n readonly: boolean = false;\r\n initiated: boolean = false;\r\n\r\n\r\n validatableComponentRegistered: Subject<AXValidatableComponent> = new Subject<AXValidatableComponent>();\r\n\r\n\r\n registerForValidationForm(component?: AXValidatableComponent) {\r\n this.validatableComponentRegistered.next(component);\r\n }\r\n\r\n\r\n @Output()\r\n valueChange: EventEmitter<T> = new EventEmitter<T>();\r\n\r\n private _value: T;\r\n @Input()\r\n public get value(): T {\r\n return this._value;\r\n }\r\n\r\n public set value(v: T) {\r\n if (v !== this._value) {\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n }\r\n\r\n uid: string;\r\n\r\n handleValueChange(v: T) {\r\n this.value = v;\r\n }\r\n\r\n initiat(): void {\r\n\r\n }\r\n\r\n\r\n}\r\n\r\n\r\n\r\nexport class AXPropertyDecorator {\r\n cls: any;\r\n property: string;\r\n options: any;\r\n\r\n constructor(\r\n cls: any,\r\n property: string,\r\n options: any) {\r\n this.cls = cls;\r\n this.property = property;\r\n this.options = options;\r\n }\r\n}\r\n\r\n\r\n// @dynamic\r\nexport class AXPropertyDecorators {\r\n private static REGISTRY = new Array<AXPropertyDecorator>();\r\n\r\n static register(cls: string, property: string, options?: any) {\r\n const item = AXPropertyDecorators.REGISTRY.find(c => c.cls === cls && c.property === property);\r\n if (item) {\r\n item.options = options;\r\n }\r\n else {\r\n AXPropertyDecorators.REGISTRY.push(new AXPropertyDecorator(cls, property, options));\r\n }\r\n }\r\n\r\n\r\n\r\n static has(cls: string, property: string): boolean {\r\n return AXPropertyDecorators.REGISTRY.some(c => c.cls === cls && c.property === property);\r\n }\r\n\r\n static get(cls: string, property: string): AXPropertyDecorator {\r\n return AXPropertyDecorators.REGISTRY.find(c => c.cls === cls && c.property === property);\r\n }\r\n\r\n static isValid(property: string): boolean {\r\n if (property) {\r\n return AXPropertyDecorators.REGISTRY.some(c => c.property === property);\r\n }\r\n return false;\r\n }\r\n\r\n static getProperties(target: any): AXPropertyDecorator[] {\r\n const list: AXPropertyDecorator[] = [];\r\n const p: any[] = Array<any>();\r\n let superClass = Object.getPrototypeOf(target);\r\n while (superClass.constructor.name !== 'Object') {\r\n p.push(superClass.constructor);\r\n superClass = Object.getPrototypeOf(superClass);\r\n }\r\n list.push(...AXPropertyDecorators.REGISTRY.filter(c => p.includes(c.cls.constructor)));\r\n return list;\r\n }\r\n}\r\n\r\n\r\n\r\nexport function propertyEditor(options: AXPropertyEditorDef) {\r\n return (target: any, key: string) => {\r\n (options as any).name = key;\r\n AXPropertyDecorators.register(target, key, options);\r\n };\r\n}\r\n\r\n","import { Directive, ViewContainerRef, ComponentFactoryResolver, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXProperyEditorComponent, AXProperyEditorValueChangeEvent, AXPropertyConfig } from './property-editor.class';\r\nimport { AXObjectUtil, AXRenderService, getPropByPath } from '@acorex/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AXValidationFormComponent } from '../validation/validation-form.component';\r\n\r\n@Directive({\r\n selector: '[ax-property-editor-renderer]',\r\n})\r\nexport class AXPropertyEditorRendererDirective {\r\n\r\n private instance: AXProperyEditorComponent<any>;\r\n\r\n\r\n @Input()\r\n property: AXPropertyConfig;\r\n\r\n\r\n @Input()\r\n readonly: boolean = false;\r\n\r\n @Input()\r\n validationForm: AXValidationFormComponent;\r\n\r\n\r\n\r\n private _context: any;\r\n @Input()\r\n public get context(): any {\r\n return this._context;\r\n }\r\n public set context(v: any) {\r\n this._context = v;\r\n if (v && this.instance) {\r\n this.assignProps();\r\n }\r\n }\r\n\r\n @Input()\r\n host: any;\r\n\r\n\r\n @Output()\r\n onValueChange: EventEmitter<AXProperyEditorValueChangeEvent> = new EventEmitter<AXProperyEditorValueChangeEvent>();\r\n\r\n private subscription: Subscription;\r\n\r\n constructor(\r\n private target: ViewContainerRef,\r\n private componentFactoryResolver: ComponentFactoryResolver,\r\n private renderService: AXRenderService\r\n ) {\r\n\r\n }\r\n\r\n\r\n clear() {\r\n this.instance.value = null;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.createComponent();\r\n }\r\n\r\n\r\n\r\n createComponent() {\r\n this.renderService.findLoadedComponentByRoute(this.property.property.editorClass).then(c => {\r\n if (c) {\r\n const factory = this.componentFactoryResolver.resolveComponentFactory(c.component);\r\n const cmpRef = this.target.createComponent(factory);\r\n this.instance = cmpRef.instance as AXProperyEditorComponent<any>;\r\n this.subscription = this.instance.valueChange.subscribe(value => {\r\n if (this.instance.initiated === true) {\r\n this.property.value = value;\r\n this.onValueChange.emit(this.property);\r\n }\r\n });\r\n // \r\n if (this.validationForm) {\r\n this.instance.validatableComponentRegistered.subscribe(v => {\r\n this.validationForm.addWidget(v);\r\n });\r\n }\r\n //\r\n //setTimeout(() => {\r\n this.instance.readonly = this.readonly;\r\n this.assignProps();\r\n this.instance.value = this.property.value;\r\n this.instance.initiat();\r\n cmpRef.changeDetectorRef.markForCheck();\r\n //});\r\n }\r\n });\r\n }\r\n\r\n\r\n private assignProps() {\r\n const options = this.property.property.editorOptions;\r\n if (!options) {\r\n return;\r\n }\r\n for (const p in options) {\r\n if (options.hasOwnProperty(p)) {\r\n const opt = options[p];\r\n if (typeof opt === 'string' && opt.startsWith('$$')) {\r\n const key = opt.substring(2);\r\n const val = getPropByPath(this.context, key);\r\n if (val) {\r\n this.instance[p] = typeof val === 'function' ? val({ data: this.context, host: this.host }, this.property) : val;\r\n }\r\n }\r\n else {\r\n const res = typeof opt === 'function' ? opt({ data: this.context, host: this.host }, this.property) : opt;\r\n if (res instanceof Promise) {\r\n res.then(v => {\r\n this.instance[p] = v;\r\n });\r\n }\r\n else {\r\n this.instance[p] = res;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n}","import { Component, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXTextBoxComponent } from '../../../textbox/textbox.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n templateUrl: './text.editor.html',\r\n})\r\nexport class AXTextPropertyEditorComponent extends AXProperyEditorComponent<string> {\r\n\r\n\r\n @ViewChild(AXTextBoxComponent)\r\n private textBox: AXTextBoxComponent;\r\n\r\n\r\n validation: AXValidation;\r\n clearButton: boolean = false;\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.textBox);\r\n this.initiated = true;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXTextPropertyEditorComponent } from './text.editor';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTextPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXTextBoxModule, AXValidationModule],\r\n exports: [AXTextPropertyEditorComponent],\r\n entryComponents: [AXTextPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXTextPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXNumberBoxComponent } from '../../../number-box/number-box.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-number-box (onValueChanged)=\"handleValueChange($event)\"\r\n [value]=\"value\"\r\n [showSeparator]=\"showSeparator\"\r\n [decimalNumber]=\"decimalNumber\"\r\n [min]=\"minValue\"\r\n [max]=\"maxValue\"\r\n [allowClear]=\"clearButton\"\r\n >\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-number-box>\r\n `,\r\n})\r\nexport class AXNumberBoxPropertyEditorComponent extends AXProperyEditorComponent<number> {\r\n\r\n\r\n showSeparator: boolean = true;\r\n decimalNumber: number = 2;\r\n minValue?: number = null;\r\n maxValue?: number = null;\r\n validation: AXValidation;\r\n clearButton: boolean = false;\r\n\r\n @ViewChild(AXNumberBoxComponent)\r\n private textBox: AXNumberBoxComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n this.registerForValidationForm(this.textBox);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXNumberBoxPropertyEditorComponent } from './number.editor';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXNumberBoxPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXNumberBoxModule,AXValidationModule],\r\n exports: [AXNumberBoxPropertyEditorComponent],\r\n entryComponents: [AXNumberBoxPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXNumberBoxPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXSelectBox2Component, AXSelectBoxValueChangedEvent } from '../../../selectbox/selectbox2.component';\r\n\r\n@Component({\r\n templateUrl: './selectbox.editor.html',\r\n})\r\nexport class AXSelectBoxPropertyEditorComponent extends AXProperyEditorComponent<any> {\r\n\r\n\r\n valueField: string = 'id';\r\n textField: string = 'text';\r\n selectionMode: string = 'single';\r\n selectionDataMode: string = 'value';\r\n allowSearch: boolean = true;\r\n allowNull: boolean = false;\r\n items: any = [];\r\n remoteOperation = false;\r\n\r\n validation: AXValidation;\r\n\r\n @ViewChild(AXSelectBox2Component, { static: true })\r\n selectBox: AXSelectBox2Component;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: AXSelectBoxValueChangedEvent) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.selectBox.refresh();\r\n this.registerForValidationForm(this.selectBox);\r\n }\r\n\r\n provideData = (e): Promise<any> => {\r\n return new Promise((resolve) => {\r\n const func = () => {\r\n if (Array.isArray(this.items)) {\r\n resolve(this.items);\r\n }\r\n else if (typeof this.items === 'function') {\r\n resolve(this.items(e));\r\n }\r\n else {\r\n resolve([]);\r\n }\r\n };\r\n const intVal = setInterval(() => {\r\n if (this.initiated) {\r\n func();\r\n clearInterval(intVal);\r\n }\r\n },50);\r\n });\r\n }\r\n\r\n initiat() {\r\n this.initiated = true;\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXSelectBoxPropertyEditorComponent } from './selectbox.editor';\r\nimport { AXSelectBoxModule } from '../../../selectbox/selectbox.module';\r\nimport { AXDataSourceModule } from '../../../data-source/datasource.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXSelectBoxPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXSelectBoxModule, AXDataSourceModule, AXValidationModule],\r\n exports: [AXSelectBoxPropertyEditorComponent],\r\n entryComponents: [AXSelectBoxPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXSelectBoxPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, ChangeDetectorRef, ViewChild, TemplateRef, ChangeDetectionStrategy, ElementRef } from '@angular/core';\r\nimport { AXTranslator } from '@acorex/core';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXPopupService } from '../../../popup/popup.service';\r\nimport { AXValidationFormComponent } from '../../../validation/validation-form.component';\r\n\r\n\r\nexport interface AXRangeModel {\r\n title: string;\r\n color?: string;\r\n minValue: number;\r\n maxValue: number;\r\n}\r\n\r\n\r\n\r\n@Component({\r\n templateUrl: './range.editor.html',\r\n styleUrls: ['./range.editor.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXRangePropertyEditorComponent extends AXProperyEditorComponent<AXRangeModel[]> {\r\n\r\n\r\n private form: AXValidationFormComponent;\r\n\r\n @ViewChild('tplEdit')\r\n tplEdit: TemplateRef<any>;\r\n\r\n ranges: AXRangeModel[] = [];\r\n\r\n editRow: AXRangeModel;\r\n\r\n showSeparator: boolean = true;\r\n decimalNumber: number = 2;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, private popupService: AXPopupService) {\r\n super(cdr);\r\n }\r\n\r\n\r\n ngOnInit() {\r\n this.ranges = this.value ? JSON.parse(JSON.stringify(this.value)) : [];\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n }\r\n\r\n // getRanges() {\r\n // return this.ranges.sort((a, b) => a.minValue - b.minValue);\r\n // }\r\n\r\n onFormInit(e) {\r\n this.form = e.component;\r\n }\r\n\r\n\r\n handleEditClick(item: AXRangeModel) {\r\n this.editRow = Object.assign({}, item);\r\n const popup = this.popupService.open(this.tplEdit, {\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n Object.assign(item, this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n title: AXTranslator.get('common.edit')\r\n });\r\n }\r\n\r\n handleAddClick() {\r\n const min = this.ranges?.length ? Math.max(...this.ranges.map(c => c.maxValue)) : 0;\r\n this.editRow = {\r\n title: '',\r\n minValue: min,\r\n maxValue: min + 1,\r\n color: null\r\n };\r\n const popup = this.popupService.open(this.tplEdit, {\r\n title: AXTranslator.get('common.add-item'),\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n this.ranges.push(this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n });\r\n this.cdr.detectChanges();\r\n }\r\n\r\n handleRemoveClick(item: AXRangeModel) {\r\n this.ranges = this.ranges.filter(c => c.minValue !== item.minValue);\r\n super.handleValueChange(this.ranges);\r\n }\r\n\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { AXValidatableComponent } from '../../base/element.class';\r\nimport { AXColorUtil, AXColor } from '@acorex/core';\r\n\r\n@Component({\r\n selector: 'ax-color-box',\r\n templateUrl: './color-box.component.html',\r\n styleUrls: ['./color-box.component.scss'],\r\n providers: [\r\n { provide: AXValidatableComponent, useExisting: AXColorBoxComponent },\r\n ]\r\n})\r\nexport class AXColorBoxComponent extends AXValidatableComponent {\r\n\r\n inputFormat: 'hex' | 'rgb' = 'hex';\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n @Output()\r\n onColorSelect: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n @Output()\r\n valueChange: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n private _value: string;\r\n\r\n @Input()\r\n public get value(): string {\r\n return this._value;\r\n }\r\n public set value(v: string) {\r\n if (v != this._value) {\r\n this._value = v;\r\n if (v) {\r\n const selected = this.colors.find(c => c.code === v);\r\n if (selected) {\r\n this.selectColor(selected);\r\n }\r\n else {\r\n this.colors.forEach((i) => {\r\n i.active = false\r\n });\r\n }\r\n const rgb = AXColorUtil.hex2Rgb(v);\r\n\r\n if (rgb) {\r\n this.rColor = rgb.r;\r\n this.gColor = rgb.g;\r\n this.bColor = rgb.b;\r\n }\r\n }\r\n else {\r\n this.rColor = null;\r\n this.gColor = null;\r\n this.bColor = null;\r\n }\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n\r\n rColor: number = 0;\r\n gColor: number = 0;\r\n bColor: number = 0;\r\n\r\n\r\n colors: AXColor[] = [\r\n // Pink ***************************\r\n {\r\n code: '#FFC0CB',\r\n },\r\n {\r\n code: '#FF69B4',\r\n },\r\n {\r\n code: '#DB7093',\r\n },\r\n {\r\n code: '#C71585',\r\n },\r\n // Purple ***************************\r\n {\r\n code: '#E6E6FA',\r\n },\r\n {\r\n code: '#D8BFD8',\r\n },\r\n {\r\n code: '#DDA0DD',\r\n },\r\n {\r\n code: '#DA70D6',\r\n },\r\n {\r\n code: '#FF00FF',\r\n },\r\n {\r\n code: '#BA55D3',\r\n },\r\n {\r\n code: '#9932CC',\r\n },\r\n {\r\n code: '#8A2BE2',\r\n\r\n },\r\n {\r\n code: '#8B008B',\r\n },\r\n {\r\n code: '#9370DB',\r\n },\r\n {\r\n code: '#7B68EE',\r\n },\r\n {\r\n code: '#6A5ACD',\r\n },\r\n {\r\n code: '#483D8B',\r\n },\r\n {\r\n code: '#663399',\r\n },\r\n {\r\n code: '#4B0082',\r\n },\r\n // Red ***************************\r\n {\r\n code: '#FFA07A',\r\n },\r\n {\r\n code: '#FA8072',\r\n },\r\n {\r\n code: '#F08080',\r\n },\r\n {\r\n code: '#CD5C5C',\r\n },\r\n {\r\n code: '#DC143C',\r\n },\r\n {\r\n code: '#FF0000',\r\n },\r\n {\r\n code: '#B22222',\r\n },\r\n {\r\n code: '#8B0000',\r\n },\r\n // Orange ***************************\r\n {\r\n code: '#FFA500',\r\n },\r\n {\r\n code: '#FF8C00',\r\n },\r\n {\r\n code: '#FF7F50',\r\n },\r\n {\r\n code: '#FF6347',\r\n },\r\n {\r\n code: '#FF4500',\r\n },\r\n {\r\n code: '#FFD700',\r\n },\r\n // Yellow ***************************\r\n {\r\n code: '#FFFF00',\r\n },\r\n {\r\n code: '#FFFFE0',\r\n },\r\n {\r\n code: '#FFFACD',\r\n },\r\n {\r\n code: '#FFEFD5',\r\n },\r\n {\r\n code: '#FFE4B5',\r\n },\r\n {\r\n code: '#FFDAB9',\r\n },\r\n {\r\n code: '#EEE8AA',\r\n },\r\n {\r\n code: '#F0E68C',\r\n },\r\n {\r\n code: '#BDB76B',\r\n },\r\n // Brown ***************************\r\n // {\r\n // code: '#FFF8DC'\r\n // },\r\n // {\r\n // code: '#FFEBCD'\r\n // },\r\n // {\r\n // code: '#FFE4C4'\r\n // },\r\n {\r\n code: '#FFDEAD'\r\n },\r\n {\r\n code: '#DEB887'\r\n },\r\n {\r\n code: '#D2B48C'\r\n },\r\n {\r\n code: '#DAA520'\r\n },\r\n {\r\n code: '#B8860B'\r\n },\r\n {\r\n code: '#CD853F'\r\n },\r\n {\r\n code: '#D2691E'\r\n },\r\n {\r\n code: '#8B4513'\r\n },\r\n {\r\n code: '#A0522D'\r\n },\r\n // Green ***************************\r\n {\r\n code: '#ADFF2F',\r\n },\r\n {\r\n code: '#7FFF00',\r\n },\r\n {\r\n code: '#00FF00',\r\n },\r\n {\r\n code: '#32CD32',\r\n },\r\n {\r\n code: '#98FB98',\r\n },\r\n {\r\n code: '#90EE90',\r\n },\r\n {\r\n code: '#00FA9A',\r\n },\r\n {\r\n code: '#00FF7F',\r\n },\r\n {\r\n code: '#3CB371',\r\n },\r\n {\r\n code: '#2E8B57',\r\n },\r\n {\r\n code: '#228B22',\r\n },\r\n {\r\n code: '#008000',\r\n },\r\n {\r\n code: '#006400',\r\n },\r\n {\r\n code: '#9ACD32',\r\n },\r\n {\r\n code: '#6B8E23',\r\n },\r\n {\r\n code: '#556B2F',\r\n },\r\n {\r\n code: '#66CDAA',\r\n },\r\n {\r\n code: '#8FBC8F',\r\n },\r\n {\r\n code: '#20B2AA',\r\n },\r\n {\r\n code: '#008B8B',\r\n },\r\n // Cyan ***************************\r\n\r\n {\r\n code: '#E0FFFF',\r\n },\r\n {\r\n code: '#AFEEEE',\r\n },\r\n {\r\n code: '#7FFFD4',\r\n },\r\n {\r\n code: '#40E0D0',\r\n },\r\n {\r\n code: '#48D1CC',\r\n },\r\n {\r\n code: '#00CED1',\r\n },\r\n // Blue ***************************\r\n {\r\n code: '#5F9EA0'\r\n },\r\n {\r\n code: '#4682B4'\r\n },\r\n {\r\n code: '#B0C4DE'\r\n },\r\n {\r\n code: '#ADD8E6'\r\n },\r\n {\r\n code: '#B0E0E6'\r\n },\r\n {\r\n code: '#87CEFA'\r\n },\r\n {\r\n code: '#87CEEB'\r\n },\r\n {\r\n code: '#6495ED'\r\n },\r\n {\r\n code: '#00BFFF'\r\n },\r\n {\r\n code: '#00FFFF',\r\n },\r\n {\r\n code: '#1E90FF'\r\n },\r\n {\r\n code: '#4169E1'\r\n },\r\n {\r\n code: '#0000FF'\r\n },\r\n {\r\n code: '#0000CD'\r\n },\r\n {\r\n code: '#00008B'\r\n },\r\n {\r\n code: '#191970'\r\n },\r\n // Gray\r\n {\r\n code: '#FFFFFF'\r\n },\r\n {\r\n code: '#DCDCDC'\r\n },\r\n {\r\n code: '#808080'\r\n },\r\n {\r\n code: '#708090'\r\n },\r\n {\r\n code: '#000000'\r\n },\r\n ];\r\n\r\n\r\n // validate(): Promise<IValidationRuleResult> {\r\n\r\n // return new Promise<IValidationRuleResult>(resolve => {\r\n // if (!this.validator) {\r\n // resolve({ result: true });\r\n // } else {\r\n // // this.validator.validate(this.model).then(r => {\r\n // // r.target = this;\r\n // // if (r.result) {\r\n // // this.errorText = null;\r\n // // } else {\r\n // // this.errorText = r.message;\r\n // // }\r\n // // resolve(r);\r\n // // });\r\n\r\n // resolve()\r\n // }\r\n // });\r\n // }\r\n\r\n focus() {\r\n }\r\n\r\n clear(): void {\r\n this.value = null;\r\n }\r\n\r\n onColorClick(item: AXColor) {\r\n this.value = item ? item.code : null;\r\n this.selectColor(item);\r\n this.onColorSelect.emit(this.value);\r\n }\r\n\r\n handleColorChange() {\r\n this.value = AXColorUtil.rgb2Hex(this.rColor, this.gColor, this.bColor);\r\n\r\n }\r\n\r\n private selectColor(item: AXColor) {\r\n this.colors.forEach((i) => {\r\n i.active = false;\r\n });\r\n item.active = true\r\n }\r\n\r\n handleKeyEvent(e: KeyboardEvent) {\r\n if (e.code == 'Enter' || e.code == 'NumpadEnter') {\r\n this.onColorSelect.emit(this.value);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, Input, Output, EventEmitter, ContentChild, ElementRef } from '@angular/core';\r\nimport { AXValidatableComponent, AXBaseSizableComponent, AXBaseInputComponent, AXElementSize } from '../base/element.class';\r\nimport { AXColorBoxComponent } from './color-box/color-box.component';\r\nimport { AXColorUtil, AXConfig } from '@acorex/core';\r\nimport { AXDropdownComponent } from '../dropdown/dropdown.component';\r\nimport { AXValidation } from '../validation/validation.component';\r\n\r\n\r\n@Component({\r\n selector: 'ax-color-picker',\r\n templateUrl: './color-picker.component.html',\r\n providers: [\r\n { provide: AXValidatableComponent, useExisting: AXColorPickerComponent },\r\n ],\r\n host: { style: 'display: contents;' }\r\n})\r\nexport class AXColorPickerComponent extends AXColorBoxComponent implements AXBaseSizableComponent, AXBaseInputComponent {\r\n\r\n @ViewChild('dropdown', { static: true })\r\n dropdown: AXDropdownComponent;\r\n @Input() placeholder: string = '';\r\n @Input() showClear: boolean = false;\r\n\r\n @Input() label: string;\r\n\r\n _text: string = '';\r\n\r\n constructor(private ref: ElementRef) {\r\n super();\r\n }\r\n\r\n @Input()\r\n readonly: boolean;\r\n @Input()\r\n disabled: boolean;\r\n @Input()\r\n size: AXElementSize = 'md';\r\n\r\n @Input()\r\n rtl: boolean = AXConfig.get('layout.rtl');\r\n\r\n @ContentChild(AXValidation, { static: true })\r\n private _contentValidation: AXValidation;\r\n\r\n private _validation: AXValidation;\r\n\r\n @Input()\r\n public get validation(): AXValidation {\r\n return this._validation ? this._validation : this._contentValidation;\r\n }\r\n\r\n public set validation(v: AXValidation) {\r\n this._validation = v;\r\n }\r\n\r\n\r\n ngOnInit() {\r\n if (this.rtl == null) {\r\n this.rtl = window.getComputedStyle(this.ref.nativeElement, null).getPropertyValue('direction') === 'rtl';\r\n }\r\n }\r\n\r\n\r\n ngAfterContentInit() {\r\n this.initValidation(this.ref, 'value', this.validation);\r\n }\r\n\r\n focus(): void {\r\n this.dropdown.focus();\r\n }\r\n\r\n // handleValueChange(c: string) {\r\n\r\n // }\r\n\r\n findTextColor(color: string) {\r\n if (!color) {\r\n return '#000';\r\n }\r\n return !(AXColorUtil.contrastToWhite(color) > 2.0) ? '#000' : '#fff';\r\n }\r\n\r\n handleItemClick(e) {\r\n this.dropdown.close();\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXColorPickerComponent } from './color-picker.component';\r\nimport { AXColorBoxComponent } from './color-box/color-box.component';\r\nimport { AXValidationModule } from '../validation/validation.module';\r\nimport { AXDropdownModule } from '../dropdown/dropdown.module';\r\nimport { AXTextBoxModule } from '../textbox/textbox.module';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [AXColorPickerComponent, AXColorBoxComponent],\r\n imports: [CommonModule, FormsModule, AXDropdownModule, AXValidationModule, AXTextBoxModule],\r\n exports: [AXColorPickerComponent, AXColorBoxComponent],\r\n providers: []\r\n})\r\nexport class AXColorPickerModule { }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AXRangePropertyEditorComponent } from './range.editor';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXLabelModule } from '../../../label/label.module';\r\nimport { AXPageModule } from '../../../page/page.module';\r\nimport { AXButtonModule } from '../../../button/button.module';\r\nimport { AXTranslatorModule } from '@acorex/core';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXRangePropertyEditorComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXTranslatorModule,\r\n AXTextBoxModule,\r\n AXNumberBoxModule,\r\n AXColorPickerModule,\r\n AXLabelModule,\r\n AXPageModule,\r\n AXValidationModule,\r\n AXButtonModule\r\n ],\r\n exports: [AXRangePropertyEditorComponent],\r\n entryComponents: [AXRangePropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXRangePropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXColorPickerComponent } from '../../../color-picker/color-picker.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-color-picker [(value)]=\"value\">\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-color-picker>\r\n `,\r\n})\r\nexport class AXColorPropertyEditorComponent extends AXProperyEditorComponent<string> {\r\n\r\n validation: AXValidation;\r\n\r\n @ViewChild(AXColorPickerComponent)\r\n private textBox: AXColorPickerComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.registerForValidationForm(this.textBox);\r\n this.initiated = true;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXColorPropertyEditorComponent } from './color.editor';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXColorPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXColorPickerModule, AXValidationModule],\r\n exports: [AXColorPropertyEditorComponent],\r\n entryComponents: [AXColorPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXColorPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ViewChild, TemplateRef, ChangeDetectorRef } from '@angular/core';\r\nimport { AXTranslator } from '@acorex/core';\r\nimport { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXPopupService } from '../../../popup/popup.service';\r\nimport { AXDataSourceReadParams } from '../../../data-source/read-param';\r\n\r\n\r\nexport interface AXTableColumnModel {\r\n id: number;\r\n index: number;\r\n fieldName: string;\r\n caption?: string;\r\n fieldType?: string;\r\n displayType?: string;\r\n fillByUser?: boolean;\r\n rowHeader?: boolean;\r\n}\r\n\r\n@Component({\r\n templateUrl: './column.editor.html',\r\n styleUrls: ['./column.editor.scss']\r\n})\r\nexport class ColumnPropertyEditorComponent extends AXProperyEditorComponent<AXTableColumnModel[]> implements OnInit {\r\n @ViewChild('tplEdit')\r\n tplEdit: TemplateRef<any>;\r\n\r\n columns: AXTableColumnModel[] = [];\r\n\r\n index: number = 2;\r\n\r\n constructor(protected cdr: ChangeDetectorRef, private popupService: AXPopupService) {\r\n super(cdr);\r\n }\r\n\r\n columnTypeData: any[] = [\r\n { id: 1, title: 'String' },\r\n { id: 2, title: 'Number' },\r\n { id: 3, title: 'Boolean' },\r\n { id: 4, title: 'Data' },\r\n { id: 5, title: 'Time' }\r\n ];\r\n\r\n ngOnInit(): void {\r\n this.columns = this.value ? JSON.parse(JSON.stringify(this.value)) : [];\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n }\r\n\r\n drop(event: CdkDragDrop<string[]>) {\r\n moveItemInArray(this.columns, event.previousIndex, event.currentIndex);\r\n }\r\n\r\n handleAddColumn() {\r\n this.columns.push({\r\n id: Math.floor(1000*Math.random()*9000),\r\n index: this.index,\r\n fieldName: 'ستون' + this.index,\r\n caption: 'ستون' + this.index,\r\n fieldType: '',\r\n displayType: '',\r\n fillByUser: false,\r\n rowHeader: false\r\n });\r\n this.index++;\r\n }\r\n\r\n handleAddClick() {\r\n if (this.columns.length === 0) {\r\n this.columns.push({\r\n id: Math.floor(1000*Math.random()*9000),\r\n index: 1,\r\n fieldName: 'ستون 1',\r\n caption: 'ستون 1',\r\n fieldType: '',\r\n displayType: '',\r\n fillByUser: false,\r\n rowHeader: false\r\n });\r\n }\r\n const popup = this.popupService.open(this.tplEdit, {\r\n title: 'ستون',\r\n size: 'lg',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n super.handleValueChange(this.columns);\r\n this.cdr.detectChanges();\r\n this.index++;\r\n popup.close();\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n this.cdr.detectChanges();\r\n popup.close();\r\n }\r\n }\r\n ]\r\n });\r\n }\r\n\r\n handleRemoveClick(item: AXTableColumnModel) {\r\n this.columns = this.columns.filter((c) => c.id !== item.id);\r\n super.handleValueChange(this.columns);\r\n }\r\n\r\n handleDataReceived = (e: AXDataSourceReadParams) => {\r\n return Promise.resolve(this.columnTypeData);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXLabelModule } from '../../../label/label.module';\r\nimport { AXPageModule } from '../../../page/page.module';\r\nimport { AXButtonModule } from '../../../button/button.module';\r\nimport { AXCheckBoxModule } from './../../../checkbox/checkbox.module';\r\nimport { ColumnPropertyEditorComponent } from './column.editor';\r\nimport { AXSelectBoxModule } from '../../../selectbox/selectbox.module';\r\nimport { AXDataSourceModule } from '../../../data-source/datasource.module';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [ColumnPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXTextBoxModule, AXNumberBoxModule, AXColorPickerModule, AXLabelModule, AXPageModule, AXButtonModule, AXCheckBoxModule, AXSelectBoxModule, AXDataSourceModule, DragDropModule],\r\n exports: [ColumnPropertyEditorComponent],\r\n entryComponents: [ColumnPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXColumnPropertyEditorModule {\r\n constructor() {\r\n }\r\n}\r\n","import { Component, ChangeDetectorRef, ViewChild, TemplateRef, ChangeDetectionStrategy, Input } from '@angular/core';\r\nimport { AXObjectUtil, AXTranslator } from '@acorex/core';\r\nimport { AXDataType, AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXPopupService } from '../../../popup/popup.service';\r\nimport { AXValidationFormComponent } from '../../../validation/validation-form.component';\r\n\r\n\r\n\r\n\r\nexport interface AXConditionalColorModel {\r\n color: string;\r\n operator: string;\r\n value: any;\r\n display?: string;\r\n}\r\n\r\n\r\n\r\n@Component({\r\n templateUrl: './conditional-color.editor.html',\r\n styleUrls: ['./conditional-color.editor.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class AXConditionalColorPropertyEditorComponent extends AXProperyEditorComponent<AXConditionalColorModel[]> {\r\n\r\n\r\n form: AXValidationFormComponent;\r\n\r\n @ViewChild('tplEdit')\r\n tplEdit: TemplateRef<any>;\r\n\r\n @Input()\r\n dataType: AXDataType = 'number';\r\n\r\n // @Input()\r\n // mode: string[] = ['color', 'title'];\r\n\r\n operators: { value: string, text: string, dataTypes?: AXDataType[] }[] = [];\r\n\r\n ranges: AXConditionalColorModel[] = [];\r\n\r\n editRow: AXConditionalColorModel;\r\n\r\n showSeparator: boolean = true;\r\n decimalNumber: number = 2;\r\n\r\n booleanItems = [{ value: true, text: AXTranslator.get('queryBuilder.true') }, { value: false, text: AXTranslator.get('queryBuilder.false') }];\r\n\r\n constructor(protected cdr: ChangeDetectorRef, private popupService: AXPopupService) {\r\n super(cdr);\r\n }\r\n\r\n\r\n onFormInit(e) {\r\n this.form = e.component;\r\n }\r\n\r\n ngOnInit() {\r\n this.ranges = this.value ? AXObjectUtil.deepCopy(this.value) : [];\r\n this.updateOperations();\r\n }\r\n\r\n\r\n\r\n updateOperations() {\r\n this.operators = [\r\n {\r\n value: '<',\r\n text: AXTranslator.get('queryBuilder.lt'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '<=',\r\n text: AXTranslator.get('queryBuilder.lte'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '>',\r\n text: AXTranslator.get('queryBuilder.gt'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '>=',\r\n text: AXTranslator.get('queryBuilder.gte'),\r\n dataTypes: ['string', 'number', 'date']\r\n },\r\n {\r\n value: '==',\r\n text: AXTranslator.get('queryBuilder.equal'),\r\n dataTypes: ['string', 'boolean', 'number', 'date']\r\n },\r\n {\r\n value: '<>',\r\n text: AXTranslator.get('queryBuilder.not-equal'),\r\n dataTypes: ['string', 'boolean', 'number', 'date']\r\n }\r\n ].filter(c => c.dataTypes == null || c.dataTypes.includes(this.dataType)) as any;\r\n }\r\n\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n handleEditClick(item: AXConditionalColorModel) {\r\n this.updateOperations();\r\n this.editRow = Object.assign({}, item);\r\n const popup = this.popupService.open(this.tplEdit, {\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n Object.assign(item, this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n title: AXTranslator.get('common.edit')\r\n });\r\n }\r\n\r\n handleAddClick() {\r\n this.updateOperations();\r\n this.editRow = {\r\n value: this.getDefaultValue(),\r\n color: null,\r\n operator: '=='\r\n };\r\n const popup = this.popupService.open(this.tplEdit, {\r\n title: AXTranslator.get('common.add-item'),\r\n size: 'sm',\r\n footerButtons: [\r\n {\r\n name: 'confirm',\r\n text: AXTranslator.get('common.confirm'),\r\n style: 'success',\r\n submitBehavior: true,\r\n cancelBehavior: false,\r\n onClick: () => {\r\n this.form.validate().then(c => {\r\n if (c.result) {\r\n super.handleValueChange(this.ranges);\r\n this.ranges.push(this.editRow);\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n });\r\n }\r\n },\r\n {\r\n name: 'cancel',\r\n text: AXTranslator.get('common.cancel'),\r\n style: 'danger blank',\r\n submitBehavior: false,\r\n cancelBehavior: true,\r\n onClick: () => {\r\n popup.close();\r\n this.editRow = null;\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n ],\r\n });\r\n }\r\n getDefaultValue(): any {\r\n switch (this.dataType) {\r\n case 'boolean':\r\n return true;\r\n case 'number':\r\n return 0;\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n handleRemoveClick(item: AXConditionalColorModel) {\r\n this.ranges = this.ranges.filter(c => !(c.value === item.value && c.operator === item.operator));\r\n super.handleValueChange(this.ranges);\r\n }\r\n\r\n\r\n getTitle(opr: string) {\r\n const oprItem = this.operators.find(c => c.value === opr);\r\n return oprItem ? AXTranslator.get(oprItem.text) : '';\r\n }\r\n\r\n getIcon(opr: string) {\r\n switch (opr) {\r\n case '==':\r\n return 'fa-equals';\r\n case '<>':\r\n return 'fa-not-equal';\r\n case '<':\r\n return 'fa-less-than';\r\n case '<=':\r\n return 'fa-less-than-equal';\r\n case '>':\r\n return 'fa-greater-than';\r\n case '>=':\r\n return 'fa-greater-than-equal';\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXTextBoxModule } from '../../../textbox/textbox.module';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXColorPickerModule } from '../../../color-picker/color-picker.module';\r\nimport { AXLabelModule } from '../../../label/label.module';\r\nimport { AXPageModule } from '../../../page/page.module';\r\nimport { AXButtonModule } from '../../../button/button.module';\r\nimport { AXTranslator, AXTranslatorModule } from '@acorex/core';\r\nimport { AXConditionalColorPropertyEditorComponent } from './conditional-color.editor';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXSelectBoxModule } from '../../../selectbox/selectbox.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXConditionalColorPropertyEditorComponent],\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n AXTranslatorModule,\r\n AXTextBoxModule,\r\n AXNumberBoxModule,\r\n AXColorPickerModule,\r\n AXLabelModule,\r\n AXPageModule,\r\n AXButtonModule,\r\n AXSelectBoxModule,\r\n AXValidationModule,\r\n ],\r\n exports: [AXConditionalColorPropertyEditorComponent],\r\n entryComponents: [AXConditionalColorPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXConditionalColorPropertyEditorModule {\r\n constructor() {\r\n AXTranslator.load('en', {\r\n 'conditional-color-property-editor': {\r\n 'replaced-color': 'Replaced Color',\r\n 'replaced-title': 'Replaced Title',\r\n }\r\n });\r\n //\r\n AXTranslator.load('fa', {\r\n 'conditional-color-property-editor': {\r\n 'replaced-color': 'رنگ جایگزین',\r\n 'replaced-title': 'متن جایگزین',\r\n }\r\n });\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-switch (onValueChanged)=\"handleValueChange($event)\" [value]=\"value\"></ax-switch>\r\n `,\r\n})\r\nexport class AXSwitchPropertyEditorComponent extends AXProperyEditorComponent<boolean> {\r\n\r\n\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXNumberBoxModule } from '../../../number-box/number-box.module';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXSwitchPropertyEditorComponent } from './number.editor';\r\nimport { AXSwitchModule } from '../../../switch/switch.module';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXSwitchPropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXNumberBoxModule, AXValidationModule, AXSwitchModule],\r\n exports: [AXSwitchPropertyEditorComponent],\r\n entryComponents: [AXSwitchPropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXSwitchPropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXDatePickerComponent } from '../../../date-picker/date-picker.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\nimport { AXCalendarType } from '@acorex/core'\r\n\r\n@Component({\r\n template: `\r\n <ax-date-picker [size]=\"size\" [dateType]=\"dateType\" [showToday]=\"showToday\" [disabled]=\"disabled\" [allowClear]=\"clearButton\" [readonly]=\"readonly\" [max]=\"max\" [min]=\"min\" [placeholder]=\"placeholder\" [showTodayButton]=\"showTodayButton\" [selectableHoliday]=\"selectableHoliday\" (onValueChanged)=\"handleValueChange($event)\"\r\n [type]=\"type\" [textAlign]=\"textAlign\" [(value)]=\"value\">\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-date-picker>\r\n `,\r\n})\r\nexport class AXDatePropertyEditorComponent extends AXProperyEditorComponent<Date> {\r\n\r\n showTodayButton: boolean = true;\r\n selectableHoliday: boolean = true;\r\n type: AXCalendarType = 'gregorian';\r\n textAlign: 'right' | 'left' | null = null;\r\n validation: AXValidation;\r\n placeholder: string = ''\r\n min: Date;\r\n max: Date;\r\n readonly: boolean;\r\n disabled: boolean;\r\n clearButton: boolean = false;\r\n showToday: boolean = false;\r\n dateType: any;\r\n size: string = 'md';\r\n\r\n @ViewChild(AXDatePickerComponent)\r\n private date: AXDatePickerComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n this.registerForValidationForm(this.date);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXDatePickerModule } from '../../../date-picker/date-picker.module';\r\nimport { AXDatePropertyEditorComponent } from './date.editor';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXDatePropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXDatePickerModule, AXValidationModule],\r\n exports: [AXDatePropertyEditorComponent],\r\n entryComponents: [AXDatePropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXDatePropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { Component, OnInit, ChangeDetectorRef, ViewChild } from '@angular/core';\r\nimport { AXDatePickerComponent } from '../../../date-picker/date-picker.component';\r\nimport { AXValidation } from '../../../validation/validation.component';\r\nimport { AXProperyEditorComponent } from '../../property-editor.class';\r\n\r\n@Component({\r\n template: `\r\n <ax-time-picker [showCurentTime]=\"showCurentTime\" [timeType]=\"timeType\" [allowClear]=\"clearButton\" (onValueChanged)=\"handleValueChange($event)\">\r\n <ax-validation [rules]=\"validation?.rules\">\r\n </ax-validation>\r\n </ax-time-picker>\r\n `,\r\n})\r\nexport class AXTimePropertyEditorComponent extends AXProperyEditorComponent<String> {\r\n\r\n\r\n timeType: any;\r\n validation: AXValidation;\r\n showCurentTime: boolean = false;\r\n clearButton: boolean = false;\r\n\r\n @ViewChild(AXDatePickerComponent)\r\n private time: AXDatePickerComponent;\r\n\r\n constructor(protected cdr: ChangeDetectorRef) {\r\n super(cdr);\r\n }\r\n\r\n handleValueChange(e: any) {\r\n super.handleValueChange(e.value?.time);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.initiated = true;\r\n this.registerForValidationForm(this.time);\r\n }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { AXValidationModule } from '../../../validation/validation.module';\r\nimport { AXTimePickerModule } from '../../../time-picker/time-picker.module';\r\nimport { AXTimePropertyEditorComponent } from './time.editor';\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [AXTimePropertyEditorComponent],\r\n imports: [CommonModule, FormsModule, AXTimePickerModule, AXValidationModule],\r\n exports: [AXTimePropertyEditorComponent],\r\n entryComponents: [AXTimePropertyEditorComponent],\r\n providers: [],\r\n})\r\nexport class AXTimePropertyEditorModule {\r\n constructor() {\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { AXTextPropertyEditorModule } from './editors/text-editor/text.module';\r\nimport { AXPropertyEditorRendererDirective } from './property-editor-renderer.directive';\r\nimport { RouterModule } from '@angular/router';\r\nimport { AXTextPropertyEditorComponent } from './editors/text-editor/text.editor';\r\nimport { AXNumberBoxPropertyEditorComponent } from './editors/number-editor/number.editor';\r\nimport { AXNumberBoxPropertyEditorModule } from './editors/number-editor/number.module';\r\nimport { AXSelectBoxPropertyEditorComponent } from './editors/selectbox-editor/selectbox.editor';\r\nimport { AXSelectBoxPropertyEditorModule } from './editors/selectbox-editor/selectbox.module';\r\nimport { AXRangePropertyEditorModule } from './editors/range-editor/range.module';\r\nimport { AXRangePropertyEditorComponent } from './editors/range-editor/range.editor';\r\nimport { AXColorPropertyEditorComponent } from './editors/color-editor/color.editor';\r\nimport { AXColorPropertyEditorModule } from './editors/color-editor/color.module';\r\nimport { ColumnPropertyEditorComponent } from './editors/column-editor/column.editor';\r\nimport { AXColumnPropertyEditorModule } from './editors/column-editor/column.module';\r\nimport { AXConditionalColorPropertyEditorComponent } from './editors/conditional-color-editor/conditional-color.editor';\r\nimport { AXConditionalColorPropertyEditorModule } from './editors/conditional-color-editor/conditional-color.module';\r\nimport { AXSwitchPropertyEditorModule } from './editors/switch-editor/number.module';\r\nimport { AXSwitchPropertyEditorComponent } from './editors/switch-editor/number.editor';\r\nimport { AXDatePropertyEditorModule } from './editors/date-editor/date.module';\r\nimport { AXDatePropertyEditorComponent } from './editors/date-editor/date.editor';\r\nimport { AXTimePropertyEditorModule } from './editors/time-editor/time.module';\r\nimport { AXTimePropertyEditorComponent } from './editors/time-editor/time.editor';\r\n\r\n\r\nconst WDIGET_MODULES = [\r\n AXNumberBoxPropertyEditorModule,\r\n AXTextPropertyEditorModule,\r\n AXSelectBoxPropertyEditorModule,\r\n AXRangePropertyEditorModule,\r\n AXColorPropertyEditorModule,\r\n AXConditionalColorPropertyEditorModule,\r\n AXColumnPropertyEditorModule,\r\n AXSwitchPropertyEditorModule,\r\n AXDatePropertyEditorModule,\r\n AXTimePropertyEditorModule\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n WDIGET_MODULES,\r\n RouterModule.forChild([\r\n {\r\n component: AXTextPropertyEditorComponent,\r\n path: 'ax/editors/text'\r\n },\r\n {\r\n component: AXSelectBoxPropertyEditorComponent,\r\n path: 'ax/editors/select'\r\n },\r\n {\r\n component: AXNumberBoxPropertyEditorComponent,\r\n path: 'ax/editors/number'\r\n },\r\n {\r\n component: AXRangePropertyEditorComponent,\r\n path: 'ax/editors/range'\r\n },\r\n {\r\n component: AXConditionalColorPropertyEditorComponent,\r\n path: 'ax/editors/conditional-color'\r\n },\r\n {\r\n component: AXColorPropertyEditorComponent,\r\n path: 'ax/editors/color'\r\n },\r\n {\r\n component: AXSwitchPropertyEditorComponent,\r\n path: 'ax/editors/switch'\r\n },\r\n {\r\n component: ColumnPropertyEditorComponent,\r\n path: 'ax/editors/column'\r\n }, {\r\n component: AXDatePropertyEditorComponent,\r\n path: 'ax/editors/date'\r\n },\r\n {\r\n component: AXTimePropertyEditorComponent,\r\n path: 'ax/editors/time'\r\n },\r\n ])\r\n ],\r\n exports: [AXPropertyEditorRendererDirective],\r\n declarations: [AXPropertyEditorRendererDirective],\r\n providers: [],\r\n})\r\nexport class AXProppertyEditorModule { }\r\n"]}
|