{"version":3,"sources":["webpack:///./node_modules/devextreme/esm/renovation/component_wrapper/button.js","webpack:///./node_modules/devextreme/esm/renovation/ui/common/icon.js","webpack:///./node_modules/devextreme/esm/renovation/ui/common/ink_ripple.js","webpack:///./node_modules/devextreme/esm/renovation/ui/button.js","webpack:///./node_modules/devextreme/esm/renovation/ui/button.j.js","webpack:///./node_modules/devextreme/esm/ui/button.js","webpack:///./node_modules/@devextreme/runtime/esm/inferno/effect_host.js","webpack:///./node_modules/@devextreme/runtime/esm/inferno/base_component.js","webpack:///./node_modules/@devextreme/runtime/esm/inferno/create_context.js","webpack:///./node_modules/@devextreme/runtime/esm/inferno/effect.js","webpack:///./node_modules/@devextreme/runtime/esm/inferno/portal.js","webpack:///./node_modules/@devextreme/runtime/esm/inferno/re_render_effect.js","webpack:///./node_modules/@devextreme/runtime/esm/inferno/mocked/shared.js","webpack:///./node_modules/@devextreme/runtime/esm/inferno/mocked/hydrate.js","webpack:///./node_modules/@devextreme/runtime/esm/inferno/render_template.js","webpack:///./node_modules/@devextreme/runtime/esm/inferno/normalize_styles.js","webpack:///./node_modules/devextreme/esm/core/inferno_renderer.js","webpack:///./node_modules/devextreme/esm/renovation/utils/shallow_equals.js","webpack:///./node_modules/devextreme/esm/renovation/component_wrapper/common/template_wrapper.js","webpack:///./node_modules/devextreme/esm/renovation/component_wrapper/utils/update_props_immutable.js","webpack:///./node_modules/devextreme/esm/renovation/component_wrapper/common/component.js","webpack:///./node_modules/devextreme/esm/renovation/utils/subscribe_to_event.js","webpack:///./node_modules/devextreme/esm/renovation/common/config_provider.js","webpack:///./node_modules/devextreme/esm/renovation/utils/resolve_rtl.js","webpack:///./node_modules/devextreme/esm/renovation/ui/common/widget.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.js","webpack:///./node_modules/devextreme/esm/renovation/ui/common/base_props.js","webpack:///./node_modules/devextreme/esm/ui/validation_engine.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/animator.js","webpack:///./node_modules/inferno-create-element/dist/index.esm.js","webpack:///./node_modules/devextreme/esm/renovation/ui/scroll_view/utils/get_element_location_internal.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.old.js","webpack:///./node_modules/devextreme/esm/events/gesture/swipeable.js","webpack:///./node_modules/devextreme/esm/renovation/ui/scroll_view/utils/get_relative_offset.js","webpack:///./node_modules/devextreme/esm/renovation/ui/scroll_view/common/consts.js","webpack:///./node_modules/devextreme/esm/ui/multi_view/ui.multi_view.animation.js","webpack:///./node_modules/devextreme/esm/ui/multi_view.js","webpack:///./node_modules/devextreme/esm/ui/tabs/item.js","webpack:///./node_modules/devextreme/esm/ui/tabs/constants.js","webpack:///./node_modules/devextreme/esm/renovation/ui/scroll_view/utils/get_scroll_left_max.js","webpack:///./node_modules/devextreme/esm/renovation/ui/scroll_view/utils/get_boundary_props.js","webpack:///./node_modules/devextreme/esm/ui/tabs.js","webpack:///./node_modules/devextreme/esm/ui/tab_panel/item.js","webpack:///./node_modules/devextreme/esm/ui/tab_panel.js","webpack:///./node_modules/devextreme/esm/renovation/ui/scroll_view/utils/scroll_direction.js","webpack:///./node_modules/devextreme/esm/events/swipe.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.native.js","webpack:///./node_modules/devextreme/esm/renovation/common/config_context.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollbar.js","webpack:///./node_modules/devextreme/esm/renovation/utils/combine_classes.js","webpack:///./node_modules/devextreme/esm/ui/widget/utils.ink_ripple.js","webpack:///./node_modules/devextreme/esm/events/gesture/emitter.gesture.scroll.js","webpack:///./node_modules/inferno/dist/index.esm.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.device.js","webpack:///./node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.simulated.js"],"names":["getGroupConfig","this","_findGroup","props","super","getProps","onClick","_ref","event","_clickAction","validationGroup","_validationGroupConfig","iconType","icon","iconTemplate","_createTemplateComponent","template","_","value","button","viewRef","activate","deactivate","needValidate","validationStatus","_createAction","_ref2","submitInput","validationResult","validate","status","option","complete","then","_ref3","click","preventDefault","stopPropagation","_initializeComponent","_addAction","_getSubmitAction","_createClickAction","_initMarkup","$content","$element","find","$template","children","filter","$input","length","addClass","append","replaceWith","options","_patchOptionValues","templateData","_templateData","findGroup","_modelByElement","_createActionByOption","excludeValidators","name","_optionChanged","_excluded","viewFunction","iconClassName","IconTemplate","source","sourceType","alt","src","IconProps","position","getTemplate","TemplateProp","defaultProps","state","generalClasses","cssClass","concat","String","_this$props","restProps","restAttributes","model","InkRippleProps","config","Object","freeze","__getterCache","hideWave","bind","showWave","getConfig","opts","nextProps","nextState","context","stylingModes","getCssClasses","iconPosition","stylingMode","text","type","isValidStylingMode","includes","classesMap","viewModel","ButtonTemplate","renderText","isIconLeft","iconComponent","iconSource","accessKey","activeStateEnabled","aria","className","classes","cssClasses","disabled","focusStateEnabled","height","hint","hoverStateEnabled","onActive","onWidgetClick","onInactive","onKeyDown","keyDown","rtlEnabled","tabIndex","visible","width","data","buttonTemplateData","useSubmitBehavior","submitInputRef","useInkRipple","inkRippleConfig","inkRippleRef","contentRef","widgetRef","ButtonProps","create","prototype","getOwnPropertyDescriptors","defaultOptionRules","device","devices","real","deviceType","isSimulator","focus","submitEffect","checkDeprecation","onSubmit","_this$_effects$","_this$_effects$2","_effects","update","on","current","namespace","off","errors","log","element","e","keyName","originalEvent","which","result","cancel","label","isPathToImage","test","replace","message","format","_titleRegexp$exec$","_titleRegexp$exec","title","exec","role","isCentered","useHoldAnimation","waveSizeCoefficient","componentWillUpdate","__defaultOptionRules","defaultOptions","rule","push","_wrapKeyDownHandler","_this$viewRef","arguments","_this$viewRef2","_this$viewRef3","twoWay","allowNull","elements","templates","InfernoEffectHost","lockCount","callbacks","Error","effects","forEach","callback","areObjectsEqual","firstObject","secondObject","bothAreObjects","firstObjectKeys","keys","secondObjectKeys","hasDifferentElement","some","key","_pendingContext","lock","_nextProps","_nextState","_context","createEffects","callEffects","updateEffects","dispose","destroyEffects","vDomElement","el","currentClasses","split","addedClasses","dxClasses","previous","indexOf","removedClasses","indexInRemoved","removed","splice","added","indexInAdded","$LI","componentDidMount","componentDidUpdate","classList","add","remove","shouldUpdate","shouldComponentUpdate","vDomUpdateClasses","contextId","createContext","defaultValue","id","Provider","assign","InfernoEffect","effect","dependency","destroy","currentDependency","d","i","createReRenderEffect","ERROR_MSG","isNullOrUndef","o","isInvalid","isFunction","isNull","throwError","isSameInnerHTML","dom","innerHTML","tempdom","document","createElement","findLastDOMFromVNode","vNode","flags","childFlags","isSamePropsInnerHTML","Boolean","dangerouslySetInnerHTML","__html","hydrateComponent","parentDOM","isSVG","isClass","lifecycle","ref","currentNode","instance","input","hydrateVNode","$CX","hydrateChildren","parentVNode","parentNode","nextSibling","appendChild","createTextNode","childNodes","nodeType","textContent","nodeValue","prevVNodeIsTextNode","len","child","removeChild","firstChild","hydrateElement","replaceChild","removeAttribute","setAttribute","hydrateText","hydrateFragment","currentDom","hydrate","listener","undefined","shift","$V","getContainer","_a","_b","container","get","item","renderTemplate","_component","setTimeout","hasTemplate","properties","NUMBER_STYLES","Set","isNumeric","Number","isNaN","getNumberStyleValue","style","has","uppercasePattern","kebabCase","str","toLowerCase","normalizeStyles","styles","entries","reduce","acc","insertBefore","component","onAfterRender","onPreRender","render","nextNode","rootNode","mountNode","createDocumentFragment","vNodeAlreadyExists","shallowEquals","every","isDxElementWrapper","toArray","buildTemplateArgs","_model$data","args","isEqual","renderTemplateContent","_props$model","index","isNode","rendered","transclude","renovated","isFinite","removeDifferentElements","oldChildren","newChildren","newElement","hasOldChild","oldElement","node","$container","$oldContainerContent","contents","content","$actualContainerContent","nextModel","nextTemplate","equalityComparer","nextData","nextIndex","cloneObjectValue","Array","isArray","cloneObjectProp","prevValue","fullNameParts","slice","updatePropsImmutable","fullName","currentPropsValue","prevPropsValue","setDefaultOptionValue","defaultValueGetter","hasOwnProperty","call","_shouldRaiseContentReady","validateKeyDownHandler","supportedKeyNames","getSupportedKeyNames","hasComponentDefaultKeyHandlers","hasComponentKeyDownMethod","_viewComponent","_this$_viewRef","_viewRef","contentReadyOptions","_getContentReadyOptions","_checkContentReadyOption","optionName","_actionsMap","onContentReady","viewDefaultProps","_getViewComponentDefaultProps","extend","_getDefaultOptions","_propsInfo","defaultName","eventName","unwrappedProps","_this$_templateManage","_templateManager","addDefaultTemplates","getDefaultTemplates","optionProxy","_getUnwrappedOption","_props","_optionsWithDefaultTemplates","_componentTemplates","_getActionConfigsFull","defaultKeyHandlers","_createDefaultKeyHandlers","_renderWrapper","containerNode","_isNodeReplaced","_fireContentReady","_options","silent","_removeWidget","_dispose","_elementAttr","attributes","attrs","from","attr","_attributes$attr$name","specified","updatedAttributes","isDomAttr","_storedClasses","getAttribute","elemStyle","getPropertyValue","class","defaultWidgetPropsKeys","onKeyboardHandled","event_options","widgetProps","_getAdditionalProps","propName","_patchElementParam","cssText","_this$elementAttr$cla","_elementAttr$class","elementAttr","_extractDefaultSlot","_aria","prepareStyleProp","c","a","join","trim","_getActionConfigs","_getAdditionalActionConfigs","defaultTemplates","values","_templatesInfo","templateOptions","_ref4","_options$templateName","templateName","templateValue","_init","customKeyHandlers","createKeyDownOptions","actionToAdd","action","actionByOption","actArgs","previousValue","_invalidate","_getTemplate","anonymousTemplateName","templateOption","initialHandler","func","handler","error","_refresh","IS_RENOVATED_WIDGET","subscribeToEvent","eventData","subscribeToClickEvent","subscribeToDxActiveEvent","scroll","init","start","move","end","stop","down","up","subscribeToDxInactiveEvent","subscribeToDxHoverStartEvent","subscribeToDxHoverEndEvent","subscribeToDxFocusInEvent","subscribeToDxFocusOutEvent","ConfigProviderProps","resolveRtlEnabled","rtlProp","resolveRtlEnabledDefinition","isPropDefined","onlyGlobalDefined","DEFAULT_FEEDBACK_HIDE_TIMEOUT","DEFAULT_FEEDBACK_SHOW_TIMEOUT","getAria","r","widget","widgetElementRef","shouldRenderConfigProvider","WidgetProps","_feedbackHideTimeout","_feedbackShowTimeout","addWidgetClass","active","focused","hovered","setRootElementRef","activeEffect","inactiveEffect","clickEffect","blur","focusInEffect","focusOutEffect","hoverStartEffect","hoverEndEffect","keyboardEffect","resizeEffect","windowResizeEffect","visibilityEffect","applyCssTextEffect","activeStateUnit","onFocusIn","onFocusOut","onHoverStart","onHoverEnd","onDimensionChanged","onVisibilityChange","_this$_effects$3","_this$_effects$4","_this$_effects$5","_this$_effects$6","_this$_effects$7","_this$_effects$8","_this$_effects$9","_this$_effects$10","_this$_effects$11","_this$_effects$12","_this$_effects$13","onRootElementRendered","rootElementRef","selector","setState","__state_argument","timeout","isDefaultPrevented","hidden","computedWidth","computedHeight","isFocusable","isHoverable","canBeActive","trigger","activeElement","getActiveElement","BaseWidgetProps","STATUS","valid","invalid","pending","BaseRuleValidator","NAME","getFormatter","rulesValidators","required","valueArray","itemValue","_validate","RequiredRuleValidator","NumericRuleValidator","ignoreEmptyValue","_isValueEmpty","useCultureSettings","parse","RangeRuleValidator","validNumber","numeric","validValue","number","parseFloat","valueOf","min","max","StringLengthRuleValidator","_value","range","CustomRuleValidator","validator","dataGetter","extraParams","params","validationCallback","AsyncRuleValidator","reevaluate","callbackResult","_getWrappedPromise","promise","deferred","res","resolve","err","isValid","CompareRuleValidator","comparisonTarget","otherValue","comparisonType","PatternRuleValidator","pattern","RegExp","EmailRuleValidator","stringLength","custom","async","compare","email","GroupConfig","inherit","group","validators","_pendingValidators","_onValidatorStatusChanged","_resetValidationInfo","_eventsStrategy","brokenRules","_unsubscribeFromAllChangeEvents","validatorResult","_addPendingValidator","_subscribeToChangeEvents","_raiseValidatedEvent","_updateValidationInfo","_validationInfo","_unsubscribeFromChangeEvents","foundValidator","val","orderedRules","foundRules","rules","_orderBrokenRules","_resolveIfComplete","_removePendingValidator","_updateBrokenRules","fireEvent","_synchronizeValidationInfo","reset","eventHandler","ValidationEngine","groups","_$element$data","_$element$data$dxComp","hasValidationGroup","dxComponents","dxValidationGroup","$dxGroup","parents","first","addGroup","info","defaultFormattedMessage","defaultMessage","brokenRule","_rules$","validationRules","pendingRules","asyncRuleItems","ruleValidationResult","ruleValidator","_addBrokenRule","_setDefaultMessage","_validateAsyncRules","items","_synchronizeGroupValidationInfo","_result$brokenRules","groupConfig","_validationGroup","asyncResults","validateResult","asyncResult","ruleResult","_getPatchedRuleResult","_updateRuleConfig","Promise","all","_getAsyncRulesResult","registerValidator","validatorsInGroup","isDefaultGroup","isValidationGroupInstance","removeRegisteredValidator","_shouldRemoveGroup","removeGroup","initedOptions","prop","synchronizeValidationOptions","newStatus","validationError","validationErrors","initGroups","abstract","Animator","ctor","_finished","_stopped","_proxiedStepCore","_stepCore","_stepAnimationFrame","_isStopped","_stop","_isFinished","_complete","_step","inProgress","isString","isUndefined","componentHooks","onComponentDidMount","onComponentDidUpdate","onComponentShouldUpdate","onComponentWillMount","onComponentWillUnmount","onComponentWillUpdate","_children","newProps","arguments$1","childLen","prop$1","getElementLocationInternal","targetElement","direction","containerElement","scrollOffset","offset","additionalOffset","top","left","right","bottom","isVertical","inverseProp","dimension","containerOffsetSize","containerClientSize","containerSize","getBoundingClientRect","elementSize","scale","Math","abs","relativeElementOffset","containerScrollOffset","relativeStartOffset","relativeEndOffset","SCROLLABLE","SCROLLABLE_STRATEGY","SCROLLABLE_CLASS","SCROLLABLE_DISABLED_CLASS","SCROLLABLE_CONTAINER_CLASS","SCROLLABLE_WRAPPER_CLASS","SCROLLABLE_CONTENT_CLASS","VERTICAL","HORIZONTAL","BOTH","Scrollable","callBase","onScroll","showScrollbar","useNative","bounceEnabled","scrollByContent","scrollByThumb","onUpdated","onStart","onEnd","onBounce","useSimulatedScrollbar","useKeyboard","inertiaEnabled","updateManually","_defaultOptionsRules","platform","browser","mozilla","_initOptions","_setUseSimulatedScrollbar","initialOption","_initScrollableMarkup","_locked","_visibilityChanged","_updateRtlPosition","_savedScrollOffset","scrollTo","_$container","$wrapper","_$wrapper","_$content","appendTo","_dimensionChanged","_renderDirection","_render","_renderStrategy","_attachEventHandlers","_renderDisabledState","_createActions","needInitializeRtlConfig","_strategy","updateRtlPosition","_getMaxOffset","scrollWidth","clientWidth","scrollHeight","clientHeight","strategy","initEventData","getDirection","isNative","scrollTarget","_initHandler","handleStart","handleMove","handleEnd","handleCancel","handleStop","handleScroll","_isLocked","_updateIfNeed","_moveIsAllowed","_prepareDirections","handleInit","apply","toggleClass","_lock","_unlock","removeClass","_createStrategy","createActions","_clean","_resetInactiveDirection","disabledChanged","inactiveProp","_getInactiveProp","_location","location","_normalizeLocation","x","y","_isDirection","_updateAllowedDirection","allowedDirections","_allowedDirections","vertical","horizontal","_allowedDirectionValue","_allowedDirection","_getScrollOffset","_isRtlNativeStrategy","scrollTop","scrollLeft","done","scrollBy","distance","targetLocation","_applyScaleRatio","scrollToElement","elementInsideContent","elementIsInsideContent","scrollPosition","getScrollElementPosition","_useTemplates","isRenovated","DX_SWIPEABLE","SWIPEABLE_CLASS","ACTION_TO_EVENT_MAP","onCancel","IMMEDIATE_TIMEOUT","Swipeable","elastic","immediate","immediateTimeout","itemSizeFunc","_detachEventHandlers","_createEventData","actionName","_eventData","getRelativeOffset","targetElementClass","sourceElement","_element","offsetParent","contains","parentElement","elementRect","parentElementRect","DIRECTION_VERTICAL","DIRECTION_HORIZONTAL","DIRECTION_BOTH","_translator","animation","duration","completeAction","fx","animate","to","MULTIVIEW_CLASS","MULTIVIEW_WRAPPER_CLASS","MULTIVIEW_ITEM_CONTAINER_CLASS","MULTIVIEW_ITEM_CLASS","MULTIVIEW_ITEM_HIDDEN_CLASS","MULTIVIEW_ITEM_DATA_KEY","MULTIVIEW_ANIMATION_DURATION","toNumber","MultiView","_activeStateUnit","_supportedKeys","pageUp","pageDown","selectedIndex","swipeEnabled","animationEnabled","loop","deferRendering","_itemAttributes","loopItemFocus","selectOnFocus","selectionMode","selectionRequired","selectByClick","_itemClass","_itemDataKey","_itemContainer","_$itemContainer","_itemElements","_itemSelector","_itemWidth","_itemWidthValue","_clearItemWidthCache","_itemsCount","_normalizeIndex","count","_getRTLSignCorrection","_findBoundaryIndices","_initSwipeable","_deferredItems","selectedItemIndices","_getSelectedItemIndices","_updateItemsVisibility","_afterItemElementDeleted","$item","deletedActionArgs","itemIndex","_beforeItemElementInserted","change","_executeItemRenderAction","itemData","itemElement","_renderItemContent","renderContentDeferred","that","$itemContent","_updateItems","newIndex","_updateItemsPosition","_modifyByChanges","$itemElements","positionSign","_animationDirection","$selectedItem","eq","each","isHidden","_renderSpecificItem","setAria","hasItemContent","_itemContentClass","_refreshItem","_setAriaSelectionAttribute","_updateSelection","addedSelection","removedSelection","prevIndex","animationDirection","_animateItemContainer","completeCallback","moveTo","containerPosition","indexDifference","_getItemFocusLoopSignCorrection","isSwipePresent","directionSignVariable","_createComponent","_getSwipeDisabledState","_swipeStartHandler","_swipeUpdateHandler","_swipeEndHandler","_firstIndex2","_lastIndex","firstIndex","lastIndex","_firstIndex","isDisabled","_boundaryIndices","firstAvailableIndex","lastAvailableIndex","firstTrueIndex","lastTrueIndex","rtl","maxLeftOffset","maxRightOffset","_swipeDirection","swipeDirection","isFirstActive","isLastActive","targetOffset","newSelectedIndex","_findNextAvailableIndex","$selectedElement","itemElements","_itemFocusLooped","_moveFocus","_prevItem","$items","$result","is","last","_nextItem","getInstance","_updateSwipeDisabledState","TABS_ITEM_BADGE_CLASS","BADGE_CLASS","TabsItem","_renderWatchers","_startWatcher","_renderBadge","badge","_$element","$badge","TABS_EXPANDED_CLASS","getScrollLeftMax","isReachedLeft","scrollOffsetLeft","epsilon","round","isReachedRight","TABS_CLASS","TABS_WRAPPER_CLASS","TABS_STRETCHED_CLASS","TABS_SCROLLABLE_CLASS","TABS_NAV_BUTTONS_CLASS","OVERFLOW_HIDDEN_CLASS","TABS_ITEM_CLASS","TABS_ITEM_SELECTED_CLASS","TABS_NAV_BUTTON_CLASS","TABS_LEFT_NAV_BUTTON_CLASS","TABS_RIGHT_NAV_BUTTON_CLASS","TABS_ITEM_TEXT_CLASS","FOCUSED_NEXT_TAB_CLASS","TABS_ITEM_DATA_KEY","BUTTON_NEXT_ICON","BUTTON_PREV_ICON","FEEDBACK_HIDE_TIMEOUT","FEEDBACK_DURATION_INTERVAL","FEEDBACK_SCROLL_TIMEOUT","TAB_OFFSET","Tabs","showNavButtons","scrollingEnabled","badgeExpr","themeName","_renderMultiple","_initTemplates","_prepareDefaultItemTemplate","$iconElement","prependTo","wrapInner","_createItemByTemplate","itemTemplate","renderArgs","_deferredTemplates","onRendered","_selectedItemClass","_renderInkRipple","_deferRenderScrolling","_renderScrolling","removeClasses","_isItemsWidthExceeded","_scrollable","_renderScrollable","_renderNavButtons","scrollable","getScrollable","_updateNavButtonsVisibility","_scrollToItem","_cleanScrolling","_needStretchItems","tabItemsWidth","_getSummaryItemsWidth","_getVisibleItems","$visibleItems","elementWidth","itemsWidth","maxTabWidth","_cleanNavButtons","_leftButton","_rightButton","_inkRipple","_getPointerEvent","pointer","_toggleActiveState","$itemContainer","_editStrategy","getItemElement","_createNavButton","$leftButton","prepend","$rightButton","_updateScrollPosition","holdAction","_holdInterval","setInterval","holdEventName","hold","pointerUpEventName","pointerOutEventName","out","navButton","integrationOptions","$navButton","_clearInterval","clearInterval","_itemSelectHandler","isItemSelected","currentTarget","isNextTabFocused","currentIndex","_toggleFocusedNextClass","ItemClass","TABPANEL_CLASS","TABPANEL_TABS_CLASS","TABPANEL_CONTAINER_CLASS","DISABLED_FOCUSED_TAB_CLASS","TabPanel","itemTitleTemplate","onTitleClick","onTitleHold","onTitleRendered","_createTitleActions","_renderLayout","_createTitleClickAction","_createTitleHoldAction","_createTitleRenderedAction","_titleClickAction","_titleHoldAction","_titleRenderedAction","_renderContent","_resizeEventTimer","_updateLayout","_tabs","_$tabContainer","$tabs","_tabConfig","tabsHeight","css","marginTop","paddingTop","_refreshActiveDescendant","tabs","tabItems","$activeTab","getFocusedItemId","repaintChangesOnly","onItemClick","onItemHold","itemHoldTimeout","onSelectionChanged","onItemRendered","_getTemplateByOption","noDataText","itemTemplateProperty","onOptionChanged","$value","$newItem","_focusInHandler","_isFocusOutHandlerExecuting","_focusOutHandler","_renderFocusTarget","_focusTarget","isFocused","_toggleFocusClass","_updateFocusState","isTabsTarget","target","isMultiViewTarget","_isDisabled","_toggleWrapperFocusedClass","_toggleDisabledFocusedClass","_setTabsOption","registerKeyHandler","repaint","selectedTabContent","newItem","clearTimeout","ScrollDirection","SWIPE_START_EVENT","SWIPE_EVENT","SWIPE_END_EVENT","HorizontalStrategy","defaultItemSizeFunc","getElement","getBounds","_maxLeftOffset","_maxRightOffset","calcOffsetRatio","endEventData","_savedEventData","_itemSizeFunc","isFastSwipe","FAST_SWIPE_SPEED_LIMIT","_tickData","time","VerticalStrategy","_maxTopOffset","_maxBottomOffset","STRATEGIES","SwipeEmitter","TICK_INTERVAL","_getStrategy","_defaultItemSizeFunc","_start","_fireEvent","maxTopOffset","maxBottomOffset","_move","moveEventData","_fitOffset","cancelable","_end","offsetRatio","isFast","startOffset","_calcTargetOffset","bounds","ceil","emitter","events","SCROLLABLE_NATIVE","SCROLLABLE_NATIVE_CLASS","SCROLLABLE_SCROLLBAR_SIMULATED","SCROLLABLE_SCROLLBARS_HIDDEN","HIDE_SCROLLBAR_TIMEOUT","NativeStrategy","_direction","_useSimulatedScrollbar","_isScrollbarVisible","_renderScrollbars","isFirstRender","_moveScrollbars","_scrollbars","_hideScrollbarTimeout","_renderScrollbar","expandable","isScrollingEvent","_eachScrollbar","scrollbar","_scrollAction","_updateAction","_createActionArgs","_eventForUserAction","reachedLeft","_isReachedRight","_isReachedLeft","reachedRight","reachedTop","reachedBottom","_normalizeOffsetLeft","_hideScrollbars","_update","_updateDimensions","_updateScrollbars","_containerSize","_componentContentSize","_contentSize","contentSize","scrollableNativeRegexp","match","_removeScrollbars","_isScrolledInMaxDirection","delta","shiftKey","ConfigContext","SCROLLBAR","SCROLLABLE_SCROLLBAR_CLASS","SCROLLABLE_SCROLLBAR_ACTIVE_CLASS","SCROLLABLE_SCROLL_CLASS","SCROLLABLE_SCROLL_CONTENT_CLASS","HOVER_ENABLED_STATE","THUMB_MIN_SIZE","SCROLLBAR_VISIBLE","onHover","always","never","activeScrollbar","Scrollbar","visibilityMode","scaleRatio","_isHovered","_renderThumb","_attachPointerDownHandler","_isHoverMode","_$thumb","isThumb","_dimension","_prop","feedbackOn","feedbackOff","cursorEnter","_needScrollbar","cursorLeave","_renderDimensions","_toggleVisibility","_adjustVisibility","_baseContainerToContentRatio","_isHidden","scrollBarLocation","_calculateScrollBarPosition","_thumbRatio","baseContainerSize","baseContentSize","_realContainerToContentRatio","thumbSize","containerToContentRatio","_normalizeSize","size","subscribeGlobal","getDocument","combineClasses","p","INKRIPPLE_CLASS","INKRIPPLE_WAVE_CLASS","INKRIPPLE_SHOWING_CLASS","INKRIPPLE_HIDING_CLASS","DEFAULT_WAVE_SIZE_COEFFICIENT","MAX_WAVE_SIZE","ANIMATION_DURATION","HOLD_ANIMATION_DURATION","DEFAULT_WAVE_INDEX","initConfig","wavesNumber","durations","getDurations","getInkRipple","getWaves","inkRipple","$currentWave","getWaveStyleConfig","elementHeight","elementDiagonal","parseInt","sqrt","waveSize","pageX","pageY","$wave","wave","hidingTimeout","hideSelectedWave","showingTimeout","showingWaveHandler","durationCss","showingScale","hidingScale","hidingOpacity","animationDuration","realDevice","SCROLL_EVENT","SCROLL_INIT_EVENT","SCROLL_START_EVENT","SCROLL_MOVE_EVENT","SCROLL_END_EVENT","SCROLL_STOP_EVENT","SCROLL_CANCEL_EVENT","Locker","NAMESPACED_SCROLL_EVENT","_proxiedScroll","_disposed","_scroll","check","TimeoutLocker","_timeout","_prepare","_forget","_timer","_clearTimer","WheelLocker","_lastWheelDirection","_checkDirectionChanged","directionChange","PointerLocker","ios","isIos","android","isAndroid","_scrollFrame","_checkFrame","ScrollEmitter","FRAME_DURATION","_pointerLocker","_wheelLocker","configure","_accept","skipCheck","_prevEventData","currentEventData","endEventDelta","velocity","velocityMultiplier","_clearSelection","_toggleGestureCover","isStringOrNumber","isNumber","combineFrom","second","key$1","isLinkEventObject","EMPTY_OBJ","Fragment","normalizeEventName","substr","insertOrAppend","newNode","documentCreateElement","tag","createElementNS","newDom","lastDom","childNode","callAll","arrayFn","findChildVNode","startEdge","findDOMfromVNode","removeVNodeDOM","moveVNodeDOM","createDerivedState","constructor","getDerivedStateFromProps","renderCheck","v","componentComparator","createVNode","renderComplete","setTextContent","isLastValueSameLinkEvent","lastValue","nextValue","mergeUnsetProperties","safeCall1","method","arg1","keyPrefix","V","childFlag","normalizeChildren","mergeDefaultHooks","defaultHooks","mergeDefaultProps","resolveComponentFlags","createComponentVNode","createTextVNode","createFragment","fragment","createVoidVNode","normalizeProps","cloneFragment","vNodeToClone","directClone","map","propsToClone","createPortal","normalizedRoot","normalizeRoot","_normalizeVNodes","nodes","currentKey","n","newKey","oldKey","isPrefixedKey","substring","getFlagsForElementVnode","newChildFlags","needsCloning","isNullKey","isPrefixed","xlinkNS","xmlNS","namespaces","getDelegatedEventObject","onDblClick","onKeyPress","onKeyUp","onMouseDown","onMouseMove","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","attachedEventCounts","attachedEvents","syntheticEvents","updateOrAddSyntheticEvent","eventsObject","$EV","attachEventToDocument","unmountSyntheticEvent","removeEventListener","handleSyntheticEvent","lastEvent","nextEvent","getTargetNode","composedPath","dispatchEvents","isClick","currentEvent","cancelBubble","immediatePropagationStopped","stopImmediatePropagation","defaultPrevented","isPropagationStopped","extendEventProperties","defineProperty","configurable","rootClickEvent","rootEvent","attachedEvent","addEventListener","triggerEventListener","methodName","nativeListenerName","createWrappedFunction","applyValue","fnMethod","newVNode","enumerable","writable","attachEvent","previousKey","previousArgs","wrapped","isCheckedType","onTextInputChange","applyValueInput","wrappedOnChange","emptywrapper","inputEvents","nextPropsOrEmpty","checked","multiple","hasValue","updateChildOptions","updateChildOption","selected","onSelectChange","applyValueSelect","selectEvents","mounting","multiplePropInBoolean","onTextareaInputChange","applyValueTextArea","wrappedOnChange$1","textAreaEvents","onChange","domValue","processElement","isControlled","addFormElementEventHandlers","isControlledFormElement","createRef","unmountRef","mountRef","unmount","unmountAllChildren","componentWillUnmount","$UN","clearDOM","removeAllChildren","wrapLinkEvent","ev","patchEvent","patchStyle","lastAttrValue","nextAttrValue","domStyle","setProperty","removeProperty","patchDangerInnerHTML","lastVNode","lastHtml","nextHtml","patchProp","hasControlledValue","autofocus","charCodeAt","setAttributeNS","mountProps","isFormElement","renderNewInput","nextInput","childContext","getChildContext","createClassComponentInstance","Component","usesNewAPI","$N","getSnapshotBeforeUpdate","$SVG","$L","$BS","componentWillMount","$BR","$PS","renderFunctionalComponent","mount","mountElement","mountClassComponent","mountFunctionalComponent","mountFunctionalComponentCallbacks","mountText","mountFragment","mountPortal","placeHolderVNode","mountArrayChildren","childrenIsSVG","mountClassComponentCallbacks","createClassMountCallback","createOnMountCallback","replaceWithNewNode","nextVNode","patch","nextFlags","patchElement","patchClassComponent","patchFunctionalComponent","patchText","patchFragment","patchPortal","patchSingleTextChild","lastChildren","nextChildren","patchContentEditableChildren","lastChildFlags","nextChildFlags","nextIsSingle","lastLen","patchChildren","lastContainer","nextContainer","lastProps","lastPropsOrEmpty","nextClassName","nextRef","lastRef","replaceOneVNodeWithMultipleVNodes","lastLength","nextLength","patchKeyedChildren","patchNonKeyedChildren","createDidUpdate","lastState","snapshot","updateClassComponent","force","hasSCU","componentWillReceiveProps","nextHooksDefined","lastInput","nextText","lastChildrenLength","nextChildrenLength","nextChild","lastChild","commonLength","b","aLength","bLength","outerEdge","nextPos","aEnd","bEnd","j","aNode","bNode","outer","patchKeyedChildrenComplex","aStart","bStart","aLeft","bLeft","sources","Int32Array","canRemoveWholeContent","moved","pos","patched","keyIndex","seq","lis_algorithm","maxLen","arr","arrI","k","u","hasDocumentAvailable","__render","rootInput","window","Node","QUEUE","nextTick","microTaskPending","queueStateChanges","newState","stateKey","applyState","$F","rerender","QU","$QU","callSetStateCallbacks","queue","pendingState","forceUpdate","_nextContext","deviceDependentOptions","_device","hoveredScrollable","activeScrollable","SCROLLABLE_SIMULATED","SCROLLABLE_SIMULATED_CURSOR","SCROLLABLE_SIMULATED_KEYBOARD","SCROLLABLE_SIMULATED_CLASS","SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE","ACCELERATION","OUT_BOUNDS_ACCELERATION","MIN_VELOCITY_LIMIT","SCROLL_LINE_HEIGHT","VALIDATE_WHEEL_TIMEOUT","BOUNCE_MIN_VELOCITY_LIMIT","BOUNCE_DURATION","BOUNCE_FRAMES","BOUNCE_ACCELERATION_SUM","pow","KEY_CODES","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","TAB","InertiaAnimator","scroller","VELOCITY_LIMIT","_velocity","_scrollStep","_acceleration","_inBounds","_scrollComplete","BounceAnimator","_crossBoundOnNextStep","_bounceLocation","Scroller","_initAnimators","_initScrollbar","_topReached","_bottomReached","_axis","_scrollProp","optionValue","_inertiaAnimator","_bounceAnimator","_scrollbar","_scrollByThumb","_visibilityModeNormalize","_scrollbarVisible","_$scrollbar","mode","prevLocation","_suppressBounce","triggerHandler","_bounceEnabled","_boundLocation","_maxOffset","_minOffset","_getScaleRatio","_moveContent","_moveScrollbar","_moveContentByTranslator","_scaleRatio","realDimension","_getRealDimension","baseDimension","_getBaseDimension","dimensionName","translateOffset","minOffset","_maxScrollPropValue","_translateOffset","_hideScrollbar","_completeDeferred","_scrollToBounds","_bounceAction","_setupBounce","boundLocation","bounceDistance","nextLocation","_stopScrolling","_prepareThumbScrolling","$target","scrollbarClicked","_isScrollbar","_moveToMouseLocation","_thumbScrolling","_isThumb","_crossThumbScrolling","_isAnyThumbScrolling","_isThumbScrollingHandler","mouseLocation","toUpperCase","_containerToContentRatio","_startHandler","_showScrollbar","_moveHandler","_scrollBy","_scrollByHandler","_endHandler","_inertiaHandler","_resetThumbScrolling","_suppressInertia","_inertiaEnabled","_stopHandler","_disposeHandler","_updateHandler","_moveToBounds","_resetScaleRatio","_updateLocation","_updateBounds","_updateScrollbar","_getMinOffset","locationChanged","_createActionsHandler","actions","bounce","isOverflowHidden","containerScrollSize","_validateEvent","_reachedMin","_reachedMax","_cursorEnterHandler","_cursorLeaveHandler","SimulatedStrategy","_createScrollers","_attachKeyboardHandler","_attachCursorHandlers","_scrollers","_createScroller","_scrollerOptions","scrollbarVisible","isAnyThumbScrolling","_getPropByDirection","_eventHandler","isThumbScrollingVertical","isThumbScrollingHorizontal","_suppressDirections","_eachScroller","_isContent","_validDirections","closest","_startAction","_saveActive","_resetActive","_adjustDistance","devicePixelRatio","_tryGetDevicePixelRatio","_refreshCursorState","_endAction","_updateRtlConfig","_keyDownHandler","_updateHandlerTimeout","handled","_scrollByLine","_scrollByPage","_scrollToHome","_scrollToEnd","lines","page","_wheelProp","_dimensionByProp","getter","_createActionHandler","_createScrollerActions","actionHandler","scrollerX","scrollerY","_scrollOffset","deferreds","_hoverHandled","relatedTarget","$scrollable","targetScrollable","touchDirection","verticalScroller","horizontalScroller","_isHorizontalAndRtlEnabled","_rtlConfig","scrollRight","windowPixelRatio","_getWindowDevicePixelRatio","skipUpdating","_validateWheel","_validateMove","_wheelDirection","reachedMin","reachedMax","contentGreaterThanContainer","locatedNotAtBound","scrollFromMin","scrollFromMax","validated","_validateWheelTimer"],"mappings":"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","file":"js/chunk-3230446e.10fa3f98.js","sourcesContent":["/**\r\n * DevExtreme (esm/renovation/component_wrapper/button.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport ValidationEngine from \"../../ui/validation_engine\";\r\nimport Component from \"./common/component\";\r\nimport {\r\n getImageSourceType\r\n} from \"../../core/utils/icon\";\r\nexport default class ButtonWrapper extends Component {\r\n get _validationGroupConfig() {\r\n return ValidationEngine.getGroupConfig(this._findGroup())\r\n }\r\n getDefaultTemplateNames() {\r\n return [\"content\"]\r\n }\r\n getSupportedKeyNames() {\r\n return [\"space\", \"enter\"]\r\n }\r\n getProps() {\r\n var props = super.getProps();\r\n props.onClick = _ref => {\r\n var {\r\n event: event\r\n } = _ref;\r\n this._clickAction({\r\n event: event,\r\n validationGroup: this._validationGroupConfig\r\n })\r\n };\r\n var iconType = getImageSourceType(props.icon);\r\n if (\"svg\" === iconType) {\r\n props.iconTemplate = this._createTemplateComponent(() => props.icon)\r\n }\r\n return props\r\n }\r\n get _templatesInfo() {\r\n return {\r\n template: \"content\"\r\n }\r\n }\r\n _toggleActiveState(_, value) {\r\n var button = this.viewRef;\r\n value ? button.activate() : button.deactivate()\r\n }\r\n _getSubmitAction() {\r\n var needValidate = true;\r\n var validationStatus = \"valid\";\r\n return this._createAction(_ref2 => {\r\n var {\r\n event: event,\r\n submitInput: submitInput\r\n } = _ref2;\r\n if (needValidate) {\r\n var validationGroup = this._validationGroupConfig;\r\n if (void 0 !== validationGroup && \"\" !== validationGroup) {\r\n var validationResult = validationGroup.validate();\r\n validationStatus = validationResult.status;\r\n if (\"pending\" === validationResult.status) {\r\n needValidate = false;\r\n this.option(\"disabled\", true);\r\n validationResult.complete.then(_ref3 => {\r\n var {\r\n status: status\r\n } = _ref3;\r\n this.option(\"disabled\", false);\r\n validationStatus = status;\r\n \"valid\" === validationStatus && submitInput.click();\r\n needValidate = true\r\n })\r\n }\r\n }\r\n }\r\n \"valid\" !== validationStatus && event.preventDefault();\r\n event.stopPropagation()\r\n })\r\n }\r\n _initializeComponent() {\r\n super._initializeComponent();\r\n this._addAction(\"onSubmit\", this._getSubmitAction());\r\n this._clickAction = this._createClickAction()\r\n }\r\n _initMarkup() {\r\n super._initMarkup();\r\n var $content = this.$element().find(\".dx-button-content\");\r\n var $template = $content.children().filter(\".dx-template-wrapper\");\r\n var $input = $content.children().filter(\".dx-button-submit-input\");\r\n if ($template.length) {\r\n $template.addClass(\"dx-button-content\");\r\n $template.append($input);\r\n $content.replaceWith($template)\r\n }\r\n }\r\n _patchOptionValues(options) {\r\n return super._patchOptionValues(_extends({}, options, {\r\n templateData: options._templateData\r\n }))\r\n }\r\n _findGroup() {\r\n var $element = this.$element();\r\n var validationGroup = this.option(\"validationGroup\");\r\n return void 0 !== validationGroup && \"\" !== validationGroup ? validationGroup : ValidationEngine.findGroup($element, this._modelByElement($element))\r\n }\r\n _createClickAction() {\r\n return this._createActionByOption(\"onClick\", {\r\n excludeValidators: [\"readOnly\"]\r\n })\r\n }\r\n _optionChanged(option) {\r\n switch (option.name) {\r\n case \"onClick\":\r\n this._clickAction = this._createClickAction()\r\n }\r\n super._optionChanged(option)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/icon.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"iconTemplate\", \"position\", \"source\"];\r\nimport {\r\n createVNode,\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n getImageSourceType\r\n} from \"../../../core/utils/icon\";\r\nimport {\r\n combineClasses\r\n} from \"../../utils/combine_classes\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n iconClassName: iconClassName,\r\n props: {\r\n iconTemplate: IconTemplate,\r\n source: source\r\n },\r\n sourceType: sourceType\r\n } = _ref;\r\n return createFragment([\"dxIcon\" === sourceType && createVNode(1, \"i\", iconClassName), \"fontIcon\" === sourceType && createVNode(1, \"i\", iconClassName), \"image\" === sourceType && createVNode(1, \"img\", iconClassName, null, 1, {\r\n alt: \"\",\r\n src: source\r\n }), IconTemplate && createVNode(1, \"i\", iconClassName, IconTemplate({}), 0)], 0)\r\n};\r\nexport var IconProps = {\r\n position: \"left\",\r\n source: \"\"\r\n};\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class Icon extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get sourceType() {\r\n return getImageSourceType(this.props.source)\r\n }\r\n get cssClass() {\r\n return \"left\" !== this.props.position ? \"dx-icon-right\" : \"\"\r\n }\r\n get iconClassName() {\r\n var generalClasses = {\r\n \"dx-icon\": true,\r\n [this.cssClass]: !!this.cssClass\r\n };\r\n var {\r\n source: source\r\n } = this.props;\r\n if (\"dxIcon\" === this.sourceType) {\r\n return combineClasses(_extends({}, generalClasses, {\r\n [\"dx-icon-\".concat(source)]: true\r\n }))\r\n }\r\n if (\"fontIcon\" === this.sourceType) {\r\n return combineClasses(_extends({}, generalClasses, {\r\n [String(source)]: !!source\r\n }))\r\n }\r\n if (\"image\" === this.sourceType) {\r\n return combineClasses(generalClasses)\r\n }\r\n if (\"svg\" === this.sourceType) {\r\n return combineClasses(_extends({}, generalClasses, {\r\n \"dx-svg-icon\": true\r\n }))\r\n }\r\n return \"\"\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n iconTemplate: getTemplate(props.iconTemplate)\r\n }),\r\n sourceType: this.sourceType,\r\n cssClass: this.cssClass,\r\n iconClassName: this.iconClassName,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nIcon.defaultProps = IconProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/ink_ripple.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"config\"];\r\nimport {\r\n createVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n initConfig,\r\n showWave,\r\n hideWave\r\n} from \"../../../ui/widget/utils.ink_ripple\";\r\nexport var viewFunction = model => normalizeProps(createVNode(1, \"div\", \"dx-inkripple\", null, 1, _extends({}, model.restAttributes)));\r\nexport var InkRippleProps = {\r\n config: Object.freeze({})\r\n};\r\nexport class InkRipple extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.__getterCache = {};\r\n this.hideWave = this.hideWave.bind(this);\r\n this.showWave = this.showWave.bind(this)\r\n }\r\n get getConfig() {\r\n if (void 0 !== this.__getterCache.getConfig) {\r\n return this.__getterCache.getConfig\r\n }\r\n return this.__getterCache.getConfig = (() => {\r\n var {\r\n config: config\r\n } = this.props;\r\n return initConfig(config)\r\n })()\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n hideWave(opts) {\r\n hideWave(this.getConfig, opts)\r\n }\r\n showWave(opts) {\r\n showWave(this.getConfig, opts)\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n if (this.props.config !== nextProps.config) {\r\n this.__getterCache.getConfig = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n getConfig: this.getConfig,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nInkRipple.defaultProps = InkRippleProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/button.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"accessKey\", \"activeStateEnabled\", \"children\", \"className\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"icon\", \"iconPosition\", \"iconTemplate\", \"onClick\", \"onKeyDown\", \"onSubmit\", \"pressed\", \"rtlEnabled\", \"stylingMode\", \"tabIndex\", \"template\", \"templateData\", \"text\", \"type\", \"useInkRipple\", \"useSubmitBehavior\", \"visible\", \"width\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createDefaultOptionRules,\r\n convertRulesToOptions\r\n} from \"../../core/options/utils\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n isMaterial,\r\n current\r\n} from \"../../ui/themes\";\r\nimport {\r\n click\r\n} from \"../../events/short\";\r\nimport {\r\n combineClasses\r\n} from \"../utils/combine_classes\";\r\nimport {\r\n getImageSourceType\r\n} from \"../../core/utils/icon\";\r\nimport {\r\n camelize\r\n} from \"../../core/utils/inflector\";\r\nimport {\r\n Icon\r\n} from \"./common/icon\";\r\nimport errors from \"../../core/errors\";\r\nimport {\r\n InkRipple\r\n} from \"./common/ink_ripple\";\r\nimport {\r\n Widget\r\n} from \"./common/widget\";\r\nimport {\r\n BaseWidgetProps\r\n} from \"./common/base_props\";\r\nimport messageLocalization from \"../../localization/message\";\r\nvar stylingModes = [\"outlined\", \"text\", \"contained\"];\r\nvar getCssClasses = model => {\r\n var {\r\n icon: icon,\r\n iconPosition: iconPosition,\r\n stylingMode: stylingMode,\r\n text: text,\r\n type: type\r\n } = model;\r\n var isValidStylingMode = stylingMode && stylingModes.includes(stylingMode);\r\n var classesMap = {\r\n \"dx-button\": true,\r\n [\"dx-button-mode-\".concat(isValidStylingMode ? stylingMode : \"contained\")]: true,\r\n [\"dx-button-\".concat(null !== type && void 0 !== type ? type : \"normal\")]: true,\r\n \"dx-button-has-text\": !!text,\r\n \"dx-button-has-icon\": !!icon,\r\n \"dx-button-icon-right\": \"left\" !== iconPosition\r\n };\r\n return combineClasses(classesMap)\r\n};\r\nexport var viewFunction = viewModel => {\r\n var {\r\n children: children,\r\n iconPosition: iconPosition,\r\n iconTemplate: IconTemplate,\r\n template: ButtonTemplate,\r\n text: text\r\n } = viewModel.props;\r\n var renderText = !viewModel.props.template && !children && \"\" !== text;\r\n var isIconLeft = \"left\" === iconPosition;\r\n var iconComponent = !viewModel.props.template && !children && (viewModel.iconSource || viewModel.props.iconTemplate) && createComponentVNode(2, Icon, {\r\n source: viewModel.iconSource,\r\n position: iconPosition,\r\n iconTemplate: IconTemplate\r\n });\r\n return normalizeProps(createComponentVNode(2, Widget, _extends({\r\n accessKey: viewModel.props.accessKey,\r\n activeStateEnabled: viewModel.props.activeStateEnabled,\r\n aria: viewModel.aria,\r\n className: viewModel.props.className,\r\n classes: viewModel.cssClasses,\r\n disabled: viewModel.props.disabled,\r\n focusStateEnabled: viewModel.props.focusStateEnabled,\r\n height: viewModel.props.height,\r\n hint: viewModel.props.hint,\r\n hoverStateEnabled: viewModel.props.hoverStateEnabled,\r\n onActive: viewModel.onActive,\r\n onClick: viewModel.onWidgetClick,\r\n onInactive: viewModel.onInactive,\r\n onKeyDown: viewModel.keyDown,\r\n rtlEnabled: viewModel.props.rtlEnabled,\r\n tabIndex: viewModel.props.tabIndex,\r\n visible: viewModel.props.visible,\r\n width: viewModel.props.width\r\n }, viewModel.restAttributes, {\r\n children: createVNode(1, \"div\", \"dx-button-content\", [viewModel.props.template && ButtonTemplate({\r\n data: viewModel.buttonTemplateData\r\n }), !viewModel.props.template && children, isIconLeft && iconComponent, renderText && createVNode(1, \"span\", \"dx-button-text\", text, 0), !isIconLeft && iconComponent, viewModel.props.useSubmitBehavior && createVNode(64, \"input\", \"dx-button-submit-input\", null, 1, {\r\n type: \"submit\",\r\n tabIndex: -1\r\n }, null, viewModel.submitInputRef), viewModel.props.useInkRipple && createComponentVNode(2, InkRipple, {\r\n config: viewModel.inkRippleConfig\r\n }, null, viewModel.inkRippleRef)], 0, null, null, viewModel.contentRef)\r\n }), null, viewModel.widgetRef))\r\n};\r\nexport var ButtonProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(BaseWidgetProps), Object.getOwnPropertyDescriptors({\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true,\r\n icon: \"\",\r\n iconPosition: \"left\",\r\n stylingMode: \"contained\",\r\n text: \"\",\r\n type: \"normal\",\r\n useInkRipple: false,\r\n useSubmitBehavior: false,\r\n templateData: Object.freeze({})\r\n})));\r\nexport var defaultOptionRules = createDefaultOptionRules([{\r\n device: () => \"desktop\" === devices.real().deviceType && !devices.isSimulator(),\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n}, {\r\n device: () => isMaterial(current()),\r\n options: {\r\n useInkRipple: true\r\n }\r\n}]);\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class Button extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.contentRef = infernoCreateRef();\r\n this.inkRippleRef = infernoCreateRef();\r\n this.submitInputRef = infernoCreateRef();\r\n this.widgetRef = infernoCreateRef();\r\n this.__getterCache = {};\r\n this.focus = this.focus.bind(this);\r\n this.activate = this.activate.bind(this);\r\n this.deactivate = this.deactivate.bind(this);\r\n this.submitEffect = this.submitEffect.bind(this);\r\n this.checkDeprecation = this.checkDeprecation.bind(this);\r\n this.onActive = this.onActive.bind(this);\r\n this.onInactive = this.onInactive.bind(this);\r\n this.onWidgetClick = this.onWidgetClick.bind(this);\r\n this.keyDown = this.keyDown.bind(this)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.submitEffect, [this.props.onSubmit, this.props.useSubmitBehavior]), new InfernoEffect(this.checkDeprecation, [this.props.type]), createReRenderEffect()]\r\n }\r\n updateEffects() {\r\n var _this$_effects$, _this$_effects$2;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.onSubmit, this.props.useSubmitBehavior]);\r\n null === (_this$_effects$2 = this._effects[1]) || void 0 === _this$_effects$2 ? void 0 : _this$_effects$2.update([this.props.type])\r\n }\r\n submitEffect() {\r\n var {\r\n onSubmit: onSubmit,\r\n useSubmitBehavior: useSubmitBehavior\r\n } = this.props;\r\n if (useSubmitBehavior && onSubmit) {\r\n click.on(this.submitInputRef.current, event => onSubmit({\r\n event: event,\r\n submitInput: this.submitInputRef.current\r\n }), {\r\n namespace: \"UIFeedback\"\r\n });\r\n return () => click.off(this.submitInputRef.current, {\r\n namespace: \"UIFeedback\"\r\n })\r\n }\r\n return\r\n }\r\n checkDeprecation() {\r\n var {\r\n type: type\r\n } = this.props;\r\n if (\"back\" === type) {\r\n errors.log(\"W0016\", \"type\", \"back\", \"22.2\", \"Use the 'back' icon instead\")\r\n }\r\n }\r\n onActive(event) {\r\n var {\r\n useInkRipple: useInkRipple\r\n } = this.props;\r\n useInkRipple && this.inkRippleRef.current.showWave({\r\n element: this.contentRef.current,\r\n event: event\r\n })\r\n }\r\n onInactive(event) {\r\n var {\r\n useInkRipple: useInkRipple\r\n } = this.props;\r\n useInkRipple && this.inkRippleRef.current.hideWave({\r\n element: this.contentRef.current,\r\n event: event\r\n })\r\n }\r\n onWidgetClick(event) {\r\n var {\r\n onClick: onClick,\r\n useSubmitBehavior: useSubmitBehavior\r\n } = this.props;\r\n null === onClick || void 0 === onClick ? void 0 : onClick({\r\n event: event\r\n });\r\n useSubmitBehavior && this.submitInputRef.current.click()\r\n }\r\n keyDown(e) {\r\n var {\r\n onKeyDown: onKeyDown\r\n } = this.props;\r\n var {\r\n keyName: keyName,\r\n originalEvent: originalEvent,\r\n which: which\r\n } = e;\r\n var result = null === onKeyDown || void 0 === onKeyDown ? void 0 : onKeyDown(e);\r\n if (null !== result && void 0 !== result && result.cancel) {\r\n return result\r\n }\r\n if (\"space\" === keyName || \"space\" === which || \"enter\" === keyName || \"enter\" === which) {\r\n originalEvent.preventDefault();\r\n this.onWidgetClick(originalEvent)\r\n }\r\n return\r\n }\r\n get aria() {\r\n var {\r\n icon: icon,\r\n text: text\r\n } = this.props;\r\n var label = null !== text && void 0 !== text ? text : \"\";\r\n if (!text && icon) {\r\n var iconSource = getImageSourceType(icon);\r\n switch (iconSource) {\r\n case \"image\":\r\n var isPathToImage = !icon.includes(\"base64\") && /^(?!(?:https?:\\/\\/)|(?:ftp:\\/\\/)|(?:www\\.))[^\\s]+$/.test(icon);\r\n label = isPathToImage ? icon.replace(/.+\\/([^.]+)\\..+$/, \"$1\") : \"\";\r\n break;\r\n case \"dxIcon\":\r\n label = messageLocalization.format(camelize(icon, true)) || icon;\r\n break;\r\n case \"fontIcon\":\r\n label = icon;\r\n break;\r\n case \"svg\":\r\n var _titleRegexp$exec$, _titleRegexp$exec;\r\n var title = null !== (_titleRegexp$exec$ = null === (_titleRegexp$exec = /(.*?)<\\/title>/.exec(icon)) || void 0 === _titleRegexp$exec ? void 0 : _titleRegexp$exec[1]) && void 0 !== _titleRegexp$exec$ ? _titleRegexp$exec$ : \"\";\r\n label = title\r\n }\r\n }\r\n return _extends({\r\n role: \"button\"\r\n }, label ? {\r\n label: label\r\n } : {})\r\n }\r\n get cssClasses() {\r\n return getCssClasses(this.props)\r\n }\r\n get iconSource() {\r\n var {\r\n icon: icon,\r\n type: type\r\n } = this.props;\r\n if (icon || \"back\" === type) {\r\n return (null !== icon && void 0 !== icon ? icon : \"\") || \"back\"\r\n }\r\n return \"\"\r\n }\r\n get inkRippleConfig() {\r\n if (void 0 !== this.__getterCache.inkRippleConfig) {\r\n return this.__getterCache.inkRippleConfig\r\n }\r\n return this.__getterCache.inkRippleConfig = (() => {\r\n var {\r\n icon: icon,\r\n text: text,\r\n type: type\r\n } = this.props;\r\n return !text && icon || \"back\" === type ? {\r\n isCentered: true,\r\n useHoldAnimation: false,\r\n waveSizeCoefficient: 1\r\n } : {}\r\n })()\r\n }\r\n get buttonTemplateData() {\r\n var {\r\n icon: icon,\r\n templateData: templateData,\r\n text: text\r\n } = this.props;\r\n return _extends({\r\n icon: icon,\r\n text: text\r\n }, templateData)\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n focus() {\r\n this.widgetRef.current.focus()\r\n }\r\n activate() {\r\n this.widgetRef.current.activate()\r\n }\r\n deactivate() {\r\n this.widgetRef.current.deactivate()\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n super.componentWillUpdate();\r\n if (this.props.icon !== nextProps.icon || this.props.text !== nextProps.text || this.props.type !== nextProps.type) {\r\n this.__getterCache.inkRippleConfig = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n template: getTemplate(props.template),\r\n iconTemplate: getTemplate(props.iconTemplate)\r\n }),\r\n contentRef: this.contentRef,\r\n submitInputRef: this.submitInputRef,\r\n inkRippleRef: this.inkRippleRef,\r\n widgetRef: this.widgetRef,\r\n onActive: this.onActive,\r\n onInactive: this.onInactive,\r\n onWidgetClick: this.onWidgetClick,\r\n keyDown: this.keyDown,\r\n aria: this.aria,\r\n cssClasses: this.cssClasses,\r\n iconSource: this.iconSource,\r\n inkRippleConfig: this.inkRippleConfig,\r\n buttonTemplateData: this.buttonTemplateData,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nButton.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(ButtonProps), Object.getOwnPropertyDescriptors(_extends({}, convertRulesToOptions(defaultOptionRules)))));\r\nvar __defaultOptionRules = [];\r\nexport function defaultOptions(rule) {\r\n __defaultOptionRules.push(rule);\r\n Button.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(Button.defaultProps), Object.getOwnPropertyDescriptors(convertRulesToOptions(defaultOptionRules)), Object.getOwnPropertyDescriptors(convertRulesToOptions(__defaultOptionRules))))\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/button.j.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport BaseComponent from \"../component_wrapper/button\";\r\nimport {\r\n Button as ButtonComponent,\r\n defaultOptions\r\n} from \"./button\";\r\nexport default class Button extends BaseComponent {\r\n getProps() {\r\n var props = super.getProps();\r\n props.onKeyDown = this._wrapKeyDownHandler(props.onKeyDown);\r\n return props\r\n }\r\n focus() {\r\n var _this$viewRef;\r\n return null === (_this$viewRef = this.viewRef) || void 0 === _this$viewRef ? void 0 : _this$viewRef.focus(...arguments)\r\n }\r\n activate() {\r\n var _this$viewRef2;\r\n return null === (_this$viewRef2 = this.viewRef) || void 0 === _this$viewRef2 ? void 0 : _this$viewRef2.activate(...arguments)\r\n }\r\n deactivate() {\r\n var _this$viewRef3;\r\n return null === (_this$viewRef3 = this.viewRef) || void 0 === _this$viewRef3 ? void 0 : _this$viewRef3.deactivate(...arguments)\r\n }\r\n _getActionConfigs() {\r\n return {\r\n onClick: {\r\n excludeValidators: [\"readOnly\"]\r\n },\r\n onSubmit: {}\r\n }\r\n }\r\n get _propsInfo() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: [\"onSubmit\"],\r\n templates: [\"template\", \"iconTemplate\"],\r\n props: [\"activeStateEnabled\", \"hoverStateEnabled\", \"icon\", \"iconPosition\", \"onClick\", \"onSubmit\", \"pressed\", \"stylingMode\", \"template\", \"iconTemplate\", \"text\", \"type\", \"useInkRipple\", \"useSubmitBehavior\", \"templateData\", \"className\", \"accessKey\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"onKeyDown\", \"rtlEnabled\", \"tabIndex\", \"visible\", \"width\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return ButtonComponent\r\n }\r\n}\r\nregisterComponent(\"dxButton\", Button);\r\nButton.defaultOptions = defaultOptions;\r\n","/**\r\n * DevExtreme (esm/ui/button.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Widget from \"../renovation/ui/button.j\";\r\nexport default Widget;\r\n","export const InfernoEffectHost = {\n lockCount: 0,\n lock() {\n this.lockCount++;\n },\n callbacks: [],\n callEffects() {\n this.lockCount--;\n if (this.lockCount < 0) {\n throw new Error('Unexpected Effect Call');\n }\n if (this.lockCount === 0) {\n const effects = this.callbacks;\n this.callbacks = [];\n effects.forEach((callback) => callback());\n }\n },\n};\n","import { Component, findDOMfromVNode } from 'inferno';\nimport { InfernoEffectHost } from './effect_host';\nconst areObjectsEqual = (firstObject, secondObject) => {\n const bothAreObjects = firstObject instanceof Object && secondObject instanceof Object;\n if (!bothAreObjects) {\n return firstObject === secondObject;\n }\n const firstObjectKeys = Object.keys(firstObject);\n const secondObjectKeys = Object.keys(secondObject);\n if (firstObjectKeys.length !== secondObjectKeys.length) {\n return false;\n }\n const hasDifferentElement = firstObjectKeys.some((key) => firstObject[key] !== secondObject[key]);\n return !hasDifferentElement;\n};\nexport class BaseInfernoComponent extends Component {\n constructor() {\n super(...arguments);\n this._pendingContext = this.context;\n }\n componentWillReceiveProps(_, context) {\n this._pendingContext = context !== null && context !== void 0 ? context : {};\n }\n shouldComponentUpdate(nextProps, nextState) {\n return (!areObjectsEqual(this.props, nextProps)\n || !areObjectsEqual(this.state, nextState)\n || !areObjectsEqual(this.context, this._pendingContext));\n }\n}\nexport class InfernoComponent extends BaseInfernoComponent {\n constructor() {\n super(...arguments);\n this._effects = [];\n }\n createEffects() {\n return [];\n }\n updateEffects() { }\n componentWillMount() {\n InfernoEffectHost.lock();\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n componentWillUpdate(_nextProps, _nextState, _context) {\n InfernoEffectHost.lock();\n }\n componentDidMount() {\n InfernoEffectHost.callbacks.push(() => { this._effects = this.createEffects(); });\n InfernoEffectHost.callEffects();\n }\n componentDidUpdate() {\n InfernoEffectHost.callbacks.push(() => this.updateEffects());\n InfernoEffectHost.callEffects();\n }\n destroyEffects() {\n this._effects.forEach((e) => e.dispose());\n }\n componentWillUnmount() {\n this.destroyEffects();\n }\n}\nexport class InfernoWrapperComponent extends InfernoComponent {\n constructor() {\n super(...arguments);\n this.vDomElement = null;\n }\n vDomUpdateClasses() {\n const el = this.vDomElement;\n const currentClasses = el.className.length\n ? el.className.split(' ')\n : [];\n const addedClasses = currentClasses.filter((className) => el.dxClasses.previous.indexOf(className) < 0);\n const removedClasses = el.dxClasses.previous.filter((className) => currentClasses.indexOf(className) < 0);\n addedClasses.forEach((value) => {\n const indexInRemoved = el.dxClasses.removed.indexOf(value);\n if (indexInRemoved > -1) {\n el.dxClasses.removed.splice(indexInRemoved, 1);\n }\n else {\n el.dxClasses.added.push(value);\n }\n });\n removedClasses.forEach((value) => {\n const indexInAdded = el.dxClasses.added.indexOf(value);\n if (indexInAdded > -1) {\n el.dxClasses.added.splice(indexInAdded, 1);\n }\n else {\n el.dxClasses.removed.push(value);\n }\n });\n }\n componentDidMount() {\n const el = findDOMfromVNode(this.$LI, true);\n this.vDomElement = el;\n super.componentDidMount();\n el.dxClasses = el.dxClasses || {\n removed: [], added: [], previous: [],\n };\n el.dxClasses.previous = (el === null || el === void 0 ? void 0 : el.className.length) ? el.className.split(' ')\n : [];\n }\n componentDidUpdate() {\n super.componentDidUpdate();\n const el = this.vDomElement;\n if (el !== null) {\n el.dxClasses.added.forEach((className) => el.classList.add(className));\n el.dxClasses.removed.forEach((className) => el.classList.remove(className));\n el.dxClasses.previous = el.className.length\n ? el.className.split(' ')\n : [];\n }\n }\n shouldComponentUpdate(nextProps, nextState) {\n const shouldUpdate = super.shouldComponentUpdate(nextProps, nextState);\n if (shouldUpdate) {\n this.vDomUpdateClasses();\n }\n return shouldUpdate;\n }\n}\n","import { Component } from 'inferno';\nlet contextId = 0;\nexport const createContext = function (defaultValue) {\n const id = contextId++;\n return {\n id,\n defaultValue,\n Provider: class extends Component {\n getChildContext() {\n return Object.assign(Object.assign({}, this.context), { [id]: this.props.value || defaultValue });\n }\n render() {\n return this.props.children;\n }\n },\n };\n};\n","export class InfernoEffect {\n constructor(effect, dependency) {\n this.dependency = dependency;\n this.effect = effect;\n this.destroy = effect();\n }\n update(dependency) {\n const currentDependency = this.dependency;\n if (dependency) {\n this.dependency = dependency;\n }\n if (!dependency || dependency.some((d, i) => currentDependency[i] !== d)) {\n this.dispose();\n this.destroy = this.effect();\n }\n }\n dispose() {\n if (this.destroy) {\n this.destroy();\n }\n }\n}\n","import { createPortal } from 'inferno';\nexport const Portal = ({ container, children }) => {\n if (container) {\n return createPortal(children, container);\n }\n return null;\n};\n","import { rerender as reRender } from 'inferno';\nimport { InfernoEffect } from './effect';\nexport const createReRenderEffect = () => new InfernoEffect(() => {\n reRender();\n}, []);\n","export const ERROR_MSG = 'a runtime error occured! Use Inferno in development environment to find the error.';\nexport function isNullOrUndef(o) {\n return o === void 0 || o === null;\n}\nexport function isInvalid(o) {\n return o === null || o === false || o === true || o === void 0;\n}\nexport function isFunction(o) {\n return typeof o === 'function';\n}\nexport function isNull(o) {\n return o === null;\n}\nexport function throwError(message) {\n if (!message) {\n message = ERROR_MSG;\n }\n throw new Error(`Inferno Error: ${message}`);\n}\n","import { _CI, _HI, _M, _MCCC, _ME, _MFCC, _MP, _MR, EMPTY_OBJ, render, _RFC as renderFunctionalComponent, } from 'inferno';\nimport { isFunction, isInvalid, isNull, isNullOrUndef, throwError, } from './shared';\nfunction isSameInnerHTML(dom, innerHTML) {\n const tempdom = document.createElement('i');\n tempdom.innerHTML = innerHTML;\n return tempdom.innerHTML === dom.innerHTML;\n}\nfunction findLastDOMFromVNode(vNode) {\n let flags;\n let children;\n while (vNode) {\n flags = vNode.flags;\n if (flags & 2033 /* DOMRef */) {\n return vNode.dom;\n }\n children = vNode.children;\n if (flags & 8192 /* Fragment */) {\n vNode = vNode.childFlags === 2 /* HasVNodeChildren */ ? children : children[children.length - 1];\n }\n else if (flags & 4 /* ComponentClass */) {\n vNode = children.$LI;\n }\n else {\n vNode = children;\n }\n }\n return null;\n}\nfunction isSamePropsInnerHTML(dom, props) {\n return Boolean(props && props.dangerouslySetInnerHTML && props.dangerouslySetInnerHTML.__html && isSameInnerHTML(dom, props.dangerouslySetInnerHTML.__html));\n}\nfunction hydrateComponent(vNode, parentDOM, dom, context, isSVG, isClass, lifecycle) {\n const type = vNode.type;\n const ref = vNode.ref;\n const props = vNode.props || EMPTY_OBJ;\n let currentNode;\n if (isClass) {\n const instance = _CI(vNode, type, props, context, isSVG, lifecycle);\n const input = instance.$LI;\n currentNode = hydrateVNode(input, parentDOM, dom, instance.$CX, isSVG, lifecycle);\n _MCCC(ref, instance, lifecycle);\n }\n else {\n const input = _HI(renderFunctionalComponent(vNode, context));\n currentNode = hydrateVNode(input, parentDOM, dom, context, isSVG, lifecycle);\n vNode.children = input;\n _MFCC(vNode, lifecycle);\n }\n return currentNode;\n}\nfunction hydrateChildren(parentVNode, parentNode, currentNode, context, isSVG, lifecycle) {\n const childFlags = parentVNode.childFlags;\n const children = parentVNode.children;\n const props = parentVNode.props;\n const flags = parentVNode.flags;\n if (childFlags !== 1 /* HasInvalidChildren */) {\n if (childFlags === 2 /* HasVNodeChildren */) {\n if (isNull(currentNode)) {\n _M(children, parentNode, context, isSVG, null, lifecycle);\n }\n else {\n currentNode = hydrateVNode(children, parentNode, currentNode, context, isSVG, lifecycle);\n currentNode = currentNode ? currentNode.nextSibling : null;\n }\n }\n else if (childFlags === 16 /* HasTextChildren */) {\n if (isNull(currentNode)) {\n parentNode.appendChild(document.createTextNode(children));\n }\n else if (parentNode.childNodes.length !== 1 || currentNode.nodeType !== 3) {\n parentNode.textContent = children;\n }\n else if (currentNode.nodeValue !== children) {\n currentNode.nodeValue = children;\n }\n currentNode = null;\n }\n else if (childFlags & 12 /* MultipleChildren */) {\n let prevVNodeIsTextNode = false;\n for (let i = 0, len = children.length; i < len; ++i) {\n const child = children[i];\n if (isNull(currentNode) || (prevVNodeIsTextNode && (child.flags & 16 /* Text */) > 0)) {\n _M(child, parentNode, context, isSVG, currentNode, lifecycle);\n }\n else {\n currentNode = hydrateVNode(child, parentNode, currentNode, context, isSVG, lifecycle);\n currentNode = currentNode ? currentNode.nextSibling : null;\n }\n prevVNodeIsTextNode = (child.flags & 16 /* Text */) > 0;\n }\n }\n // clear any other DOM nodes, there should be only a single entry for the root\n if ((flags & 8192 /* Fragment */) === 0) {\n let nextSibling = null;\n while (currentNode) {\n nextSibling = currentNode.nextSibling;\n parentNode.removeChild(currentNode);\n currentNode = nextSibling;\n }\n }\n }\n else if (!isNull(parentNode.firstChild) && !isSamePropsInnerHTML(parentNode, props)) {\n parentNode.textContent = ''; // dom has content, but VNode has no children remove everything from DOM\n if (flags & 448 /* FormElement */) {\n // If element is form element, we need to clear defaultValue also\n parentNode.defaultValue = '';\n }\n }\n}\nfunction hydrateElement(vNode, parentDOM, dom, context, isSVG, lifecycle) {\n const props = vNode.props;\n const className = vNode.className;\n const flags = vNode.flags;\n const ref = vNode.ref;\n isSVG = isSVG || (flags & 32 /* SvgElement */) > 0;\n if (dom.nodeType !== 1) {\n _ME(vNode, null, context, isSVG, null, lifecycle);\n parentDOM.replaceChild(vNode.dom, dom);\n }\n else {\n vNode.dom = dom;\n hydrateChildren(vNode, dom, dom.firstChild, context, isSVG, lifecycle);\n if (!isNull(props)) {\n _MP(vNode, flags, props, dom, isSVG);\n }\n if (isNullOrUndef(className)) {\n if (dom.className !== '') {\n dom.removeAttribute('class');\n }\n }\n else if (isSVG) {\n dom.setAttribute('class', className);\n }\n else {\n dom.className = className;\n }\n _MR(ref, dom, lifecycle);\n }\n return vNode.dom;\n}\nfunction hydrateText(vNode, parentDOM, dom) {\n if (dom.nodeType !== 3) {\n parentDOM.replaceChild((vNode.dom = document.createTextNode(vNode.children)), dom);\n }\n else {\n const text = vNode.children;\n if (dom.nodeValue !== text) {\n dom.nodeValue = text;\n }\n vNode.dom = dom;\n }\n return vNode.dom;\n}\nfunction hydrateFragment(vNode, parentDOM, dom, context, isSVG, lifecycle) {\n const children = vNode.children;\n if (vNode.childFlags === 2 /* HasVNodeChildren */) {\n hydrateText(children, parentDOM, dom);\n return children.dom;\n }\n hydrateChildren(vNode, parentDOM, dom, context, isSVG, lifecycle);\n return findLastDOMFromVNode(children[children.length - 1]);\n}\nfunction hydrateVNode(vNode, parentDOM, currentDom, context, isSVG, lifecycle) {\n const flags = (vNode.flags |= 16384 /* InUse */);\n if (flags & 14 /* Component */) {\n return hydrateComponent(vNode, parentDOM, currentDom, context, isSVG, (flags & 4 /* ComponentClass */) > 0, lifecycle);\n }\n if (flags & 481 /* Element */) {\n return hydrateElement(vNode, parentDOM, currentDom, context, isSVG, lifecycle);\n }\n if (flags & 16 /* Text */) {\n return hydrateText(vNode, parentDOM, currentDom);\n }\n if (flags & 512 /* Void */) {\n return (vNode.dom = currentDom);\n }\n if (flags & 8192 /* Fragment */) {\n return hydrateFragment(vNode, parentDOM, currentDom, context, isSVG, lifecycle);\n }\n throwError();\n return null;\n}\nexport function hydrate(input, parentDOM, callback) {\n let dom = parentDOM.firstChild;\n if (isNull(dom)) {\n render(input, parentDOM, callback);\n }\n else {\n const lifecycle = [];\n if (!isInvalid(input)) {\n dom = hydrateVNode(input, parentDOM, dom, {}, false, lifecycle);\n }\n // clear any other DOM nodes, there should be only a single entry for the root\n while (dom && (dom = dom.nextSibling)) {\n parentDOM.removeChild(dom);\n }\n if (lifecycle.length > 0) {\n let listener;\n while ((listener = lifecycle.shift()) !== undefined) {\n listener();\n }\n }\n }\n parentDOM.$V = input;\n if (isFunction(callback)) {\n callback();\n }\n}\n","import { render } from 'inferno';\nimport { createElement } from 'inferno-create-element';\nconst getContainer = (props) => { var _a, _b; return ((_a = props.container) === null || _a === void 0 ? void 0 : _a.get(0)) || ((_b = props.item) === null || _b === void 0 ? void 0 : _b.get(0)); };\nexport function renderTemplate(template, props, _component) {\n setTimeout(() => {\n render(createElement(template, props), getContainer(props));\n }, 0);\n}\nexport const hasTemplate = (name, properties, _component) => {\n const value = properties[name];\n return !!value && typeof value !== 'string';\n};\n","const NUMBER_STYLES = new Set([\n 'animationIterationCount',\n 'borderImageOutset',\n 'borderImageSlice',\n 'border-imageWidth',\n 'boxFlex',\n 'boxFlexGroup',\n 'boxOrdinalGroup',\n 'columnCount',\n 'fillOpacity',\n 'flex',\n 'flexGrow',\n 'flexNegative',\n 'flexOrder',\n 'flexPositive',\n 'flexShrink',\n 'floodOpacity',\n 'fontWeight',\n 'gridColumn',\n 'gridRow',\n 'lineClamp',\n 'lineHeight',\n 'opacity',\n 'order',\n 'orphans',\n 'stopOpacity',\n 'strokeDasharray',\n 'strokeDashoffset',\n 'strokeMiterlimit',\n 'strokeOpacity',\n 'strokeWidth',\n 'tabSize',\n 'widows',\n 'zIndex',\n 'zoom',\n]);\nconst isNumeric = (value) => {\n if (typeof value === 'number')\n return true;\n return !Number.isNaN(Number(value));\n};\nconst getNumberStyleValue = (style, value) => (NUMBER_STYLES.has(style) ? value : `${value}px`);\nconst uppercasePattern = /[A-Z]/g;\nconst kebabCase = (str) => str.replace(uppercasePattern, '-$&').toLowerCase();\nexport function normalizeStyles(styles) {\n if (!(styles instanceof Object)) {\n return undefined;\n }\n return Object\n .entries(styles)\n .reduce((acc, [key, value]) => {\n acc[kebabCase(key)] = isNumeric(value)\n ? getNumberStyleValue(key, value)\n : value;\n return acc;\n }, {});\n}\n","/**\r\n * DevExtreme (esm/core/inferno_renderer.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n render as _render\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffectHost,\r\n hydrate\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createElement as _createElement\r\n} from \"inferno-create-element\";\r\nimport domAdapter from \"./dom_adapter\";\r\nimport {\r\n cleanDataRecursive\r\n} from \"./element_data\";\r\nimport injector from \"./utils/dependency_injector\";\r\nvar remove = element => {\r\n var {\r\n parentNode: parentNode\r\n } = element;\r\n if (parentNode) {\r\n var nextSibling = element.nextSibling;\r\n cleanDataRecursive(element);\r\n parentNode.$V = element.$V;\r\n _render(null, parentNode);\r\n parentNode.insertBefore(element, nextSibling);\r\n element.innerHTML = \"\";\r\n delete parentNode.$V\r\n }\r\n delete element.$V\r\n};\r\nexport default injector({\r\n createElement: (component, props) => _createElement(component, props),\r\n remove: remove,\r\n onAfterRender: () => {\r\n InfernoEffectHost.callEffects()\r\n },\r\n onPreRender: () => {\r\n InfernoEffectHost.lock()\r\n },\r\n render: (component, props, container, replace) => {\r\n if (!replace) {\r\n var {\r\n parentNode: parentNode\r\n } = container;\r\n var nextNode = null === container || void 0 === container ? void 0 : container.nextSibling;\r\n var rootNode = domAdapter.createElement(\"div\");\r\n rootNode.appendChild(container);\r\n var mountNode = domAdapter.createDocumentFragment().appendChild(rootNode);\r\n var vNodeAlreadyExists = !!container.$V;\r\n vNodeAlreadyExists && remove(container);\r\n hydrate(_createElement(component, props), mountNode);\r\n container.$V = mountNode.$V;\r\n if (parentNode) {\r\n parentNode.insertBefore(container, nextNode)\r\n }\r\n } else {\r\n _render(_createElement(component, props), container)\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/renovation/utils/shallow_equals.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var shallowEquals = (firstObject, secondObject) => {\r\n if (Object.keys(firstObject).length !== Object.keys(secondObject).length) {\r\n return false\r\n }\r\n return Object.keys(firstObject).every(key => firstObject[key] === secondObject[key])\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/common/template_wrapper.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"isEqual\"];\r\nimport {\r\n InfernoComponent,\r\n InfernoEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n findDOMfromVNode\r\n} from \"inferno\";\r\nimport {\r\n replaceWith\r\n} from \"../../../core/utils/dom\";\r\nimport {\r\n shallowEquals\r\n} from \"../../utils/shallow_equals\";\r\nimport $ from \"../../../core/renderer\";\r\nimport domAdapter from \"../../../core/dom_adapter\";\r\nimport {\r\n getPublicElement\r\n} from \"../../../core/element\";\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\n\r\nfunction isDxElementWrapper(element) {\r\n return !!element.toArray\r\n}\r\nexport function buildTemplateArgs(model, template) {\r\n var _model$data;\r\n var args = {\r\n template: template,\r\n model: _extends({}, model)\r\n };\r\n var _ref = null !== (_model$data = model.data) && void 0 !== _model$data ? _model$data : {},\r\n {\r\n isEqual: isEqual\r\n } = _ref,\r\n data = _objectWithoutPropertiesLoose(_ref, _excluded);\r\n if (isEqual) {\r\n args.model.data = data;\r\n args.isEqual = isEqual\r\n }\r\n return args\r\n}\r\n\r\nfunction renderTemplateContent(props, container) {\r\n var _props$model;\r\n var {\r\n data: data,\r\n index: index\r\n } = null !== (_props$model = props.model) && void 0 !== _props$model ? _props$model : {\r\n data: {}\r\n };\r\n if (data) {\r\n Object.keys(data).forEach(name => {\r\n if (data[name] && domAdapter.isNode(data[name])) {\r\n data[name] = getPublicElement($(data[name]))\r\n }\r\n })\r\n }\r\n var rendered = props.template.render(_extends({\r\n container: container,\r\n transclude: props.transclude\r\n }, {\r\n renovated: props.renovated\r\n }, !props.transclude ? {\r\n model: data\r\n } : {}, !props.transclude && Number.isFinite(index) ? {\r\n index: index\r\n } : {}));\r\n if (void 0 === rendered) {\r\n return []\r\n }\r\n return isDxElementWrapper(rendered) ? rendered.toArray() : [$(rendered).get(0)]\r\n}\r\n\r\nfunction removeDifferentElements(oldChildren, newChildren) {\r\n newChildren.forEach(newElement => {\r\n var hasOldChild = !!oldChildren.find(oldElement => newElement === oldElement);\r\n if (!hasOldChild && newElement.parentNode) {\r\n newElement.parentNode.removeChild(newElement)\r\n }\r\n })\r\n}\r\nexport class TemplateWrapper extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.renderTemplate = this.renderTemplate.bind(this)\r\n }\r\n renderTemplate() {\r\n var node = findDOMfromVNode(this.$LI, true);\r\n if (!(null !== node && void 0 !== node && node.parentNode)) {\r\n return () => {}\r\n }\r\n var container = node.parentNode;\r\n var $container = $(container);\r\n var $oldContainerContent = $container.contents().toArray();\r\n var content = renderTemplateContent(this.props, getPublicElement($container));\r\n replaceWith($(node), $(content));\r\n return () => {\r\n var $actualContainerContent = $(container).contents().toArray();\r\n removeDifferentElements($oldContainerContent, $actualContainerContent);\r\n container.appendChild(node)\r\n }\r\n }\r\n shouldComponentUpdate(nextProps) {\r\n var {\r\n model: model,\r\n template: template\r\n } = this.props;\r\n var {\r\n isEqual: isEqual,\r\n model: nextModel,\r\n template: nextTemplate\r\n } = nextProps;\r\n var equalityComparer = null !== isEqual && void 0 !== isEqual ? isEqual : shallowEquals;\r\n if (template !== nextTemplate) {\r\n return true\r\n }\r\n if (!isDefined(model) || !isDefined(nextModel)) {\r\n return model !== nextModel\r\n }\r\n var {\r\n data: data,\r\n index: index\r\n } = model;\r\n var {\r\n data: nextData,\r\n index: nextIndex\r\n } = nextModel;\r\n if (index !== nextIndex) {\r\n return true\r\n }\r\n return !equalityComparer(data, nextData)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.renderTemplate, [this.props.template, this.props.model])]\r\n }\r\n updateEffects() {\r\n this._effects[0].update([this.props.template, this.props.model])\r\n }\r\n componentWillUnmount() {}\r\n render() {\r\n return null\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/utils/update_props_immutable.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n isPlainObject\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n getPathParts\r\n} from \"../../../core/utils/data\";\r\n\r\nfunction cloneObjectValue(value) {\r\n return Array.isArray(value) ? [...value] : _extends({}, value)\r\n}\r\n\r\nfunction cloneObjectProp(value, prevValue, fullNameParts) {\r\n var result = fullNameParts.length > 0 && prevValue && value !== prevValue ? cloneObjectValue(prevValue) : cloneObjectValue(value);\r\n var name = fullNameParts[0];\r\n if (fullNameParts.length > 1) {\r\n result[name] = cloneObjectProp(value[name], null === prevValue || void 0 === prevValue ? void 0 : prevValue[name], fullNameParts.slice(1))\r\n } else if (name) {\r\n if (isPlainObject(value[name])) {\r\n result[name] = cloneObjectValue(value[name])\r\n } else {\r\n result[name] = value[name]\r\n }\r\n }\r\n return result\r\n}\r\nexport function updatePropsImmutable(props, option, name, fullName) {\r\n var currentPropsValue = option[name];\r\n var prevPropsValue = props[name];\r\n var result = props;\r\n if (isPlainObject(currentPropsValue) || name !== fullName && Array.isArray(currentPropsValue)) {\r\n result[name] = cloneObjectProp(currentPropsValue, prevPropsValue, getPathParts(fullName).slice(1))\r\n } else {\r\n result[name] = currentPropsValue\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/common/component.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n createRef\r\n} from \"inferno\";\r\nimport KeyboardProcessor from \"../../../events/core/keyboard_processor\";\r\nimport renderer from \"../../../core/inferno_renderer\";\r\nimport $ from \"../../../core/renderer\";\r\nimport domAdapter from \"../../../core/dom_adapter\";\r\nimport DOMComponent from \"../../../core/dom_component\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n getPublicElement\r\n} from \"../../../core/element\";\r\nimport {\r\n isDefined,\r\n isRenderer,\r\n isString\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n TemplateWrapper,\r\n buildTemplateArgs\r\n} from \"./template_wrapper\";\r\nimport {\r\n updatePropsImmutable\r\n} from \"../utils/update_props_immutable\";\r\nimport \"../../../events/click\";\r\nimport \"../../../events/core/emitter.feedback\";\r\nimport \"../../../events/hover\";\r\nvar setDefaultOptionValue = (options, defaultValueGetter) => name => {\r\n if (Object.prototype.hasOwnProperty.call(options, name) && void 0 === options[name]) {\r\n options[name] = defaultValueGetter(name)\r\n }\r\n};\r\nexport default class ComponentWrapper extends DOMComponent {\r\n constructor(element, options) {\r\n super(element, options);\r\n this._shouldRaiseContentReady = false;\r\n this.validateKeyDownHandler()\r\n }\r\n get _propsInfo() {\r\n return {\r\n allowNull: [],\r\n twoWay: [],\r\n elements: [],\r\n templates: [],\r\n props: []\r\n }\r\n }\r\n validateKeyDownHandler() {\r\n var supportedKeyNames = this.getSupportedKeyNames();\r\n var hasComponentDefaultKeyHandlers = supportedKeyNames.length > 0;\r\n var hasComponentKeyDownMethod = \"function\" === typeof this._viewComponent.prototype.keyDown;\r\n if (hasComponentDefaultKeyHandlers && !hasComponentKeyDownMethod) {\r\n throw Error(\"Component's declaration must have 'keyDown' method.\")\r\n }\r\n }\r\n get viewRef() {\r\n var _this$_viewRef;\r\n return null === (_this$_viewRef = this._viewRef) || void 0 === _this$_viewRef ? void 0 : _this$_viewRef.current\r\n }\r\n _checkContentReadyOption(fullName) {\r\n var contentReadyOptions = this._getContentReadyOptions().reduce((options, name) => {\r\n options[name] = true;\r\n return options\r\n }, {});\r\n this._checkContentReadyOption = optionName => !!contentReadyOptions[optionName];\r\n return this._checkContentReadyOption(fullName)\r\n }\r\n _getContentReadyOptions() {\r\n return [\"rtlEnabled\"]\r\n }\r\n _fireContentReady() {\r\n this._actionsMap.onContentReady({})\r\n }\r\n _getDefaultOptions() {\r\n var viewDefaultProps = this._getViewComponentDefaultProps();\r\n return extend(true, super._getDefaultOptions(), viewDefaultProps, this._propsInfo.twoWay.reduce((options, _ref) => {\r\n var [name, defaultName, eventName] = _ref;\r\n return _extends({}, options, {\r\n [name]: viewDefaultProps[defaultName],\r\n [eventName]: value => this.option(name, value)\r\n })\r\n }, {}), this._propsInfo.templates.reduce((options, name) => _extends({}, options, {\r\n [name]: null\r\n }), {}))\r\n }\r\n _getUnwrappedOption() {\r\n var unwrappedProps = {};\r\n Object.keys(this.option()).forEach(key => {\r\n unwrappedProps[key] = this.option(key)\r\n });\r\n return unwrappedProps\r\n }\r\n _initializeComponent() {\r\n var _this$_templateManage;\r\n super._initializeComponent();\r\n null === (_this$_templateManage = this._templateManager) || void 0 === _this$_templateManage ? void 0 : _this$_templateManage.addDefaultTemplates(this.getDefaultTemplates());\r\n var optionProxy = this._getUnwrappedOption();\r\n this._props = this._optionsWithDefaultTemplates(optionProxy);\r\n this._propsInfo.templates.forEach(template => {\r\n this._componentTemplates[template] = this._createTemplateComponent(this._props[template])\r\n });\r\n Object.keys(this._getActionConfigsFull()).forEach(name => this._addAction(name));\r\n this._viewRef = createRef();\r\n this.defaultKeyHandlers = this._createDefaultKeyHandlers()\r\n }\r\n _initMarkup() {\r\n var props = this.getProps();\r\n this._renderWrapper(props)\r\n }\r\n _renderWrapper(props) {\r\n var containerNode = this.$element()[0];\r\n if (!this._isNodeReplaced) {\r\n renderer.onPreRender()\r\n }\r\n renderer.render(this._viewComponent, props, containerNode, this._isNodeReplaced);\r\n if (!this._isNodeReplaced) {\r\n this._isNodeReplaced = true;\r\n renderer.onAfterRender();\r\n this._shouldRaiseContentReady = true\r\n }\r\n if (this._shouldRaiseContentReady) {\r\n this._fireContentReady();\r\n this._shouldRaiseContentReady = false\r\n }\r\n }\r\n _silent(name, value) {\r\n this._options.silent(name, value)\r\n }\r\n _render() {}\r\n _removeWidget() {\r\n renderer.remove(this.$element()[0])\r\n }\r\n _dispose() {\r\n this._removeWidget();\r\n super._dispose()\r\n }\r\n get elementAttr() {\r\n var element = this.$element()[0];\r\n if (!this._elementAttr) {\r\n var {\r\n attributes: attributes\r\n } = element;\r\n var attrs = Array.from(attributes).filter(attr => {\r\n var _attributes$attr$name;\r\n return !this._propsInfo.templates.includes(attr.name) && (null === (_attributes$attr$name = attributes[attr.name]) || void 0 === _attributes$attr$name ? void 0 : _attributes$attr$name.specified)\r\n }).reduce((result, _ref2) => {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref2;\r\n var updatedAttributes = result;\r\n var isDomAttr = name in element;\r\n updatedAttributes[name] = \"\" === value && isDomAttr ? element[name] : value;\r\n return updatedAttributes\r\n }, {});\r\n this._elementAttr = attrs;\r\n this._storedClasses = element.getAttribute(\"class\") || \"\"\r\n }\r\n var elemStyle = element.style;\r\n var style = {};\r\n for (var i = 0; i < elemStyle.length; i += 1) {\r\n style[elemStyle[i]] = elemStyle.getPropertyValue(elemStyle[i])\r\n }\r\n this._elementAttr.style = style;\r\n this._elementAttr.class = this._storedClasses;\r\n return this._elementAttr\r\n }\r\n _getAdditionalActionConfigs() {\r\n return {\r\n onContentReady: {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n }\r\n }\r\n }\r\n _getAdditionalProps() {\r\n return []\r\n }\r\n _patchOptionValues(options) {\r\n var {\r\n allowNull: allowNull,\r\n elements: elements,\r\n props: props,\r\n twoWay: twoWay\r\n } = this._propsInfo;\r\n var viewDefaultProps = this._getViewComponentDefaultProps();\r\n var defaultWidgetPropsKeys = Object.keys(viewDefaultProps);\r\n var defaultOptions = this._getDefaultOptions();\r\n var {\r\n children: children,\r\n onKeyboardHandled: onKeyboardHandled,\r\n ref: ref\r\n } = options;\r\n var onKeyDown = onKeyboardHandled ? (_, event_options) => {\r\n onKeyboardHandled(event_options)\r\n } : void 0;\r\n var widgetProps = {\r\n ref: ref,\r\n children: children,\r\n onKeyDown: onKeyDown\r\n };\r\n [...props, ...this._getAdditionalProps()].forEach(propName => {\r\n if (Object.prototype.hasOwnProperty.call(options, propName)) {\r\n widgetProps[propName] = options[propName]\r\n }\r\n });\r\n allowNull.forEach(setDefaultOptionValue(widgetProps, () => null));\r\n defaultWidgetPropsKeys.forEach(setDefaultOptionValue(widgetProps, name => defaultOptions[name]));\r\n twoWay.forEach(_ref3 => {\r\n var [name, defaultName] = _ref3;\r\n setDefaultOptionValue(widgetProps, () => defaultOptions[defaultName])(name)\r\n });\r\n elements.forEach(name => {\r\n if (name in widgetProps) {\r\n var value = widgetProps[name];\r\n if (isRenderer(value)) {\r\n widgetProps[name] = this._patchElementParam(value)\r\n }\r\n }\r\n });\r\n return widgetProps\r\n }\r\n getSupportedKeyNames() {\r\n return []\r\n }\r\n prepareStyleProp(props) {\r\n if (\"string\" === typeof props.style) {\r\n return _extends({}, props, {\r\n style: {},\r\n cssText: props.style\r\n })\r\n }\r\n return props\r\n }\r\n getProps() {\r\n var _this$elementAttr$cla, _elementAttr$class;\r\n var {\r\n elementAttr: elementAttr\r\n } = this.option();\r\n var options = this._patchOptionValues(_extends({}, this._props, {\r\n ref: this._viewRef,\r\n children: this._extractDefaultSlot(),\r\n aria: this._aria\r\n }));\r\n this._propsInfo.templates.forEach(template => {\r\n options[template] = this._componentTemplates[template]\r\n });\r\n return this.prepareStyleProp(_extends({}, options, this.elementAttr, elementAttr, {\r\n className: [...(null !== (_this$elementAttr$cla = this.elementAttr.class) && void 0 !== _this$elementAttr$cla ? _this$elementAttr$cla : \"\").split(\" \"), ...(null !== (_elementAttr$class = null === elementAttr || void 0 === elementAttr ? void 0 : elementAttr.class) && void 0 !== _elementAttr$class ? _elementAttr$class : \"\").split(\" \")].filter((c, i, a) => c && a.indexOf(c) === i).join(\" \").trim(),\r\n class: \"\"\r\n }, this._actionsMap))\r\n }\r\n _getActionConfigs() {\r\n return {}\r\n }\r\n _getActionConfigsFull() {\r\n return _extends({}, this._getActionConfigs(), this._getAdditionalActionConfigs())\r\n }\r\n getDefaultTemplates() {\r\n var defaultTemplates = Object.values(this._templatesInfo);\r\n var result = {};\r\n defaultTemplates.forEach(template => {\r\n result[template] = \"dx-renovation-template-mock\"\r\n });\r\n return result\r\n }\r\n get _templatesInfo() {\r\n return {}\r\n }\r\n _optionsWithDefaultTemplates(options) {\r\n var templateOptions = Object.entries(this._templatesInfo).reduce((result, _ref4) => {\r\n var _options$templateName;\r\n var [templateName, templateValue] = _ref4;\r\n return _extends({}, result, {\r\n [templateName]: null !== (_options$templateName = options[templateName]) && void 0 !== _options$templateName ? _options$templateName : templateValue\r\n })\r\n }, {});\r\n return _extends({}, options, templateOptions)\r\n }\r\n _init() {\r\n super._init();\r\n this.customKeyHandlers = {};\r\n this._actionsMap = {};\r\n this._aria = {};\r\n this._componentTemplates = {}\r\n }\r\n _createDefaultKeyHandlers() {\r\n var result = {};\r\n var keys = this.getSupportedKeyNames();\r\n keys.forEach(key => {\r\n result[key] = e => this.viewRef.keyDown(KeyboardProcessor.createKeyDownOptions(e))\r\n });\r\n return result\r\n }\r\n _addAction(event, actionToAdd) {\r\n var action = actionToAdd;\r\n if (!action) {\r\n var actionByOption = this._createActionByOption(event, this._getActionConfigsFull()[event]);\r\n action = actArgs => {\r\n Object.keys(actArgs).forEach(name => {\r\n if (isDefined(actArgs[name]) && domAdapter.isNode(actArgs[name])) {\r\n actArgs[name] = getPublicElement($(actArgs[name]))\r\n }\r\n });\r\n return actionByOption(actArgs)\r\n }\r\n }\r\n this._actionsMap[event] = action\r\n }\r\n _optionChanged(option) {\r\n var {\r\n fullName: fullName,\r\n name: name,\r\n previousValue: previousValue,\r\n value: value\r\n } = option;\r\n updatePropsImmutable(this._props, this.option(), name, fullName);\r\n if (this._propsInfo.templates.includes(name) && value !== previousValue) {\r\n this._componentTemplates[name] = this._createTemplateComponent(value)\r\n }\r\n if (name && this._getActionConfigsFull()[name]) {\r\n this._addAction(name)\r\n }\r\n this._shouldRaiseContentReady = this._shouldRaiseContentReady || this._checkContentReadyOption(fullName);\r\n super._optionChanged(option);\r\n this._invalidate()\r\n }\r\n _extractDefaultSlot() {\r\n if (this.option(\"_hasAnonymousTemplateContent\")) {\r\n return renderer.createElement(TemplateWrapper, {\r\n template: this._getTemplate(this._templateManager.anonymousTemplateName),\r\n transclude: true,\r\n renovated: true\r\n })\r\n }\r\n return null\r\n }\r\n _createTemplateComponent(templateOption) {\r\n if (!templateOption) {\r\n return\r\n }\r\n var template = this._getTemplate(templateOption);\r\n if (isString(template) && \"dx-renovation-template-mock\" === template) {\r\n return\r\n }\r\n return model => renderer.createElement(TemplateWrapper, buildTemplateArgs(model, template))\r\n }\r\n _wrapKeyDownHandler(initialHandler) {\r\n return options => {\r\n var {\r\n keyName: keyName,\r\n originalEvent: originalEvent,\r\n which: which\r\n } = options;\r\n var keys = this.customKeyHandlers;\r\n var func = keys[keyName] || keys[which];\r\n if (void 0 !== func) {\r\n var handler = func.bind(this);\r\n var result = handler(originalEvent, options);\r\n if (!result) {\r\n originalEvent.cancel = true;\r\n return originalEvent\r\n }\r\n }\r\n return null === initialHandler || void 0 === initialHandler ? void 0 : initialHandler(originalEvent, options)\r\n }\r\n }\r\n _toPublicElement(element) {\r\n return getPublicElement($(element))\r\n }\r\n _patchElementParam(value) {\r\n try {\r\n var result = $(value);\r\n var element = null === result || void 0 === result ? void 0 : result.get(0);\r\n return null !== element && void 0 !== element && element.nodeType ? element : value\r\n } catch (error) {\r\n return value\r\n }\r\n }\r\n repaint() {\r\n this._isNodeReplaced = false;\r\n this._shouldRaiseContentReady = true;\r\n this._removeWidget();\r\n this._refresh()\r\n }\r\n _supportedKeys() {\r\n return _extends({}, this.defaultKeyHandlers, this.customKeyHandlers)\r\n }\r\n registerKeyHandler(key, handler) {\r\n this.customKeyHandlers[key] = handler\r\n }\r\n setAria(name, value) {\r\n this._aria[name] = value;\r\n this._initMarkup()\r\n }\r\n _getViewComponentDefaultProps() {\r\n return this._viewComponent.defaultProps || {}\r\n }\r\n}\r\nComponentWrapper.IS_RENOVATED_WIDGET = false;\r\nComponentWrapper.IS_RENOVATED_WIDGET = true;\r\n","/**\r\n * DevExtreme (esm/renovation/utils/subscribe_to_event.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport * as clickEvent from \"../../events/click\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport scrollEvents from \"../../events/gesture/emitter.gesture.scroll\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nexport function subscribeToEvent(eventName) {\r\n return (element, handler, eventData, namespace) => {\r\n var event = namespace ? addNamespace(eventName, namespace) : eventName;\r\n if (handler) {\r\n eventsEngine.on(element, event, eventData, handler);\r\n return () => {\r\n eventsEngine.off(element, event, handler)\r\n }\r\n }\r\n return\r\n }\r\n}\r\nexport var subscribeToClickEvent = subscribeToEvent(clickEvent.name);\r\nexport var subscribeToScrollEvent = subscribeToEvent(scrollEvents.scroll);\r\nexport var subscribeToScrollInitEvent = subscribeToEvent(scrollEvents.init);\r\nexport var subscribeToDXScrollStartEvent = subscribeToEvent(scrollEvents.start);\r\nexport var subscribeToDXScrollMoveEvent = subscribeToEvent(scrollEvents.move);\r\nexport var subscribeToDXScrollEndEvent = subscribeToEvent(scrollEvents.end);\r\nexport var subscribeToDXScrollStopEvent = subscribeToEvent(scrollEvents.stop);\r\nexport var subscribeToDXScrollCancelEvent = subscribeToEvent(scrollEvents.cancel);\r\nexport var subscribeToDXPointerDownEvent = subscribeToEvent(pointerEvents.down);\r\nexport var subscribeToDXPointerUpEvent = subscribeToEvent(pointerEvents.up);\r\nexport var subscribeToDXPointerMoveEvent = subscribeToEvent(pointerEvents.move);\r\nexport var subscribeToMouseEnterEvent = subscribeToEvent(\"mouseenter\");\r\nexport var subscribeToMouseLeaveEvent = subscribeToEvent(\"mouseleave\");\r\nexport var subscribeToKeyDownEvent = subscribeToEvent(\"keydown\");\r\nexport var subscribeToDxActiveEvent = subscribeToEvent(\"dxactive\");\r\nexport var subscribeToDxInactiveEvent = subscribeToEvent(\"dxinactive\");\r\nexport var subscribeToDxHoverStartEvent = subscribeToEvent(\"dxhoverstart\");\r\nexport var subscribeToDxHoverEndEvent = subscribeToEvent(\"dxhoverend\");\r\nexport var subscribeToDxFocusInEvent = subscribeToEvent(\"focusin\");\r\nexport var subscribeToDxFocusOutEvent = subscribeToEvent(\"focusout\");\r\n","/**\r\n * DevExtreme (esm/renovation/common/config_provider.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"children\", \"rtlEnabled\"];\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n ConfigContext\r\n} from \"./config_context\";\r\nexport var viewFunction = viewModel => viewModel.props.children;\r\nexport var ConfigProviderProps = {};\r\nexport class ConfigProvider extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.__getterCache = {}\r\n }\r\n getChildContext() {\r\n return _extends({}, this.context, {\r\n [ConfigContext.id]: this.config || ConfigContext.defaultValue\r\n })\r\n }\r\n get config() {\r\n if (void 0 !== this.__getterCache.config) {\r\n return this.__getterCache.config\r\n }\r\n return this.__getterCache.config = (() => ({\r\n rtlEnabled: this.props.rtlEnabled\r\n }))()\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n if (this.props.rtlEnabled !== nextProps.rtlEnabled) {\r\n this.__getterCache.config = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n config: this.config,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nConfigProvider.defaultProps = ConfigProviderProps;\r\n","/**\r\n * DevExtreme (esm/renovation/utils/resolve_rtl.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport globalConfig from \"../../core/config\";\r\nexport function resolveRtlEnabled(rtlProp, config) {\r\n if (void 0 !== rtlProp) {\r\n return rtlProp\r\n }\r\n if (void 0 !== (null === config || void 0 === config ? void 0 : config.rtlEnabled)) {\r\n return config.rtlEnabled\r\n }\r\n return globalConfig().rtlEnabled\r\n}\r\nexport function resolveRtlEnabledDefinition(rtlProp, config) {\r\n var isPropDefined = isDefined(rtlProp);\r\n var onlyGlobalDefined = isDefined(globalConfig().rtlEnabled) && !isPropDefined && !isDefined(null === config || void 0 === config ? void 0 : config.rtlEnabled);\r\n return isPropDefined && rtlProp !== (null === config || void 0 === config ? void 0 : config.rtlEnabled) || onlyGlobalDefined\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/widget.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"_feedbackHideTimeout\", \"_feedbackShowTimeout\", \"accessKey\", \"activeStateEnabled\", \"activeStateUnit\", \"addWidgetClass\", \"aria\", \"children\", \"className\", \"classes\", \"cssText\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"name\", \"onActive\", \"onClick\", \"onDimensionChanged\", \"onFocusIn\", \"onFocusOut\", \"onHoverEnd\", \"onHoverStart\", \"onInactive\", \"onKeyDown\", \"onRootElementRendered\", \"onVisibilityChange\", \"rootElementRef\", \"rtlEnabled\", \"tabIndex\", \"visible\", \"width\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n normalizeStyles\r\n} from \"@devextreme/runtime/inferno\";\r\nimport \"../../../events/click\";\r\nimport \"../../../events/hover\";\r\nimport {\r\n isFunction\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n dxClick,\r\n focus,\r\n keyboard,\r\n resize,\r\n visibility\r\n} from \"../../../events/short\";\r\nimport {\r\n subscribeToDxActiveEvent,\r\n subscribeToDxInactiveEvent,\r\n subscribeToDxHoverStartEvent,\r\n subscribeToDxHoverEndEvent,\r\n subscribeToDxFocusInEvent,\r\n subscribeToDxFocusOutEvent\r\n} from \"../../utils/subscribe_to_event\";\r\nimport {\r\n combineClasses\r\n} from \"../../utils/combine_classes\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n normalizeStyleProp\r\n} from \"../../../core/utils/style\";\r\nimport {\r\n BaseWidgetProps\r\n} from \"./base_props\";\r\nimport {\r\n ConfigContext\r\n} from \"../../common/config_context\";\r\nimport {\r\n ConfigProvider\r\n} from \"../../common/config_provider\";\r\nimport {\r\n resolveRtlEnabled,\r\n resolveRtlEnabledDefinition\r\n} from \"../../utils/resolve_rtl\";\r\nimport resizeCallbacks from \"../../../core/utils/resize_callbacks\";\r\nimport errors from \"../../../core/errors\";\r\nimport domAdapter from \"../../../core/dom_adapter\";\r\nvar DEFAULT_FEEDBACK_HIDE_TIMEOUT = 400;\r\nvar DEFAULT_FEEDBACK_SHOW_TIMEOUT = 30;\r\nvar getAria = args => Object.keys(args).reduce((r, key) => {\r\n if (args[key]) {\r\n return _extends({}, r, {\r\n [\"role\" === key || \"id\" === key ? key : \"aria-\".concat(key)]: String(args[key])\r\n })\r\n }\r\n return r\r\n}, {});\r\nexport var viewFunction = viewModel => {\r\n var widget = normalizeProps(createVNode(1, \"div\", viewModel.cssClasses, viewModel.props.children, 0, _extends({}, viewModel.attributes, {\r\n tabIndex: viewModel.tabIndex,\r\n title: viewModel.props.hint,\r\n style: normalizeStyles(viewModel.styles)\r\n }), null, viewModel.widgetElementRef));\r\n return viewModel.shouldRenderConfigProvider ? createComponentVNode(2, ConfigProvider, {\r\n rtlEnabled: viewModel.rtlEnabled,\r\n children: widget\r\n }) : widget\r\n};\r\nexport var WidgetProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(BaseWidgetProps), Object.getOwnPropertyDescriptors({\r\n _feedbackHideTimeout: DEFAULT_FEEDBACK_HIDE_TIMEOUT,\r\n _feedbackShowTimeout: DEFAULT_FEEDBACK_SHOW_TIMEOUT,\r\n cssText: \"\",\r\n aria: Object.freeze({}),\r\n classes: \"\",\r\n name: \"\",\r\n addWidgetClass: true\r\n})));\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class Widget extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.widgetElementRef = infernoCreateRef();\r\n this.state = {\r\n active: false,\r\n focused: false,\r\n hovered: false\r\n };\r\n this.setRootElementRef = this.setRootElementRef.bind(this);\r\n this.activeEffect = this.activeEffect.bind(this);\r\n this.inactiveEffect = this.inactiveEffect.bind(this);\r\n this.clickEffect = this.clickEffect.bind(this);\r\n this.focus = this.focus.bind(this);\r\n this.blur = this.blur.bind(this);\r\n this.activate = this.activate.bind(this);\r\n this.deactivate = this.deactivate.bind(this);\r\n this.focusInEffect = this.focusInEffect.bind(this);\r\n this.focusOutEffect = this.focusOutEffect.bind(this);\r\n this.hoverStartEffect = this.hoverStartEffect.bind(this);\r\n this.hoverEndEffect = this.hoverEndEffect.bind(this);\r\n this.keyboardEffect = this.keyboardEffect.bind(this);\r\n this.resizeEffect = this.resizeEffect.bind(this);\r\n this.windowResizeEffect = this.windowResizeEffect.bind(this);\r\n this.visibilityEffect = this.visibilityEffect.bind(this);\r\n this.checkDeprecation = this.checkDeprecation.bind(this);\r\n this.applyCssTextEffect = this.applyCssTextEffect.bind(this)\r\n }\r\n get config() {\r\n if (this.context[ConfigContext.id]) {\r\n return this.context[ConfigContext.id]\r\n }\r\n return ConfigContext.defaultValue\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.setRootElementRef, []), new InfernoEffect(this.activeEffect, [this.props._feedbackShowTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.disabled, this.props.onActive]), new InfernoEffect(this.inactiveEffect, [this.props._feedbackHideTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.onInactive, this.state.active]), new InfernoEffect(this.clickEffect, [this.props.disabled, this.props.name, this.props.onClick]), new InfernoEffect(this.focusInEffect, [this.props.disabled, this.props.focusStateEnabled, this.props.name, this.props.onFocusIn]), new InfernoEffect(this.focusOutEffect, [this.props.focusStateEnabled, this.props.name, this.props.onFocusOut, this.state.focused]), new InfernoEffect(this.hoverStartEffect, [this.props.activeStateUnit, this.props.disabled, this.props.hoverStateEnabled, this.props.onHoverStart, this.state.active]), new InfernoEffect(this.hoverEndEffect, [this.props.activeStateUnit, this.props.hoverStateEnabled, this.props.onHoverEnd, this.state.hovered]), new InfernoEffect(this.keyboardEffect, [this.props.focusStateEnabled, this.props.onKeyDown]), new InfernoEffect(this.resizeEffect, [this.props.name, this.props.onDimensionChanged]), new InfernoEffect(this.windowResizeEffect, [this.props.onDimensionChanged]), new InfernoEffect(this.visibilityEffect, [this.props.name, this.props.onVisibilityChange]), new InfernoEffect(this.checkDeprecation, [this.props.height, this.props.width]), new InfernoEffect(this.applyCssTextEffect, [this.props.cssText]), createReRenderEffect()]\r\n }\r\n updateEffects() {\r\n var _this$_effects$, _this$_effects$2, _this$_effects$3, _this$_effects$4, _this$_effects$5, _this$_effects$6, _this$_effects$7, _this$_effects$8, _this$_effects$9, _this$_effects$10, _this$_effects$11, _this$_effects$12, _this$_effects$13;\r\n null === (_this$_effects$ = this._effects[1]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props._feedbackShowTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.disabled, this.props.onActive]);\r\n null === (_this$_effects$2 = this._effects[2]) || void 0 === _this$_effects$2 ? void 0 : _this$_effects$2.update([this.props._feedbackHideTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.onInactive, this.state.active]);\r\n null === (_this$_effects$3 = this._effects[3]) || void 0 === _this$_effects$3 ? void 0 : _this$_effects$3.update([this.props.disabled, this.props.name, this.props.onClick]);\r\n null === (_this$_effects$4 = this._effects[4]) || void 0 === _this$_effects$4 ? void 0 : _this$_effects$4.update([this.props.disabled, this.props.focusStateEnabled, this.props.name, this.props.onFocusIn]);\r\n null === (_this$_effects$5 = this._effects[5]) || void 0 === _this$_effects$5 ? void 0 : _this$_effects$5.update([this.props.focusStateEnabled, this.props.name, this.props.onFocusOut, this.state.focused]);\r\n null === (_this$_effects$6 = this._effects[6]) || void 0 === _this$_effects$6 ? void 0 : _this$_effects$6.update([this.props.activeStateUnit, this.props.disabled, this.props.hoverStateEnabled, this.props.onHoverStart, this.state.active]);\r\n null === (_this$_effects$7 = this._effects[7]) || void 0 === _this$_effects$7 ? void 0 : _this$_effects$7.update([this.props.activeStateUnit, this.props.hoverStateEnabled, this.props.onHoverEnd, this.state.hovered]);\r\n null === (_this$_effects$8 = this._effects[8]) || void 0 === _this$_effects$8 ? void 0 : _this$_effects$8.update([this.props.focusStateEnabled, this.props.onKeyDown]);\r\n null === (_this$_effects$9 = this._effects[9]) || void 0 === _this$_effects$9 ? void 0 : _this$_effects$9.update([this.props.name, this.props.onDimensionChanged]);\r\n null === (_this$_effects$10 = this._effects[10]) || void 0 === _this$_effects$10 ? void 0 : _this$_effects$10.update([this.props.onDimensionChanged]);\r\n null === (_this$_effects$11 = this._effects[11]) || void 0 === _this$_effects$11 ? void 0 : _this$_effects$11.update([this.props.name, this.props.onVisibilityChange]);\r\n null === (_this$_effects$12 = this._effects[12]) || void 0 === _this$_effects$12 ? void 0 : _this$_effects$12.update([this.props.height, this.props.width]);\r\n null === (_this$_effects$13 = this._effects[13]) || void 0 === _this$_effects$13 ? void 0 : _this$_effects$13.update([this.props.cssText])\r\n }\r\n setRootElementRef() {\r\n var {\r\n onRootElementRendered: onRootElementRendered,\r\n rootElementRef: rootElementRef\r\n } = this.props;\r\n if (rootElementRef) {\r\n rootElementRef.current = this.widgetElementRef.current\r\n }\r\n null === onRootElementRendered || void 0 === onRootElementRendered ? void 0 : onRootElementRendered(this.widgetElementRef.current)\r\n }\r\n activeEffect() {\r\n var {\r\n _feedbackShowTimeout: _feedbackShowTimeout,\r\n activeStateEnabled: activeStateEnabled,\r\n activeStateUnit: activeStateUnit,\r\n disabled: disabled,\r\n onActive: onActive\r\n } = this.props;\r\n var selector = activeStateUnit;\r\n if (activeStateEnabled) {\r\n if (!disabled) {\r\n return subscribeToDxActiveEvent(this.widgetElementRef.current, event => {\r\n this.setState(__state_argument => ({\r\n active: true\r\n }));\r\n null === onActive || void 0 === onActive ? void 0 : onActive(event)\r\n }, {\r\n timeout: _feedbackShowTimeout,\r\n selector: selector\r\n }, \"UIFeedback\")\r\n }\r\n }\r\n return\r\n }\r\n inactiveEffect() {\r\n var {\r\n _feedbackHideTimeout: _feedbackHideTimeout,\r\n activeStateEnabled: activeStateEnabled,\r\n activeStateUnit: activeStateUnit,\r\n onInactive: onInactive\r\n } = this.props;\r\n var selector = activeStateUnit;\r\n if (activeStateEnabled) {\r\n return subscribeToDxInactiveEvent(this.widgetElementRef.current, event => {\r\n if (this.state.active) {\r\n this.setState(__state_argument => ({\r\n active: false\r\n }));\r\n null === onInactive || void 0 === onInactive ? void 0 : onInactive(event)\r\n }\r\n }, {\r\n timeout: _feedbackHideTimeout,\r\n selector: selector\r\n }, \"UIFeedback\")\r\n }\r\n return\r\n }\r\n clickEffect() {\r\n var {\r\n disabled: disabled,\r\n name: name,\r\n onClick: onClick\r\n } = this.props;\r\n var namespace = name;\r\n if (onClick && !disabled) {\r\n dxClick.on(this.widgetElementRef.current, onClick, {\r\n namespace: namespace\r\n });\r\n return () => dxClick.off(this.widgetElementRef.current, {\r\n namespace: namespace\r\n })\r\n }\r\n return\r\n }\r\n focusInEffect() {\r\n var {\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n name: name,\r\n onFocusIn: onFocusIn\r\n } = this.props;\r\n var namespace = \"\".concat(name, \"Focus\");\r\n if (focusStateEnabled) {\r\n if (!disabled) {\r\n return subscribeToDxFocusInEvent(this.widgetElementRef.current, event => {\r\n if (!event.isDefaultPrevented()) {\r\n this.setState(__state_argument => ({\r\n focused: true\r\n }));\r\n null === onFocusIn || void 0 === onFocusIn ? void 0 : onFocusIn(event)\r\n }\r\n }, null, namespace)\r\n }\r\n }\r\n return\r\n }\r\n focusOutEffect() {\r\n var {\r\n focusStateEnabled: focusStateEnabled,\r\n name: name,\r\n onFocusOut: onFocusOut\r\n } = this.props;\r\n var namespace = \"\".concat(name, \"Focus\");\r\n if (focusStateEnabled) {\r\n return subscribeToDxFocusOutEvent(this.widgetElementRef.current, event => {\r\n if (!event.isDefaultPrevented() && this.state.focused) {\r\n this.setState(__state_argument => ({\r\n focused: false\r\n }));\r\n null === onFocusOut || void 0 === onFocusOut ? void 0 : onFocusOut(event)\r\n }\r\n }, null, namespace)\r\n }\r\n return\r\n }\r\n hoverStartEffect() {\r\n var {\r\n activeStateUnit: activeStateUnit,\r\n disabled: disabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n onHoverStart: onHoverStart\r\n } = this.props;\r\n var selector = activeStateUnit;\r\n if (hoverStateEnabled) {\r\n if (!disabled) {\r\n return subscribeToDxHoverStartEvent(this.widgetElementRef.current, event => {\r\n !this.state.active && this.setState(__state_argument => ({\r\n hovered: true\r\n }));\r\n null === onHoverStart || void 0 === onHoverStart ? void 0 : onHoverStart(event)\r\n }, {\r\n selector: selector\r\n }, \"UIFeedback\")\r\n }\r\n }\r\n return\r\n }\r\n hoverEndEffect() {\r\n var {\r\n activeStateUnit: activeStateUnit,\r\n hoverStateEnabled: hoverStateEnabled,\r\n onHoverEnd: onHoverEnd\r\n } = this.props;\r\n var selector = activeStateUnit;\r\n if (hoverStateEnabled) {\r\n return subscribeToDxHoverEndEvent(this.widgetElementRef.current, event => {\r\n if (this.state.hovered) {\r\n this.setState(__state_argument => ({\r\n hovered: false\r\n }));\r\n null === onHoverEnd || void 0 === onHoverEnd ? void 0 : onHoverEnd(event)\r\n }\r\n }, {\r\n selector: selector\r\n }, \"UIFeedback\")\r\n }\r\n return\r\n }\r\n keyboardEffect() {\r\n var {\r\n focusStateEnabled: focusStateEnabled,\r\n onKeyDown: onKeyDown\r\n } = this.props;\r\n if (focusStateEnabled && onKeyDown) {\r\n var id = keyboard.on(this.widgetElementRef.current, this.widgetElementRef.current, e => onKeyDown(e));\r\n return () => keyboard.off(id)\r\n }\r\n return\r\n }\r\n resizeEffect() {\r\n var namespace = \"\".concat(this.props.name, \"VisibilityChange\");\r\n var {\r\n onDimensionChanged: onDimensionChanged\r\n } = this.props;\r\n if (onDimensionChanged) {\r\n resize.on(this.widgetElementRef.current, onDimensionChanged, {\r\n namespace: namespace\r\n });\r\n return () => resize.off(this.widgetElementRef.current, {\r\n namespace: namespace\r\n })\r\n }\r\n return\r\n }\r\n windowResizeEffect() {\r\n var {\r\n onDimensionChanged: onDimensionChanged\r\n } = this.props;\r\n if (onDimensionChanged) {\r\n resizeCallbacks.add(onDimensionChanged);\r\n return () => {\r\n resizeCallbacks.remove(onDimensionChanged)\r\n }\r\n }\r\n return\r\n }\r\n visibilityEffect() {\r\n var {\r\n name: name,\r\n onVisibilityChange: onVisibilityChange\r\n } = this.props;\r\n var namespace = \"\".concat(name, \"VisibilityChange\");\r\n if (onVisibilityChange) {\r\n visibility.on(this.widgetElementRef.current, () => onVisibilityChange(true), () => onVisibilityChange(false), {\r\n namespace: namespace\r\n });\r\n return () => visibility.off(this.widgetElementRef.current, {\r\n namespace: namespace\r\n })\r\n }\r\n return\r\n }\r\n checkDeprecation() {\r\n var {\r\n height: height,\r\n width: width\r\n } = this.props;\r\n if (isFunction(width)) {\r\n errors.log(\"W0017\", \"width\")\r\n }\r\n if (isFunction(height)) {\r\n errors.log(\"W0017\", \"height\")\r\n }\r\n }\r\n applyCssTextEffect() {\r\n var {\r\n cssText: cssText\r\n } = this.props;\r\n if (\"\" !== cssText) {\r\n this.widgetElementRef.current.style.cssText = cssText\r\n }\r\n }\r\n get shouldRenderConfigProvider() {\r\n var {\r\n rtlEnabled: rtlEnabled\r\n } = this.props;\r\n return resolveRtlEnabledDefinition(rtlEnabled, this.config)\r\n }\r\n get rtlEnabled() {\r\n var {\r\n rtlEnabled: rtlEnabled\r\n } = this.props;\r\n return resolveRtlEnabled(rtlEnabled, this.config)\r\n }\r\n get attributes() {\r\n var {\r\n aria: aria,\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n visible: visible\r\n } = this.props;\r\n var accessKey = focusStateEnabled && !disabled && this.props.accessKey;\r\n return _extends({}, extend({}, accessKey && {\r\n accessKey: accessKey\r\n }), getAria(_extends({}, aria, {\r\n disabled: disabled,\r\n hidden: !visible\r\n })), extend({}, this.restAttributes))\r\n }\r\n get styles() {\r\n var {\r\n height: height,\r\n width: width\r\n } = this.props;\r\n var style = this.restAttributes.style || {};\r\n var computedWidth = normalizeStyleProp(\"width\", isFunction(width) ? width() : width);\r\n var computedHeight = normalizeStyleProp(\"height\", isFunction(height) ? height() : height);\r\n return _extends({}, style, {\r\n height: null !== computedHeight && void 0 !== computedHeight ? computedHeight : style.height,\r\n width: null !== computedWidth && void 0 !== computedWidth ? computedWidth : style.width\r\n })\r\n }\r\n get cssClasses() {\r\n var {\r\n activeStateEnabled: activeStateEnabled,\r\n addWidgetClass: addWidgetClass,\r\n className: className,\r\n classes: classes,\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n onVisibilityChange: onVisibilityChange,\r\n visible: visible\r\n } = this.props;\r\n var isFocusable = !!focusStateEnabled && !disabled;\r\n var isHoverable = !!hoverStateEnabled && !disabled;\r\n var canBeActive = !!activeStateEnabled && !disabled;\r\n var classesMap = {\r\n \"dx-widget\": !!addWidgetClass,\r\n [String(classes)]: !!classes,\r\n [String(className)]: !!className,\r\n \"dx-state-disabled\": !!disabled,\r\n \"dx-state-invisible\": !visible,\r\n \"dx-state-focused\": !!this.state.focused && isFocusable,\r\n \"dx-state-active\": !!this.state.active && canBeActive,\r\n \"dx-state-hover\": !!this.state.hovered && isHoverable && !this.state.active,\r\n \"dx-rtl\": !!this.rtlEnabled,\r\n \"dx-visibility-change-handler\": !!onVisibilityChange\r\n };\r\n return combineClasses(classesMap)\r\n }\r\n get tabIndex() {\r\n var {\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n tabIndex: tabIndex\r\n } = this.props;\r\n var isFocusable = focusStateEnabled && !disabled;\r\n return isFocusable ? tabIndex : void 0\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n focus() {\r\n focus.trigger(this.widgetElementRef.current)\r\n }\r\n blur() {\r\n var activeElement = domAdapter.getActiveElement(this.widgetElementRef.current);\r\n if (this.widgetElementRef.current === activeElement) {\r\n activeElement.blur()\r\n }\r\n }\r\n activate() {\r\n this.setState(__state_argument => ({\r\n active: true\r\n }))\r\n }\r\n deactivate() {\r\n this.setState(__state_argument => ({\r\n active: false\r\n }))\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n active: this.state.active,\r\n focused: this.state.focused,\r\n hovered: this.state.hovered,\r\n widgetElementRef: this.widgetElementRef,\r\n config: this.config,\r\n shouldRenderConfigProvider: this.shouldRenderConfigProvider,\r\n rtlEnabled: this.rtlEnabled,\r\n attributes: this.attributes,\r\n styles: this.styles,\r\n cssClasses: this.cssClasses,\r\n tabIndex: this.tabIndex,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nWidget.defaultProps = WidgetProps;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Scrollable from \"./ui.scrollable.old\";\r\nexport default Scrollable;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/base_props.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var BaseWidgetProps = {\r\n className: \"\",\r\n activeStateEnabled: false,\r\n disabled: false,\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n tabIndex: 0,\r\n visible: true\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/validation_engine.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../core/class\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n EventsStrategy\r\n} from \"../core/events_strategy\";\r\nimport errors from \"../core/errors\";\r\nimport {\r\n grep\r\n} from \"../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isString,\r\n isDate,\r\n isBoolean,\r\n isObject,\r\n isFunction,\r\n isPromise,\r\n isNumeric\r\n} from \"../core/utils/type\";\r\nimport numberLocalization from \"../localization/number\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport {\r\n fromPromise,\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar STATUS = {\r\n valid: \"valid\",\r\n invalid: \"invalid\",\r\n pending: \"pending\"\r\n};\r\nclass BaseRuleValidator {\r\n constructor() {\r\n this.NAME = \"base\"\r\n }\r\n defaultMessage(value) {\r\n return messageLocalization.getFormatter(\"validation-\".concat(this.NAME))(value)\r\n }\r\n defaultFormattedMessage(value) {\r\n return messageLocalization.getFormatter(\"validation-\".concat(this.NAME, \"-formatted\"))(value)\r\n }\r\n _isValueEmpty(value) {\r\n return !rulesValidators.required.validate(value, {})\r\n }\r\n validate(value, rule) {\r\n var valueArray = Array.isArray(value) ? value : [value];\r\n var result = true;\r\n if (valueArray.length) {\r\n valueArray.every(itemValue => {\r\n result = this._validate(itemValue, rule);\r\n return result\r\n })\r\n } else {\r\n result = this._validate(null, rule)\r\n }\r\n return result\r\n }\r\n}\r\nclass RequiredRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"required\"\r\n }\r\n _validate(value, rule) {\r\n if (!isDefined(value)) {\r\n return false\r\n }\r\n if (false === value) {\r\n return false\r\n }\r\n value = String(value);\r\n if (rule.trim || !isDefined(rule.trim)) {\r\n value = value.trim()\r\n }\r\n return \"\" !== value\r\n }\r\n}\r\nclass NumericRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"numeric\"\r\n }\r\n _validate(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n if (rule.useCultureSettings && isString(value)) {\r\n return !isNaN(numberLocalization.parse(value))\r\n } else {\r\n return isNumeric(value)\r\n }\r\n }\r\n}\r\nclass RangeRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"range\"\r\n }\r\n _validate(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var validNumber = rulesValidators.numeric.validate(value, rule);\r\n var validValue = isDefined(value) && \"\" !== value;\r\n var number = validNumber ? parseFloat(value) : validValue && value.valueOf();\r\n var min = rule.min;\r\n var max = rule.max;\r\n if (!(validNumber || isDate(value)) && !validValue) {\r\n return false\r\n }\r\n if (isDefined(min)) {\r\n if (isDefined(max)) {\r\n return number >= min && number <= max\r\n }\r\n return number >= min\r\n } else if (isDefined(max)) {\r\n return number <= max\r\n } else {\r\n throw errors.Error(\"E0101\")\r\n }\r\n }\r\n}\r\nclass StringLengthRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"stringLength\"\r\n }\r\n _validate(value, rule) {\r\n var _value;\r\n value = String(null !== (_value = value) && void 0 !== _value ? _value : \"\");\r\n if (rule.trim || !isDefined(rule.trim)) {\r\n value = value.trim()\r\n }\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n return rulesValidators.range.validate(value.length, extend({}, rule))\r\n }\r\n}\r\nclass CustomRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"custom\"\r\n }\r\n validate(value, rule) {\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var validator = rule.validator;\r\n var dataGetter = validator && isFunction(validator.option) && validator.option(\"dataGetter\");\r\n var extraParams = isFunction(dataGetter) && dataGetter();\r\n var params = {\r\n value: value,\r\n validator: validator,\r\n rule: rule\r\n };\r\n if (extraParams) {\r\n extend(params, extraParams)\r\n }\r\n return rule.validationCallback(params)\r\n }\r\n}\r\nclass AsyncRuleValidator extends CustomRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"async\"\r\n }\r\n validate(value, rule) {\r\n if (!isDefined(rule.reevaluate)) {\r\n extend(rule, {\r\n reevaluate: true\r\n })\r\n }\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var validator = rule.validator;\r\n var dataGetter = validator && isFunction(validator.option) && validator.option(\"dataGetter\");\r\n var extraParams = isFunction(dataGetter) && dataGetter();\r\n var params = {\r\n value: value,\r\n validator: validator,\r\n rule: rule\r\n };\r\n if (extraParams) {\r\n extend(params, extraParams)\r\n }\r\n var callbackResult = rule.validationCallback(params);\r\n if (!isPromise(callbackResult)) {\r\n throw errors.Error(\"E0103\")\r\n }\r\n return this._getWrappedPromise(fromPromise(callbackResult).promise())\r\n }\r\n _getWrappedPromise(promise) {\r\n var deferred = new Deferred;\r\n promise.then((function(res) {\r\n deferred.resolve(res)\r\n }), (function(err) {\r\n var res = {\r\n isValid: false\r\n };\r\n if (isDefined(err)) {\r\n if (isString(err)) {\r\n res.message = err\r\n } else if (isObject(err) && isDefined(err.message) && isString(err.message)) {\r\n res.message = err.message\r\n }\r\n }\r\n deferred.resolve(res)\r\n }));\r\n return deferred.promise()\r\n }\r\n}\r\nclass CompareRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"compare\"\r\n }\r\n _validate(value, rule) {\r\n if (!rule.comparisonTarget) {\r\n throw errors.Error(\"E0102\")\r\n }\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n extend(rule, {\r\n reevaluate: true\r\n });\r\n var otherValue = rule.comparisonTarget();\r\n var type = rule.comparisonType || \"==\";\r\n switch (type) {\r\n case \"==\":\r\n return value == otherValue;\r\n case \"!=\":\r\n return value != otherValue;\r\n case \"===\":\r\n return value === otherValue;\r\n case \"!==\":\r\n return value !== otherValue;\r\n case \">\":\r\n return value > otherValue;\r\n case \">=\":\r\n return value >= otherValue;\r\n case \"<\":\r\n return value < otherValue;\r\n case \"<=\":\r\n return value <= otherValue\r\n }\r\n }\r\n}\r\nclass PatternRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"pattern\"\r\n }\r\n _validate(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var pattern = rule.pattern;\r\n if (isString(pattern)) {\r\n pattern = new RegExp(pattern)\r\n }\r\n return pattern.test(value)\r\n }\r\n}\r\nclass EmailRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"email\"\r\n }\r\n _validate(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n return rulesValidators.pattern.validate(value, extend({}, rule, {\r\n pattern: /^[\\d\\w._-]+@[\\d\\w._-]+\\.[\\w]+$/i\r\n }))\r\n }\r\n}\r\nvar rulesValidators = {\r\n required: new RequiredRuleValidator,\r\n numeric: new NumericRuleValidator,\r\n range: new RangeRuleValidator,\r\n stringLength: new StringLengthRuleValidator,\r\n custom: new CustomRuleValidator,\r\n async: new AsyncRuleValidator,\r\n compare: new CompareRuleValidator,\r\n pattern: new PatternRuleValidator,\r\n email: new EmailRuleValidator\r\n};\r\nvar GroupConfig = Class.inherit({\r\n ctor(group) {\r\n this.group = group;\r\n this.validators = [];\r\n this._pendingValidators = [];\r\n this._onValidatorStatusChanged = this._onValidatorStatusChanged.bind(this);\r\n this._resetValidationInfo();\r\n this._eventsStrategy = new EventsStrategy(this)\r\n },\r\n validate() {\r\n var result = {\r\n isValid: true,\r\n brokenRules: [],\r\n validators: [],\r\n status: STATUS.valid,\r\n complete: null\r\n };\r\n this._unsubscribeFromAllChangeEvents();\r\n this._pendingValidators = [];\r\n this._resetValidationInfo();\r\n each(this.validators, (_, validator) => {\r\n var validatorResult = validator.validate();\r\n result.isValid = result.isValid && validatorResult.isValid;\r\n if (validatorResult.brokenRules) {\r\n result.brokenRules = result.brokenRules.concat(validatorResult.brokenRules)\r\n }\r\n result.validators.push(validator);\r\n if (validatorResult.status === STATUS.pending) {\r\n this._addPendingValidator(validator)\r\n }\r\n this._subscribeToChangeEvents(validator)\r\n });\r\n if (this._pendingValidators.length) {\r\n result.status = STATUS.pending\r\n } else {\r\n result.status = result.isValid ? STATUS.valid : STATUS.invalid;\r\n this._unsubscribeFromAllChangeEvents();\r\n this._raiseValidatedEvent(result)\r\n }\r\n this._updateValidationInfo(result);\r\n return extend({}, this._validationInfo.result)\r\n },\r\n _subscribeToChangeEvents(validator) {\r\n validator.on(\"validating\", this._onValidatorStatusChanged);\r\n validator.on(\"validated\", this._onValidatorStatusChanged)\r\n },\r\n _unsubscribeFromChangeEvents(validator) {\r\n validator.off(\"validating\", this._onValidatorStatusChanged);\r\n validator.off(\"validated\", this._onValidatorStatusChanged)\r\n },\r\n _unsubscribeFromAllChangeEvents() {\r\n each(this.validators, (_, validator) => {\r\n this._unsubscribeFromChangeEvents(validator)\r\n })\r\n },\r\n _updateValidationInfo(result) {\r\n this._validationInfo.result = result;\r\n if (result.status !== STATUS.pending) {\r\n return\r\n }\r\n if (!this._validationInfo.deferred) {\r\n this._validationInfo.deferred = new Deferred;\r\n this._validationInfo.result.complete = this._validationInfo.deferred.promise()\r\n }\r\n },\r\n _addPendingValidator(validator) {\r\n var foundValidator = grep(this._pendingValidators, (function(val) {\r\n return val === validator\r\n }))[0];\r\n if (!foundValidator) {\r\n this._pendingValidators.push(validator)\r\n }\r\n },\r\n _removePendingValidator(validator) {\r\n var index = this._pendingValidators.indexOf(validator);\r\n if (index >= 0) {\r\n this._pendingValidators.splice(index, 1)\r\n }\r\n },\r\n _orderBrokenRules(brokenRules) {\r\n var orderedRules = [];\r\n each(this.validators, (function(_, validator) {\r\n var foundRules = grep(brokenRules, (function(rule) {\r\n return rule.validator === validator\r\n }));\r\n if (foundRules.length) {\r\n orderedRules = orderedRules.concat(foundRules)\r\n }\r\n }));\r\n return orderedRules\r\n },\r\n _updateBrokenRules(result) {\r\n if (!this._validationInfo.result) {\r\n return\r\n }\r\n var brokenRules = this._validationInfo.result.brokenRules;\r\n var rules = grep(brokenRules, (function(rule) {\r\n return rule.validator !== result.validator\r\n }));\r\n if (result.brokenRules) {\r\n brokenRules = rules.concat(result.brokenRules)\r\n }\r\n this._validationInfo.result.brokenRules = this._orderBrokenRules(brokenRules)\r\n },\r\n _onValidatorStatusChanged(result) {\r\n if (result.status === STATUS.pending) {\r\n this._addPendingValidator(result.validator);\r\n return\r\n }\r\n this._resolveIfComplete(result)\r\n },\r\n _resolveIfComplete(result) {\r\n this._removePendingValidator(result.validator);\r\n this._updateBrokenRules(result);\r\n if (!this._pendingValidators.length) {\r\n this._unsubscribeFromAllChangeEvents();\r\n if (!this._validationInfo.result) {\r\n return\r\n }\r\n this._validationInfo.result.status = 0 === this._validationInfo.result.brokenRules.length ? STATUS.valid : STATUS.invalid;\r\n this._validationInfo.result.isValid = this._validationInfo.result.status === STATUS.valid;\r\n var res = extend({}, this._validationInfo.result, {\r\n complete: null\r\n });\r\n var deferred = this._validationInfo.deferred;\r\n this._validationInfo.deferred = null;\r\n this._raiseValidatedEvent(res);\r\n deferred && setTimeout(() => {\r\n deferred.resolve(res)\r\n })\r\n }\r\n },\r\n _raiseValidatedEvent(result) {\r\n this._eventsStrategy.fireEvent(\"validated\", [result])\r\n },\r\n _resetValidationInfo() {\r\n this._validationInfo = {\r\n result: null,\r\n deferred: null\r\n }\r\n },\r\n _synchronizeValidationInfo() {\r\n if (this._validationInfo.result) {\r\n this._validationInfo.result.validators = this.validators\r\n }\r\n },\r\n removeRegisteredValidator(validator) {\r\n var index = this.validators.indexOf(validator);\r\n if (index > -1) {\r\n this.validators.splice(index, 1);\r\n this._synchronizeValidationInfo();\r\n this._resolveIfComplete({\r\n validator: validator\r\n })\r\n }\r\n },\r\n registerValidator(validator) {\r\n if (!this.validators.includes(validator)) {\r\n this.validators.push(validator);\r\n this._synchronizeValidationInfo()\r\n }\r\n },\r\n reset() {\r\n each(this.validators, (function(_, validator) {\r\n validator.reset()\r\n }));\r\n this._pendingValidators = [];\r\n this._resetValidationInfo()\r\n },\r\n on(eventName, eventHandler) {\r\n this._eventsStrategy.on(eventName, eventHandler);\r\n return this\r\n },\r\n off(eventName, eventHandler) {\r\n this._eventsStrategy.off(eventName, eventHandler);\r\n return this\r\n }\r\n});\r\nvar ValidationEngine = {\r\n groups: [],\r\n getGroupConfig(group) {\r\n var result = grep(this.groups, (function(config) {\r\n return config.group === group\r\n }));\r\n if (result.length) {\r\n return result[0]\r\n }\r\n },\r\n findGroup($element, model) {\r\n var _$element$data, _$element$data$dxComp;\r\n var hasValidationGroup = null === (_$element$data = $element.data()) || void 0 === _$element$data ? void 0 : null === (_$element$data$dxComp = _$element$data.dxComponents) || void 0 === _$element$data$dxComp ? void 0 : _$element$data$dxComp.includes(\"dxValidationGroup\");\r\n var validationGroup = hasValidationGroup && $element.dxValidationGroup(\"instance\");\r\n if (validationGroup) {\r\n return validationGroup\r\n }\r\n var $dxGroup = $element.parents(\".dx-validationgroup\").first();\r\n if ($dxGroup.length) {\r\n return $dxGroup.dxValidationGroup(\"instance\")\r\n }\r\n return model\r\n },\r\n initGroups() {\r\n this.groups = [];\r\n this.addGroup()\r\n },\r\n addGroup(group) {\r\n var config = this.getGroupConfig(group);\r\n if (!config) {\r\n config = new GroupConfig(group);\r\n this.groups.push(config)\r\n }\r\n return config\r\n },\r\n removeGroup(group) {\r\n var config = this.getGroupConfig(group);\r\n var index = this.groups.indexOf(config);\r\n if (index > -1) {\r\n this.groups.splice(index, 1)\r\n }\r\n return config\r\n },\r\n _setDefaultMessage(info) {\r\n var {\r\n rule: rule,\r\n validator: validator,\r\n name: name\r\n } = info;\r\n if (!isDefined(rule.message)) {\r\n if (validator.defaultFormattedMessage && isDefined(name)) {\r\n rule.message = validator.defaultFormattedMessage(name)\r\n } else {\r\n rule.message = validator.defaultMessage()\r\n }\r\n }\r\n },\r\n _addBrokenRule(info) {\r\n var {\r\n result: result,\r\n rule: rule\r\n } = info;\r\n if (!result.brokenRule) {\r\n result.brokenRule = rule\r\n }\r\n if (!result.brokenRules) {\r\n result.brokenRules = []\r\n }\r\n result.brokenRules.push(rule)\r\n },\r\n validate(value, rules, name) {\r\n var _rules$;\r\n var result = {\r\n name: name,\r\n value: value,\r\n brokenRule: null,\r\n brokenRules: null,\r\n isValid: true,\r\n validationRules: rules,\r\n pendingRules: null,\r\n status: STATUS.valid,\r\n complete: null\r\n };\r\n var validator = null === rules || void 0 === rules ? void 0 : null === (_rules$ = rules[0]) || void 0 === _rules$ ? void 0 : _rules$.validator;\r\n var asyncRuleItems = [];\r\n each(rules || [], (_, rule) => {\r\n var ruleValidator = rulesValidators[rule.type];\r\n var ruleValidationResult;\r\n if (ruleValidator) {\r\n if (isDefined(rule.isValid) && rule.value === value && !rule.reevaluate) {\r\n if (!rule.isValid) {\r\n result.isValid = false;\r\n this._addBrokenRule({\r\n result: result,\r\n rule: rule\r\n });\r\n return false\r\n }\r\n return true\r\n }\r\n rule.value = value;\r\n if (\"async\" === rule.type) {\r\n asyncRuleItems.push({\r\n rule: rule,\r\n ruleValidator: ruleValidator\r\n });\r\n return true\r\n }\r\n ruleValidationResult = ruleValidator.validate(value, rule);\r\n rule.isValid = ruleValidationResult;\r\n if (!ruleValidationResult) {\r\n result.isValid = false;\r\n this._setDefaultMessage({\r\n rule: rule,\r\n validator: ruleValidator,\r\n name: name\r\n });\r\n this._addBrokenRule({\r\n result: result,\r\n rule: rule\r\n })\r\n }\r\n if (!rule.isValid) {\r\n return false\r\n }\r\n } else {\r\n throw errors.Error(\"E0100\")\r\n }\r\n });\r\n if (result.isValid && !result.brokenRules && asyncRuleItems.length) {\r\n result = this._validateAsyncRules({\r\n value: value,\r\n items: asyncRuleItems,\r\n result: result,\r\n name: name\r\n })\r\n }\r\n this._synchronizeGroupValidationInfo(validator, result);\r\n result.status = result.pendingRules ? STATUS.pending : result.isValid ? STATUS.valid : STATUS.invalid;\r\n return result\r\n },\r\n _synchronizeGroupValidationInfo(validator, result) {\r\n var _result$brokenRules;\r\n if (!validator) {\r\n return\r\n }\r\n var groupConfig = ValidationEngine.getGroupConfig(validator._validationGroup);\r\n groupConfig._updateBrokenRules.call(groupConfig, {\r\n validator: validator,\r\n brokenRules: null !== (_result$brokenRules = result.brokenRules) && void 0 !== _result$brokenRules ? _result$brokenRules : []\r\n })\r\n },\r\n _validateAsyncRules(_ref) {\r\n var {\r\n result: result,\r\n value: value,\r\n items: items,\r\n name: name\r\n } = _ref;\r\n var asyncResults = [];\r\n each(items, (_, item) => {\r\n var validateResult = item.ruleValidator.validate(value, item.rule);\r\n if (!isPromise(validateResult)) {\r\n this._updateRuleConfig({\r\n rule: item.rule,\r\n ruleResult: this._getPatchedRuleResult(validateResult),\r\n validator: item.ruleValidator,\r\n name: name\r\n })\r\n } else {\r\n if (!result.pendingRules) {\r\n result.pendingRules = []\r\n }\r\n result.pendingRules.push(item.rule);\r\n var asyncResult = validateResult.then(res => {\r\n var ruleResult = this._getPatchedRuleResult(res);\r\n this._updateRuleConfig({\r\n rule: item.rule,\r\n ruleResult: ruleResult,\r\n validator: item.ruleValidator,\r\n name: name\r\n });\r\n return ruleResult\r\n });\r\n asyncResults.push(asyncResult)\r\n }\r\n });\r\n if (asyncResults.length) {\r\n result.complete = Promise.all(asyncResults).then(values => this._getAsyncRulesResult({\r\n result: result,\r\n values: values\r\n }))\r\n }\r\n return result\r\n },\r\n _updateRuleConfig(_ref2) {\r\n var {\r\n rule: rule,\r\n ruleResult: ruleResult,\r\n validator: validator,\r\n name: name\r\n } = _ref2;\r\n rule.isValid = ruleResult.isValid;\r\n if (!ruleResult.isValid) {\r\n if (isDefined(ruleResult.message) && isString(ruleResult.message) && ruleResult.message.length) {\r\n rule.message = ruleResult.message\r\n } else {\r\n this._setDefaultMessage({\r\n rule: rule,\r\n validator: validator,\r\n name: name\r\n })\r\n }\r\n }\r\n },\r\n _getPatchedRuleResult(ruleResult) {\r\n var result;\r\n if (isObject(ruleResult)) {\r\n result = extend({}, ruleResult);\r\n if (!isDefined(result.isValid)) {\r\n result.isValid = true\r\n }\r\n } else {\r\n result = {\r\n isValid: isBoolean(ruleResult) ? ruleResult : true\r\n }\r\n }\r\n return result\r\n },\r\n _getAsyncRulesResult(_ref3) {\r\n var {\r\n values: values,\r\n result: result\r\n } = _ref3;\r\n each(values, (index, val) => {\r\n if (false === val.isValid) {\r\n result.isValid = val.isValid;\r\n var rule = result.pendingRules[index];\r\n this._addBrokenRule({\r\n result: result,\r\n rule: rule\r\n })\r\n }\r\n });\r\n result.pendingRules = null;\r\n result.complete = null;\r\n result.status = result.isValid ? STATUS.valid : STATUS.invalid;\r\n return result\r\n },\r\n registerValidatorInGroup(group, validator) {\r\n var groupConfig = ValidationEngine.addGroup(group);\r\n groupConfig.registerValidator.call(groupConfig, validator)\r\n },\r\n _shouldRemoveGroup(group, validatorsInGroup) {\r\n var isDefaultGroup = void 0 === group;\r\n var isValidationGroupInstance = group && \"dxValidationGroup\" === group.NAME;\r\n return !isDefaultGroup && !isValidationGroupInstance && !validatorsInGroup.length\r\n },\r\n removeRegisteredValidator(group, validator) {\r\n var config = ValidationEngine.getGroupConfig(group);\r\n if (config) {\r\n config.removeRegisteredValidator.call(config, validator);\r\n var validatorsInGroup = config.validators;\r\n if (this._shouldRemoveGroup(group, validatorsInGroup)) {\r\n this.removeGroup(group)\r\n }\r\n }\r\n },\r\n initValidationOptions(options) {\r\n var initedOptions = {};\r\n if (options) {\r\n [\"isValid\", \"validationStatus\", \"validationError\", \"validationErrors\"].forEach(prop => {\r\n if (prop in options) {\r\n extend(initedOptions, this.synchronizeValidationOptions({\r\n name: prop,\r\n value: options[prop]\r\n }, options))\r\n }\r\n })\r\n }\r\n return initedOptions\r\n },\r\n synchronizeValidationOptions(_ref4, options) {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref4;\r\n switch (name) {\r\n case \"validationStatus\":\r\n var isValid = value === STATUS.valid || value === STATUS.pending;\r\n return options.isValid !== isValid ? {\r\n isValid: isValid\r\n } : {};\r\n case \"isValid\":\r\n var {\r\n validationStatus: validationStatus\r\n } = options;\r\n var newStatus = validationStatus;\r\n if (value && validationStatus === STATUS.invalid) {\r\n newStatus = STATUS.valid\r\n } else if (!value && validationStatus !== STATUS.invalid) {\r\n newStatus = STATUS.invalid\r\n }\r\n return newStatus !== validationStatus ? {\r\n validationStatus: newStatus\r\n } : {};\r\n case \"validationErrors\":\r\n var validationError = !value || !value.length ? null : value[0];\r\n return options.validationError !== validationError ? {\r\n validationError: validationError\r\n } : {};\r\n case \"validationError\":\r\n var {\r\n validationErrors: validationErrors\r\n } = options;\r\n if (!value && validationErrors) {\r\n return {\r\n validationErrors: null\r\n }\r\n } else if (value && !validationErrors) {\r\n return {\r\n validationErrors: [value]\r\n }\r\n } else if (value && validationErrors && value !== validationErrors[0]) {\r\n validationErrors[0] = value;\r\n return {\r\n validationErrors: validationErrors.slice()\r\n }\r\n }\r\n }\r\n return {}\r\n },\r\n validateGroup(group) {\r\n var groupConfig = ValidationEngine.getGroupConfig(group);\r\n if (!groupConfig) {\r\n throw errors.Error(\"E0110\")\r\n }\r\n return groupConfig.validate()\r\n },\r\n resetGroup(group) {\r\n var groupConfig = ValidationEngine.getGroupConfig(group);\r\n if (!groupConfig) {\r\n throw errors.Error(\"E0110\")\r\n }\r\n return groupConfig.reset()\r\n }\r\n};\r\nValidationEngine.initGroups();\r\nexport default ValidationEngine;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/animator.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nvar abstract = Class.abstract;\r\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"../../animation/frame\";\r\nvar Animator = Class.inherit({\r\n ctor: function() {\r\n this._finished = true;\r\n this._stopped = false;\r\n this._proxiedStepCore = this._stepCore.bind(this)\r\n },\r\n start: function() {\r\n this._stopped = false;\r\n this._finished = false;\r\n this._stepCore()\r\n },\r\n stop: function() {\r\n this._stopped = true;\r\n cancelAnimationFrame(this._stepAnimationFrame)\r\n },\r\n _stepCore: function() {\r\n if (this._isStopped()) {\r\n this._stop();\r\n return\r\n }\r\n if (this._isFinished()) {\r\n this._finished = true;\r\n this._complete();\r\n return\r\n }\r\n this._step();\r\n this._stepAnimationFrame = requestAnimationFrame(this._proxiedStepCore)\r\n },\r\n _step: abstract,\r\n _isFinished: noop,\r\n _stop: noop,\r\n _complete: noop,\r\n _isStopped: function() {\r\n return this._stopped\r\n },\r\n inProgress: function() {\r\n return !(this._stopped || this._finished)\r\n }\r\n});\r\nexport default Animator;\r\n","import { getFlagsForElementVnode, createComponentVNode, createFragment, createVNode } from 'inferno';\n\nfunction isNullOrUndef(o) {\n return o === void 0 || o === null;\n}\nfunction isString(o) {\n return typeof o === 'string';\n}\nfunction isUndefined(o) {\n return o === void 0;\n}\n\nvar componentHooks = {\n onComponentDidMount: 1,\n onComponentDidUpdate: 1,\n onComponentShouldUpdate: 1,\n onComponentWillMount: 1,\n onComponentWillUnmount: 1,\n onComponentWillUpdate: 1\n};\nfunction createElement(type, props, _children) {\n var arguments$1 = arguments;\n var children;\n var ref = null;\n var key = null;\n var className = null;\n var flags = 0;\n var newProps;\n var childLen = arguments.length - 2;\n if (childLen === 1) {\n children = _children;\n }\n else if (childLen > 1) {\n children = [];\n while (childLen-- > 0) {\n children[childLen] = arguments$1[childLen + 2];\n }\n }\n if (isString(type)) {\n flags = getFlagsForElementVnode(type);\n if (!isNullOrUndef(props)) {\n newProps = {};\n for (var prop in props) {\n if (prop === 'className' || prop === 'class') {\n className = props[prop];\n }\n else if (prop === 'key') {\n key = props.key;\n }\n else if (prop === 'children' && isUndefined(children)) {\n children = props.children; // always favour children args over props\n }\n else if (prop === 'ref') {\n ref = props.ref;\n }\n else {\n if (prop === 'contenteditable') {\n flags |= 4096 /* ContentEditable */;\n }\n newProps[prop] = props[prop];\n }\n }\n }\n }\n else {\n flags = 2 /* ComponentUnknown */;\n if (!isUndefined(children)) {\n if (!props) {\n props = {};\n }\n props.children = children;\n }\n if (!isNullOrUndef(props)) {\n newProps = {};\n for (var prop$1 in props) {\n if (prop$1 === 'key') {\n key = props.key;\n }\n else if (prop$1 === 'ref') {\n ref = props.ref;\n }\n else if (componentHooks[prop$1] === 1) {\n if (!ref) {\n ref = {};\n }\n ref[prop$1] = props[prop$1];\n }\n else {\n newProps[prop$1] = props[prop$1];\n }\n }\n }\n return createComponentVNode(flags, type, newProps, key, ref);\n }\n if (flags & 8192 /* Fragment */) {\n return createFragment(childLen === 1 ? [children] : children, 0 /* UnknownChildren */, key);\n }\n return createVNode(flags, type, className, children, 0 /* UnknownChildren */, newProps, key, ref);\n}\n\nexport { createElement };\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/get_element_location_internal.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n titleize\r\n} from \"../../../../core/utils/inflector\";\r\nimport {\r\n getRelativeOffset\r\n} from \"./get_relative_offset\";\r\nimport {\r\n DIRECTION_VERTICAL,\r\n SCROLLABLE_CONTENT_CLASS\r\n} from \"../common/consts\";\r\nexport function getElementLocationInternal(targetElement, direction, containerElement, scrollOffset, offset) {\r\n var additionalOffset = _extends({\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0\r\n }, offset);\r\n var isVertical = direction === DIRECTION_VERTICAL;\r\n var prop = isVertical ? \"top\" : \"left\";\r\n var inverseProp = isVertical ? \"bottom\" : \"right\";\r\n var dimension = isVertical ? \"height\" : \"width\";\r\n var containerOffsetSize = containerElement[\"offset\".concat(titleize(dimension))];\r\n var containerClientSize = containerElement[\"client\".concat(titleize(dimension))];\r\n var containerSize = containerElement.getBoundingClientRect()[dimension];\r\n var elementSize = targetElement.getBoundingClientRect()[dimension];\r\n var scale = 1;\r\n if (Math.abs(containerSize - containerOffsetSize) > 1) {\r\n scale = containerSize / containerOffsetSize\r\n }\r\n var relativeElementOffset = getRelativeOffset(SCROLLABLE_CONTENT_CLASS, targetElement)[prop] / scale;\r\n var containerScrollOffset = scrollOffset[prop];\r\n var relativeStartOffset = containerScrollOffset - relativeElementOffset + additionalOffset[prop];\r\n var relativeEndOffset = containerScrollOffset - relativeElementOffset - elementSize / scale + containerClientSize - additionalOffset[inverseProp];\r\n if (relativeStartOffset <= 0 && relativeEndOffset >= 0) {\r\n return containerScrollOffset\r\n }\r\n return containerScrollOffset - (Math.abs(relativeStartOffset) > Math.abs(relativeEndOffset) ? relativeEndOffset : relativeStartOffset)\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.old.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getOuterHeight,\r\n getWidth,\r\n getOuterWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n nativeScrolling\r\n} from \"../../core/utils/support\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport devices from \"../../core/devices\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport DOMComponent from \"../../core/dom_component\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport scrollEvents from \"../../events/gesture/emitter.gesture.scroll\";\r\nimport {\r\n SimulatedStrategy\r\n} from \"./ui.scrollable.simulated\";\r\nimport NativeStrategy from \"./ui.scrollable.native\";\r\nimport {\r\n deviceDependentOptions\r\n} from \"./ui.scrollable.device\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n getElementLocationInternal\r\n} from \"../../renovation/ui/scroll_view/utils/get_element_location_internal\";\r\nvar SCROLLABLE = \"dxScrollable\";\r\nvar SCROLLABLE_STRATEGY = \"dxScrollableStrategy\";\r\nvar SCROLLABLE_CLASS = \"dx-scrollable\";\r\nvar SCROLLABLE_DISABLED_CLASS = \"dx-scrollable-disabled\";\r\nvar SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nvar SCROLLABLE_WRAPPER_CLASS = \"dx-scrollable-wrapper\";\r\nvar SCROLLABLE_CONTENT_CLASS = \"dx-scrollable-content\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar BOTH = \"both\";\r\nvar Scrollable = DOMComponent.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n disabled: false,\r\n onScroll: null,\r\n direction: VERTICAL,\r\n showScrollbar: \"onScroll\",\r\n useNative: true,\r\n bounceEnabled: true,\r\n scrollByContent: true,\r\n scrollByThumb: false,\r\n onUpdated: null,\r\n onStart: null,\r\n onEnd: null,\r\n onBounce: null,\r\n useSimulatedScrollbar: false,\r\n useKeyboard: true,\r\n inertiaEnabled: true,\r\n updateManually: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat(deviceDependentOptions(), [{\r\n device: function() {\r\n return nativeScrolling && \"android\" === devices.real().platform && !browser.mozilla\r\n },\r\n options: {\r\n useSimulatedScrollbar: true\r\n }\r\n }])\r\n },\r\n _initOptions: function(options) {\r\n this.callBase(options);\r\n if (!(\"useSimulatedScrollbar\" in options)) {\r\n this._setUseSimulatedScrollbar()\r\n }\r\n },\r\n _setUseSimulatedScrollbar: function() {\r\n if (!this.initialOption(\"useSimulatedScrollbar\")) {\r\n this.option(\"useSimulatedScrollbar\", !this.option(\"useNative\"))\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initScrollableMarkup();\r\n this._locked = false\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this.update();\r\n this._updateRtlPosition();\r\n this._savedScrollOffset && this.scrollTo(this._savedScrollOffset);\r\n delete this._savedScrollOffset\r\n } else {\r\n this._savedScrollOffset = this.scrollOffset()\r\n }\r\n },\r\n _initScrollableMarkup: function() {\r\n var $element = this.$element().addClass(SCROLLABLE_CLASS);\r\n var $container = this._$container = $(\"<div>\").addClass(SCROLLABLE_CONTAINER_CLASS);\r\n var $wrapper = this._$wrapper = $(\"<div>\").addClass(SCROLLABLE_WRAPPER_CLASS);\r\n var $content = this._$content = $(\"<div>\").addClass(SCROLLABLE_CONTENT_CLASS);\r\n $content.append($element.contents()).appendTo($container);\r\n $container.appendTo($wrapper);\r\n $wrapper.appendTo($element)\r\n },\r\n _dimensionChanged: function() {\r\n this.update();\r\n this._updateRtlPosition()\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderDirection()\r\n },\r\n _render: function() {\r\n this._renderStrategy();\r\n this._attachEventHandlers();\r\n this._renderDisabledState();\r\n this._createActions();\r\n this.update();\r\n this.callBase();\r\n this._updateRtlPosition(true)\r\n },\r\n _updateRtlPosition: function(needInitializeRtlConfig) {\r\n this._strategy.updateRtlPosition(needInitializeRtlConfig)\r\n },\r\n _getMaxOffset: function() {\r\n var {\r\n scrollWidth: scrollWidth,\r\n clientWidth: clientWidth,\r\n scrollHeight: scrollHeight,\r\n clientHeight: clientHeight\r\n } = $(this.container()).get(0);\r\n return {\r\n left: scrollWidth - clientWidth,\r\n top: scrollHeight - clientHeight\r\n }\r\n },\r\n _attachEventHandlers: function() {\r\n var strategy = this._strategy;\r\n var initEventData = {\r\n getDirection: strategy.getDirection.bind(strategy),\r\n validate: this._validate.bind(this),\r\n isNative: this.option(\"useNative\"),\r\n scrollTarget: this._$container\r\n };\r\n eventsEngine.off(this._$wrapper, \".\" + SCROLLABLE);\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.init, SCROLLABLE), initEventData, this._initHandler.bind(this));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.start, SCROLLABLE), strategy.handleStart.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.move, SCROLLABLE), strategy.handleMove.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.end, SCROLLABLE), strategy.handleEnd.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.cancel, SCROLLABLE), strategy.handleCancel.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.stop, SCROLLABLE), strategy.handleStop.bind(strategy));\r\n eventsEngine.off(this._$container, \".\" + SCROLLABLE);\r\n eventsEngine.on(this._$container, addNamespace(\"scroll\", SCROLLABLE), strategy.handleScroll.bind(strategy))\r\n },\r\n _validate: function(e) {\r\n if (this._isLocked()) {\r\n return false\r\n }\r\n this._updateIfNeed();\r\n return this._moveIsAllowed(e)\r\n },\r\n _moveIsAllowed(e) {\r\n return this._strategy.validate(e)\r\n },\r\n handleMove(e) {\r\n this._strategy.handleMove(e)\r\n },\r\n _prepareDirections(value) {\r\n this._strategy._prepareDirections(value)\r\n },\r\n _initHandler: function() {\r\n var strategy = this._strategy;\r\n strategy.handleInit.apply(strategy, arguments)\r\n },\r\n _renderDisabledState: function() {\r\n this.$element().toggleClass(SCROLLABLE_DISABLED_CLASS, this.option(\"disabled\"));\r\n if (this.option(\"disabled\")) {\r\n this._lock()\r\n } else {\r\n this._unlock()\r\n }\r\n },\r\n _renderDirection: function() {\r\n this.$element().removeClass(\"dx-scrollable-\" + HORIZONTAL).removeClass(\"dx-scrollable-\" + VERTICAL).removeClass(\"dx-scrollable-\" + BOTH).addClass(\"dx-scrollable-\" + this.option(\"direction\"))\r\n },\r\n _renderStrategy: function() {\r\n this._createStrategy();\r\n this._strategy.render();\r\n this.$element().data(SCROLLABLE_STRATEGY, this._strategy)\r\n },\r\n _createStrategy: function() {\r\n this._strategy = this.option(\"useNative\") ? new NativeStrategy(this) : new SimulatedStrategy(this)\r\n },\r\n _createActions: function() {\r\n this._strategy && this._strategy.createActions()\r\n },\r\n _clean: function() {\r\n this._strategy && this._strategy.dispose()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onStart\":\r\n case \"onEnd\":\r\n case \"onUpdated\":\r\n case \"onScroll\":\r\n case \"onBounce\":\r\n this._createActions();\r\n break;\r\n case \"direction\":\r\n this._resetInactiveDirection();\r\n this._invalidate();\r\n break;\r\n case \"useNative\":\r\n this._setUseSimulatedScrollbar();\r\n this._invalidate();\r\n break;\r\n case \"inertiaEnabled\":\r\n case \"scrollByThumb\":\r\n case \"bounceEnabled\":\r\n case \"useKeyboard\":\r\n case \"showScrollbar\":\r\n case \"useSimulatedScrollbar\":\r\n this._invalidate();\r\n break;\r\n case \"disabled\":\r\n this._renderDisabledState();\r\n this._strategy && this._strategy.disabledChanged();\r\n break;\r\n case \"updateManually\":\r\n case \"scrollByContent\":\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._updateRtlPosition();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _resetInactiveDirection: function() {\r\n var inactiveProp = this._getInactiveProp();\r\n if (!inactiveProp || !hasWindow()) {\r\n return\r\n }\r\n var scrollOffset = this.scrollOffset();\r\n scrollOffset[inactiveProp] = 0;\r\n this.scrollTo(scrollOffset)\r\n },\r\n _getInactiveProp: function() {\r\n var direction = this.option(\"direction\");\r\n if (direction === VERTICAL) {\r\n return \"left\"\r\n }\r\n if (direction === HORIZONTAL) {\r\n return \"top\"\r\n }\r\n },\r\n _location: function() {\r\n return this._strategy.location()\r\n },\r\n _normalizeLocation: function(location) {\r\n if (isPlainObject(location)) {\r\n var left = ensureDefined(location.left, location.x);\r\n var top = ensureDefined(location.top, location.y);\r\n return {\r\n left: isDefined(left) ? -left : void 0,\r\n top: isDefined(top) ? -top : void 0\r\n }\r\n } else {\r\n var direction = this.option(\"direction\");\r\n return {\r\n left: direction !== VERTICAL ? -location : void 0,\r\n top: direction !== HORIZONTAL ? -location : void 0\r\n }\r\n }\r\n },\r\n _isLocked: function() {\r\n return this._locked\r\n },\r\n _lock: function() {\r\n this._locked = true\r\n },\r\n _unlock: function() {\r\n if (!this.option(\"disabled\")) {\r\n this._locked = false\r\n }\r\n },\r\n _isDirection: function(direction) {\r\n var current = this.option(\"direction\");\r\n if (direction === VERTICAL) {\r\n return current !== HORIZONTAL\r\n }\r\n if (direction === HORIZONTAL) {\r\n return current !== VERTICAL\r\n }\r\n return current === direction\r\n },\r\n _updateAllowedDirection: function() {\r\n var allowedDirections = this._strategy._allowedDirections();\r\n if (this._isDirection(BOTH) && allowedDirections.vertical && allowedDirections.horizontal) {\r\n this._allowedDirectionValue = BOTH\r\n } else if (this._isDirection(HORIZONTAL) && allowedDirections.horizontal) {\r\n this._allowedDirectionValue = HORIZONTAL\r\n } else if (this._isDirection(VERTICAL) && allowedDirections.vertical) {\r\n this._allowedDirectionValue = VERTICAL\r\n } else {\r\n this._allowedDirectionValue = null\r\n }\r\n },\r\n _allowedDirection: function() {\r\n return this._allowedDirectionValue\r\n },\r\n $content: function() {\r\n return this._$content\r\n },\r\n content: function() {\r\n return getPublicElement(this._$content)\r\n },\r\n container: function() {\r\n return getPublicElement(this._$container)\r\n },\r\n scrollOffset: function() {\r\n return this._strategy._getScrollOffset()\r\n },\r\n _isRtlNativeStrategy: function() {\r\n var {\r\n useNative: useNative,\r\n rtlEnabled: rtlEnabled\r\n } = this.option();\r\n return useNative && rtlEnabled\r\n },\r\n scrollTop: function() {\r\n return this.scrollOffset().top\r\n },\r\n scrollLeft: function() {\r\n return this.scrollOffset().left\r\n },\r\n clientHeight: function() {\r\n return getHeight(this._$container)\r\n },\r\n scrollHeight: function() {\r\n return getOuterHeight(this.$content())\r\n },\r\n clientWidth: function() {\r\n return getWidth(this._$container)\r\n },\r\n scrollWidth: function() {\r\n return getOuterWidth(this.$content())\r\n },\r\n update: function() {\r\n if (!this._strategy) {\r\n return\r\n }\r\n return when(this._strategy.update()).done(function() {\r\n this._updateAllowedDirection()\r\n }.bind(this))\r\n },\r\n scrollBy: function(distance) {\r\n distance = this._normalizeLocation(distance);\r\n if (!distance.top && !distance.left) {\r\n return\r\n }\r\n this._updateIfNeed();\r\n this._strategy.scrollBy(distance)\r\n },\r\n scrollTo: function(targetLocation) {\r\n targetLocation = this._normalizeLocation(targetLocation);\r\n this._updateIfNeed();\r\n var location = this._location();\r\n if (!this.option(\"useNative\")) {\r\n targetLocation = this._strategy._applyScaleRatio(targetLocation);\r\n location = this._strategy._applyScaleRatio(location)\r\n }\r\n if (this._isRtlNativeStrategy()) {\r\n location.left = location.left - this._getMaxOffset().left\r\n }\r\n var distance = this._normalizeLocation({\r\n left: location.left - ensureDefined(targetLocation.left, location.left),\r\n top: location.top - ensureDefined(targetLocation.top, location.top)\r\n });\r\n if (!distance.top && !distance.left) {\r\n return\r\n }\r\n this._strategy.scrollBy(distance)\r\n },\r\n scrollToElement: function(element, offset) {\r\n var $element = $(element);\r\n var elementInsideContent = this.$content().find(element).length;\r\n var elementIsInsideContent = $element.parents(\".\" + SCROLLABLE_CLASS).length - $element.parents(\".\" + SCROLLABLE_CONTENT_CLASS).length === 0;\r\n if (!elementInsideContent || !elementIsInsideContent) {\r\n return\r\n }\r\n var scrollPosition = {\r\n top: 0,\r\n left: 0\r\n };\r\n var direction = this.option(\"direction\");\r\n if (direction !== VERTICAL) {\r\n scrollPosition.left = this.getScrollElementPosition($element, HORIZONTAL, offset)\r\n }\r\n if (direction !== HORIZONTAL) {\r\n scrollPosition.top = this.getScrollElementPosition($element, VERTICAL, offset)\r\n }\r\n this.scrollTo(scrollPosition)\r\n },\r\n getScrollElementPosition: function($element, direction, offset) {\r\n var scrollOffset = this.scrollOffset();\r\n return getElementLocationInternal($element.get(0), direction, $(this.container()).get(0), scrollOffset, offset)\r\n },\r\n _updateIfNeed: function() {\r\n if (!this.option(\"updateManually\")) {\r\n this.update()\r\n }\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n isRenovated: function() {\r\n return !!Scrollable.IS_RENOVATED_WIDGET\r\n }\r\n});\r\nregisterComponent(SCROLLABLE, Scrollable);\r\nexport default Scrollable;\r\n","/**\r\n * DevExtreme (esm/events/gesture/swipeable.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n start as swipeEventStart,\r\n swipe as swipeEventSwipe,\r\n end as swipeEventEnd\r\n} from \"../swipe\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport DOMComponent from \"../../core/dom_component\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n addNamespace\r\n} from \"../utils/index\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n name\r\n} from \"../../core/utils/public_component\";\r\nvar DX_SWIPEABLE = \"dxSwipeable\";\r\nvar SWIPEABLE_CLASS = \"dx-swipeable\";\r\nvar ACTION_TO_EVENT_MAP = {\r\n onStart: swipeEventStart,\r\n onUpdated: swipeEventSwipe,\r\n onEnd: swipeEventEnd,\r\n onCancel: \"dxswipecancel\"\r\n};\r\nvar IMMEDIATE_TIMEOUT = 180;\r\nvar Swipeable = DOMComponent.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n elastic: true,\r\n immediate: false,\r\n immediateTimeout: IMMEDIATE_TIMEOUT,\r\n direction: \"horizontal\",\r\n itemSizeFunc: null,\r\n onStart: null,\r\n onUpdated: null,\r\n onEnd: null,\r\n onCancel: null\r\n })\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(SWIPEABLE_CLASS);\r\n this._attachEventHandlers()\r\n },\r\n _attachEventHandlers: function() {\r\n this._detachEventHandlers();\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n var NAME = this.NAME;\r\n this._createEventData();\r\n each(ACTION_TO_EVENT_MAP, function(actionName, eventName) {\r\n var action = this._createActionByOption(actionName, {\r\n context: this\r\n });\r\n eventName = addNamespace(eventName, NAME);\r\n eventsEngine.on(this.$element(), eventName, this._eventData, (function(e) {\r\n return action({\r\n event: e\r\n })\r\n }))\r\n }.bind(this))\r\n },\r\n _createEventData: function() {\r\n this._eventData = {\r\n elastic: this.option(\"elastic\"),\r\n itemSizeFunc: this.option(\"itemSizeFunc\"),\r\n direction: this.option(\"direction\"),\r\n immediate: this.option(\"immediate\"),\r\n immediateTimeout: this.option(\"immediateTimeout\")\r\n }\r\n },\r\n _detachEventHandlers: function() {\r\n eventsEngine.off(this.$element(), \".\" + DX_SWIPEABLE)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"disabled\":\r\n case \"onStart\":\r\n case \"onUpdated\":\r\n case \"onEnd\":\r\n case \"onCancel\":\r\n case \"elastic\":\r\n case \"immediate\":\r\n case \"itemSizeFunc\":\r\n case \"direction\":\r\n this._detachEventHandlers();\r\n this._attachEventHandlers();\r\n break;\r\n case \"rtlEnabled\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\nname(Swipeable, DX_SWIPEABLE);\r\nexport default Swipeable;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/get_relative_offset.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function getRelativeOffset(targetElementClass, sourceElement) {\r\n var offset = {\r\n left: 0,\r\n top: 0\r\n };\r\n var element = sourceElement;\r\n while (null !== (_element = element) && void 0 !== _element && _element.offsetParent && !element.classList.contains(targetElementClass)) {\r\n var _element;\r\n var parentElement = element.offsetParent;\r\n var elementRect = element.getBoundingClientRect();\r\n var parentElementRect = parentElement.getBoundingClientRect();\r\n offset.left += elementRect.left - parentElementRect.left;\r\n offset.top += elementRect.top - parentElementRect.top;\r\n element = element.offsetParent\r\n }\r\n return offset\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/common/consts.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var SCROLL_LINE_HEIGHT = 40;\r\nexport var DIRECTION_VERTICAL = \"vertical\";\r\nexport var DIRECTION_HORIZONTAL = \"horizontal\";\r\nexport var DIRECTION_BOTH = \"both\";\r\nexport var SCROLLABLE_SIMULATED_CLASS = \"dx-scrollable-simulated\";\r\nexport var SCROLLABLE_CONTENT_CLASS = \"dx-scrollable-content\";\r\nexport var SCROLLABLE_WRAPPER_CLASS = \"dx-scrollable-wrapper\";\r\nexport var SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nexport var SCROLLABLE_DISABLED_CLASS = \"dx-scrollable-disabled\";\r\nexport var SCROLLABLE_SCROLLBAR_SIMULATED = \"dx-scrollable-scrollbar-simulated\";\r\nexport var SCROLLABLE_SCROLLBARS_HIDDEN = \"dx-scrollable-scrollbars-hidden\";\r\nexport var SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = \"dx-scrollable-scrollbars-alwaysvisible\";\r\nexport var SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nexport var SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = \"dx-scrollable-scrollbar-active\";\r\nexport var SCROLLABLE_SCROLL_CLASS = \"dx-scrollable-scroll\";\r\nexport var SCROLLABLE_SCROLL_CONTENT_CLASS = \"dx-scrollable-scroll-content\";\r\nexport var HOVER_ENABLED_STATE = \"dx-scrollbar-hoverable\";\r\nexport var SCROLLVIEW_CONTENT_CLASS = \"dx-scrollview-content\";\r\nexport var SCROLLVIEW_TOP_POCKET_CLASS = \"dx-scrollview-top-pocket\";\r\nexport var SCROLLVIEW_PULLDOWN = \"dx-scrollview-pull-down\";\r\nexport var SCROLLVIEW_PULLDOWN_LOADING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nexport var SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nexport var SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nexport var SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nexport var SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nexport var SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nexport var PULLDOWN_ICON_CLASS = \"dx-icon-pulldown\";\r\nexport var SCROLLVIEW_BOTTOM_POCKET_CLASS = \"dx-scrollview-bottom-pocket\";\r\nexport var SCROLLVIEW_REACHBOTTOM_CLASS = \"dx-scrollview-scrollbottom\";\r\nexport var SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = \"dx-scrollview-scrollbottom-indicator\";\r\nexport var SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = \"dx-scrollview-scrollbottom-text\";\r\nexport var TopPocketState = {\r\n STATE_RELEASED: 0,\r\n STATE_READY: 1,\r\n STATE_REFRESHING: 2,\r\n STATE_LOADING: 3,\r\n STATE_TOUCHED: 4,\r\n STATE_PULLED: 5\r\n};\r\nexport var ShowScrollbarMode = {\r\n HOVER: \"onHover\",\r\n ALWAYS: \"always\",\r\n NEVER: \"never\",\r\n SCROLL: \"onScroll\"\r\n};\r\nexport var KEY_CODES = {\r\n PAGE_UP: \"pageUp\",\r\n PAGE_DOWN: \"pageDown\",\r\n END: \"end\",\r\n HOME: \"home\",\r\n LEFT: \"leftArrow\",\r\n UP: \"upArrow\",\r\n RIGHT: \"rightArrow\",\r\n DOWN: \"downArrow\"\r\n};\r\nexport var VALIDATE_WHEEL_TIMEOUT = 500;\r\nexport var HIDE_SCROLLBAR_TIMEOUT = 500;\r\n","/**\r\n * DevExtreme (esm/ui/multi_view/ui.multi_view.animation.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nexport var _translator = {\r\n move($element, position) {\r\n move($element, {\r\n left: position\r\n })\r\n }\r\n};\r\nexport var animation = {\r\n moveTo($element, position, duration, completeAction) {\r\n fx.animate($element, {\r\n type: \"slide\",\r\n to: {\r\n left: position\r\n },\r\n duration: duration,\r\n complete: completeAction\r\n })\r\n },\r\n complete($element) {\r\n fx.stop($element, true)\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/multi_view.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n locate\r\n} from \"../animation/translator\";\r\nimport {\r\n _translator,\r\n animation\r\n} from \"./multi_view/ui.multi_view.animation\";\r\nimport {\r\n sign\r\n} from \"../core/utils/math\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n noop,\r\n deferRender\r\n} from \"../core/utils/common\";\r\nimport {\r\n triggerResizeEvent\r\n} from \"../events/visibility_change\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport devices from \"../core/devices\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport CollectionWidget from \"./collection/ui.collection_widget.live_update\";\r\nimport Swipeable from \"../events/gesture/swipeable\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar MULTIVIEW_CLASS = \"dx-multiview\";\r\nvar MULTIVIEW_WRAPPER_CLASS = \"dx-multiview-wrapper\";\r\nvar MULTIVIEW_ITEM_CONTAINER_CLASS = \"dx-multiview-item-container\";\r\nvar MULTIVIEW_ITEM_CLASS = \"dx-multiview-item\";\r\nvar MULTIVIEW_ITEM_HIDDEN_CLASS = \"dx-multiview-item-hidden\";\r\nvar MULTIVIEW_ITEM_DATA_KEY = \"dxMultiViewItemData\";\r\nvar MULTIVIEW_ANIMATION_DURATION = 200;\r\nvar toNumber = value => +value;\r\nvar position = $element => locate($element).left;\r\nvar MultiView = CollectionWidget.inherit({\r\n _activeStateUnit: \".\" + MULTIVIEW_ITEM_CLASS,\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n pageUp: noop,\r\n pageDown: noop\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n selectedIndex: 0,\r\n swipeEnabled: true,\r\n animationEnabled: true,\r\n loop: false,\r\n deferRendering: true,\r\n _itemAttributes: {\r\n role: \"tabpanel\"\r\n },\r\n loopItemFocus: false,\r\n selectOnFocus: true,\r\n selectionMode: \"single\",\r\n selectionRequired: true,\r\n selectByClick: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _itemClass: function() {\r\n return MULTIVIEW_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return MULTIVIEW_ITEM_DATA_KEY\r\n },\r\n _itemContainer: function() {\r\n return this._$itemContainer\r\n },\r\n _itemElements: function() {\r\n return this._itemContainer().children(this._itemSelector())\r\n },\r\n _itemWidth: function() {\r\n if (!this._itemWidthValue) {\r\n this._itemWidthValue = getWidth(this._$wrapper)\r\n }\r\n return this._itemWidthValue\r\n },\r\n _clearItemWidthCache: function() {\r\n delete this._itemWidthValue\r\n },\r\n _itemsCount: function() {\r\n return this.option(\"items\").length\r\n },\r\n _normalizeIndex: function(index) {\r\n var count = this._itemsCount();\r\n if (index < 0) {\r\n index += count\r\n }\r\n if (index >= count) {\r\n index -= count\r\n }\r\n return index\r\n },\r\n _getRTLSignCorrection: function() {\r\n return this.option(\"rtlEnabled\") ? -1 : 1\r\n },\r\n _init: function() {\r\n this.callBase.apply(this, arguments);\r\n var $element = this.$element();\r\n $element.addClass(MULTIVIEW_CLASS);\r\n this._$wrapper = $(\"<div>\").addClass(MULTIVIEW_WRAPPER_CLASS);\r\n this._$wrapper.appendTo($element);\r\n this._$itemContainer = $(\"<div>\").addClass(MULTIVIEW_ITEM_CONTAINER_CLASS);\r\n this._$itemContainer.appendTo(this._$wrapper);\r\n this.option(\"loopItemFocus\", this.option(\"loop\"));\r\n this._findBoundaryIndices();\r\n this._initSwipeable()\r\n },\r\n _initMarkup: function() {\r\n this._deferredItems = [];\r\n this.callBase();\r\n var selectedItemIndices = this._getSelectedItemIndices();\r\n this._updateItemsVisibility(selectedItemIndices[0])\r\n },\r\n _afterItemElementDeleted: function($item, deletedActionArgs) {\r\n this.callBase($item, deletedActionArgs);\r\n if (this._deferredItems) {\r\n this._deferredItems.splice(deletedActionArgs.itemIndex, 1)\r\n }\r\n },\r\n _beforeItemElementInserted: function(change) {\r\n this.callBase.apply(this, arguments);\r\n if (this._deferredItems) {\r\n this._deferredItems.splice(change.index, 0, null)\r\n }\r\n },\r\n _executeItemRenderAction: function(index, itemData, itemElement) {\r\n index = (this.option(\"items\") || []).indexOf(itemData);\r\n this.callBase(index, itemData, itemElement)\r\n },\r\n _renderItemContent: function(args) {\r\n var renderContentDeferred = new Deferred;\r\n var that = this;\r\n var callBase = this.callBase;\r\n var deferred = new Deferred;\r\n deferred.done((function() {\r\n var $itemContent = callBase.call(that, args);\r\n renderContentDeferred.resolve($itemContent)\r\n }));\r\n this._deferredItems[args.index] = deferred;\r\n this.option(\"deferRendering\") || deferred.resolve();\r\n return renderContentDeferred.promise()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n deferRender(() => {\r\n var selectedItemIndices = this._getSelectedItemIndices();\r\n this._updateItems(selectedItemIndices[0])\r\n })\r\n },\r\n _updateItems: function(selectedIndex, newIndex) {\r\n this._updateItemsPosition(selectedIndex, newIndex);\r\n this._updateItemsVisibility(selectedIndex, newIndex)\r\n },\r\n _modifyByChanges: function() {\r\n this.callBase.apply(this, arguments);\r\n var selectedItemIndices = this._getSelectedItemIndices();\r\n this._updateItemsVisibility(selectedItemIndices[0])\r\n },\r\n _updateItemsPosition: function(selectedIndex, newIndex) {\r\n var $itemElements = this._itemElements();\r\n var positionSign = isDefined(newIndex) ? -this._animationDirection(newIndex, selectedIndex) : void 0;\r\n var $selectedItem = $itemElements.eq(selectedIndex);\r\n _translator.move($selectedItem, 0);\r\n if (isDefined(newIndex)) {\r\n _translator.move($itemElements.eq(newIndex), 100 * positionSign + \"%\")\r\n }\r\n },\r\n _updateItemsVisibility: function(selectedIndex, newIndex) {\r\n var $itemElements = this._itemElements();\r\n $itemElements.each(function(itemIndex, item) {\r\n var $item = $(item);\r\n var isHidden = itemIndex !== selectedIndex && itemIndex !== newIndex;\r\n if (!isHidden) {\r\n this._renderSpecificItem(itemIndex)\r\n }\r\n $item.toggleClass(MULTIVIEW_ITEM_HIDDEN_CLASS, isHidden);\r\n this.setAria(\"hidden\", isHidden || void 0, $item)\r\n }.bind(this))\r\n },\r\n _renderSpecificItem: function(index) {\r\n var $item = this._itemElements().eq(index);\r\n var hasItemContent = $item.find(this._itemContentClass()).length > 0;\r\n if (isDefined(index) && !hasItemContent) {\r\n this._deferredItems[index].resolve();\r\n triggerResizeEvent($item)\r\n }\r\n },\r\n _refreshItem: function($item, item) {\r\n this.callBase($item, item);\r\n this._updateItemsVisibility(this.option(\"selectedIndex\"))\r\n },\r\n _setAriaSelectionAttribute: noop,\r\n _updateSelection: function(addedSelection, removedSelection) {\r\n var newIndex = addedSelection[0];\r\n var prevIndex = removedSelection[0];\r\n animation.complete(this._$itemContainer);\r\n this._updateItems(prevIndex, newIndex);\r\n var animationDirection = this._animationDirection(newIndex, prevIndex);\r\n this._animateItemContainer(animationDirection * this._itemWidth(), function() {\r\n _translator.move(this._$itemContainer, 0);\r\n this._updateItems(newIndex);\r\n getWidth(this._$itemContainer)\r\n }.bind(this))\r\n },\r\n _animateItemContainer: function(position, completeCallback) {\r\n var duration = this.option(\"animationEnabled\") ? MULTIVIEW_ANIMATION_DURATION : 0;\r\n animation.moveTo(this._$itemContainer, position, duration, completeCallback)\r\n },\r\n _animationDirection: function(newIndex, prevIndex) {\r\n var containerPosition = position(this._$itemContainer);\r\n var indexDifference = (prevIndex - newIndex) * this._getRTLSignCorrection() * this._getItemFocusLoopSignCorrection();\r\n var isSwipePresent = 0 !== containerPosition;\r\n var directionSignVariable = isSwipePresent ? containerPosition : indexDifference;\r\n return sign(directionSignVariable)\r\n },\r\n _getSwipeDisabledState() {\r\n return !this.option(\"swipeEnabled\") || this._itemsCount() <= 1\r\n },\r\n _initSwipeable() {\r\n this._createComponent(this.$element(), Swipeable, {\r\n disabled: this._getSwipeDisabledState(),\r\n elastic: false,\r\n itemSizeFunc: this._itemWidth.bind(this),\r\n onStart: args => this._swipeStartHandler(args.event),\r\n onUpdated: args => this._swipeUpdateHandler(args.event),\r\n onEnd: args => this._swipeEndHandler(args.event)\r\n })\r\n },\r\n _findBoundaryIndices() {\r\n var _firstIndex2, _lastIndex;\r\n var items = this.option(\"items\");\r\n var firstIndex;\r\n var lastIndex;\r\n items.forEach((item, index) => {\r\n var isDisabled = Boolean(null === item || void 0 === item ? void 0 : item.disabled);\r\n if (!isDisabled) {\r\n var _firstIndex;\r\n null !== (_firstIndex = firstIndex) && void 0 !== _firstIndex ? _firstIndex : firstIndex = index;\r\n lastIndex = index\r\n }\r\n });\r\n this._boundaryIndices = {\r\n firstAvailableIndex: null !== (_firstIndex2 = firstIndex) && void 0 !== _firstIndex2 ? _firstIndex2 : 0,\r\n lastAvailableIndex: null !== (_lastIndex = lastIndex) && void 0 !== _lastIndex ? _lastIndex : items.length - 1,\r\n firstTrueIndex: 0,\r\n lastTrueIndex: items.length - 1\r\n }\r\n },\r\n _swipeStartHandler: function(e) {\r\n animation.complete(this._$itemContainer);\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n var loop = this.option(\"loop\");\r\n var {\r\n firstAvailableIndex: firstAvailableIndex,\r\n lastAvailableIndex: lastAvailableIndex\r\n } = this._boundaryIndices;\r\n var rtl = this.option(\"rtlEnabled\");\r\n e.maxLeftOffset = toNumber(loop || (rtl ? selectedIndex > firstAvailableIndex : selectedIndex < lastAvailableIndex));\r\n e.maxRightOffset = toNumber(loop || (rtl ? selectedIndex < lastAvailableIndex : selectedIndex > firstAvailableIndex));\r\n this._swipeDirection = null\r\n },\r\n _swipeUpdateHandler: function(e) {\r\n var offset = e.offset;\r\n var swipeDirection = sign(offset) * this._getRTLSignCorrection();\r\n _translator.move(this._$itemContainer, offset * this._itemWidth());\r\n if (swipeDirection !== this._swipeDirection) {\r\n this._swipeDirection = swipeDirection;\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n var newIndex = this._normalizeIndex(selectedIndex - swipeDirection);\r\n this._updateItems(selectedIndex, newIndex)\r\n }\r\n },\r\n _findNextAvailableIndex(index, offset) {\r\n var {\r\n items: items,\r\n loop: loop\r\n } = this.option();\r\n var {\r\n firstAvailableIndex: firstAvailableIndex,\r\n lastAvailableIndex: lastAvailableIndex,\r\n firstTrueIndex: firstTrueIndex,\r\n lastTrueIndex: lastTrueIndex\r\n } = this._boundaryIndices;\r\n var isFirstActive = [firstTrueIndex, firstAvailableIndex].includes(index);\r\n var isLastActive = [lastTrueIndex, lastAvailableIndex].includes(index);\r\n if (loop) {\r\n if (isFirstActive && offset < 0) {\r\n return lastAvailableIndex\r\n } else if (isLastActive && offset > 0) {\r\n return firstAvailableIndex\r\n }\r\n }\r\n for (var i = index + offset; i >= firstAvailableIndex && i <= lastAvailableIndex; i += offset) {\r\n var isDisabled = Boolean(items[i].disabled);\r\n if (!isDisabled) {\r\n return i\r\n }\r\n }\r\n return index\r\n },\r\n _swipeEndHandler: function(e) {\r\n var targetOffset = e.targetOffset * this._getRTLSignCorrection();\r\n if (targetOffset) {\r\n var newSelectedIndex = this._findNextAvailableIndex(this.option(\"selectedIndex\"), -targetOffset);\r\n this.option(\"selectedIndex\", newSelectedIndex);\r\n var $selectedElement = this.itemElements().filter(\".dx-item-selected\");\r\n this.option(\"focusStateEnabled\") && this.option(\"focusedElement\", getPublicElement($selectedElement))\r\n } else {\r\n this._animateItemContainer(0, noop)\r\n }\r\n },\r\n _getItemFocusLoopSignCorrection: function() {\r\n return this._itemFocusLooped ? -1 : 1\r\n },\r\n _moveFocus: function() {\r\n this.callBase.apply(this, arguments);\r\n this._itemFocusLooped = false\r\n },\r\n _prevItem: function($items) {\r\n var $result = this.callBase.apply(this, arguments);\r\n this._itemFocusLooped = $result.is($items.last());\r\n return $result\r\n },\r\n _nextItem: function($items) {\r\n var $result = this.callBase.apply(this, arguments);\r\n this._itemFocusLooped = $result.is($items.first());\r\n return $result\r\n },\r\n _dimensionChanged: function() {\r\n this._clearItemWidthCache()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _updateSwipeDisabledState() {\r\n var disabled = this._getSwipeDisabledState();\r\n Swipeable.getInstance(this.$element()).option(\"disabled\", disabled)\r\n },\r\n _dispose: function() {\r\n delete this._boundaryIndices;\r\n this.callBase()\r\n },\r\n _optionChanged: function(args) {\r\n var value = args.value;\r\n switch (args.name) {\r\n case \"loop\":\r\n this.option(\"loopItemFocus\", value);\r\n break;\r\n case \"animationEnabled\":\r\n break;\r\n case \"swipeEnabled\":\r\n this._updateSwipeDisabledState();\r\n break;\r\n case \"deferRendering\":\r\n this._invalidate();\r\n break;\r\n case \"items\":\r\n this._updateSwipeDisabledState();\r\n this._findBoundaryIndices();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxMultiView\", MultiView);\r\nexport default MultiView;\r\n","/**\r\n * DevExtreme (esm/ui/tabs/item.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport CollectionWidgetItem from \"../collection/item\";\r\nvar TABS_ITEM_BADGE_CLASS = \"dx-tabs-item-badge\";\r\nvar BADGE_CLASS = \"dx-badge\";\r\nvar TabsItem = CollectionWidgetItem.inherit({\r\n _renderWatchers: function() {\r\n this.callBase();\r\n this._startWatcher(\"badge\", this._renderBadge.bind(this))\r\n },\r\n _renderBadge: function(badge) {\r\n this._$element.children(\".\" + BADGE_CLASS).remove();\r\n if (!badge) {\r\n return\r\n }\r\n var $badge = $(\"<div>\").addClass(TABS_ITEM_BADGE_CLASS).addClass(BADGE_CLASS).text(badge);\r\n this._$element.append($badge)\r\n }\r\n});\r\nexport default TabsItem;\r\n","/**\r\n * DevExtreme (esm/ui/tabs/constants.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var TABS_EXPANDED_CLASS = \"dx-tabs-expanded\";\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/get_scroll_left_max.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function getScrollLeftMax(element) {\r\n return element.scrollWidth - element.clientWidth\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/get_boundary_props.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getScrollLeftMax\r\n} from \"./get_scroll_left_max\";\r\nimport {\r\n getScrollTopMax\r\n} from \"./get_scroll_top_max\";\r\nimport {\r\n ScrollDirection\r\n} from \"./scroll_direction\";\r\nexport function isReachedLeft(scrollOffsetLeft, epsilon) {\r\n return Math.round(scrollOffsetLeft) <= epsilon\r\n}\r\nexport function isReachedRight(element, scrollOffsetLeft, epsilon) {\r\n return Math.round(getScrollLeftMax(element) - scrollOffsetLeft) <= epsilon\r\n}\r\nexport function isReachedTop(scrollOffsetTop, epsilon) {\r\n return Math.round(scrollOffsetTop) <= epsilon\r\n}\r\nexport function isReachedBottom(element, scrollOffsetTop, pocketHeight, epsilon) {\r\n return Math.round(getScrollTopMax(element) - scrollOffsetTop - pocketHeight) <= epsilon\r\n}\r\nexport function getBoundaryProps(direction, scrollOffset, element) {\r\n var pocketHeight = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;\r\n var {\r\n left: left,\r\n top: top\r\n } = scrollOffset;\r\n var boundaryProps = {};\r\n var {\r\n isHorizontal: isHorizontal,\r\n isVertical: isVertical\r\n } = new ScrollDirection(direction);\r\n if (isHorizontal) {\r\n boundaryProps.reachedLeft = isReachedLeft(left, 0);\r\n boundaryProps.reachedRight = isReachedRight(element, left, 0)\r\n }\r\n if (isVertical) {\r\n boundaryProps.reachedTop = isReachedTop(top, 0);\r\n boundaryProps.reachedBottom = isReachedBottom(element, top, pocketHeight, 0)\r\n }\r\n return boundaryProps\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/tabs.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth,\r\n getOuterWidth\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport devices from \"../core/devices\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport Button from \"./button\";\r\nimport {\r\n render\r\n} from \"./widget/utils.ink_ripple\";\r\nimport {\r\n addNamespace\r\n} from \"../events/utils/index\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n isPlainObject\r\n} from \"../core/utils/type\";\r\nimport pointerEvents from \"../events/pointer\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport TabsItem from \"./tabs/item\";\r\nimport {\r\n TABS_EXPANDED_CLASS\r\n} from \"./tabs/constants\";\r\nimport {\r\n isMaterial,\r\n current as currentTheme\r\n} from \"./themes\";\r\nimport holdEvent from \"../events/hold\";\r\nimport Scrollable from \"./scroll_view/ui.scrollable\";\r\nimport {\r\n default as CollectionWidget\r\n} from \"./collection/ui.collection_widget.live_update\";\r\nimport {\r\n getImageContainer\r\n} from \"../core/utils/icon\";\r\nimport {\r\n BindableTemplate\r\n} from \"../core/templates/bindable_template\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n isReachedLeft,\r\n isReachedRight\r\n} from \"../renovation/ui/scroll_view/utils/get_boundary_props\";\r\nimport {\r\n getScrollLeftMax\r\n} from \"../renovation/ui/scroll_view/utils/get_scroll_left_max\";\r\nvar TABS_CLASS = \"dx-tabs\";\r\nvar TABS_WRAPPER_CLASS = \"dx-tabs-wrapper\";\r\nvar TABS_STRETCHED_CLASS = \"dx-tabs-stretched\";\r\nvar TABS_SCROLLABLE_CLASS = \"dx-tabs-scrollable\";\r\nvar TABS_NAV_BUTTONS_CLASS = \"dx-tabs-nav-buttons\";\r\nvar OVERFLOW_HIDDEN_CLASS = \"dx-overflow-hidden\";\r\nvar TABS_ITEM_CLASS = \"dx-tab\";\r\nvar TABS_ITEM_SELECTED_CLASS = \"dx-tab-selected\";\r\nvar TABS_NAV_BUTTON_CLASS = \"dx-tabs-nav-button\";\r\nvar TABS_LEFT_NAV_BUTTON_CLASS = \"dx-tabs-nav-button-left\";\r\nvar TABS_RIGHT_NAV_BUTTON_CLASS = \"dx-tabs-nav-button-right\";\r\nvar TABS_ITEM_TEXT_CLASS = \"dx-tab-text\";\r\nvar FOCUSED_NEXT_TAB_CLASS = \"dx-focused-next-tab\";\r\nvar TABS_ITEM_DATA_KEY = \"dxTabData\";\r\nvar BUTTON_NEXT_ICON = \"chevronnext\";\r\nvar BUTTON_PREV_ICON = \"chevronprev\";\r\nvar FEEDBACK_HIDE_TIMEOUT = 100;\r\nvar FEEDBACK_DURATION_INTERVAL = 5;\r\nvar FEEDBACK_SCROLL_TIMEOUT = 300;\r\nvar TAB_OFFSET = 30;\r\nvar Tabs = CollectionWidget.inherit({\r\n _activeStateUnit: \".\" + TABS_ITEM_CLASS,\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n showNavButtons: true,\r\n scrollByContent: true,\r\n scrollingEnabled: true,\r\n selectionMode: \"single\",\r\n activeStateEnabled: true,\r\n selectionRequired: false,\r\n selectOnFocus: true,\r\n loopItemFocus: false,\r\n useInkRipple: false,\r\n badgeExpr: function(data) {\r\n return data ? data.badge : void 0\r\n },\r\n _itemAttributes: {\r\n role: \"tab\"\r\n }\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = currentTheme();\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" !== devices.real().deviceType\r\n },\r\n options: {\r\n showNavButtons: false\r\n }\r\n }, {\r\n device: {\r\n deviceType: \"desktop\"\r\n },\r\n options: {\r\n scrollByContent: false\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n useInkRipple: true,\r\n selectOnFocus: false\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.setAria(\"role\", \"tablist\");\r\n this.$element().addClass(TABS_CLASS);\r\n this._renderWrapper();\r\n this._renderMultiple();\r\n this._feedbackHideTimeout = FEEDBACK_HIDE_TIMEOUT\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n item: new BindableTemplate(function($container, data) {\r\n if (isPlainObject(data)) {\r\n this._prepareDefaultItemTemplate(data, $container)\r\n } else {\r\n $container.text(String(data))\r\n }\r\n var $iconElement = getImageContainer(data.icon);\r\n $iconElement && $iconElement.prependTo($container);\r\n $container.wrapInner($(\"<span>\").addClass(TABS_ITEM_TEXT_CLASS))\r\n }.bind(this), [\"text\", \"html\", \"icon\"], this.option(\"integrationOptions.watchMethod\"))\r\n })\r\n },\r\n _createItemByTemplate: function(itemTemplate, renderArgs) {\r\n var {\r\n itemData: itemData,\r\n container: container,\r\n index: index\r\n } = renderArgs;\r\n this._deferredTemplates[index] = new Deferred;\r\n return itemTemplate.render({\r\n model: itemData,\r\n container: container,\r\n index: index,\r\n onRendered: () => this._deferredTemplates[index].resolve()\r\n })\r\n },\r\n _itemClass: function() {\r\n return TABS_ITEM_CLASS\r\n },\r\n _selectedItemClass: function() {\r\n return TABS_ITEM_SELECTED_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return TABS_ITEM_DATA_KEY\r\n },\r\n _initMarkup: function() {\r\n this._deferredTemplates = [];\r\n this.callBase();\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this.$element().addClass(OVERFLOW_HIDDEN_CLASS)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._deferRenderScrolling()\r\n },\r\n _deferRenderScrolling() {\r\n when.apply(this, this._deferredTemplates).done(() => this._renderScrolling())\r\n },\r\n _renderScrolling: function() {\r\n var removeClasses = [TABS_STRETCHED_CLASS, TABS_EXPANDED_CLASS, OVERFLOW_HIDDEN_CLASS];\r\n this.$element().removeClass(removeClasses.join(\" \"));\r\n if (this.option(\"scrollingEnabled\") && this._isItemsWidthExceeded()) {\r\n if (!this._scrollable) {\r\n this._renderScrollable();\r\n this._renderNavButtons()\r\n }\r\n var scrollable = this.getScrollable();\r\n scrollable.update();\r\n if (this.option(\"rtlEnabled\")) {\r\n var maxLeftOffset = getScrollLeftMax($(this.getScrollable().container()).get(0));\r\n scrollable.scrollTo({\r\n left: maxLeftOffset\r\n })\r\n }\r\n this._updateNavButtonsVisibility();\r\n this._scrollToItem(this.option(\"selectedItem\"))\r\n }\r\n if (!(this.option(\"scrollingEnabled\") && this._isItemsWidthExceeded())) {\r\n this._cleanScrolling();\r\n if (this._needStretchItems() && !this._isItemsWidthExceeded()) {\r\n this.$element().addClass(TABS_STRETCHED_CLASS)\r\n }\r\n this.$element().removeClass(TABS_NAV_BUTTONS_CLASS).addClass(TABS_EXPANDED_CLASS)\r\n }\r\n },\r\n _isItemsWidthExceeded: function() {\r\n var tabItemsWidth = this._getSummaryItemsWidth(this._getVisibleItems(), true);\r\n return tabItemsWidth - 1 > getWidth(this.$element())\r\n },\r\n _needStretchItems: function() {\r\n var $visibleItems = this._getVisibleItems();\r\n var elementWidth = getWidth(this.$element());\r\n var itemsWidth = [];\r\n each($visibleItems, (_, item) => {\r\n itemsWidth.push(getOuterWidth(item, true))\r\n });\r\n var maxTabWidth = Math.max.apply(null, itemsWidth);\r\n return maxTabWidth >= elementWidth / $visibleItems.length\r\n },\r\n _cleanNavButtons: function() {\r\n if (!this._leftButton || !this._rightButton) {\r\n return\r\n }\r\n this._leftButton.$element().remove();\r\n this._rightButton.$element().remove();\r\n this._leftButton = null;\r\n this._rightButton = null\r\n },\r\n _cleanScrolling: function() {\r\n if (!this._scrollable) {\r\n return\r\n }\r\n this._$wrapper.appendTo(this.$element());\r\n this._scrollable.$element().remove();\r\n this._scrollable = null;\r\n this._cleanNavButtons()\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = render()\r\n },\r\n _getPointerEvent: () => pointerEvents.up,\r\n _toggleActiveState: function($element, value, e) {\r\n this.callBase.apply(this, arguments);\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: $element,\r\n event: e\r\n };\r\n if (value) {\r\n this._inkRipple.showWave(config)\r\n } else {\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _renderMultiple: function() {\r\n if (\"multiple\" === this.option(\"selectionMode\")) {\r\n this.option(\"selectOnFocus\", false)\r\n }\r\n },\r\n _renderWrapper: function() {\r\n this._$wrapper = $(\"<div>\").addClass(TABS_WRAPPER_CLASS);\r\n this.$element().append(this._$wrapper)\r\n },\r\n _itemContainer: function() {\r\n return this._$wrapper\r\n },\r\n _renderScrollable: function() {\r\n var $itemContainer = this.$element().wrapInner($(\"<div>\").addClass(TABS_SCROLLABLE_CLASS)).children();\r\n this._scrollable = this._createComponent($itemContainer, Scrollable, {\r\n direction: \"horizontal\",\r\n showScrollbar: \"never\",\r\n useKeyboard: false,\r\n useNative: false,\r\n scrollByContent: this.option(\"scrollByContent\"),\r\n onScroll: () => {\r\n this._updateNavButtonsVisibility()\r\n }\r\n });\r\n this.$element().append(this._scrollable.$element())\r\n },\r\n _scrollToItem: function(itemData) {\r\n if (!this._scrollable) {\r\n return\r\n }\r\n var $item = this._editStrategy.getItemElement(itemData);\r\n this._scrollable.scrollToElement($item)\r\n },\r\n _renderNavButtons: function() {\r\n this.$element().toggleClass(TABS_NAV_BUTTONS_CLASS, this.option(\"showNavButtons\"));\r\n if (!this.option(\"showNavButtons\")) {\r\n return\r\n }\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n this._leftButton = this._createNavButton(-TAB_OFFSET, rtlEnabled ? BUTTON_NEXT_ICON : BUTTON_PREV_ICON);\r\n var $leftButton = this._leftButton.$element();\r\n $leftButton.addClass(TABS_LEFT_NAV_BUTTON_CLASS);\r\n this.$element().prepend($leftButton);\r\n this._rightButton = this._createNavButton(TAB_OFFSET, rtlEnabled ? BUTTON_PREV_ICON : BUTTON_NEXT_ICON);\r\n var $rightButton = this._rightButton.$element();\r\n $rightButton.addClass(TABS_RIGHT_NAV_BUTTON_CLASS);\r\n this.$element().append($rightButton)\r\n },\r\n _updateNavButtonsVisibility: function() {\r\n var scrollable = this.getScrollable();\r\n this._leftButton && this._leftButton.option(\"disabled\", isReachedLeft(scrollable.scrollLeft(), 1));\r\n this._rightButton && this._rightButton.option(\"disabled\", isReachedRight($(scrollable.container()).get(0), scrollable.scrollLeft(), 1))\r\n },\r\n _updateScrollPosition: function(offset, duration) {\r\n this._scrollable.update();\r\n this._scrollable.scrollBy(offset / duration)\r\n },\r\n _createNavButton: function(offset, icon) {\r\n var that = this;\r\n var holdAction = that._createAction((function() {\r\n that._holdInterval = setInterval((function() {\r\n that._updateScrollPosition(offset, FEEDBACK_DURATION_INTERVAL)\r\n }), FEEDBACK_DURATION_INTERVAL)\r\n }));\r\n var holdEventName = addNamespace(holdEvent.name, \"dxNavButton\");\r\n var pointerUpEventName = addNamespace(pointerEvents.up, \"dxNavButton\");\r\n var pointerOutEventName = addNamespace(pointerEvents.out, \"dxNavButton\");\r\n var navButton = this._createComponent($(\"<div>\").addClass(TABS_NAV_BUTTON_CLASS), Button, {\r\n focusStateEnabled: false,\r\n icon: icon,\r\n onClick: function() {\r\n that._updateScrollPosition(offset, 1)\r\n },\r\n integrationOptions: {}\r\n });\r\n var $navButton = navButton.$element();\r\n eventsEngine.on($navButton, holdEventName, {\r\n timeout: FEEDBACK_SCROLL_TIMEOUT\r\n }, function(e) {\r\n holdAction({\r\n event: e\r\n })\r\n }.bind(this));\r\n eventsEngine.on($navButton, pointerUpEventName, (function() {\r\n that._clearInterval()\r\n }));\r\n eventsEngine.on($navButton, pointerOutEventName, (function() {\r\n that._clearInterval()\r\n }));\r\n return navButton\r\n },\r\n _clearInterval: function() {\r\n if (this._holdInterval) {\r\n clearInterval(this._holdInterval)\r\n }\r\n },\r\n _updateSelection: function(addedSelection) {\r\n this._scrollable && this._scrollable.scrollToElement(this.itemElements().eq(addedSelection[0]), {\r\n left: 1,\r\n right: 1\r\n })\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n this._renderScrolling()\r\n },\r\n _itemSelectHandler: function(e) {\r\n if (\"single\" === this.option(\"selectionMode\") && this.isItemSelected(e.currentTarget)) {\r\n return\r\n }\r\n this.callBase(e)\r\n },\r\n _clean: function() {\r\n this._deferredTemplates = [];\r\n this._cleanScrolling();\r\n this.callBase()\r\n },\r\n _toggleFocusedNextClass(index, isNextTabFocused) {\r\n this._itemElements().eq(index).toggleClass(FOCUSED_NEXT_TAB_CLASS, isNextTabFocused)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"useInkRipple\":\r\n case \"scrollingEnabled\":\r\n case \"showNavButtons\":\r\n this._invalidate();\r\n break;\r\n case \"scrollByContent\":\r\n this._scrollable && this._scrollable.option(args.name, args.value);\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._dimensionChanged();\r\n break;\r\n case \"selectionMode\":\r\n this._renderMultiple();\r\n this.callBase(args);\r\n break;\r\n case \"badgeExpr\":\r\n this._invalidate();\r\n break;\r\n case \"focusedElement\":\r\n var {\r\n selectedIndex: selectedIndex\r\n } = this.option();\r\n var currentIndex = $(args.value).index();\r\n if (currentIndex !== selectedIndex) {\r\n this._toggleFocusedNextClass(selectedIndex, currentIndex === selectedIndex + 1)\r\n }\r\n this.callBase(args);\r\n this._scrollToItem(args.value);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _afterItemElementInserted() {\r\n this.callBase();\r\n this._deferRenderScrolling()\r\n },\r\n _afterItemElementDeleted($item, deletedActionArgs) {\r\n this.callBase($item, deletedActionArgs);\r\n this._renderScrolling()\r\n },\r\n getScrollable() {\r\n return this._scrollable\r\n }\r\n});\r\nTabs.ItemClass = TabsItem;\r\nregisterComponent(\"dxTabs\", Tabs);\r\nexport default Tabs;\r\n","/**\r\n * DevExtreme (esm/ui/tab_panel/item.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport CollectionWidgetItem from \"../collection/item\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nexport default class TabPanelItem extends CollectionWidgetItem {\r\n _renderWatchers() {\r\n this._startWatcher(\"badge\", noop);\r\n return super._renderWatchers()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/tab_panel.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterHeight\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n touch\r\n} from \"../core/utils/support\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport devices from \"../core/devices\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport MultiView from \"./multi_view\";\r\nimport Tabs from \"./tabs\";\r\nimport {\r\n default as TabPanelItem\r\n} from \"./tab_panel/item\";\r\nimport {\r\n getImageContainer\r\n} from \"../core/utils/icon\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n isPlainObject,\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport {\r\n BindableTemplate\r\n} from \"../core/templates/bindable_template\";\r\nimport {\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nvar TABPANEL_CLASS = \"dx-tabpanel\";\r\nvar TABPANEL_TABS_CLASS = \"dx-tabpanel-tabs\";\r\nvar TABPANEL_CONTAINER_CLASS = \"dx-tabpanel-container\";\r\nvar TABS_ITEM_TEXT_CLASS = \"dx-tab-text\";\r\nvar DISABLED_FOCUSED_TAB_CLASS = \"dx-disabled-focused-tab\";\r\nvar TabPanel = MultiView.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n itemTitleTemplate: \"title\",\r\n hoverStateEnabled: true,\r\n showNavButtons: false,\r\n scrollByContent: true,\r\n scrollingEnabled: true,\r\n onTitleClick: null,\r\n onTitleHold: null,\r\n onTitleRendered: null,\r\n badgeExpr: function(data) {\r\n return data ? data.badge : void 0\r\n }\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return !touch\r\n },\r\n options: {\r\n swipeEnabled: false\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n animationEnabled: false\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(TABPANEL_CLASS);\r\n this.setAria(\"role\", \"tabpanel\")\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._createTitleActions();\r\n this._renderLayout()\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n title: new BindableTemplate((function($container, data) {\r\n if (isPlainObject(data)) {\r\n var $iconElement = getImageContainer(data.icon);\r\n if ($iconElement) {\r\n $container.append($iconElement)\r\n }\r\n if (isDefined(data.title) && !isPlainObject(data.title)) {\r\n $container.append(domAdapter.createTextNode(data.title))\r\n }\r\n } else if (isDefined(data)) {\r\n $container.text(String(data))\r\n }\r\n $container.wrapInner($(\"<span>\").addClass(TABS_ITEM_TEXT_CLASS))\r\n }), [\"title\", \"icon\"], this.option(\"integrationOptions.watchMethod\"))\r\n })\r\n },\r\n _createTitleActions: function() {\r\n this._createTitleClickAction();\r\n this._createTitleHoldAction();\r\n this._createTitleRenderedAction()\r\n },\r\n _createTitleClickAction: function() {\r\n this._titleClickAction = this._createActionByOption(\"onTitleClick\")\r\n },\r\n _createTitleHoldAction: function() {\r\n this._titleHoldAction = this._createActionByOption(\"onTitleHold\")\r\n },\r\n _createTitleRenderedAction: function() {\r\n this._titleRenderedAction = this._createActionByOption(\"onTitleRendered\")\r\n },\r\n _renderContent: function() {\r\n var that = this;\r\n this.callBase();\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n this._resizeEventTimer = setTimeout((function() {\r\n that._updateLayout()\r\n }), 0)\r\n }\r\n },\r\n _renderLayout: function() {\r\n if (this._tabs) {\r\n this._updateLayout();\r\n return\r\n }\r\n var $element = this.$element();\r\n this._$tabContainer = $(\"<div>\").addClass(TABPANEL_TABS_CLASS).appendTo($element);\r\n var $tabs = $(\"<div>\").appendTo(this._$tabContainer);\r\n this._tabs = this._createComponent($tabs, Tabs, this._tabConfig());\r\n this._$container = $(\"<div>\").addClass(TABPANEL_CONTAINER_CLASS).appendTo($element);\r\n this._$container.append(this._$wrapper);\r\n this._updateLayout()\r\n },\r\n _updateLayout: function() {\r\n if (hasWindow()) {\r\n var tabsHeight = getOuterHeight(this._$tabContainer);\r\n this._$container.css({\r\n marginTop: -tabsHeight,\r\n paddingTop: tabsHeight\r\n })\r\n }\r\n },\r\n _refreshActiveDescendant: function() {\r\n if (!this._tabs) {\r\n return\r\n }\r\n var tabs = this._tabs;\r\n var tabItems = tabs.itemElements();\r\n var $activeTab = $(tabItems[tabs.option(\"selectedIndex\")]);\r\n var id = this.getFocusedItemId();\r\n this.setAria(\"controls\", void 0, $(tabItems));\r\n this.setAria(\"controls\", id, $activeTab)\r\n },\r\n _tabConfig: function() {\r\n return {\r\n selectOnFocus: true,\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n repaintChangesOnly: this.option(\"repaintChangesOnly\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n selectedIndex: this.option(\"selectedIndex\"),\r\n badgeExpr: this.option(\"badgeExpr\"),\r\n onItemClick: this._titleClickAction.bind(this),\r\n onItemHold: this._titleHoldAction.bind(this),\r\n itemHoldTimeout: this.option(\"itemHoldTimeout\"),\r\n onSelectionChanged: function(e) {\r\n this.option(\"selectedIndex\", e.component.option(\"selectedIndex\"));\r\n this._refreshActiveDescendant()\r\n }.bind(this),\r\n onItemRendered: this._titleRenderedAction.bind(this),\r\n itemTemplate: this._getTemplateByOption(\"itemTitleTemplate\"),\r\n items: this.option(\"items\"),\r\n noDataText: null,\r\n scrollingEnabled: this.option(\"scrollingEnabled\"),\r\n scrollByContent: this.option(\"scrollByContent\"),\r\n showNavButtons: this.option(\"showNavButtons\"),\r\n itemTemplateProperty: \"tabTemplate\",\r\n loopItemFocus: this.option(\"loop\"),\r\n selectionRequired: true,\r\n onOptionChanged: function(args) {\r\n if (\"focusedElement\" === args.name) {\r\n if (args.value) {\r\n var $value = $(args.value);\r\n var $newItem = this._itemElements().eq($value.index());\r\n this.option(\"focusedElement\", getPublicElement($newItem))\r\n } else {\r\n this.option(\"focusedElement\", args.value)\r\n }\r\n }\r\n }.bind(this),\r\n onFocusIn: function(args) {\r\n this._focusInHandler(args.event)\r\n }.bind(this),\r\n onFocusOut: function(args) {\r\n if (!this._isFocusOutHandlerExecuting) {\r\n this._focusOutHandler(args.event)\r\n }\r\n }.bind(this)\r\n }\r\n },\r\n _renderFocusTarget: function() {\r\n this._focusTarget().attr(\"tabIndex\", -1)\r\n },\r\n _toggleWrapperFocusedClass(isFocused) {\r\n this._toggleFocusClass(isFocused, this._$wrapper)\r\n },\r\n _toggleDisabledFocusedClass(isFocused) {\r\n this._focusTarget().toggleClass(DISABLED_FOCUSED_TAB_CLASS, isFocused)\r\n },\r\n _updateFocusState: function(e, isFocused) {\r\n this.callBase(e, isFocused);\r\n var isTabsTarget = e.target === this._tabs._focusTarget().get(0);\r\n var isMultiViewTarget = e.target === this._focusTarget().get(0);\r\n if (isTabsTarget) {\r\n this._toggleFocusClass(isFocused, this._focusTarget())\r\n }\r\n if (isTabsTarget || isMultiViewTarget) {\r\n var isDisabled = this._isDisabled(this.option(\"focusedElement\"));\r\n this._toggleWrapperFocusedClass(isFocused && !isDisabled);\r\n this._toggleDisabledFocusedClass(isFocused && isDisabled)\r\n }\r\n if (isMultiViewTarget) {\r\n this._toggleFocusClass(isFocused, this._tabs.option(\"focusedElement\"))\r\n }\r\n },\r\n _focusOutHandler: function(e) {\r\n this._isFocusOutHandlerExecuting = true;\r\n this.callBase.apply(this, arguments);\r\n this._tabs._focusOutHandler(e);\r\n this._isFocusOutHandlerExecuting = false\r\n },\r\n _setTabsOption: function(name, value) {\r\n if (this._tabs) {\r\n this._tabs.option(name, value)\r\n }\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._tabs._dimensionChanged();\r\n this._updateLayout()\r\n }\r\n },\r\n registerKeyHandler: function(key, handler) {\r\n this.callBase(key, handler);\r\n if (this._tabs) {\r\n this._tabs.registerKeyHandler(key, handler)\r\n }\r\n },\r\n repaint: function() {\r\n this.callBase();\r\n this._tabs.repaint()\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n var value = args.value;\r\n var fullName = args.fullName;\r\n switch (name) {\r\n case \"dataSource\":\r\n this.callBase(args);\r\n break;\r\n case \"items\":\r\n this._setTabsOption(name, this.option(name));\r\n this._updateLayout();\r\n if (!this.option(\"repaintChangesOnly\")) {\r\n this._tabs.repaint()\r\n }\r\n this.callBase(args);\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._tabs.repaint();\r\n break;\r\n case \"selectedIndex\":\r\n case \"selectedItem\":\r\n this._setTabsOption(fullName, value);\r\n this.callBase(args);\r\n if (true === this.option(\"focusStateEnabled\")) {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n var selectedTabContent = this._itemElements().eq(selectedIndex);\r\n this.option(\"focusedElement\", getPublicElement(selectedTabContent))\r\n }\r\n break;\r\n case \"itemHoldTimeout\":\r\n case \"focusStateEnabled\":\r\n case \"hoverStateEnabled\":\r\n this._setTabsOption(fullName, value);\r\n this.callBase(args);\r\n break;\r\n case \"scrollingEnabled\":\r\n case \"scrollByContent\":\r\n case \"showNavButtons\":\r\n this._setTabsOption(fullName, value);\r\n break;\r\n case \"focusedElement\":\r\n var id = value ? $(value).index() : value;\r\n var newItem = value ? this._tabs._itemElements().eq(id) : value;\r\n this._setTabsOption(\"focusedElement\", getPublicElement(newItem));\r\n var isDisabled = this._isDisabled(value);\r\n this._toggleWrapperFocusedClass(!isDisabled);\r\n this._toggleDisabledFocusedClass(isDisabled);\r\n this.callBase(args);\r\n break;\r\n case \"itemTitleTemplate\":\r\n this._setTabsOption(\"itemTemplate\", this._getTemplateByOption(\"itemTitleTemplate\"));\r\n break;\r\n case \"onTitleClick\":\r\n this._createTitleClickAction();\r\n this._setTabsOption(\"onItemClick\", this._titleClickAction.bind(this));\r\n break;\r\n case \"onTitleHold\":\r\n this._createTitleHoldAction();\r\n this._setTabsOption(\"onItemHold\", this._titleHoldAction.bind(this));\r\n break;\r\n case \"onTitleRendered\":\r\n this._createTitleRenderedAction();\r\n this._setTabsOption(\"onItemRendered\", this._titleRenderedAction.bind(this));\r\n break;\r\n case \"loop\":\r\n this._setTabsOption(\"loopItemFocus\", value);\r\n break;\r\n case \"badgeExpr\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clean: function() {\r\n clearTimeout(this._resizeEventTimer);\r\n this.callBase()\r\n }\r\n});\r\nTabPanel.ItemClass = TabPanelItem;\r\nregisterComponent(\"dxTabPanel\", TabPanel);\r\nexport default TabPanel;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/scroll_direction.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n DIRECTION_VERTICAL,\r\n DIRECTION_HORIZONTAL,\r\n DIRECTION_BOTH\r\n} from \"../common/consts\";\r\nexport class ScrollDirection {\r\n constructor(direction) {\r\n this.DIRECTION_HORIZONTAL = \"horizontal\";\r\n this.DIRECTION_VERTICAL = \"vertical\";\r\n this.DIRECTION_BOTH = \"both\";\r\n this.direction = null !== direction && void 0 !== direction ? direction : DIRECTION_VERTICAL\r\n }\r\n get isHorizontal() {\r\n return this.direction === DIRECTION_HORIZONTAL || this.direction === DIRECTION_BOTH\r\n }\r\n get isVertical() {\r\n return this.direction === DIRECTION_VERTICAL || this.direction === DIRECTION_BOTH\r\n }\r\n get isBoth() {\r\n return this.direction === DIRECTION_BOTH\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/events/swipe.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth,\r\n getHeight\r\n} from \"../core/utils/size\";\r\nimport {\r\n eventData\r\n} from \"./utils/index\";\r\nimport GestureEmitter from \"./gesture/emitter.gesture\";\r\nimport registerEmitter from \"./core/emitter_registrator\";\r\nvar SWIPE_START_EVENT = \"dxswipestart\";\r\nvar SWIPE_EVENT = \"dxswipe\";\r\nvar SWIPE_END_EVENT = \"dxswipeend\";\r\nvar HorizontalStrategy = {\r\n defaultItemSizeFunc: function() {\r\n return getWidth(this.getElement())\r\n },\r\n getBounds: function() {\r\n return [this._maxLeftOffset, this._maxRightOffset]\r\n },\r\n calcOffsetRatio: function(e) {\r\n var endEventData = eventData(e);\r\n return (endEventData.x - (this._savedEventData && this._savedEventData.x || 0)) / this._itemSizeFunc().call(this, e)\r\n },\r\n isFastSwipe: function(e) {\r\n var endEventData = eventData(e);\r\n return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.x - this._tickData.x) >= endEventData.time - this._tickData.time\r\n }\r\n};\r\nvar VerticalStrategy = {\r\n defaultItemSizeFunc: function() {\r\n return getHeight(this.getElement())\r\n },\r\n getBounds: function() {\r\n return [this._maxTopOffset, this._maxBottomOffset]\r\n },\r\n calcOffsetRatio: function(e) {\r\n var endEventData = eventData(e);\r\n return (endEventData.y - (this._savedEventData && this._savedEventData.y || 0)) / this._itemSizeFunc().call(this, e)\r\n },\r\n isFastSwipe: function(e) {\r\n var endEventData = eventData(e);\r\n return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.y - this._tickData.y) >= endEventData.time - this._tickData.time\r\n }\r\n};\r\nvar STRATEGIES = {\r\n horizontal: HorizontalStrategy,\r\n vertical: VerticalStrategy\r\n};\r\nvar SwipeEmitter = GestureEmitter.inherit({\r\n TICK_INTERVAL: 300,\r\n FAST_SWIPE_SPEED_LIMIT: 10,\r\n ctor: function(element) {\r\n this.callBase(element);\r\n this.direction = \"horizontal\";\r\n this.elastic = true\r\n },\r\n _getStrategy: function() {\r\n return STRATEGIES[this.direction]\r\n },\r\n _defaultItemSizeFunc: function() {\r\n return this._getStrategy().defaultItemSizeFunc.call(this)\r\n },\r\n _itemSizeFunc: function() {\r\n return this.itemSizeFunc || this._defaultItemSizeFunc\r\n },\r\n _init: function(e) {\r\n this._tickData = eventData(e)\r\n },\r\n _start: function(e) {\r\n this._savedEventData = eventData(e);\r\n e = this._fireEvent(SWIPE_START_EVENT, e);\r\n if (!e.cancel) {\r\n this._maxLeftOffset = e.maxLeftOffset;\r\n this._maxRightOffset = e.maxRightOffset;\r\n this._maxTopOffset = e.maxTopOffset;\r\n this._maxBottomOffset = e.maxBottomOffset\r\n }\r\n },\r\n _move: function(e) {\r\n var strategy = this._getStrategy();\r\n var moveEventData = eventData(e);\r\n var offset = strategy.calcOffsetRatio.call(this, e);\r\n offset = this._fitOffset(offset, this.elastic);\r\n if (moveEventData.time - this._tickData.time > this.TICK_INTERVAL) {\r\n this._tickData = moveEventData\r\n }\r\n this._fireEvent(SWIPE_EVENT, e, {\r\n offset: offset\r\n });\r\n if (false !== e.cancelable) {\r\n e.preventDefault()\r\n }\r\n },\r\n _end: function(e) {\r\n var strategy = this._getStrategy();\r\n var offsetRatio = strategy.calcOffsetRatio.call(this, e);\r\n var isFast = strategy.isFastSwipe.call(this, e);\r\n var startOffset = offsetRatio;\r\n var targetOffset = this._calcTargetOffset(offsetRatio, isFast);\r\n startOffset = this._fitOffset(startOffset, this.elastic);\r\n targetOffset = this._fitOffset(targetOffset, false);\r\n this._fireEvent(SWIPE_END_EVENT, e, {\r\n offset: startOffset,\r\n targetOffset: targetOffset\r\n })\r\n },\r\n _fitOffset: function(offset, elastic) {\r\n var strategy = this._getStrategy();\r\n var bounds = strategy.getBounds.call(this);\r\n if (offset < -bounds[0]) {\r\n return elastic ? (-2 * bounds[0] + offset) / 3 : -bounds[0]\r\n }\r\n if (offset > bounds[1]) {\r\n return elastic ? (2 * bounds[1] + offset) / 3 : bounds[1]\r\n }\r\n return offset\r\n },\r\n _calcTargetOffset: function(offsetRatio, isFast) {\r\n var result;\r\n if (isFast) {\r\n result = Math.ceil(Math.abs(offsetRatio));\r\n if (offsetRatio < 0) {\r\n result = -result\r\n }\r\n } else {\r\n result = Math.round(offsetRatio)\r\n }\r\n return result\r\n }\r\n});\r\nregisterEmitter({\r\n emitter: SwipeEmitter,\r\n events: [SWIPE_START_EVENT, SWIPE_EVENT, SWIPE_END_EVENT]\r\n});\r\nexport {\r\n SWIPE_EVENT as swipe, SWIPE_START_EVENT as start, SWIPE_END_EVENT as end\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.native.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n isDxMouseWheelEvent\r\n} from \"../../events/utils/index\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport devices from \"../../core/devices\";\r\nimport Class from \"../../core/class\";\r\nimport Scrollbar from \"./ui.scrollbar\";\r\nvar SCROLLABLE_NATIVE = \"dxNativeScrollable\";\r\nvar SCROLLABLE_NATIVE_CLASS = \"dx-scrollable-native\";\r\nvar SCROLLABLE_SCROLLBAR_SIMULATED = \"dx-scrollable-scrollbar-simulated\";\r\nvar SCROLLABLE_SCROLLBARS_HIDDEN = \"dx-scrollable-scrollbars-hidden\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar HIDE_SCROLLBAR_TIMEOUT = 500;\r\nvar NativeStrategy = Class.inherit({\r\n ctor: function(scrollable) {\r\n this._init(scrollable)\r\n },\r\n _init: function(scrollable) {\r\n this._component = scrollable;\r\n this._$element = scrollable.$element();\r\n this._$container = $(scrollable.container());\r\n this._$content = scrollable.$content();\r\n this._direction = scrollable.option(\"direction\");\r\n this._useSimulatedScrollbar = scrollable.option(\"useSimulatedScrollbar\");\r\n this.option = scrollable.option.bind(scrollable);\r\n this._createActionByOption = scrollable._createActionByOption.bind(scrollable);\r\n this._isLocked = scrollable._isLocked.bind(scrollable);\r\n this._isDirection = scrollable._isDirection.bind(scrollable);\r\n this._allowedDirection = scrollable._allowedDirection.bind(scrollable);\r\n this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable);\r\n this._isRtlNativeStrategy = scrollable._isRtlNativeStrategy.bind(scrollable)\r\n },\r\n render: function() {\r\n var device = devices.real();\r\n var deviceType = device.platform;\r\n this._$element.addClass(SCROLLABLE_NATIVE_CLASS).addClass(SCROLLABLE_NATIVE_CLASS + \"-\" + deviceType).toggleClass(SCROLLABLE_SCROLLBARS_HIDDEN, !this._isScrollbarVisible());\r\n if (this._isScrollbarVisible() && this._useSimulatedScrollbar) {\r\n this._renderScrollbars()\r\n }\r\n },\r\n updateRtlPosition: function(isFirstRender) {\r\n if (isFirstRender && this.option(\"rtlEnabled\")) {\r\n if (this._isScrollbarVisible() && this._useSimulatedScrollbar) {\r\n this._moveScrollbars()\r\n }\r\n }\r\n },\r\n _renderScrollbars: function() {\r\n this._scrollbars = {};\r\n this._hideScrollbarTimeout = 0;\r\n this._$element.addClass(SCROLLABLE_SCROLLBAR_SIMULATED);\r\n this._renderScrollbar(VERTICAL);\r\n this._renderScrollbar(HORIZONTAL)\r\n },\r\n _renderScrollbar: function(direction) {\r\n if (!this._isDirection(direction)) {\r\n return\r\n }\r\n this._scrollbars[direction] = new Scrollbar($(\"<div>\").appendTo(this._$element), {\r\n direction: direction,\r\n expandable: this._component.option(\"scrollByThumb\")\r\n })\r\n },\r\n handleInit: noop,\r\n handleStart: noop,\r\n handleMove: function(e) {\r\n if (this._isLocked()) {\r\n e.cancel = true;\r\n return\r\n }\r\n if (this._allowedDirection()) {\r\n e.originalEvent.isScrollingEvent = true\r\n }\r\n },\r\n handleEnd: noop,\r\n handleCancel: noop,\r\n handleStop: noop,\r\n _eachScrollbar: function(callback) {\r\n callback = callback.bind(this);\r\n each(this._scrollbars || {}, (function(direction, scrollbar) {\r\n callback(scrollbar, direction)\r\n }))\r\n },\r\n createActions: function() {\r\n this._scrollAction = this._createActionByOption(\"onScroll\");\r\n this._updateAction = this._createActionByOption(\"onUpdated\")\r\n },\r\n _createActionArgs: function() {\r\n var {\r\n left: left,\r\n top: top\r\n } = this.location();\r\n return {\r\n event: this._eventForUserAction,\r\n scrollOffset: this._getScrollOffset(),\r\n reachedLeft: this._isRtlNativeStrategy() ? this._isReachedRight(-left) : this._isReachedLeft(left),\r\n reachedRight: this._isRtlNativeStrategy() ? this._isReachedLeft(-Math.abs(left)) : this._isReachedRight(left),\r\n reachedTop: this._isDirection(VERTICAL) ? Math.round(top) >= 0 : void 0,\r\n reachedBottom: this._isDirection(VERTICAL) ? Math.round(Math.abs(top) - this._getMaxOffset().top) >= 0 : void 0\r\n }\r\n },\r\n _getScrollOffset: function() {\r\n var {\r\n top: top,\r\n left: left\r\n } = this.location();\r\n return {\r\n top: -top,\r\n left: this._normalizeOffsetLeft(-left)\r\n }\r\n },\r\n _normalizeOffsetLeft(scrollLeft) {\r\n if (this._isRtlNativeStrategy()) {\r\n return this._getMaxOffset().left + scrollLeft\r\n }\r\n return scrollLeft\r\n },\r\n _isReachedLeft: function(left) {\r\n return this._isDirection(HORIZONTAL) ? Math.round(left) >= 0 : void 0\r\n },\r\n _isReachedRight: function(left) {\r\n return this._isDirection(HORIZONTAL) ? Math.round(Math.abs(left) - this._getMaxOffset().left) >= 0 : void 0\r\n },\r\n _isScrollbarVisible: function() {\r\n var {\r\n showScrollbar: showScrollbar\r\n } = this.option();\r\n return \"never\" !== showScrollbar && false !== showScrollbar\r\n },\r\n handleScroll: function(e) {\r\n this._eventForUserAction = e;\r\n this._moveScrollbars();\r\n this._scrollAction(this._createActionArgs())\r\n },\r\n _moveScrollbars: function() {\r\n var {\r\n top: top,\r\n left: left\r\n } = this._getScrollOffset();\r\n this._eachScrollbar((function(scrollbar) {\r\n scrollbar.moveTo({\r\n top: -top,\r\n left: -left\r\n });\r\n scrollbar.option(\"visible\", true)\r\n }));\r\n this._hideScrollbars()\r\n },\r\n _hideScrollbars: function() {\r\n clearTimeout(this._hideScrollbarTimeout);\r\n this._hideScrollbarTimeout = setTimeout(function() {\r\n this._eachScrollbar((function(scrollbar) {\r\n scrollbar.option(\"visible\", false)\r\n }))\r\n }.bind(this), HIDE_SCROLLBAR_TIMEOUT)\r\n },\r\n location: function() {\r\n return {\r\n left: -this._$container.scrollLeft(),\r\n top: -this._$container.scrollTop()\r\n }\r\n },\r\n disabledChanged: noop,\r\n update: function() {\r\n this._update();\r\n this._updateAction(this._createActionArgs())\r\n },\r\n _update: function() {\r\n this._updateDimensions();\r\n this._updateScrollbars()\r\n },\r\n _updateDimensions: function() {\r\n this._containerSize = {\r\n height: getHeight(this._$container),\r\n width: getWidth(this._$container)\r\n };\r\n this._componentContentSize = {\r\n height: getHeight(this._component.$content()),\r\n width: getWidth(this._component.$content())\r\n };\r\n this._contentSize = {\r\n height: getHeight(this._$content),\r\n width: getWidth(this._$content)\r\n }\r\n },\r\n _updateScrollbars: function() {\r\n this._eachScrollbar((function(scrollbar, direction) {\r\n var dimension = direction === VERTICAL ? \"height\" : \"width\";\r\n scrollbar.option({\r\n containerSize: this._containerSize[dimension],\r\n contentSize: this._componentContentSize[dimension]\r\n });\r\n scrollbar.update()\r\n }))\r\n },\r\n _allowedDirections: function() {\r\n return {\r\n vertical: this._isDirection(VERTICAL) && this._contentSize.height > this._containerSize.height,\r\n horizontal: this._isDirection(HORIZONTAL) && this._contentSize.width > this._containerSize.width\r\n }\r\n },\r\n dispose: function() {\r\n var className = this._$element.get(0).className;\r\n var scrollableNativeRegexp = new RegExp(SCROLLABLE_NATIVE_CLASS + \"\\\\S*\", \"g\");\r\n if (scrollableNativeRegexp.test(className)) {\r\n this._$element.removeClass(className.match(scrollableNativeRegexp).join(\" \"))\r\n }\r\n eventsEngine.off(this._$element, \".\" + SCROLLABLE_NATIVE);\r\n eventsEngine.off(this._$container, \".\" + SCROLLABLE_NATIVE);\r\n this._removeScrollbars();\r\n clearTimeout(this._hideScrollbarTimeout)\r\n },\r\n _removeScrollbars: function() {\r\n this._eachScrollbar((function(scrollbar) {\r\n scrollbar.$element().remove()\r\n }))\r\n },\r\n scrollBy: function(distance) {\r\n var location = this.location();\r\n this._$container.scrollTop(Math.round(-location.top - distance.top));\r\n this._$container.scrollLeft(Math.round(-location.left - distance.left))\r\n },\r\n validate: function(e) {\r\n if (this.option(\"disabled\")) {\r\n return false\r\n }\r\n if (isDxMouseWheelEvent(e) && this._isScrolledInMaxDirection(e)) {\r\n return false\r\n }\r\n return !!this._allowedDirection()\r\n },\r\n _isScrolledInMaxDirection(e) {\r\n var container = this._$container.get(0);\r\n var result;\r\n if (e.delta > 0) {\r\n result = e.shiftKey ? !container.scrollLeft : !container.scrollTop\r\n } else if (e.shiftKey) {\r\n result = container.scrollLeft >= this._getMaxOffset().left\r\n } else {\r\n result = container.scrollTop >= this._getMaxOffset().top\r\n }\r\n return result\r\n },\r\n getDirection: function() {\r\n return this._allowedDirection()\r\n }\r\n});\r\nexport default NativeStrategy;\r\n","/**\r\n * DevExtreme (esm/renovation/common/config_context.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n createContext\r\n} from \"@devextreme/runtime/inferno\";\r\nexport var ConfigContext = createContext(void 0);\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollbar.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport readyCallback from \"../../core/utils/ready_callbacks\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n deferRenderer\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nvar SCROLLBAR = \"dxScrollbar\";\r\nvar SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nvar SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = \"\".concat(SCROLLABLE_SCROLLBAR_CLASS, \"-active\");\r\nvar SCROLLABLE_SCROLL_CLASS = \"dx-scrollable-scroll\";\r\nvar SCROLLABLE_SCROLL_CONTENT_CLASS = \"dx-scrollable-scroll-content\";\r\nvar HOVER_ENABLED_STATE = \"dx-scrollbar-hoverable\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar THUMB_MIN_SIZE = 15;\r\nvar SCROLLBAR_VISIBLE = {\r\n onScroll: \"onScroll\",\r\n onHover: \"onHover\",\r\n always: \"always\",\r\n never: \"never\"\r\n};\r\nvar activeScrollbar = null;\r\nvar Scrollbar = Widget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n direction: null,\r\n visible: false,\r\n activeStateEnabled: false,\r\n visibilityMode: SCROLLBAR_VISIBLE.onScroll,\r\n containerSize: 0,\r\n contentSize: 0,\r\n expandable: true,\r\n scaleRatio: 1\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._isHovered = false\r\n },\r\n _initMarkup: function() {\r\n this._renderThumb();\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderDirection();\r\n this._update();\r\n this._attachPointerDownHandler();\r\n this.option(\"hoverStateEnabled\", this._isHoverMode());\r\n this.$element().toggleClass(HOVER_ENABLED_STATE, this.option(\"hoverStateEnabled\"))\r\n },\r\n _renderThumb: function() {\r\n this._$thumb = $(\"<div>\").addClass(SCROLLABLE_SCROLL_CLASS);\r\n $(\"<div>\").addClass(SCROLLABLE_SCROLL_CONTENT_CLASS).appendTo(this._$thumb);\r\n this.$element().addClass(SCROLLABLE_SCROLLBAR_CLASS).append(this._$thumb)\r\n },\r\n isThumb: function($element) {\r\n return !!this.$element().find($element).length\r\n },\r\n _isHoverMode: function() {\r\n var visibilityMode = this.option(\"visibilityMode\");\r\n return (visibilityMode === SCROLLBAR_VISIBLE.onHover || visibilityMode === SCROLLBAR_VISIBLE.always) && this.option(\"expandable\")\r\n },\r\n _renderDirection: function() {\r\n var direction = this.option(\"direction\");\r\n this.$element().addClass(\"dx-scrollbar-\" + direction);\r\n this._dimension = direction === HORIZONTAL ? \"width\" : \"height\";\r\n this._prop = direction === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _attachPointerDownHandler: function() {\r\n eventsEngine.on(this._$thumb, addNamespace(pointerEvents.down, SCROLLBAR), this.feedbackOn.bind(this))\r\n },\r\n feedbackOn: function() {\r\n this.$element().addClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);\r\n activeScrollbar = this\r\n },\r\n feedbackOff: function() {\r\n this.$element().removeClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);\r\n activeScrollbar = null\r\n },\r\n cursorEnter: function() {\r\n this._isHovered = true;\r\n if (this._needScrollbar()) {\r\n this.option(\"visible\", true)\r\n }\r\n },\r\n cursorLeave: function() {\r\n this._isHovered = false;\r\n this.option(\"visible\", false)\r\n },\r\n _renderDimensions: function() {\r\n this._$thumb.css({\r\n width: this.option(\"width\"),\r\n height: this.option(\"height\")\r\n })\r\n },\r\n _toggleVisibility: function(visible) {\r\n if (this.option(\"visibilityMode\") === SCROLLBAR_VISIBLE.onScroll) {\r\n this._$thumb.css(\"opacity\")\r\n }\r\n visible = this._adjustVisibility(visible);\r\n this.option().visible = visible;\r\n this._$thumb.toggleClass(\"dx-state-invisible\", !visible)\r\n },\r\n _adjustVisibility: function(visible) {\r\n if (this._baseContainerToContentRatio && !this._needScrollbar()) {\r\n return false\r\n }\r\n switch (this.option(\"visibilityMode\")) {\r\n case SCROLLBAR_VISIBLE.onScroll:\r\n break;\r\n case SCROLLBAR_VISIBLE.onHover:\r\n visible = visible || !!this._isHovered;\r\n break;\r\n case SCROLLBAR_VISIBLE.never:\r\n visible = false;\r\n break;\r\n case SCROLLBAR_VISIBLE.always:\r\n visible = true\r\n }\r\n return visible\r\n },\r\n moveTo: function(location) {\r\n if (this._isHidden()) {\r\n return\r\n }\r\n if (isPlainObject(location)) {\r\n location = location[this._prop] || 0\r\n }\r\n var scrollBarLocation = {};\r\n scrollBarLocation[this._prop] = this._calculateScrollBarPosition(location);\r\n move(this._$thumb, scrollBarLocation)\r\n },\r\n _calculateScrollBarPosition: function(location) {\r\n return -location * this._thumbRatio\r\n },\r\n _update: function() {\r\n var containerSize = Math.round(this.option(\"containerSize\"));\r\n var contentSize = Math.round(this.option(\"contentSize\"));\r\n var baseContainerSize = Math.round(this.option(\"baseContainerSize\"));\r\n var baseContentSize = Math.round(this.option(\"baseContentSize\"));\r\n if (isNaN(baseContainerSize)) {\r\n baseContainerSize = containerSize;\r\n baseContentSize = contentSize\r\n }\r\n this._baseContainerToContentRatio = baseContentSize ? baseContainerSize / baseContentSize : baseContainerSize;\r\n this._realContainerToContentRatio = contentSize ? containerSize / contentSize : containerSize;\r\n var thumbSize = Math.round(Math.max(Math.round(containerSize * this._realContainerToContentRatio), THUMB_MIN_SIZE));\r\n this._thumbRatio = (containerSize - thumbSize) / (this.option(\"scaleRatio\") * (contentSize - containerSize));\r\n this.option(this._dimension, thumbSize / this.option(\"scaleRatio\"));\r\n this.$element().css(\"display\", this._needScrollbar() ? \"\" : \"none\")\r\n },\r\n _isHidden: function() {\r\n return this.option(\"visibilityMode\") === SCROLLBAR_VISIBLE.never\r\n },\r\n _needScrollbar: function() {\r\n return !this._isHidden() && this._baseContainerToContentRatio < 1\r\n },\r\n containerToContentRatio: function() {\r\n return this._realContainerToContentRatio\r\n },\r\n _normalizeSize: function(size) {\r\n return isPlainObject(size) ? size[this._dimension] || 0 : size\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n if (this === activeScrollbar) {\r\n activeScrollbar = null\r\n }\r\n eventsEngine.off(this._$thumb, \".\" + SCROLLBAR)\r\n },\r\n _optionChanged: function(args) {\r\n if (this._isHidden()) {\r\n return\r\n }\r\n switch (args.name) {\r\n case \"containerSize\":\r\n case \"contentSize\":\r\n this.option()[args.name] = this._normalizeSize(args.value);\r\n this._update();\r\n break;\r\n case \"baseContentSize\":\r\n case \"baseContainerSize\":\r\n this._update();\r\n break;\r\n case \"visibilityMode\":\r\n case \"direction\":\r\n this._invalidate();\r\n break;\r\n case \"scaleRatio\":\r\n this._update();\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n update: deferRenderer((function() {\r\n this._adjustVisibility() && this.option(\"visible\", true)\r\n }))\r\n});\r\nreadyCallback.add((function() {\r\n eventsEngine.subscribeGlobal(domAdapter.getDocument(), addNamespace(pointerEvents.up, SCROLLBAR), (function() {\r\n if (activeScrollbar) {\r\n activeScrollbar.feedbackOff()\r\n }\r\n }))\r\n}));\r\nexport default Scrollbar;\r\n","/**\r\n * DevExtreme (esm/renovation/utils/combine_classes.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function combineClasses(classesMap) {\r\n return Object.keys(classesMap).filter(p => classesMap[p]).join(\" \")\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/widget/utils.ink_ripple.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterWidth,\r\n getOuterHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nvar INKRIPPLE_CLASS = \"dx-inkripple\";\r\nvar INKRIPPLE_WAVE_CLASS = \"dx-inkripple-wave\";\r\nvar INKRIPPLE_SHOWING_CLASS = \"dx-inkripple-showing\";\r\nvar INKRIPPLE_HIDING_CLASS = \"dx-inkripple-hiding\";\r\nvar DEFAULT_WAVE_SIZE_COEFFICIENT = 2;\r\nvar MAX_WAVE_SIZE = 4e3;\r\nvar ANIMATION_DURATION = 300;\r\nvar HOLD_ANIMATION_DURATION = 1e3;\r\nvar DEFAULT_WAVE_INDEX = 0;\r\nexport var initConfig = function() {\r\n var config = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\r\n var {\r\n useHoldAnimation: useHoldAnimation,\r\n waveSizeCoefficient: waveSizeCoefficient,\r\n isCentered: isCentered,\r\n wavesNumber: wavesNumber\r\n } = config;\r\n return {\r\n waveSizeCoefficient: waveSizeCoefficient || DEFAULT_WAVE_SIZE_COEFFICIENT,\r\n isCentered: isCentered || false,\r\n wavesNumber: wavesNumber || 1,\r\n durations: getDurations(null !== useHoldAnimation && void 0 !== useHoldAnimation ? useHoldAnimation : true)\r\n }\r\n};\r\nexport var render = function(args) {\r\n var config = initConfig(args);\r\n return {\r\n showWave: showWave.bind(this, config),\r\n hideWave: hideWave.bind(this, config)\r\n }\r\n};\r\nvar getInkRipple = function(element) {\r\n var result = element.children(\".\" + INKRIPPLE_CLASS);\r\n if (0 === result.length) {\r\n result = $(\"<div>\").addClass(INKRIPPLE_CLASS).appendTo(element)\r\n }\r\n return result\r\n};\r\nvar getWaves = function(element, wavesNumber) {\r\n var inkRipple = getInkRipple($(element));\r\n var result = inkRipple.children(\".\" + INKRIPPLE_WAVE_CLASS).toArray();\r\n for (var i = result.length; i < wavesNumber; i++) {\r\n var $currentWave = $(\"<div>\").appendTo(inkRipple).addClass(INKRIPPLE_WAVE_CLASS);\r\n result.push($currentWave[0])\r\n }\r\n return $(result)\r\n};\r\nvar getWaveStyleConfig = function(args, config) {\r\n var element = $(config.element);\r\n var elementWidth = getOuterWidth(element);\r\n var elementHeight = getOuterHeight(element);\r\n var elementDiagonal = parseInt(Math.sqrt(elementWidth * elementWidth + elementHeight * elementHeight));\r\n var waveSize = Math.min(MAX_WAVE_SIZE, parseInt(elementDiagonal * args.waveSizeCoefficient));\r\n var left;\r\n var top;\r\n if (args.isCentered) {\r\n left = (elementWidth - waveSize) / 2;\r\n top = (elementHeight - waveSize) / 2\r\n } else {\r\n var event = config.event;\r\n var position = element.offset();\r\n var x = event.pageX - position.left;\r\n var y = event.pageY - position.top;\r\n left = x - waveSize / 2;\r\n top = y - waveSize / 2\r\n }\r\n return {\r\n left: left,\r\n top: top,\r\n height: waveSize,\r\n width: waveSize\r\n }\r\n};\r\nexport function showWave(args, config) {\r\n var $wave = getWaves(config.element, args.wavesNumber).eq(config.wave || DEFAULT_WAVE_INDEX);\r\n args.hidingTimeout && clearTimeout(args.hidingTimeout);\r\n hideSelectedWave($wave);\r\n $wave.css(getWaveStyleConfig(args, config));\r\n args.showingTimeout = setTimeout(showingWaveHandler.bind(this, args, $wave), 0)\r\n}\r\n\r\nfunction showingWaveHandler(args, $wave) {\r\n var durationCss = args.durations.showingScale + \"ms\";\r\n $wave.addClass(INKRIPPLE_SHOWING_CLASS).css(\"transitionDuration\", durationCss)\r\n}\r\n\r\nfunction getDurations(useHoldAnimation) {\r\n return {\r\n showingScale: useHoldAnimation ? HOLD_ANIMATION_DURATION : ANIMATION_DURATION,\r\n hidingScale: ANIMATION_DURATION,\r\n hidingOpacity: ANIMATION_DURATION\r\n }\r\n}\r\n\r\nfunction hideSelectedWave($wave) {\r\n $wave.removeClass(INKRIPPLE_HIDING_CLASS).css(\"transitionDuration\", \"\")\r\n}\r\nexport function hideWave(args, config) {\r\n args.showingTimeout && clearTimeout(args.showingTimeout);\r\n var $wave = getWaves(config.element, config.wavesNumber).eq(config.wave || DEFAULT_WAVE_INDEX);\r\n var durations = args.durations;\r\n var durationCss = durations.hidingScale + \"ms, \" + durations.hidingOpacity + \"ms\";\r\n $wave.addClass(INKRIPPLE_HIDING_CLASS).removeClass(INKRIPPLE_SHOWING_CLASS).css(\"transitionDuration\", durationCss);\r\n var animationDuration = Math.max(durations.hidingScale, durations.hidingOpacity);\r\n args.hidingTimeout = setTimeout(hideSelectedWave.bind(this, $wave), animationDuration)\r\n}\r\n","/**\r\n * DevExtreme (esm/events/gesture/emitter.gesture.scroll.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Class from \"../../core/class\";\r\nvar abstract = Class.abstract;\r\nimport {\r\n addNamespace,\r\n isDxMouseWheelEvent,\r\n isMouseEvent,\r\n eventData,\r\n eventDelta\r\n} from \"../../events/utils/index\";\r\nimport GestureEmitter from \"../../events/gesture/emitter.gesture\";\r\nimport registerEmitter from \"../../events/core/emitter_registrator\";\r\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"../../animation/frame\";\r\nimport devices from \"../../core/devices\";\r\nvar realDevice = devices.real();\r\nvar SCROLL_EVENT = \"scroll\";\r\nvar SCROLL_INIT_EVENT = \"dxscrollinit\";\r\nvar SCROLL_START_EVENT = \"dxscrollstart\";\r\nvar SCROLL_MOVE_EVENT = \"dxscroll\";\r\nvar SCROLL_END_EVENT = \"dxscrollend\";\r\nvar SCROLL_STOP_EVENT = \"dxscrollstop\";\r\nvar SCROLL_CANCEL_EVENT = \"dxscrollcancel\";\r\nvar Locker = Class.inherit(function() {\r\n var NAMESPACED_SCROLL_EVENT = addNamespace(SCROLL_EVENT, \"dxScrollEmitter\");\r\n return {\r\n ctor: function(element) {\r\n this._element = element;\r\n this._locked = false;\r\n this._proxiedScroll = e => {\r\n if (!this._disposed) {\r\n this._scroll(e)\r\n }\r\n };\r\n eventsEngine.on(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)\r\n },\r\n _scroll: abstract,\r\n check: function(e, callback) {\r\n if (this._locked) {\r\n callback()\r\n }\r\n },\r\n dispose: function() {\r\n this._disposed = true;\r\n eventsEngine.off(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)\r\n }\r\n }\r\n}());\r\nvar TimeoutLocker = Locker.inherit({\r\n ctor: function(element, timeout) {\r\n this.callBase(element);\r\n this._timeout = timeout\r\n },\r\n _scroll: function() {\r\n this._prepare();\r\n this._forget()\r\n },\r\n _prepare: function() {\r\n if (this._timer) {\r\n this._clearTimer()\r\n }\r\n this._locked = true\r\n },\r\n _clearTimer: function() {\r\n clearTimeout(this._timer);\r\n this._locked = false;\r\n this._timer = null\r\n },\r\n _forget: function() {\r\n var that = this;\r\n this._timer = setTimeout((function() {\r\n that._clearTimer()\r\n }), this._timeout)\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n this._clearTimer()\r\n }\r\n});\r\nvar WheelLocker = TimeoutLocker.inherit({\r\n ctor: function(element) {\r\n this.callBase(element, 400);\r\n this._lastWheelDirection = null\r\n },\r\n check: function(e, callback) {\r\n this._checkDirectionChanged(e);\r\n this.callBase(e, callback)\r\n },\r\n _checkDirectionChanged: function(e) {\r\n if (!isDxMouseWheelEvent(e)) {\r\n this._lastWheelDirection = null;\r\n return\r\n }\r\n var direction = e.shiftKey || false;\r\n var directionChange = null !== this._lastWheelDirection && direction !== this._lastWheelDirection;\r\n this._lastWheelDirection = direction;\r\n this._locked = this._locked && !directionChange\r\n }\r\n});\r\nvar PointerLocker = TimeoutLocker.inherit({\r\n ctor: function(element) {\r\n this.callBase(element, 400)\r\n }\r\n});\r\n! function() {\r\n var {\r\n ios: isIos,\r\n android: isAndroid\r\n } = realDevice;\r\n if (!(isIos || isAndroid)) {\r\n return\r\n }\r\n PointerLocker = Locker.inherit({\r\n _scroll: function() {\r\n this._locked = true;\r\n var that = this;\r\n cancelAnimationFrame(this._scrollFrame);\r\n this._scrollFrame = requestAnimationFrame((function() {\r\n that._locked = false\r\n }))\r\n },\r\n check: function(e, callback) {\r\n cancelAnimationFrame(this._scrollFrame);\r\n cancelAnimationFrame(this._checkFrame);\r\n var that = this;\r\n var callBase = this.callBase;\r\n this._checkFrame = requestAnimationFrame((function() {\r\n callBase.call(that, e, callback);\r\n that._locked = false\r\n }))\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n cancelAnimationFrame(this._scrollFrame);\r\n cancelAnimationFrame(this._checkFrame)\r\n }\r\n })\r\n}();\r\nvar ScrollEmitter = GestureEmitter.inherit(function() {\r\n var FRAME_DURATION = Math.round(1e3 / 60);\r\n return {\r\n ctor: function(element) {\r\n this.callBase.apply(this, arguments);\r\n this.direction = \"both\";\r\n this._pointerLocker = new PointerLocker(element);\r\n this._wheelLocker = new WheelLocker(element)\r\n },\r\n validate: function() {\r\n return true\r\n },\r\n configure: function(data) {\r\n if (data.scrollTarget) {\r\n this._pointerLocker.dispose();\r\n this._wheelLocker.dispose();\r\n this._pointerLocker = new PointerLocker(data.scrollTarget);\r\n this._wheelLocker = new WheelLocker(data.scrollTarget)\r\n }\r\n this.callBase(data)\r\n },\r\n _init: function(e) {\r\n this._wheelLocker.check(e, function() {\r\n if (isDxMouseWheelEvent(e)) {\r\n this._accept(e)\r\n }\r\n }.bind(this));\r\n this._pointerLocker.check(e, function() {\r\n var skipCheck = this.isNative && isMouseEvent(e);\r\n if (!isDxMouseWheelEvent(e) && !skipCheck) {\r\n this._accept(e)\r\n }\r\n }.bind(this));\r\n this._fireEvent(SCROLL_INIT_EVENT, e);\r\n this._prevEventData = eventData(e)\r\n },\r\n move: function(e) {\r\n this.callBase.apply(this, arguments);\r\n e.isScrollingEvent = this.isNative || e.isScrollingEvent\r\n },\r\n _start: function(e) {\r\n this._savedEventData = eventData(e);\r\n this._fireEvent(SCROLL_START_EVENT, e);\r\n this._prevEventData = eventData(e)\r\n },\r\n _move: function(e) {\r\n var currentEventData = eventData(e);\r\n this._fireEvent(SCROLL_MOVE_EVENT, e, {\r\n delta: eventDelta(this._prevEventData, currentEventData)\r\n });\r\n var delta = eventDelta(this._savedEventData, currentEventData);\r\n if (delta.time > 200) {\r\n this._savedEventData = this._prevEventData\r\n }\r\n this._prevEventData = eventData(e)\r\n },\r\n _end: function(e) {\r\n var endEventDelta = eventDelta(this._prevEventData, eventData(e));\r\n var velocity = {\r\n x: 0,\r\n y: 0\r\n };\r\n if (!isDxMouseWheelEvent(e) && endEventDelta.time < 100) {\r\n var delta = eventDelta(this._savedEventData, this._prevEventData);\r\n var velocityMultiplier = FRAME_DURATION / delta.time;\r\n velocity = {\r\n x: delta.x * velocityMultiplier,\r\n y: delta.y * velocityMultiplier\r\n }\r\n }\r\n this._fireEvent(SCROLL_END_EVENT, e, {\r\n velocity: velocity\r\n })\r\n },\r\n _stop: function(e) {\r\n this._fireEvent(SCROLL_STOP_EVENT, e)\r\n },\r\n cancel: function(e) {\r\n this.callBase.apply(this, arguments);\r\n this._fireEvent(SCROLL_CANCEL_EVENT, e)\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n this._pointerLocker.dispose();\r\n this._wheelLocker.dispose()\r\n },\r\n _clearSelection: function() {\r\n if (this.isNative) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _toggleGestureCover: function() {\r\n if (this.isNative) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n}());\r\nregisterEmitter({\r\n emitter: ScrollEmitter,\r\n events: [SCROLL_INIT_EVENT, SCROLL_START_EVENT, SCROLL_MOVE_EVENT, SCROLL_END_EVENT, SCROLL_STOP_EVENT, SCROLL_CANCEL_EVENT]\r\n});\r\nexport default {\r\n init: SCROLL_INIT_EVENT,\r\n start: SCROLL_START_EVENT,\r\n move: SCROLL_MOVE_EVENT,\r\n end: SCROLL_END_EVENT,\r\n stop: SCROLL_STOP_EVENT,\r\n cancel: SCROLL_CANCEL_EVENT,\r\n scroll: SCROLL_EVENT\r\n};\r\n","var isArray = Array.isArray;\nfunction isStringOrNumber(o) {\n var type = typeof o;\n return type === 'string' || type === 'number';\n}\nfunction isNullOrUndef(o) {\n return o === void 0 || o === null;\n}\nfunction isInvalid(o) {\n return o === null || o === false || o === true || o === void 0;\n}\nfunction isFunction(o) {\n return typeof o === 'function';\n}\nfunction isString(o) {\n return typeof o === 'string';\n}\nfunction isNumber(o) {\n return typeof o === 'number';\n}\nfunction isNull(o) {\n return o === null;\n}\nfunction isUndefined(o) {\n return o === void 0;\n}\nfunction combineFrom(first, second) {\n var out = {};\n if (first) {\n for (var key in first) {\n out[key] = first[key];\n }\n }\n if (second) {\n for (var key$1 in second) {\n out[key$1] = second[key$1];\n }\n }\n return out;\n}\n\n/**\n * Links given data to event as first parameter\n * @param {*} data data to be linked, it will be available in function as first parameter\n * @param {Function} event Function to be called when event occurs\n * @returns {{data: *, event: Function}}\n */\nfunction linkEvent(data, event) {\n if (isFunction(event)) {\n return { data: data, event: event };\n }\n return null; // Return null when event is invalid, to avoid creating unnecessary event handlers\n}\n// object.event should always be function, otherwise its badly created object.\nfunction isLinkEventObject(o) {\n return !isNull(o) && typeof o === 'object';\n}\n\n// We need EMPTY_OBJ defined in one place.\n// Its used for comparison so we cant inline it into shared\nvar EMPTY_OBJ = {};\nvar Fragment = '$F';\nfunction normalizeEventName(name) {\n return name.substr(2).toLowerCase();\n}\nfunction appendChild(parentDOM, dom) {\n parentDOM.appendChild(dom);\n}\nfunction insertOrAppend(parentDOM, newNode, nextNode) {\n if (isNull(nextNode)) {\n appendChild(parentDOM, newNode);\n }\n else {\n parentDOM.insertBefore(newNode, nextNode);\n }\n}\nfunction documentCreateElement(tag, isSVG) {\n if (isSVG) {\n return document.createElementNS('http://www.w3.org/2000/svg', tag);\n }\n return document.createElement(tag);\n}\nfunction replaceChild(parentDOM, newDom, lastDom) {\n parentDOM.replaceChild(newDom, lastDom);\n}\nfunction removeChild(parentDOM, childNode) {\n parentDOM.removeChild(childNode);\n}\nfunction callAll(arrayFn) {\n for (var i = 0; i < arrayFn.length; i++) {\n arrayFn[i]();\n }\n}\nfunction findChildVNode(vNode, startEdge, flags) {\n var children = vNode.children;\n if (flags & 4 /* ComponentClass */) {\n return children.$LI;\n }\n if (flags & 8192 /* Fragment */) {\n return vNode.childFlags === 2 /* HasVNodeChildren */ ? children : children[startEdge ? 0 : children.length - 1];\n }\n return children;\n}\nfunction findDOMfromVNode(vNode, startEdge) {\n var flags;\n while (vNode) {\n flags = vNode.flags;\n if (flags & 2033 /* DOMRef */) {\n return vNode.dom;\n }\n vNode = findChildVNode(vNode, startEdge, flags);\n }\n return null;\n}\nfunction removeVNodeDOM(vNode, parentDOM) {\n do {\n var flags = vNode.flags;\n if (flags & 2033 /* DOMRef */) {\n removeChild(parentDOM, vNode.dom);\n return;\n }\n var children = vNode.children;\n if (flags & 4 /* ComponentClass */) {\n vNode = children.$LI;\n }\n if (flags & 8 /* ComponentFunction */) {\n vNode = children;\n }\n if (flags & 8192 /* Fragment */) {\n if (vNode.childFlags === 2 /* HasVNodeChildren */) {\n vNode = children;\n }\n else {\n for (var i = 0, len = children.length; i < len; ++i) {\n removeVNodeDOM(children[i], parentDOM);\n }\n return;\n }\n }\n } while (vNode);\n}\nfunction moveVNodeDOM(vNode, parentDOM, nextNode) {\n do {\n var flags = vNode.flags;\n if (flags & 2033 /* DOMRef */) {\n insertOrAppend(parentDOM, vNode.dom, nextNode);\n return;\n }\n var children = vNode.children;\n if (flags & 4 /* ComponentClass */) {\n vNode = children.$LI;\n }\n if (flags & 8 /* ComponentFunction */) {\n vNode = children;\n }\n if (flags & 8192 /* Fragment */) {\n if (vNode.childFlags === 2 /* HasVNodeChildren */) {\n vNode = children;\n }\n else {\n for (var i = 0, len = children.length; i < len; ++i) {\n moveVNodeDOM(children[i], parentDOM, nextNode);\n }\n return;\n }\n }\n } while (vNode);\n}\nfunction createDerivedState(instance, nextProps, state) {\n if (instance.constructor.getDerivedStateFromProps) {\n return combineFrom(state, instance.constructor.getDerivedStateFromProps(nextProps, state));\n }\n return state;\n}\nvar renderCheck = {\n v: false\n};\nvar options = {\n componentComparator: null,\n createVNode: null,\n renderComplete: null\n};\nfunction setTextContent(dom, children) {\n dom.textContent = children;\n}\n// Calling this function assumes, nextValue is linkEvent\nfunction isLastValueSameLinkEvent(lastValue, nextValue) {\n return (isLinkEventObject(lastValue) &&\n lastValue.event === nextValue.event &&\n lastValue.data === nextValue.data);\n}\nfunction mergeUnsetProperties(to, from) {\n for (var propName in from) {\n if (isUndefined(to[propName])) {\n to[propName] = from[propName];\n }\n }\n return to;\n}\nfunction safeCall1(method, arg1) {\n return !!isFunction(method) && (method(arg1), true);\n}\n\nvar keyPrefix = '$';\nfunction V(childFlags, children, className, flags, key, props, ref, type) {\n this.childFlags = childFlags;\n this.children = children;\n this.className = className;\n this.dom = null;\n this.flags = flags;\n this.key = key === void 0 ? null : key;\n this.props = props === void 0 ? null : props;\n this.ref = ref === void 0 ? null : ref;\n this.type = type;\n}\nfunction createVNode(flags, type, className, children, childFlags, props, key, ref) {\n var childFlag = childFlags === void 0 ? 1 /* HasInvalidChildren */ : childFlags;\n var vNode = new V(childFlag, children, className, flags, key, props, ref, type);\n if (options.createVNode) {\n options.createVNode(vNode);\n }\n if (childFlag === 0 /* UnknownChildren */) {\n normalizeChildren(vNode, vNode.children);\n }\n return vNode;\n}\nfunction mergeDefaultHooks(flags, type, ref) {\n if (flags & 4 /* ComponentClass */) {\n return ref;\n }\n var defaultHooks = (flags & 32768 /* ForwardRef */ ? type.render : type).defaultHooks;\n if (isNullOrUndef(defaultHooks)) {\n return ref;\n }\n if (isNullOrUndef(ref)) {\n return defaultHooks;\n }\n return mergeUnsetProperties(ref, defaultHooks);\n}\nfunction mergeDefaultProps(flags, type, props) {\n // set default props\n var defaultProps = (flags & 32768 /* ForwardRef */ ? type.render : type).defaultProps;\n if (isNullOrUndef(defaultProps)) {\n return props;\n }\n if (isNullOrUndef(props)) {\n return combineFrom(defaultProps, null);\n }\n return mergeUnsetProperties(props, defaultProps);\n}\nfunction resolveComponentFlags(flags, type) {\n if (flags & 12 /* ComponentKnown */) {\n return flags;\n }\n if (type.prototype && type.prototype.render) {\n return 4 /* ComponentClass */;\n }\n if (type.render) {\n return 32776 /* ForwardRefComponent */;\n }\n return 8 /* ComponentFunction */;\n}\nfunction createComponentVNode(flags, type, props, key, ref) {\n flags = resolveComponentFlags(flags, type);\n var vNode = new V(1 /* HasInvalidChildren */, null, null, flags, key, mergeDefaultProps(flags, type, props), mergeDefaultHooks(flags, type, ref), type);\n if (options.createVNode) {\n options.createVNode(vNode);\n }\n return vNode;\n}\nfunction createTextVNode(text, key) {\n return new V(1 /* HasInvalidChildren */, isNullOrUndef(text) || text === true || text === false ? '' : text, null, 16 /* Text */, key, null, null, null);\n}\nfunction createFragment(children, childFlags, key) {\n var fragment = createVNode(8192 /* Fragment */, 8192 /* Fragment */, null, children, childFlags, null, key, null);\n switch (fragment.childFlags) {\n case 1 /* HasInvalidChildren */:\n fragment.children = createVoidVNode();\n fragment.childFlags = 2 /* HasVNodeChildren */;\n break;\n case 16 /* HasTextChildren */:\n fragment.children = [createTextVNode(children)];\n fragment.childFlags = 4 /* HasNonKeyedChildren */;\n break;\n }\n return fragment;\n}\nfunction normalizeProps(vNode) {\n var props = vNode.props;\n if (props) {\n var flags = vNode.flags;\n if (flags & 481 /* Element */) {\n if (props.children !== void 0 && isNullOrUndef(vNode.children)) {\n normalizeChildren(vNode, props.children);\n }\n if (props.className !== void 0) {\n if (isNullOrUndef(vNode.className)) {\n vNode.className = props.className || null;\n }\n props.className = undefined;\n }\n }\n if (props.key !== void 0) {\n vNode.key = props.key;\n props.key = undefined;\n }\n if (props.ref !== void 0) {\n if (flags & 8 /* ComponentFunction */) {\n vNode.ref = combineFrom(vNode.ref, props.ref);\n }\n else {\n vNode.ref = props.ref;\n }\n props.ref = undefined;\n }\n }\n return vNode;\n}\n/*\n * Fragment is different than normal vNode,\n * because when it needs to be cloned we need to clone its children too\n * But not normalize, because otherwise those possibly get KEY and re-mount\n */\nfunction cloneFragment(vNodeToClone) {\n var oldChildren = vNodeToClone.children;\n var childFlags = vNodeToClone.childFlags;\n return createFragment(childFlags === 2 /* HasVNodeChildren */ ? directClone(oldChildren) : oldChildren.map(directClone), childFlags, vNodeToClone.key);\n}\nfunction directClone(vNodeToClone) {\n var flags = vNodeToClone.flags & -16385 /* ClearInUse */;\n var props = vNodeToClone.props;\n if (flags & 14 /* Component */) {\n if (!isNull(props)) {\n var propsToClone = props;\n props = {};\n for (var key in propsToClone) {\n props[key] = propsToClone[key];\n }\n }\n }\n if ((flags & 8192 /* Fragment */) === 0) {\n return new V(vNodeToClone.childFlags, vNodeToClone.children, vNodeToClone.className, flags, vNodeToClone.key, props, vNodeToClone.ref, vNodeToClone.type);\n }\n return cloneFragment(vNodeToClone);\n}\nfunction createVoidVNode() {\n return createTextVNode('', null);\n}\nfunction createPortal(children, container) {\n var normalizedRoot = normalizeRoot(children);\n return createVNode(1024 /* Portal */, 1024 /* Portal */, null, normalizedRoot, 0 /* UnknownChildren */, null, normalizedRoot.key, container);\n}\nfunction _normalizeVNodes(nodes, result, index, currentKey) {\n for (var len = nodes.length; index < len; index++) {\n var n = nodes[index];\n if (!isInvalid(n)) {\n var newKey = currentKey + keyPrefix + index;\n if (isArray(n)) {\n _normalizeVNodes(n, result, 0, newKey);\n }\n else {\n if (isStringOrNumber(n)) {\n n = createTextVNode(n, newKey);\n }\n else {\n var oldKey = n.key;\n var isPrefixedKey = isString(oldKey) && oldKey[0] === keyPrefix;\n if (n.flags & 81920 /* InUseOrNormalized */ || isPrefixedKey) {\n n = directClone(n);\n }\n n.flags |= 65536 /* Normalized */;\n if (!isPrefixedKey) {\n if (isNull(oldKey)) {\n n.key = newKey;\n }\n else {\n n.key = currentKey + oldKey;\n }\n }\n else if (oldKey.substring(0, currentKey.length) !== currentKey) {\n n.key = currentKey + oldKey;\n }\n }\n result.push(n);\n }\n }\n }\n}\nfunction getFlagsForElementVnode(type) {\n switch (type) {\n case 'svg':\n return 32 /* SvgElement */;\n case 'input':\n return 64 /* InputElement */;\n case 'select':\n return 256 /* SelectElement */;\n case 'textarea':\n return 128 /* TextareaElement */;\n case Fragment:\n return 8192 /* Fragment */;\n default:\n return 1 /* HtmlElement */;\n }\n}\nfunction normalizeChildren(vNode, children) {\n var newChildren;\n var newChildFlags = 1 /* HasInvalidChildren */;\n // Don't change children to match strict equal (===) true in patching\n if (isInvalid(children)) {\n newChildren = children;\n }\n else if (isStringOrNumber(children)) {\n newChildFlags = 16 /* HasTextChildren */;\n newChildren = children;\n }\n else if (isArray(children)) {\n var len = children.length;\n for (var i = 0; i < len; ++i) {\n var n = children[i];\n if (isInvalid(n) || isArray(n)) {\n newChildren = newChildren || children.slice(0, i);\n _normalizeVNodes(children, newChildren, i, '');\n break;\n }\n else if (isStringOrNumber(n)) {\n newChildren = newChildren || children.slice(0, i);\n newChildren.push(createTextVNode(n, keyPrefix + i));\n }\n else {\n var key = n.key;\n var needsCloning = (n.flags & 81920 /* InUseOrNormalized */) > 0;\n var isNullKey = isNull(key);\n var isPrefixed = isString(key) && key[0] === keyPrefix;\n if (needsCloning || isNullKey || isPrefixed) {\n newChildren = newChildren || children.slice(0, i);\n if (needsCloning || isPrefixed) {\n n = directClone(n);\n }\n if (isNullKey || isPrefixed) {\n n.key = keyPrefix + i;\n }\n newChildren.push(n);\n }\n else if (newChildren) {\n newChildren.push(n);\n }\n n.flags |= 65536 /* Normalized */;\n }\n }\n newChildren = newChildren || children;\n if (newChildren.length === 0) {\n newChildFlags = 1 /* HasInvalidChildren */;\n }\n else {\n newChildFlags = 8 /* HasKeyedChildren */;\n }\n }\n else {\n newChildren = children;\n newChildren.flags |= 65536 /* Normalized */;\n if (children.flags & 81920 /* InUseOrNormalized */) {\n newChildren = directClone(children);\n }\n newChildFlags = 2 /* HasVNodeChildren */;\n }\n vNode.children = newChildren;\n vNode.childFlags = newChildFlags;\n return vNode;\n}\nfunction normalizeRoot(input) {\n if (isInvalid(input) || isStringOrNumber(input)) {\n return createTextVNode(input, null);\n }\n if (isArray(input)) {\n return createFragment(input, 0 /* UnknownChildren */, null);\n }\n return input.flags & 16384 /* InUse */ ? directClone(input) : input;\n}\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xmlNS = 'http://www.w3.org/XML/1998/namespace';\nvar namespaces = {\n 'xlink:actuate': xlinkNS,\n 'xlink:arcrole': xlinkNS,\n 'xlink:href': xlinkNS,\n 'xlink:role': xlinkNS,\n 'xlink:show': xlinkNS,\n 'xlink:title': xlinkNS,\n 'xlink:type': xlinkNS,\n 'xml:base': xmlNS,\n 'xml:lang': xmlNS,\n 'xml:space': xmlNS\n};\n\nfunction getDelegatedEventObject(v) {\n return {\n onClick: v,\n onDblClick: v,\n onFocusIn: v,\n onFocusOut: v,\n onKeyDown: v,\n onKeyPress: v,\n onKeyUp: v,\n onMouseDown: v,\n onMouseMove: v,\n onMouseUp: v,\n onTouchEnd: v,\n onTouchMove: v,\n onTouchStart: v\n };\n}\nvar attachedEventCounts = getDelegatedEventObject(0);\nvar attachedEvents = getDelegatedEventObject(null);\nvar syntheticEvents = getDelegatedEventObject(true);\nfunction updateOrAddSyntheticEvent(name, dom) {\n var eventsObject = dom.$EV;\n if (!eventsObject) {\n eventsObject = dom.$EV = getDelegatedEventObject(null);\n }\n if (!eventsObject[name]) {\n if (++attachedEventCounts[name] === 1) {\n attachedEvents[name] = attachEventToDocument(name);\n }\n }\n return eventsObject;\n}\nfunction unmountSyntheticEvent(name, dom) {\n var eventsObject = dom.$EV;\n if (eventsObject && eventsObject[name]) {\n if (--attachedEventCounts[name] === 0) {\n document.removeEventListener(normalizeEventName(name), attachedEvents[name]);\n attachedEvents[name] = null;\n }\n eventsObject[name] = null;\n }\n}\nfunction handleSyntheticEvent(name, lastEvent, nextEvent, dom) {\n if (isFunction(nextEvent)) {\n updateOrAddSyntheticEvent(name, dom)[name] = nextEvent;\n }\n else if (isLinkEventObject(nextEvent)) {\n if (isLastValueSameLinkEvent(lastEvent, nextEvent)) {\n return;\n }\n updateOrAddSyntheticEvent(name, dom)[name] = nextEvent;\n }\n else {\n unmountSyntheticEvent(name, dom);\n }\n}\n// When browsers fully support event.composedPath we could loop it through instead of using parentNode property\nfunction getTargetNode(event) {\n return isFunction(event.composedPath) ? event.composedPath()[0] : event.target;\n}\nfunction dispatchEvents(event, isClick, name, eventData) {\n var dom = getTargetNode(event);\n do {\n // Html Nodes can be nested fe: span inside button in that scenario browser does not handle disabled attribute on parent,\n // because the event listener is on document.body\n // Don't process clicks on disabled elements\n if (isClick && dom.disabled) {\n return;\n }\n var eventsObject = dom.$EV;\n if (eventsObject) {\n var currentEvent = eventsObject[name];\n if (currentEvent) {\n // linkEvent object\n eventData.dom = dom;\n currentEvent.event ? currentEvent.event(currentEvent.data, event) : currentEvent(event);\n if (event.cancelBubble) {\n return;\n }\n }\n }\n dom = dom.parentNode;\n } while (!isNull(dom));\n}\nfunction stopPropagation() {\n this.cancelBubble = true;\n if (!this.immediatePropagationStopped) {\n this.stopImmediatePropagation();\n }\n}\nfunction isDefaultPrevented() {\n return this.defaultPrevented;\n}\nfunction isPropagationStopped() {\n return this.cancelBubble;\n}\nfunction extendEventProperties(event) {\n // Event data needs to be object to save reference to currentTarget getter\n var eventData = {\n dom: document\n };\n event.isDefaultPrevented = isDefaultPrevented;\n event.isPropagationStopped = isPropagationStopped;\n event.stopPropagation = stopPropagation;\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n get: function get() {\n return eventData.dom;\n }\n });\n return eventData;\n}\nfunction rootClickEvent(name) {\n return function (event) {\n if (event.button !== 0) {\n // Firefox incorrectly triggers click event for mid/right mouse buttons.\n // This bug has been active for 17 years.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=184051\n event.stopPropagation();\n return;\n }\n dispatchEvents(event, true, name, extendEventProperties(event));\n };\n}\nfunction rootEvent(name) {\n return function (event) {\n dispatchEvents(event, false, name, extendEventProperties(event));\n };\n}\nfunction attachEventToDocument(name) {\n var attachedEvent = name === 'onClick' || name === 'onDblClick' ? rootClickEvent(name) : rootEvent(name);\n document.addEventListener(normalizeEventName(name), attachedEvent);\n return attachedEvent;\n}\n\nfunction isSameInnerHTML(dom, innerHTML) {\n var tempdom = document.createElement('i');\n tempdom.innerHTML = innerHTML;\n return tempdom.innerHTML === dom.innerHTML;\n}\n\nfunction triggerEventListener(props, methodName, e) {\n if (props[methodName]) {\n var listener = props[methodName];\n if (listener.event) {\n listener.event(listener.data, e);\n }\n else {\n listener(e);\n }\n }\n else {\n var nativeListenerName = methodName.toLowerCase();\n if (props[nativeListenerName]) {\n props[nativeListenerName](e);\n }\n }\n}\nfunction createWrappedFunction(methodName, applyValue) {\n var fnMethod = function (e) {\n var vNode = this.$V;\n // If vNode is gone by the time event fires, no-op\n if (!vNode) {\n return;\n }\n var props = vNode.props || EMPTY_OBJ;\n var dom = vNode.dom;\n if (isString(methodName)) {\n triggerEventListener(props, methodName, e);\n }\n else {\n for (var i = 0; i < methodName.length; ++i) {\n triggerEventListener(props, methodName[i], e);\n }\n }\n if (isFunction(applyValue)) {\n var newVNode = this.$V;\n var newProps = newVNode.props || EMPTY_OBJ;\n applyValue(newProps, dom, false, newVNode);\n }\n };\n Object.defineProperty(fnMethod, 'wrapped', {\n configurable: false,\n enumerable: false,\n value: true,\n writable: false\n });\n return fnMethod;\n}\n\nfunction attachEvent(dom, eventName, handler) {\n var previousKey = \"$\" + eventName;\n var previousArgs = dom[previousKey];\n if (previousArgs) {\n if (previousArgs[1].wrapped) {\n return;\n }\n dom.removeEventListener(previousArgs[0], previousArgs[1]);\n dom[previousKey] = null;\n }\n if (isFunction(handler)) {\n dom.addEventListener(eventName, handler);\n dom[previousKey] = [eventName, handler];\n }\n}\n\nfunction isCheckedType(type) {\n return type === 'checkbox' || type === 'radio';\n}\nvar onTextInputChange = createWrappedFunction('onInput', applyValueInput);\nvar wrappedOnChange = createWrappedFunction(['onClick', 'onChange'], applyValueInput);\n/* tslint:disable-next-line:no-empty */\nfunction emptywrapper(event) {\n event.stopPropagation();\n}\nemptywrapper.wrapped = true;\nfunction inputEvents(dom, nextPropsOrEmpty) {\n if (isCheckedType(nextPropsOrEmpty.type)) {\n attachEvent(dom, 'change', wrappedOnChange);\n attachEvent(dom, 'click', emptywrapper);\n }\n else {\n attachEvent(dom, 'input', onTextInputChange);\n }\n}\nfunction applyValueInput(nextPropsOrEmpty, dom) {\n var type = nextPropsOrEmpty.type;\n var value = nextPropsOrEmpty.value;\n var checked = nextPropsOrEmpty.checked;\n var multiple = nextPropsOrEmpty.multiple;\n var defaultValue = nextPropsOrEmpty.defaultValue;\n var hasValue = !isNullOrUndef(value);\n if (type && type !== dom.type) {\n dom.setAttribute('type', type);\n }\n if (!isNullOrUndef(multiple) && multiple !== dom.multiple) {\n dom.multiple = multiple;\n }\n if (!isNullOrUndef(defaultValue) && !hasValue) {\n dom.defaultValue = defaultValue + '';\n }\n if (isCheckedType(type)) {\n if (hasValue) {\n dom.value = value;\n }\n if (!isNullOrUndef(checked)) {\n dom.checked = checked;\n }\n }\n else {\n if (hasValue && dom.value !== value) {\n dom.defaultValue = value;\n dom.value = value;\n }\n else if (!isNullOrUndef(checked)) {\n dom.checked = checked;\n }\n }\n}\n\nfunction updateChildOptions(vNode, value) {\n if (vNode.type === 'option') {\n updateChildOption(vNode, value);\n }\n else {\n var children = vNode.children;\n var flags = vNode.flags;\n if (flags & 4 /* ComponentClass */) {\n updateChildOptions(children.$LI, value);\n }\n else if (flags & 8 /* ComponentFunction */) {\n updateChildOptions(children, value);\n }\n else if (vNode.childFlags === 2 /* HasVNodeChildren */) {\n updateChildOptions(children, value);\n }\n else if (vNode.childFlags & 12 /* MultipleChildren */) {\n for (var i = 0, len = children.length; i < len; ++i) {\n updateChildOptions(children[i], value);\n }\n }\n }\n}\nfunction updateChildOption(vNode, value) {\n var props = vNode.props || EMPTY_OBJ;\n var dom = vNode.dom;\n // we do this as multiple may have changed\n dom.value = props.value;\n if (props.value === value || (isArray(value) && value.indexOf(props.value) !== -1)) {\n dom.selected = true;\n }\n else if (!isNullOrUndef(value) || !isNullOrUndef(props.selected)) {\n dom.selected = props.selected || false;\n }\n}\nvar onSelectChange = createWrappedFunction('onChange', applyValueSelect);\nfunction selectEvents(dom) {\n attachEvent(dom, 'change', onSelectChange);\n}\nfunction applyValueSelect(nextPropsOrEmpty, dom, mounting, vNode) {\n var multiplePropInBoolean = Boolean(nextPropsOrEmpty.multiple);\n if (!isNullOrUndef(nextPropsOrEmpty.multiple) && multiplePropInBoolean !== dom.multiple) {\n dom.multiple = multiplePropInBoolean;\n }\n var index = nextPropsOrEmpty.selectedIndex;\n if (index === -1) {\n dom.selectedIndex = -1;\n }\n var childFlags = vNode.childFlags;\n if (childFlags !== 1 /* HasInvalidChildren */) {\n var value = nextPropsOrEmpty.value;\n if (isNumber(index) && index > -1 && dom.options[index]) {\n value = dom.options[index].value;\n }\n if (mounting && isNullOrUndef(value)) {\n value = nextPropsOrEmpty.defaultValue;\n }\n updateChildOptions(vNode, value);\n }\n}\n\nvar onTextareaInputChange = createWrappedFunction('onInput', applyValueTextArea);\nvar wrappedOnChange$1 = createWrappedFunction('onChange');\nfunction textAreaEvents(dom, nextPropsOrEmpty) {\n attachEvent(dom, 'input', onTextareaInputChange);\n if (nextPropsOrEmpty.onChange) {\n attachEvent(dom, 'change', wrappedOnChange$1);\n }\n}\nfunction applyValueTextArea(nextPropsOrEmpty, dom, mounting) {\n var value = nextPropsOrEmpty.value;\n var domValue = dom.value;\n if (isNullOrUndef(value)) {\n if (mounting) {\n var defaultValue = nextPropsOrEmpty.defaultValue;\n if (!isNullOrUndef(defaultValue) && defaultValue !== domValue) {\n dom.defaultValue = defaultValue;\n dom.value = defaultValue;\n }\n }\n }\n else if (domValue !== value) {\n /* There is value so keep it controlled */\n dom.defaultValue = value;\n dom.value = value;\n }\n}\n\nfunction processElement(flags, vNode, dom, nextPropsOrEmpty, mounting, isControlled) {\n if (flags & 64 /* InputElement */) {\n applyValueInput(nextPropsOrEmpty, dom);\n }\n else if (flags & 256 /* SelectElement */) {\n applyValueSelect(nextPropsOrEmpty, dom, mounting, vNode);\n }\n else if (flags & 128 /* TextareaElement */) {\n applyValueTextArea(nextPropsOrEmpty, dom, mounting);\n }\n if (isControlled) {\n dom.$V = vNode;\n }\n}\nfunction addFormElementEventHandlers(flags, dom, nextPropsOrEmpty) {\n if (flags & 64 /* InputElement */) {\n inputEvents(dom, nextPropsOrEmpty);\n }\n else if (flags & 256 /* SelectElement */) {\n selectEvents(dom);\n }\n else if (flags & 128 /* TextareaElement */) {\n textAreaEvents(dom, nextPropsOrEmpty);\n }\n}\nfunction isControlledFormElement(nextPropsOrEmpty) {\n return nextPropsOrEmpty.type && isCheckedType(nextPropsOrEmpty.type) ? !isNullOrUndef(nextPropsOrEmpty.checked) : !isNullOrUndef(nextPropsOrEmpty.value);\n}\n\nfunction createRef() {\n return {\n current: null\n };\n}\nfunction forwardRef(render) {\n // @ts-ignore\n return {\n render: render\n };\n}\nfunction unmountRef(ref) {\n if (ref) {\n if (!safeCall1(ref, null) && ref.current) {\n ref.current = null;\n }\n }\n}\nfunction mountRef(ref, value, lifecycle) {\n if (ref && (isFunction(ref) || ref.current !== void 0)) {\n lifecycle.push(function () {\n if (!safeCall1(ref, value) && ref.current !== void 0) {\n ref.current = value;\n }\n });\n }\n}\n\nfunction remove(vNode, parentDOM) {\n unmount(vNode);\n removeVNodeDOM(vNode, parentDOM);\n}\nfunction unmount(vNode) {\n var flags = vNode.flags;\n var children = vNode.children;\n var ref;\n if (flags & 481 /* Element */) {\n ref = vNode.ref;\n var props = vNode.props;\n unmountRef(ref);\n var childFlags = vNode.childFlags;\n if (!isNull(props)) {\n var keys = Object.keys(props);\n for (var i = 0, len = keys.length; i < len; i++) {\n var key = keys[i];\n if (syntheticEvents[key]) {\n unmountSyntheticEvent(key, vNode.dom);\n }\n }\n }\n if (childFlags & 12 /* MultipleChildren */) {\n unmountAllChildren(children);\n }\n else if (childFlags === 2 /* HasVNodeChildren */) {\n unmount(children);\n }\n }\n else if (children) {\n if (flags & 4 /* ComponentClass */) {\n if (isFunction(children.componentWillUnmount)) {\n children.componentWillUnmount();\n }\n unmountRef(vNode.ref);\n children.$UN = true;\n unmount(children.$LI);\n }\n else if (flags & 8 /* ComponentFunction */) {\n ref = vNode.ref;\n if (!isNullOrUndef(ref) && isFunction(ref.onComponentWillUnmount)) {\n ref.onComponentWillUnmount(findDOMfromVNode(vNode, true), vNode.props || EMPTY_OBJ);\n }\n unmount(children);\n }\n else if (flags & 1024 /* Portal */) {\n remove(children, vNode.ref);\n }\n else if (flags & 8192 /* Fragment */) {\n if (vNode.childFlags & 12 /* MultipleChildren */) {\n unmountAllChildren(children);\n }\n }\n }\n}\nfunction unmountAllChildren(children) {\n for (var i = 0, len = children.length; i < len; ++i) {\n unmount(children[i]);\n }\n}\nfunction clearDOM(dom) {\n // Optimization for clearing dom\n dom.textContent = '';\n}\nfunction removeAllChildren(dom, vNode, children) {\n unmountAllChildren(children);\n if (vNode.flags & 8192 /* Fragment */) {\n removeVNodeDOM(vNode, dom);\n }\n else {\n clearDOM(dom);\n }\n}\n\nfunction wrapLinkEvent(nextValue) {\n // This variable makes sure there is no \"this\" context in callback\n var ev = nextValue.event;\n return function (e) {\n ev(nextValue.data, e);\n };\n}\nfunction patchEvent(name, lastValue, nextValue, dom) {\n if (isLinkEventObject(nextValue)) {\n if (isLastValueSameLinkEvent(lastValue, nextValue)) {\n return;\n }\n nextValue = wrapLinkEvent(nextValue);\n }\n attachEvent(dom, normalizeEventName(name), nextValue);\n}\n// We are assuming here that we come from patchProp routine\n// -nextAttrValue cannot be null or undefined\nfunction patchStyle(lastAttrValue, nextAttrValue, dom) {\n if (isNullOrUndef(nextAttrValue)) {\n dom.removeAttribute('style');\n return;\n }\n var domStyle = dom.style;\n var style;\n var value;\n if (isString(nextAttrValue)) {\n domStyle.cssText = nextAttrValue;\n return;\n }\n if (!isNullOrUndef(lastAttrValue) && !isString(lastAttrValue)) {\n for (style in nextAttrValue) {\n // do not add a hasOwnProperty check here, it affects performance\n value = nextAttrValue[style];\n if (value !== lastAttrValue[style]) {\n domStyle.setProperty(style, value);\n }\n }\n for (style in lastAttrValue) {\n if (isNullOrUndef(nextAttrValue[style])) {\n domStyle.removeProperty(style);\n }\n }\n }\n else {\n for (style in nextAttrValue) {\n value = nextAttrValue[style];\n domStyle.setProperty(style, value);\n }\n }\n}\nfunction patchDangerInnerHTML(lastValue, nextValue, lastVNode, dom) {\n var lastHtml = (lastValue && lastValue.__html) || '';\n var nextHtml = (nextValue && nextValue.__html) || '';\n if (lastHtml !== nextHtml) {\n if (!isNullOrUndef(nextHtml) && !isSameInnerHTML(dom, nextHtml)) {\n if (!isNull(lastVNode)) {\n if (lastVNode.childFlags & 12 /* MultipleChildren */) {\n unmountAllChildren(lastVNode.children);\n }\n else if (lastVNode.childFlags === 2 /* HasVNodeChildren */) {\n unmount(lastVNode.children);\n }\n lastVNode.children = null;\n lastVNode.childFlags = 1 /* HasInvalidChildren */;\n }\n dom.innerHTML = nextHtml;\n }\n }\n}\nfunction patchProp(prop, lastValue, nextValue, dom, isSVG, hasControlledValue, lastVNode) {\n switch (prop) {\n case 'children':\n case 'childrenType':\n case 'className':\n case 'defaultValue':\n case 'key':\n case 'multiple':\n case 'ref':\n case 'selectedIndex':\n break;\n case 'autoFocus':\n dom.autofocus = !!nextValue;\n break;\n case 'allowfullscreen':\n case 'autoplay':\n case 'capture':\n case 'checked':\n case 'controls':\n case 'default':\n case 'disabled':\n case 'hidden':\n case 'indeterminate':\n case 'loop':\n case 'muted':\n case 'novalidate':\n case 'open':\n case 'readOnly':\n case 'required':\n case 'reversed':\n case 'scoped':\n case 'seamless':\n case 'selected':\n dom[prop] = !!nextValue;\n break;\n case 'defaultChecked':\n case 'value':\n case 'volume':\n if (hasControlledValue && prop === 'value') {\n break;\n }\n var value = isNullOrUndef(nextValue) ? '' : nextValue;\n if (dom[prop] !== value) {\n dom[prop] = value;\n }\n break;\n case 'style':\n patchStyle(lastValue, nextValue, dom);\n break;\n case 'dangerouslySetInnerHTML':\n patchDangerInnerHTML(lastValue, nextValue, lastVNode, dom);\n break;\n default:\n if (syntheticEvents[prop]) {\n handleSyntheticEvent(prop, lastValue, nextValue, dom);\n }\n else if (prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110) {\n patchEvent(prop, lastValue, nextValue, dom);\n }\n else if (isNullOrUndef(nextValue)) {\n dom.removeAttribute(prop);\n }\n else if (isSVG && namespaces[prop]) {\n // We optimize for isSVG being false\n // If we end up in this path we can read property again\n dom.setAttributeNS(namespaces[prop], prop, nextValue);\n }\n else {\n dom.setAttribute(prop, nextValue);\n }\n break;\n }\n}\nfunction mountProps(vNode, flags, props, dom, isSVG) {\n var hasControlledValue = false;\n var isFormElement = (flags & 448 /* FormElement */) > 0;\n if (isFormElement) {\n hasControlledValue = isControlledFormElement(props);\n if (hasControlledValue) {\n addFormElementEventHandlers(flags, dom, props);\n }\n }\n for (var prop in props) {\n // do not add a hasOwnProperty check here, it affects performance\n patchProp(prop, null, props[prop], dom, isSVG, hasControlledValue, null);\n }\n if (isFormElement) {\n processElement(flags, vNode, dom, props, true, hasControlledValue);\n }\n}\n\nfunction renderNewInput(instance, props, context) {\n var nextInput = normalizeRoot(instance.render(props, instance.state, context));\n var childContext = context;\n if (isFunction(instance.getChildContext)) {\n childContext = combineFrom(context, instance.getChildContext());\n }\n instance.$CX = childContext;\n return nextInput;\n}\nfunction createClassComponentInstance(vNode, Component, props, context, isSVG, lifecycle) {\n var instance = new Component(props, context);\n var usesNewAPI = (instance.$N = Boolean(Component.getDerivedStateFromProps || instance.getSnapshotBeforeUpdate));\n instance.$SVG = isSVG;\n instance.$L = lifecycle;\n vNode.children = instance;\n instance.$BS = false;\n instance.context = context;\n if (instance.props === EMPTY_OBJ) {\n instance.props = props;\n }\n if (!usesNewAPI) {\n if (isFunction(instance.componentWillMount)) {\n instance.$BR = true;\n instance.componentWillMount();\n var pending = instance.$PS;\n if (!isNull(pending)) {\n var state = instance.state;\n if (isNull(state)) {\n instance.state = pending;\n }\n else {\n for (var key in pending) {\n state[key] = pending[key];\n }\n }\n instance.$PS = null;\n }\n instance.$BR = false;\n }\n }\n else {\n instance.state = createDerivedState(instance, props, instance.state);\n }\n instance.$LI = renderNewInput(instance, props, context);\n return instance;\n}\nfunction renderFunctionalComponent(vNode, context) {\n var props = vNode.props || EMPTY_OBJ;\n return vNode.flags & 32768 /* ForwardRef */ ? vNode.type.render(props, vNode.ref, context) : vNode.type(props, context);\n}\n\nfunction mount(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var flags = (vNode.flags |= 16384 /* InUse */);\n if (flags & 481 /* Element */) {\n mountElement(vNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else if (flags & 4 /* ComponentClass */) {\n mountClassComponent(vNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else if (flags & 8 /* ComponentFunction */) {\n mountFunctionalComponent(vNode, parentDOM, context, isSVG, nextNode, lifecycle);\n mountFunctionalComponentCallbacks(vNode, lifecycle);\n }\n else if (flags & 512 /* Void */ || flags & 16 /* Text */) {\n mountText(vNode, parentDOM, nextNode);\n }\n else if (flags & 8192 /* Fragment */) {\n mountFragment(vNode, context, parentDOM, isSVG, nextNode, lifecycle);\n }\n else if (flags & 1024 /* Portal */) {\n mountPortal(vNode, context, parentDOM, nextNode, lifecycle);\n }\n else ;\n}\nfunction mountPortal(vNode, context, parentDOM, nextNode, lifecycle) {\n mount(vNode.children, vNode.ref, context, false, null, lifecycle);\n var placeHolderVNode = createVoidVNode();\n mountText(placeHolderVNode, parentDOM, nextNode);\n vNode.dom = placeHolderVNode.dom;\n}\nfunction mountFragment(vNode, context, parentDOM, isSVG, nextNode, lifecycle) {\n var children = vNode.children;\n var childFlags = vNode.childFlags;\n // When fragment is optimized for multiple children, check if there is no children and change flag to invalid\n // This is the only normalization always done, to keep optimization flags API same for fragments and regular elements\n if (childFlags & 12 /* MultipleChildren */ && children.length === 0) {\n childFlags = vNode.childFlags = 2 /* HasVNodeChildren */;\n children = vNode.children = createVoidVNode();\n }\n if (childFlags === 2 /* HasVNodeChildren */) {\n mount(children, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else {\n mountArrayChildren(children, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n}\nfunction mountText(vNode, parentDOM, nextNode) {\n var dom = (vNode.dom = document.createTextNode(vNode.children));\n if (!isNull(parentDOM)) {\n insertOrAppend(parentDOM, dom, nextNode);\n }\n}\nfunction mountElement(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var flags = vNode.flags;\n var props = vNode.props;\n var className = vNode.className;\n var childFlags = vNode.childFlags;\n var dom = (vNode.dom = documentCreateElement(vNode.type, (isSVG = isSVG || (flags & 32 /* SvgElement */) > 0)));\n var children = vNode.children;\n if (!isNullOrUndef(className) && className !== '') {\n if (isSVG) {\n dom.setAttribute('class', className);\n }\n else {\n dom.className = className;\n }\n }\n if (childFlags === 16 /* HasTextChildren */) {\n setTextContent(dom, children);\n }\n else if (childFlags !== 1 /* HasInvalidChildren */) {\n var childrenIsSVG = isSVG && vNode.type !== 'foreignObject';\n if (childFlags === 2 /* HasVNodeChildren */) {\n if (children.flags & 16384 /* InUse */) {\n vNode.children = children = directClone(children);\n }\n mount(children, dom, context, childrenIsSVG, null, lifecycle);\n }\n else if (childFlags === 8 /* HasKeyedChildren */ || childFlags === 4 /* HasNonKeyedChildren */) {\n mountArrayChildren(children, dom, context, childrenIsSVG, null, lifecycle);\n }\n }\n if (!isNull(parentDOM)) {\n insertOrAppend(parentDOM, dom, nextNode);\n }\n if (!isNull(props)) {\n mountProps(vNode, flags, props, dom, isSVG);\n }\n mountRef(vNode.ref, dom, lifecycle);\n}\nfunction mountArrayChildren(children, dom, context, isSVG, nextNode, lifecycle) {\n for (var i = 0; i < children.length; ++i) {\n var child = children[i];\n if (child.flags & 16384 /* InUse */) {\n children[i] = child = directClone(child);\n }\n mount(child, dom, context, isSVG, nextNode, lifecycle);\n }\n}\nfunction mountClassComponent(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var instance = createClassComponentInstance(vNode, vNode.type, vNode.props || EMPTY_OBJ, context, isSVG, lifecycle);\n mount(instance.$LI, parentDOM, instance.$CX, isSVG, nextNode, lifecycle);\n mountClassComponentCallbacks(vNode.ref, instance, lifecycle);\n}\nfunction mountFunctionalComponent(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n mount((vNode.children = normalizeRoot(renderFunctionalComponent(vNode, context))), parentDOM, context, isSVG, nextNode, lifecycle);\n}\nfunction createClassMountCallback(instance) {\n return function () {\n instance.componentDidMount();\n };\n}\nfunction mountClassComponentCallbacks(ref, instance, lifecycle) {\n mountRef(ref, instance, lifecycle);\n if (isFunction(instance.componentDidMount)) {\n lifecycle.push(createClassMountCallback(instance));\n }\n}\nfunction createOnMountCallback(ref, vNode) {\n return function () {\n ref.onComponentDidMount(findDOMfromVNode(vNode, true), vNode.props || EMPTY_OBJ);\n };\n}\nfunction mountFunctionalComponentCallbacks(vNode, lifecycle) {\n var ref = vNode.ref;\n if (!isNullOrUndef(ref)) {\n safeCall1(ref.onComponentWillMount, vNode.props || EMPTY_OBJ);\n if (isFunction(ref.onComponentDidMount)) {\n lifecycle.push(createOnMountCallback(ref, vNode));\n }\n }\n}\n\nfunction replaceWithNewNode(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle) {\n unmount(lastVNode);\n if ((nextVNode.flags & lastVNode.flags & 2033 /* DOMRef */) !== 0) {\n mount(nextVNode, null, context, isSVG, null, lifecycle);\n // Single DOM operation, when we have dom references available\n replaceChild(parentDOM, nextVNode.dom, lastVNode.dom);\n }\n else {\n mount(nextVNode, parentDOM, context, isSVG, findDOMfromVNode(lastVNode, true), lifecycle);\n removeVNodeDOM(lastVNode, parentDOM);\n }\n}\nfunction patch(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var nextFlags = (nextVNode.flags |= 16384 /* InUse */);\n if (lastVNode.flags !== nextFlags || lastVNode.type !== nextVNode.type || lastVNode.key !== nextVNode.key || nextFlags & 2048 /* ReCreate */) {\n if (lastVNode.flags & 16384 /* InUse */) {\n replaceWithNewNode(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle);\n }\n else {\n // Last vNode is not in use, it has crashed at application level. Just mount nextVNode and ignore last one\n mount(nextVNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n }\n else if (nextFlags & 481 /* Element */) {\n patchElement(lastVNode, nextVNode, context, isSVG, nextFlags, lifecycle);\n }\n else if (nextFlags & 4 /* ComponentClass */) {\n patchClassComponent(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else if (nextFlags & 8 /* ComponentFunction */) {\n patchFunctionalComponent(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else if (nextFlags & 16 /* Text */) {\n patchText(lastVNode, nextVNode);\n }\n else if (nextFlags & 512 /* Void */) {\n nextVNode.dom = lastVNode.dom;\n }\n else if (nextFlags & 8192 /* Fragment */) {\n patchFragment(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle);\n }\n else {\n patchPortal(lastVNode, nextVNode, context, lifecycle);\n }\n}\nfunction patchSingleTextChild(lastChildren, nextChildren, parentDOM) {\n if (lastChildren !== nextChildren) {\n if (lastChildren !== '') {\n parentDOM.firstChild.nodeValue = nextChildren;\n }\n else {\n setTextContent(parentDOM, nextChildren);\n }\n }\n}\nfunction patchContentEditableChildren(dom, nextChildren) {\n if (dom.textContent !== nextChildren) {\n dom.textContent = nextChildren;\n }\n}\nfunction patchFragment(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle) {\n var lastChildren = lastVNode.children;\n var nextChildren = nextVNode.children;\n var lastChildFlags = lastVNode.childFlags;\n var nextChildFlags = nextVNode.childFlags;\n var nextNode = null;\n // When fragment is optimized for multiple children, check if there is no children and change flag to invalid\n // This is the only normalization always done, to keep optimization flags API same for fragments and regular elements\n if (nextChildFlags & 12 /* MultipleChildren */ && nextChildren.length === 0) {\n nextChildFlags = nextVNode.childFlags = 2 /* HasVNodeChildren */;\n nextChildren = nextVNode.children = createVoidVNode();\n }\n var nextIsSingle = (nextChildFlags & 2 /* HasVNodeChildren */) !== 0;\n if (lastChildFlags & 12 /* MultipleChildren */) {\n var lastLen = lastChildren.length;\n // We need to know Fragment's edge node when\n if (\n // It uses keyed algorithm\n (lastChildFlags & 8 /* HasKeyedChildren */ && nextChildFlags & 8 /* HasKeyedChildren */) ||\n // It transforms from many to single\n nextIsSingle ||\n // It will append more nodes\n (!nextIsSingle && nextChildren.length > lastLen)) {\n // When fragment has multiple children there is always at least one vNode\n nextNode = findDOMfromVNode(lastChildren[lastLen - 1], false).nextSibling;\n }\n }\n patchChildren(lastChildFlags, nextChildFlags, lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, lastVNode, lifecycle);\n}\nfunction patchPortal(lastVNode, nextVNode, context, lifecycle) {\n var lastContainer = lastVNode.ref;\n var nextContainer = nextVNode.ref;\n var nextChildren = nextVNode.children;\n patchChildren(lastVNode.childFlags, nextVNode.childFlags, lastVNode.children, nextChildren, lastContainer, context, false, null, lastVNode, lifecycle);\n nextVNode.dom = lastVNode.dom;\n if (lastContainer !== nextContainer && !isInvalid(nextChildren)) {\n var node = nextChildren.dom;\n removeChild(lastContainer, node);\n appendChild(nextContainer, node);\n }\n}\nfunction patchElement(lastVNode, nextVNode, context, isSVG, nextFlags, lifecycle) {\n var dom = (nextVNode.dom = lastVNode.dom);\n var lastProps = lastVNode.props;\n var nextProps = nextVNode.props;\n var isFormElement = false;\n var hasControlledValue = false;\n var nextPropsOrEmpty;\n isSVG = isSVG || (nextFlags & 32 /* SvgElement */) > 0;\n // inlined patchProps -- starts --\n if (lastProps !== nextProps) {\n var lastPropsOrEmpty = lastProps || EMPTY_OBJ;\n nextPropsOrEmpty = nextProps || EMPTY_OBJ;\n if (nextPropsOrEmpty !== EMPTY_OBJ) {\n isFormElement = (nextFlags & 448 /* FormElement */) > 0;\n if (isFormElement) {\n hasControlledValue = isControlledFormElement(nextPropsOrEmpty);\n }\n for (var prop in nextPropsOrEmpty) {\n var lastValue = lastPropsOrEmpty[prop];\n var nextValue = nextPropsOrEmpty[prop];\n if (lastValue !== nextValue) {\n patchProp(prop, lastValue, nextValue, dom, isSVG, hasControlledValue, lastVNode);\n }\n }\n }\n if (lastPropsOrEmpty !== EMPTY_OBJ) {\n for (var prop$1 in lastPropsOrEmpty) {\n if (isNullOrUndef(nextPropsOrEmpty[prop$1]) && !isNullOrUndef(lastPropsOrEmpty[prop$1])) {\n patchProp(prop$1, lastPropsOrEmpty[prop$1], null, dom, isSVG, hasControlledValue, lastVNode);\n }\n }\n }\n }\n var nextChildren = nextVNode.children;\n var nextClassName = nextVNode.className;\n // inlined patchProps -- ends --\n if (lastVNode.className !== nextClassName) {\n if (isNullOrUndef(nextClassName)) {\n dom.removeAttribute('class');\n }\n else if (isSVG) {\n dom.setAttribute('class', nextClassName);\n }\n else {\n dom.className = nextClassName;\n }\n }\n if (nextFlags & 4096 /* ContentEditable */) {\n patchContentEditableChildren(dom, nextChildren);\n }\n else {\n patchChildren(lastVNode.childFlags, nextVNode.childFlags, lastVNode.children, nextChildren, dom, context, isSVG && nextVNode.type !== 'foreignObject', null, lastVNode, lifecycle);\n }\n if (isFormElement) {\n processElement(nextFlags, nextVNode, dom, nextPropsOrEmpty, false, hasControlledValue);\n }\n var nextRef = nextVNode.ref;\n var lastRef = lastVNode.ref;\n if (lastRef !== nextRef) {\n unmountRef(lastRef);\n mountRef(nextRef, dom, lifecycle);\n }\n}\nfunction replaceOneVNodeWithMultipleVNodes(lastChildren, nextChildren, parentDOM, context, isSVG, lifecycle) {\n unmount(lastChildren);\n mountArrayChildren(nextChildren, parentDOM, context, isSVG, findDOMfromVNode(lastChildren, true), lifecycle);\n removeVNodeDOM(lastChildren, parentDOM);\n}\nfunction patchChildren(lastChildFlags, nextChildFlags, lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, parentVNode, lifecycle) {\n switch (lastChildFlags) {\n case 2 /* HasVNodeChildren */:\n switch (nextChildFlags) {\n case 2 /* HasVNodeChildren */:\n patch(lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n case 1 /* HasInvalidChildren */:\n remove(lastChildren, parentDOM);\n break;\n case 16 /* HasTextChildren */:\n unmount(lastChildren);\n setTextContent(parentDOM, nextChildren);\n break;\n default:\n replaceOneVNodeWithMultipleVNodes(lastChildren, nextChildren, parentDOM, context, isSVG, lifecycle);\n break;\n }\n break;\n case 1 /* HasInvalidChildren */:\n switch (nextChildFlags) {\n case 2 /* HasVNodeChildren */:\n mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n case 1 /* HasInvalidChildren */:\n break;\n case 16 /* HasTextChildren */:\n setTextContent(parentDOM, nextChildren);\n break;\n default:\n mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n }\n break;\n case 16 /* HasTextChildren */:\n switch (nextChildFlags) {\n case 16 /* HasTextChildren */:\n patchSingleTextChild(lastChildren, nextChildren, parentDOM);\n break;\n case 2 /* HasVNodeChildren */:\n clearDOM(parentDOM);\n mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n case 1 /* HasInvalidChildren */:\n clearDOM(parentDOM);\n break;\n default:\n clearDOM(parentDOM);\n mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n }\n break;\n default:\n switch (nextChildFlags) {\n case 16 /* HasTextChildren */:\n unmountAllChildren(lastChildren);\n setTextContent(parentDOM, nextChildren);\n break;\n case 2 /* HasVNodeChildren */:\n removeAllChildren(parentDOM, parentVNode, lastChildren);\n mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n case 1 /* HasInvalidChildren */:\n removeAllChildren(parentDOM, parentVNode, lastChildren);\n break;\n default:\n var lastLength = lastChildren.length | 0;\n var nextLength = nextChildren.length | 0;\n // Fast path's for both algorithms\n if (lastLength === 0) {\n if (nextLength > 0) {\n mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n }\n else if (nextLength === 0) {\n removeAllChildren(parentDOM, parentVNode, lastChildren);\n }\n else if (nextChildFlags === 8 /* HasKeyedChildren */ && lastChildFlags === 8 /* HasKeyedChildren */) {\n patchKeyedChildren(lastChildren, nextChildren, parentDOM, context, isSVG, lastLength, nextLength, nextNode, parentVNode, lifecycle);\n }\n else {\n patchNonKeyedChildren(lastChildren, nextChildren, parentDOM, context, isSVG, lastLength, nextLength, nextNode, lifecycle);\n }\n break;\n }\n break;\n }\n}\nfunction createDidUpdate(instance, lastProps, lastState, snapshot, lifecycle) {\n lifecycle.push(function () {\n instance.componentDidUpdate(lastProps, lastState, snapshot);\n });\n}\nfunction updateClassComponent(instance, nextState, nextProps, parentDOM, context, isSVG, force, nextNode, lifecycle) {\n var lastState = instance.state;\n var lastProps = instance.props;\n var usesNewAPI = Boolean(instance.$N);\n var hasSCU = isFunction(instance.shouldComponentUpdate);\n if (usesNewAPI) {\n nextState = createDerivedState(instance, nextProps, nextState !== lastState ? combineFrom(lastState, nextState) : nextState);\n }\n if (force || !hasSCU || (hasSCU && instance.shouldComponentUpdate(nextProps, nextState, context))) {\n if (!usesNewAPI && isFunction(instance.componentWillUpdate)) {\n instance.componentWillUpdate(nextProps, nextState, context);\n }\n instance.props = nextProps;\n instance.state = nextState;\n instance.context = context;\n var snapshot = null;\n var nextInput = renderNewInput(instance, nextProps, context);\n if (usesNewAPI && isFunction(instance.getSnapshotBeforeUpdate)) {\n snapshot = instance.getSnapshotBeforeUpdate(lastProps, lastState);\n }\n patch(instance.$LI, nextInput, parentDOM, instance.$CX, isSVG, nextNode, lifecycle);\n // Dont update Last input, until patch has been succesfully executed\n instance.$LI = nextInput;\n if (isFunction(instance.componentDidUpdate)) {\n createDidUpdate(instance, lastProps, lastState, snapshot, lifecycle);\n }\n }\n else {\n instance.props = nextProps;\n instance.state = nextState;\n instance.context = context;\n }\n}\nfunction patchClassComponent(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var instance = (nextVNode.children = lastVNode.children);\n // If Component has crashed, ignore it to stay functional\n if (isNull(instance)) {\n return;\n }\n instance.$L = lifecycle;\n var nextProps = nextVNode.props || EMPTY_OBJ;\n var nextRef = nextVNode.ref;\n var lastRef = lastVNode.ref;\n var nextState = instance.state;\n if (!instance.$N) {\n if (isFunction(instance.componentWillReceiveProps)) {\n instance.$BR = true;\n instance.componentWillReceiveProps(nextProps, context);\n // If instance component was removed during its own update do nothing.\n if (instance.$UN) {\n return;\n }\n instance.$BR = false;\n }\n if (!isNull(instance.$PS)) {\n nextState = combineFrom(nextState, instance.$PS);\n instance.$PS = null;\n }\n }\n updateClassComponent(instance, nextState, nextProps, parentDOM, context, isSVG, false, nextNode, lifecycle);\n if (lastRef !== nextRef) {\n unmountRef(lastRef);\n mountRef(nextRef, instance, lifecycle);\n }\n}\nfunction patchFunctionalComponent(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var shouldUpdate = true;\n var nextProps = nextVNode.props || EMPTY_OBJ;\n var nextRef = nextVNode.ref;\n var lastProps = lastVNode.props;\n var nextHooksDefined = !isNullOrUndef(nextRef);\n var lastInput = lastVNode.children;\n if (nextHooksDefined && isFunction(nextRef.onComponentShouldUpdate)) {\n shouldUpdate = nextRef.onComponentShouldUpdate(lastProps, nextProps);\n }\n if (shouldUpdate !== false) {\n if (nextHooksDefined && isFunction(nextRef.onComponentWillUpdate)) {\n nextRef.onComponentWillUpdate(lastProps, nextProps);\n }\n var nextInput = normalizeRoot(renderFunctionalComponent(nextVNode, context));\n patch(lastInput, nextInput, parentDOM, context, isSVG, nextNode, lifecycle);\n nextVNode.children = nextInput;\n if (nextHooksDefined && isFunction(nextRef.onComponentDidUpdate)) {\n nextRef.onComponentDidUpdate(lastProps, nextProps);\n }\n }\n else {\n nextVNode.children = lastInput;\n }\n}\nfunction patchText(lastVNode, nextVNode) {\n var nextText = nextVNode.children;\n var dom = (nextVNode.dom = lastVNode.dom);\n if (nextText !== lastVNode.children) {\n dom.nodeValue = nextText;\n }\n}\nfunction patchNonKeyedChildren(lastChildren, nextChildren, dom, context, isSVG, lastChildrenLength, nextChildrenLength, nextNode, lifecycle) {\n var commonLength = lastChildrenLength > nextChildrenLength ? nextChildrenLength : lastChildrenLength;\n var i = 0;\n var nextChild;\n var lastChild;\n for (; i < commonLength; ++i) {\n nextChild = nextChildren[i];\n lastChild = lastChildren[i];\n if (nextChild.flags & 16384 /* InUse */) {\n nextChild = nextChildren[i] = directClone(nextChild);\n }\n patch(lastChild, nextChild, dom, context, isSVG, nextNode, lifecycle);\n lastChildren[i] = nextChild;\n }\n if (lastChildrenLength < nextChildrenLength) {\n for (i = commonLength; i < nextChildrenLength; ++i) {\n nextChild = nextChildren[i];\n if (nextChild.flags & 16384 /* InUse */) {\n nextChild = nextChildren[i] = directClone(nextChild);\n }\n mount(nextChild, dom, context, isSVG, nextNode, lifecycle);\n }\n }\n else if (lastChildrenLength > nextChildrenLength) {\n for (i = commonLength; i < lastChildrenLength; ++i) {\n remove(lastChildren[i], dom);\n }\n }\n}\nfunction patchKeyedChildren(a, b, dom, context, isSVG, aLength, bLength, outerEdge, parentVNode, lifecycle) {\n var aEnd = aLength - 1;\n var bEnd = bLength - 1;\n var j = 0;\n var aNode = a[j];\n var bNode = b[j];\n var nextPos;\n var nextNode;\n // Step 1\n // tslint:disable-next-line\n outer: {\n // Sync nodes with the same key at the beginning.\n while (aNode.key === bNode.key) {\n if (bNode.flags & 16384 /* InUse */) {\n b[j] = bNode = directClone(bNode);\n }\n patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);\n a[j] = bNode;\n ++j;\n if (j > aEnd || j > bEnd) {\n break outer;\n }\n aNode = a[j];\n bNode = b[j];\n }\n aNode = a[aEnd];\n bNode = b[bEnd];\n // Sync nodes with the same key at the end.\n while (aNode.key === bNode.key) {\n if (bNode.flags & 16384 /* InUse */) {\n b[bEnd] = bNode = directClone(bNode);\n }\n patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);\n a[aEnd] = bNode;\n aEnd--;\n bEnd--;\n if (j > aEnd || j > bEnd) {\n break outer;\n }\n aNode = a[aEnd];\n bNode = b[bEnd];\n }\n }\n if (j > aEnd) {\n if (j <= bEnd) {\n nextPos = bEnd + 1;\n nextNode = nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge;\n while (j <= bEnd) {\n bNode = b[j];\n if (bNode.flags & 16384 /* InUse */) {\n b[j] = bNode = directClone(bNode);\n }\n ++j;\n mount(bNode, dom, context, isSVG, nextNode, lifecycle);\n }\n }\n }\n else if (j > bEnd) {\n while (j <= aEnd) {\n remove(a[j++], dom);\n }\n }\n else {\n patchKeyedChildrenComplex(a, b, context, aLength, bLength, aEnd, bEnd, j, dom, isSVG, outerEdge, parentVNode, lifecycle);\n }\n}\nfunction patchKeyedChildrenComplex(a, b, context, aLength, bLength, aEnd, bEnd, j, dom, isSVG, outerEdge, parentVNode, lifecycle) {\n var aNode;\n var bNode;\n var nextPos;\n var i = 0;\n var aStart = j;\n var bStart = j;\n var aLeft = aEnd - j + 1;\n var bLeft = bEnd - j + 1;\n var sources = new Int32Array(bLeft + 1);\n // Keep track if its possible to remove whole DOM using textContent = '';\n var canRemoveWholeContent = aLeft === aLength;\n var moved = false;\n var pos = 0;\n var patched = 0;\n // When sizes are small, just loop them through\n if (bLength < 4 || (aLeft | bLeft) < 32) {\n for (i = aStart; i <= aEnd; ++i) {\n aNode = a[i];\n if (patched < bLeft) {\n for (j = bStart; j <= bEnd; j++) {\n bNode = b[j];\n if (aNode.key === bNode.key) {\n sources[j - bStart] = i + 1;\n if (canRemoveWholeContent) {\n canRemoveWholeContent = false;\n while (aStart < i) {\n remove(a[aStart++], dom);\n }\n }\n if (pos > j) {\n moved = true;\n }\n else {\n pos = j;\n }\n if (bNode.flags & 16384 /* InUse */) {\n b[j] = bNode = directClone(bNode);\n }\n patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);\n ++patched;\n break;\n }\n }\n if (!canRemoveWholeContent && j > bEnd) {\n remove(aNode, dom);\n }\n }\n else if (!canRemoveWholeContent) {\n remove(aNode, dom);\n }\n }\n }\n else {\n var keyIndex = {};\n // Map keys by their index\n for (i = bStart; i <= bEnd; ++i) {\n keyIndex[b[i].key] = i;\n }\n // Try to patch same keys\n for (i = aStart; i <= aEnd; ++i) {\n aNode = a[i];\n if (patched < bLeft) {\n j = keyIndex[aNode.key];\n if (j !== void 0) {\n if (canRemoveWholeContent) {\n canRemoveWholeContent = false;\n while (i > aStart) {\n remove(a[aStart++], dom);\n }\n }\n sources[j - bStart] = i + 1;\n if (pos > j) {\n moved = true;\n }\n else {\n pos = j;\n }\n bNode = b[j];\n if (bNode.flags & 16384 /* InUse */) {\n b[j] = bNode = directClone(bNode);\n }\n patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);\n ++patched;\n }\n else if (!canRemoveWholeContent) {\n remove(aNode, dom);\n }\n }\n else if (!canRemoveWholeContent) {\n remove(aNode, dom);\n }\n }\n }\n // fast-path: if nothing patched remove all old and add all new\n if (canRemoveWholeContent) {\n removeAllChildren(dom, parentVNode, a);\n mountArrayChildren(b, dom, context, isSVG, outerEdge, lifecycle);\n }\n else if (moved) {\n var seq = lis_algorithm(sources);\n j = seq.length - 1;\n for (i = bLeft - 1; i >= 0; i--) {\n if (sources[i] === 0) {\n pos = i + bStart;\n bNode = b[pos];\n if (bNode.flags & 16384 /* InUse */) {\n b[pos] = bNode = directClone(bNode);\n }\n nextPos = pos + 1;\n mount(bNode, dom, context, isSVG, nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge, lifecycle);\n }\n else if (j < 0 || i !== seq[j]) {\n pos = i + bStart;\n bNode = b[pos];\n nextPos = pos + 1;\n moveVNodeDOM(bNode, dom, nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge);\n }\n else {\n j--;\n }\n }\n }\n else if (patched !== bLeft) {\n // when patched count doesn't match b length we need to insert those new ones\n // loop backwards so we can use insertBefore\n for (i = bLeft - 1; i >= 0; i--) {\n if (sources[i] === 0) {\n pos = i + bStart;\n bNode = b[pos];\n if (bNode.flags & 16384 /* InUse */) {\n b[pos] = bNode = directClone(bNode);\n }\n nextPos = pos + 1;\n mount(bNode, dom, context, isSVG, nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge, lifecycle);\n }\n }\n }\n}\nvar result;\nvar p;\nvar maxLen = 0;\n// https://en.wikipedia.org/wiki/Longest_increasing_subsequence\nfunction lis_algorithm(arr) {\n var arrI = 0;\n var i = 0;\n var j = 0;\n var k = 0;\n var u = 0;\n var v = 0;\n var c = 0;\n var len = arr.length;\n if (len > maxLen) {\n maxLen = len;\n result = new Int32Array(len);\n p = new Int32Array(len);\n }\n for (; i < len; ++i) {\n arrI = arr[i];\n if (arrI !== 0) {\n j = result[k];\n if (arr[j] < arrI) {\n p[i] = j;\n result[++k] = i;\n continue;\n }\n u = 0;\n v = k;\n while (u < v) {\n c = (u + v) >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n }\n else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = k + 1;\n var seq = new Int32Array(u);\n v = result[u - 1];\n while (u-- > 0) {\n seq[u] = v;\n v = p[v];\n result[u] = 0;\n }\n return seq;\n}\n\nvar hasDocumentAvailable = typeof document !== 'undefined';\nif (hasDocumentAvailable) {\n /*\n * Defining $EV and $V properties on Node.prototype\n * fixes v8 \"wrong map\" de-optimization\n */\n if (window.Node) {\n Node.prototype.$EV = null;\n Node.prototype.$V = null;\n }\n}\nfunction __render(input, parentDOM, callback, context) {\n var lifecycle = [];\n var rootInput = parentDOM.$V;\n renderCheck.v = true;\n if (isNullOrUndef(rootInput)) {\n if (!isNullOrUndef(input)) {\n if (input.flags & 16384 /* InUse */) {\n input = directClone(input);\n }\n mount(input, parentDOM, context, false, null, lifecycle);\n parentDOM.$V = input;\n rootInput = input;\n }\n }\n else {\n if (isNullOrUndef(input)) {\n remove(rootInput, parentDOM);\n parentDOM.$V = null;\n }\n else {\n if (input.flags & 16384 /* InUse */) {\n input = directClone(input);\n }\n patch(rootInput, input, parentDOM, context, false, null, lifecycle);\n rootInput = parentDOM.$V = input;\n }\n }\n callAll(lifecycle);\n renderCheck.v = false;\n if (isFunction(callback)) {\n callback();\n }\n if (isFunction(options.renderComplete)) {\n options.renderComplete(rootInput, parentDOM);\n }\n}\nfunction render(input, parentDOM, callback, context) {\n if ( callback === void 0 ) callback = null;\n if ( context === void 0 ) context = EMPTY_OBJ;\n\n __render(input, parentDOM, callback, context);\n}\nfunction createRenderer(parentDOM) {\n return function renderer(lastInput, nextInput, callback, context) {\n if (!parentDOM) {\n parentDOM = lastInput;\n }\n render(nextInput, parentDOM, callback, context);\n };\n}\n\nvar QUEUE = [];\nvar nextTick = typeof Promise !== 'undefined'\n ? Promise.resolve().then.bind(Promise.resolve())\n : function (a) {\n window.setTimeout(a, 0);\n };\nvar microTaskPending = false;\nfunction queueStateChanges(component, newState, callback, force) {\n var pending = component.$PS;\n if (isFunction(newState)) {\n newState = newState(pending ? combineFrom(component.state, pending) : component.state, component.props, component.context);\n }\n if (isNullOrUndef(pending)) {\n component.$PS = newState;\n }\n else {\n for (var stateKey in newState) {\n pending[stateKey] = newState[stateKey];\n }\n }\n if (!component.$BR) {\n if (!renderCheck.v) {\n if (QUEUE.length === 0) {\n applyState(component, force);\n if (isFunction(callback)) {\n callback.call(component);\n }\n return;\n }\n }\n if (QUEUE.indexOf(component) === -1) {\n QUEUE.push(component);\n }\n if (force) {\n component.$F = true;\n }\n if (!microTaskPending) {\n microTaskPending = true;\n nextTick(rerender);\n }\n if (isFunction(callback)) {\n var QU = component.$QU;\n if (!QU) {\n QU = component.$QU = [];\n }\n QU.push(callback);\n }\n }\n else if (isFunction(callback)) {\n component.$L.push(callback.bind(component));\n }\n}\nfunction callSetStateCallbacks(component) {\n var queue = component.$QU;\n for (var i = 0; i < queue.length; ++i) {\n queue[i].call(component);\n }\n component.$QU = null;\n}\nfunction rerender() {\n var component;\n microTaskPending = false;\n while ((component = QUEUE.shift())) {\n if (!component.$UN) {\n var force = component.$F;\n component.$F = false;\n applyState(component, force);\n if (component.$QU) {\n callSetStateCallbacks(component);\n }\n }\n }\n}\nfunction applyState(component, force) {\n if (force || !component.$BR) {\n var pendingState = component.$PS;\n component.$PS = null;\n var lifecycle = [];\n renderCheck.v = true;\n updateClassComponent(component, combineFrom(component.state, pendingState), component.props, findDOMfromVNode(component.$LI, true).parentNode, component.context, component.$SVG, force, null, lifecycle);\n callAll(lifecycle);\n renderCheck.v = false;\n }\n else {\n component.state = component.$PS;\n component.$PS = null;\n }\n}\nvar Component = function Component(props, context) {\n // Public\n this.state = null;\n // Internal properties\n this.$BR = false; // BLOCK RENDER\n this.$BS = true; // BLOCK STATE\n this.$PS = null; // PENDING STATE (PARTIAL or FULL)\n this.$LI = null; // LAST INPUT\n this.$UN = false; // UNMOUNTED\n this.$CX = null; // CHILDCONTEXT\n this.$QU = null; // QUEUE\n this.$N = false; // Uses new lifecycle API Flag\n this.$L = null; // Current lifecycle of this component\n this.$SVG = false; // Flag to keep track if component is inside SVG tree\n this.$F = false; // Force update flag\n this.props = props || EMPTY_OBJ;\n this.context = context || EMPTY_OBJ; // context should not be mutable\n};\nComponent.prototype.forceUpdate = function forceUpdate (callback) {\n if (this.$UN) {\n return;\n }\n // Do not allow double render during force update\n queueStateChanges(this, {}, callback, true);\n};\nComponent.prototype.setState = function setState (newState, callback) {\n if (this.$UN) {\n return;\n }\n if (!this.$BS) {\n queueStateChanges(this, newState, callback, false);\n }\n};\nComponent.prototype.render = function render (_nextProps, _nextState, _nextContext) {\n return null;\n};\n\nvar version = \"7.4.11\";\n\nexport { Component, EMPTY_OBJ, Fragment, createClassComponentInstance as _CI, normalizeRoot as _HI, mount as _M, mountClassComponentCallbacks as _MCCC, mountElement as _ME, mountFunctionalComponentCallbacks as _MFCC, mountProps as _MP, mountRef as _MR, renderFunctionalComponent as _RFC, __render, createComponentVNode, createFragment, createPortal, createRef, createRenderer, createTextVNode, createVNode, directClone, findDOMfromVNode, forwardRef, getFlagsForElementVnode, linkEvent, normalizeProps, options, render, rerender, version };\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.device.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n nativeScrolling,\r\n touch\r\n} from \"../../core/utils/support\";\r\nexport var deviceDependentOptions = function() {\r\n return [{\r\n device: function() {\r\n return !nativeScrolling\r\n },\r\n options: {\r\n useNative: false\r\n }\r\n }, {\r\n device: function(_device) {\r\n return !devices.isSimulator() && \"desktop\" === devices.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n bounceEnabled: false,\r\n scrollByThumb: true,\r\n scrollByContent: touch,\r\n showScrollbar: \"onHover\"\r\n }\r\n }]\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.simulated.js)\r\n * Version: 23.1.5\r\n * Build date: Wed Aug 30 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n titleize\r\n} from \"../../core/utils/inflector\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n each,\r\n map\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n resetPosition,\r\n move,\r\n locate\r\n} from \"../../animation/translator\";\r\nimport Class from \"../../core/class\";\r\nimport Animator from \"./animator\";\r\nimport {\r\n isDxMouseWheelEvent,\r\n addNamespace as addEventNamespace,\r\n normalizeKeyName,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport {\r\n deferUpdate,\r\n deferUpdater,\r\n deferRender,\r\n deferRenderer,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Scrollbar from \"./ui.scrollbar\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar SCROLLABLE_SIMULATED = \"dxSimulatedScrollable\";\r\nvar SCROLLABLE_STRATEGY = \"dxScrollableStrategy\";\r\nvar SCROLLABLE_SIMULATED_CURSOR = SCROLLABLE_SIMULATED + \"Cursor\";\r\nvar SCROLLABLE_SIMULATED_KEYBOARD = SCROLLABLE_SIMULATED + \"Keyboard\";\r\nvar SCROLLABLE_SIMULATED_CLASS = \"dx-scrollable-simulated\";\r\nvar SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = \"dx-scrollable-scrollbars-alwaysvisible\";\r\nvar SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar ACCELERATION = .92;\r\nvar OUT_BOUNDS_ACCELERATION = .5;\r\nvar MIN_VELOCITY_LIMIT = 1;\r\nvar FRAME_DURATION = Math.round(1e3 / 60);\r\nvar SCROLL_LINE_HEIGHT = 40;\r\nvar VALIDATE_WHEEL_TIMEOUT = 500;\r\nvar BOUNCE_MIN_VELOCITY_LIMIT = MIN_VELOCITY_LIMIT / 5;\r\nvar BOUNCE_DURATION = 400;\r\nvar BOUNCE_FRAMES = BOUNCE_DURATION / FRAME_DURATION;\r\nvar BOUNCE_ACCELERATION_SUM = (1 - Math.pow(ACCELERATION, BOUNCE_FRAMES)) / (1 - ACCELERATION);\r\nvar KEY_CODES = {\r\n PAGE_UP: \"pageUp\",\r\n PAGE_DOWN: \"pageDown\",\r\n END: \"end\",\r\n HOME: \"home\",\r\n LEFT: \"leftArrow\",\r\n UP: \"upArrow\",\r\n RIGHT: \"rightArrow\",\r\n DOWN: \"downArrow\",\r\n TAB: \"tab\"\r\n};\r\nvar InertiaAnimator = Animator.inherit({\r\n ctor: function(scroller) {\r\n this.callBase();\r\n this.scroller = scroller\r\n },\r\n VELOCITY_LIMIT: MIN_VELOCITY_LIMIT,\r\n _isFinished: function() {\r\n return Math.abs(this.scroller._velocity) <= this.VELOCITY_LIMIT\r\n },\r\n _step: function() {\r\n this.scroller._scrollStep(this.scroller._velocity);\r\n this.scroller._velocity *= this._acceleration()\r\n },\r\n _acceleration: function() {\r\n return this.scroller._inBounds() ? ACCELERATION : OUT_BOUNDS_ACCELERATION\r\n },\r\n _complete: function() {\r\n this.scroller._scrollComplete()\r\n }\r\n});\r\nvar BounceAnimator = InertiaAnimator.inherit({\r\n VELOCITY_LIMIT: BOUNCE_MIN_VELOCITY_LIMIT,\r\n _isFinished: function() {\r\n return this.scroller._crossBoundOnNextStep() || this.callBase()\r\n },\r\n _acceleration: function() {\r\n return ACCELERATION\r\n },\r\n _complete: function() {\r\n this.scroller._move(this.scroller._bounceLocation);\r\n this.callBase()\r\n }\r\n});\r\nexport var Scroller = Class.inherit({\r\n ctor: function(options) {\r\n this._initOptions(options);\r\n this._initAnimators();\r\n this._initScrollbar()\r\n },\r\n _initOptions: function(options) {\r\n this._location = 0;\r\n this._topReached = false;\r\n this._bottomReached = false;\r\n this._axis = options.direction === HORIZONTAL ? \"x\" : \"y\";\r\n this._prop = options.direction === HORIZONTAL ? \"left\" : \"top\";\r\n this._dimension = options.direction === HORIZONTAL ? \"width\" : \"height\";\r\n this._scrollProp = options.direction === HORIZONTAL ? \"scrollLeft\" : \"scrollTop\";\r\n each(options, (optionName, optionValue) => {\r\n this[\"_\" + optionName] = optionValue\r\n })\r\n },\r\n _initAnimators: function() {\r\n this._inertiaAnimator = new InertiaAnimator(this);\r\n this._bounceAnimator = new BounceAnimator(this)\r\n },\r\n _initScrollbar: function() {\r\n this._scrollbar = new Scrollbar($(\"<div>\").appendTo(this._$container), {\r\n direction: this._direction,\r\n visible: this._scrollByThumb,\r\n visibilityMode: this._visibilityModeNormalize(this._scrollbarVisible),\r\n expandable: this._scrollByThumb\r\n });\r\n this._$scrollbar = this._scrollbar.$element()\r\n },\r\n _visibilityModeNormalize: function(mode) {\r\n return true === mode ? \"onScroll\" : false === mode ? \"never\" : mode\r\n },\r\n _scrollStep: function(delta) {\r\n var prevLocation = this._location;\r\n this._location += delta;\r\n this._suppressBounce();\r\n this._move();\r\n if (Math.abs(prevLocation - this._location) < 1) {\r\n return\r\n }\r\n eventsEngine.triggerHandler(this._$container, {\r\n type: \"scroll\"\r\n })\r\n },\r\n _suppressBounce: function() {\r\n if (this._bounceEnabled || this._inBounds(this._location)) {\r\n return\r\n }\r\n this._velocity = 0;\r\n this._location = this._boundLocation()\r\n },\r\n _boundLocation: function(location) {\r\n location = void 0 !== location ? location : this._location;\r\n return Math.max(Math.min(location, this._maxOffset), this._minOffset)\r\n },\r\n _move: function(location) {\r\n this._location = void 0 !== location ? location * this._getScaleRatio() : this._location;\r\n this._moveContent();\r\n this._moveScrollbar()\r\n },\r\n _moveContent: function() {\r\n var location = this._location;\r\n this._$container[this._scrollProp](-location / this._getScaleRatio());\r\n this._moveContentByTranslator(location)\r\n },\r\n _getScaleRatio: function() {\r\n if (hasWindow() && !this._scaleRatio) {\r\n var element = this._$element.get(0);\r\n var realDimension = this._getRealDimension(element, this._dimension);\r\n var baseDimension = this._getBaseDimension(element, this._dimension);\r\n this._scaleRatio = Math.round(realDimension / baseDimension * 100) / 100\r\n }\r\n return this._scaleRatio || 1\r\n },\r\n _getRealDimension: function(element, dimension) {\r\n return Math.round(getBoundingRect(element)[dimension])\r\n },\r\n _getBaseDimension: function(element, dimension) {\r\n var dimensionName = \"offset\" + titleize(dimension);\r\n return element[dimensionName]\r\n },\r\n _moveContentByTranslator: function(location) {\r\n var translateOffset;\r\n var minOffset = -this._maxScrollPropValue;\r\n if (location > 0) {\r\n translateOffset = location\r\n } else if (location <= minOffset) {\r\n translateOffset = location - minOffset\r\n } else {\r\n translateOffset = location % 1\r\n }\r\n if (this._translateOffset === translateOffset) {\r\n return\r\n }\r\n var targetLocation = {};\r\n targetLocation[this._prop] = translateOffset;\r\n this._translateOffset = translateOffset;\r\n if (0 === translateOffset) {\r\n resetPosition(this._$content);\r\n return\r\n }\r\n move(this._$content, targetLocation)\r\n },\r\n _moveScrollbar: function() {\r\n this._scrollbar.moveTo(this._location)\r\n },\r\n _scrollComplete: function() {\r\n if (this._inBounds()) {\r\n this._hideScrollbar();\r\n if (this._completeDeferred) {\r\n this._completeDeferred.resolve()\r\n }\r\n }\r\n this._scrollToBounds()\r\n },\r\n _scrollToBounds: function() {\r\n if (this._inBounds()) {\r\n return\r\n }\r\n this._bounceAction();\r\n this._setupBounce();\r\n this._bounceAnimator.start()\r\n },\r\n _setupBounce: function() {\r\n var boundLocation = this._bounceLocation = this._boundLocation();\r\n var bounceDistance = boundLocation - this._location;\r\n this._velocity = bounceDistance / BOUNCE_ACCELERATION_SUM\r\n },\r\n _inBounds: function(location) {\r\n location = void 0 !== location ? location : this._location;\r\n return this._boundLocation(location) === location\r\n },\r\n _crossBoundOnNextStep: function() {\r\n var location = this._location;\r\n var nextLocation = location + this._velocity;\r\n return location < this._minOffset && nextLocation >= this._minOffset || location > this._maxOffset && nextLocation <= this._maxOffset\r\n },\r\n _initHandler: function(e) {\r\n this._stopScrolling();\r\n this._prepareThumbScrolling(e)\r\n },\r\n _stopScrolling: deferRenderer((function() {\r\n this._hideScrollbar();\r\n this._inertiaAnimator.stop();\r\n this._bounceAnimator.stop()\r\n })),\r\n _prepareThumbScrolling: function(e) {\r\n if (isDxMouseWheelEvent(e.originalEvent)) {\r\n return\r\n }\r\n var $target = $(e.originalEvent.target);\r\n var scrollbarClicked = this._isScrollbar($target);\r\n if (scrollbarClicked) {\r\n this._moveToMouseLocation(e)\r\n }\r\n this._thumbScrolling = scrollbarClicked || this._isThumb($target);\r\n this._crossThumbScrolling = !this._thumbScrolling && this._isAnyThumbScrolling($target);\r\n if (this._thumbScrolling) {\r\n this._scrollbar.feedbackOn()\r\n }\r\n },\r\n _isThumbScrollingHandler: function($target) {\r\n return this._isThumb($target)\r\n },\r\n _moveToMouseLocation: function(e) {\r\n var mouseLocation = e[\"page\" + this._axis.toUpperCase()] - this._$element.offset()[this._prop];\r\n var location = this._location + mouseLocation / this._containerToContentRatio() - getHeight(this._$container) / 2;\r\n this._scrollStep(-Math.round(location))\r\n },\r\n _startHandler: function() {\r\n this._showScrollbar()\r\n },\r\n _moveHandler: function(delta) {\r\n if (this._crossThumbScrolling) {\r\n return\r\n }\r\n if (this._thumbScrolling) {\r\n delta[this._axis] = -Math.round(delta[this._axis] / this._containerToContentRatio())\r\n }\r\n this._scrollBy(delta)\r\n },\r\n _scrollBy: function(delta) {\r\n delta = delta[this._axis];\r\n if (!this._inBounds()) {\r\n delta *= OUT_BOUNDS_ACCELERATION\r\n }\r\n this._scrollStep(delta)\r\n },\r\n _scrollByHandler: function(delta) {\r\n this._scrollBy(delta);\r\n this._scrollComplete()\r\n },\r\n _containerToContentRatio: function() {\r\n return this._scrollbar.containerToContentRatio()\r\n },\r\n _endHandler: function(velocity) {\r\n this._completeDeferred = new Deferred;\r\n this._velocity = velocity[this._axis];\r\n this._inertiaHandler();\r\n this._resetThumbScrolling();\r\n return this._completeDeferred.promise()\r\n },\r\n _inertiaHandler: function() {\r\n this._suppressInertia();\r\n this._inertiaAnimator.start()\r\n },\r\n _suppressInertia: function() {\r\n if (!this._inertiaEnabled || this._thumbScrolling) {\r\n this._velocity = 0\r\n }\r\n },\r\n _resetThumbScrolling: function() {\r\n this._thumbScrolling = false;\r\n this._crossThumbScrolling = false\r\n },\r\n _stopHandler: function() {\r\n if (this._thumbScrolling) {\r\n this._scrollComplete()\r\n }\r\n this._resetThumbScrolling();\r\n this._scrollToBounds()\r\n },\r\n _disposeHandler: function() {\r\n this._stopScrolling();\r\n this._$scrollbar.remove()\r\n },\r\n _updateHandler: function() {\r\n this._update();\r\n this._moveToBounds()\r\n },\r\n _update: function() {\r\n this._stopScrolling();\r\n return deferUpdate(() => {\r\n this._resetScaleRatio();\r\n this._updateLocation();\r\n this._updateBounds();\r\n this._updateScrollbar();\r\n deferRender(() => {\r\n this._moveScrollbar();\r\n this._scrollbar.update()\r\n })\r\n })\r\n },\r\n _resetScaleRatio: function() {\r\n this._scaleRatio = null\r\n },\r\n _updateLocation: function() {\r\n this._location = (locate(this._$content)[this._prop] - this._$container[this._scrollProp]()) * this._getScaleRatio()\r\n },\r\n _updateBounds: function() {\r\n this._maxOffset = this._getMaxOffset();\r\n this._minOffset = this._getMinOffset()\r\n },\r\n _getMaxOffset: function() {\r\n return 0\r\n },\r\n _getMinOffset: function() {\r\n this._maxScrollPropValue = Math.max(this._contentSize() - this._containerSize(), 0);\r\n return -this._maxScrollPropValue\r\n },\r\n _updateScrollbar: deferUpdater((function() {\r\n var containerSize = this._containerSize();\r\n var contentSize = this._contentSize();\r\n var baseContainerSize = this._getBaseDimension(this._$container.get(0), this._dimension);\r\n var baseContentSize = this._getBaseDimension(this._$content.get(0), this._dimension);\r\n deferRender(() => {\r\n this._scrollbar.option({\r\n containerSize: containerSize,\r\n contentSize: contentSize,\r\n baseContainerSize: baseContainerSize,\r\n baseContentSize: baseContentSize,\r\n scaleRatio: this._getScaleRatio()\r\n })\r\n })\r\n })),\r\n _moveToBounds: deferRenderer(deferUpdater(deferRenderer((function() {\r\n var location = this._boundLocation();\r\n var locationChanged = location !== this._location;\r\n this._location = location;\r\n this._move();\r\n if (locationChanged) {\r\n this._scrollAction()\r\n }\r\n })))),\r\n _createActionsHandler: function(actions) {\r\n this._scrollAction = actions.scroll;\r\n this._bounceAction = actions.bounce\r\n },\r\n _showScrollbar: function() {\r\n this._scrollbar.option(\"visible\", true)\r\n },\r\n _hideScrollbar: function() {\r\n this._scrollbar.option(\"visible\", false)\r\n },\r\n _containerSize: function() {\r\n return this._getRealDimension(this._$container.get(0), this._dimension)\r\n },\r\n _contentSize: function() {\r\n var isOverflowHidden = \"hidden\" === this._$content.css(\"overflow\" + this._axis.toUpperCase());\r\n var contentSize = this._getRealDimension(this._$content.get(0), this._dimension);\r\n if (!isOverflowHidden) {\r\n var containerScrollSize = this._$content[0][\"scroll\" + titleize(this._dimension)] * this._getScaleRatio();\r\n contentSize = Math.max(containerScrollSize, contentSize)\r\n }\r\n return contentSize\r\n },\r\n _validateEvent: function(e) {\r\n var $target = $(e.originalEvent.target);\r\n return this._isThumb($target) || this._isScrollbar($target)\r\n },\r\n _isThumb: function($element) {\r\n return this._scrollByThumb && this._scrollbar.isThumb($element)\r\n },\r\n _isScrollbar: function($element) {\r\n return this._scrollByThumb && $element && $element.is(this._$scrollbar)\r\n },\r\n _reachedMin: function() {\r\n return Math.round(this._location - this._minOffset) <= 0\r\n },\r\n _reachedMax: function() {\r\n return Math.round(this._location - this._maxOffset) >= 0\r\n },\r\n _cursorEnterHandler: function() {\r\n this._resetScaleRatio();\r\n this._updateScrollbar();\r\n this._scrollbar.cursorEnter()\r\n },\r\n _cursorLeaveHandler: function() {\r\n this._scrollbar.cursorLeave()\r\n },\r\n dispose: noop\r\n});\r\nvar hoveredScrollable;\r\nvar activeScrollable;\r\nexport var SimulatedStrategy = Class.inherit({\r\n ctor: function(scrollable) {\r\n this._init(scrollable)\r\n },\r\n _init: function(scrollable) {\r\n this._component = scrollable;\r\n this._$element = scrollable.$element();\r\n this._$container = $(scrollable.container());\r\n this._$wrapper = scrollable._$wrapper;\r\n this._$content = scrollable.$content();\r\n this.option = scrollable.option.bind(scrollable);\r\n this._createActionByOption = scrollable._createActionByOption.bind(scrollable);\r\n this._isLocked = scrollable._isLocked.bind(scrollable);\r\n this._isDirection = scrollable._isDirection.bind(scrollable);\r\n this._allowedDirection = scrollable._allowedDirection.bind(scrollable);\r\n this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable)\r\n },\r\n render: function() {\r\n this._$element.addClass(SCROLLABLE_SIMULATED_CLASS);\r\n this._createScrollers();\r\n if (this.option(\"useKeyboard\")) {\r\n this._$container.prop(\"tabIndex\", 0)\r\n }\r\n this._attachKeyboardHandler();\r\n this._attachCursorHandlers()\r\n },\r\n _createScrollers: function() {\r\n this._scrollers = {};\r\n if (this._isDirection(HORIZONTAL)) {\r\n this._createScroller(HORIZONTAL)\r\n }\r\n if (this._isDirection(VERTICAL)) {\r\n this._createScroller(VERTICAL)\r\n }\r\n this._$element.toggleClass(SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE, \"always\" === this.option(\"showScrollbar\"))\r\n },\r\n _createScroller: function(direction) {\r\n this._scrollers[direction] = new Scroller(this._scrollerOptions(direction))\r\n },\r\n _scrollerOptions: function(direction) {\r\n return {\r\n direction: direction,\r\n $content: this._$content,\r\n $container: this._$container,\r\n $wrapper: this._$wrapper,\r\n $element: this._$element,\r\n scrollByThumb: this.option(\"scrollByThumb\"),\r\n scrollbarVisible: this.option(\"showScrollbar\"),\r\n bounceEnabled: this.option(\"bounceEnabled\"),\r\n inertiaEnabled: this.option(\"inertiaEnabled\"),\r\n isAnyThumbScrolling: this._isAnyThumbScrolling.bind(this)\r\n }\r\n },\r\n _applyScaleRatio: function(targetLocation) {\r\n for (var direction in this._scrollers) {\r\n var prop = this._getPropByDirection(direction);\r\n if (isDefined(targetLocation[prop])) {\r\n var scroller = this._scrollers[direction];\r\n targetLocation[prop] *= scroller._getScaleRatio()\r\n }\r\n }\r\n return targetLocation\r\n },\r\n _isAnyThumbScrolling: function($target) {\r\n var result = false;\r\n this._eventHandler(\"isThumbScrolling\", $target).done((function(isThumbScrollingVertical, isThumbScrollingHorizontal) {\r\n result = isThumbScrollingVertical || isThumbScrollingHorizontal\r\n }));\r\n return result\r\n },\r\n handleInit: function(e) {\r\n this._suppressDirections(e);\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"init\", e)\r\n },\r\n _suppressDirections: function(e) {\r\n if (isDxMouseWheelEvent(e.originalEvent)) {\r\n this._prepareDirections(true);\r\n return\r\n }\r\n this._prepareDirections();\r\n this._eachScroller((function(scroller, direction) {\r\n var $target = $(e.originalEvent.target);\r\n var isValid = scroller._validateEvent(e) || this.option(\"scrollByContent\") && this._isContent($target);\r\n this._validDirections[direction] = isValid\r\n }))\r\n },\r\n _isContent: function($element) {\r\n return !!$element.closest(this._$element).length\r\n },\r\n _prepareDirections: function(value) {\r\n value = value || false;\r\n this._validDirections = {};\r\n this._validDirections[HORIZONTAL] = value;\r\n this._validDirections[VERTICAL] = value\r\n },\r\n _eachScroller: function(callback) {\r\n callback = callback.bind(this);\r\n each(this._scrollers, (function(direction, scroller) {\r\n callback(scroller, direction)\r\n }))\r\n },\r\n handleStart: function(e) {\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"start\").done(this._startAction)\r\n },\r\n _saveActive: function() {\r\n activeScrollable = this\r\n },\r\n _resetActive: function() {\r\n if (activeScrollable === this) {\r\n activeScrollable = null\r\n }\r\n },\r\n handleMove: function(e) {\r\n if (this._isLocked()) {\r\n e.cancel = true;\r\n this._resetActive();\r\n return\r\n }\r\n this._saveActive();\r\n e.preventDefault && e.preventDefault();\r\n this._adjustDistance(e, e.delta);\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"move\", e.delta)\r\n },\r\n _adjustDistance: function(e, distance) {\r\n distance.x *= this._validDirections[HORIZONTAL];\r\n distance.y *= this._validDirections[VERTICAL];\r\n var devicePixelRatio = this._tryGetDevicePixelRatio();\r\n if (devicePixelRatio && isDxMouseWheelEvent(e.originalEvent)) {\r\n distance.x = Math.round(distance.x / devicePixelRatio * 100) / 100;\r\n distance.y = Math.round(distance.y / devicePixelRatio * 100) / 100\r\n }\r\n },\r\n _tryGetDevicePixelRatio: function() {\r\n if (hasWindow()) {\r\n return getWindow().devicePixelRatio\r\n }\r\n },\r\n handleEnd: function(e) {\r\n this._resetActive();\r\n this._refreshCursorState(e.originalEvent && e.originalEvent.target);\r\n this._adjustDistance(e, e.velocity);\r\n this._eventForUserAction = e;\r\n return this._eventHandler(\"end\", e.velocity).done(this._endAction)\r\n },\r\n handleCancel: function(e) {\r\n this._resetActive();\r\n this._eventForUserAction = e;\r\n return this._eventHandler(\"end\", {\r\n x: 0,\r\n y: 0\r\n })\r\n },\r\n handleStop: function() {\r\n this._resetActive();\r\n this._eventHandler(\"stop\")\r\n },\r\n handleScroll: function() {\r\n this._updateRtlConfig();\r\n this._scrollAction()\r\n },\r\n _attachKeyboardHandler: function() {\r\n eventsEngine.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_KEYBOARD));\r\n if (!this.option(\"disabled\") && this.option(\"useKeyboard\")) {\r\n eventsEngine.on(this._$element, addEventNamespace(\"keydown\", SCROLLABLE_SIMULATED_KEYBOARD), this._keyDownHandler.bind(this))\r\n }\r\n },\r\n _keyDownHandler: function(e) {\r\n clearTimeout(this._updateHandlerTimeout);\r\n this._updateHandlerTimeout = setTimeout(() => {\r\n if (normalizeKeyName(e) === KEY_CODES.TAB) {\r\n this._eachScroller(scroller => {\r\n scroller._updateHandler()\r\n })\r\n }\r\n });\r\n if (!this._$container.is(domAdapter.getActiveElement(this._$container.get(0)))) {\r\n return\r\n }\r\n var handled = true;\r\n switch (normalizeKeyName(e)) {\r\n case KEY_CODES.DOWN:\r\n this._scrollByLine({\r\n y: 1\r\n });\r\n break;\r\n case KEY_CODES.UP:\r\n this._scrollByLine({\r\n y: -1\r\n });\r\n break;\r\n case KEY_CODES.RIGHT:\r\n this._scrollByLine({\r\n x: 1\r\n });\r\n break;\r\n case KEY_CODES.LEFT:\r\n this._scrollByLine({\r\n x: -1\r\n });\r\n break;\r\n case KEY_CODES.PAGE_DOWN:\r\n this._scrollByPage(1);\r\n break;\r\n case KEY_CODES.PAGE_UP:\r\n this._scrollByPage(-1);\r\n break;\r\n case KEY_CODES.HOME:\r\n this._scrollToHome();\r\n break;\r\n case KEY_CODES.END:\r\n this._scrollToEnd();\r\n break;\r\n default:\r\n handled = false\r\n }\r\n if (handled) {\r\n e.stopPropagation();\r\n e.preventDefault()\r\n }\r\n },\r\n _scrollByLine: function(lines) {\r\n var devicePixelRatio = this._tryGetDevicePixelRatio();\r\n var scrollOffset = SCROLL_LINE_HEIGHT;\r\n if (devicePixelRatio) {\r\n scrollOffset = Math.abs(scrollOffset / devicePixelRatio * 100) / 100\r\n }\r\n this.scrollBy({\r\n top: (lines.y || 0) * -scrollOffset,\r\n left: (lines.x || 0) * -scrollOffset\r\n })\r\n },\r\n _scrollByPage: function(page) {\r\n var prop = this._wheelProp();\r\n var dimension = this._dimensionByProp(prop);\r\n var distance = {};\r\n var getter = \"width\" === dimension ? getWidth : getHeight;\r\n distance[prop] = page * -getter(this._$container);\r\n this.scrollBy(distance)\r\n },\r\n _dimensionByProp: function(prop) {\r\n return \"left\" === prop ? \"width\" : \"height\"\r\n },\r\n _getPropByDirection: function(direction) {\r\n return direction === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _scrollToHome: function() {\r\n var prop = this._wheelProp();\r\n var distance = {};\r\n distance[prop] = 0;\r\n this._component.scrollTo(distance)\r\n },\r\n _scrollToEnd: function() {\r\n var prop = this._wheelProp();\r\n var dimension = this._dimensionByProp(prop);\r\n var distance = {};\r\n var getter = \"width\" === dimension ? getWidth : getHeight;\r\n distance[prop] = getter(this._$content) - getter(this._$container);\r\n this._component.scrollTo(distance)\r\n },\r\n createActions: function() {\r\n this._startAction = this._createActionHandler(\"onStart\");\r\n this._endAction = this._createActionHandler(\"onEnd\");\r\n this._updateAction = this._createActionHandler(\"onUpdated\");\r\n this._createScrollerActions()\r\n },\r\n _createScrollerActions: function() {\r\n this._scrollAction = this._createActionHandler(\"onScroll\");\r\n this._bounceAction = this._createActionHandler(\"onBounce\");\r\n this._eventHandler(\"createActions\", {\r\n scroll: this._scrollAction,\r\n bounce: this._bounceAction\r\n })\r\n },\r\n _createActionHandler: function(optionName) {\r\n var actionHandler = this._createActionByOption(optionName);\r\n return () => {\r\n actionHandler(extend(this._createActionArgs(), arguments))\r\n }\r\n },\r\n _createActionArgs: function() {\r\n var {\r\n horizontal: scrollerX,\r\n vertical: scrollerY\r\n } = this._scrollers;\r\n var offset = this._getScrollOffset();\r\n this._scrollOffset = {\r\n top: scrollerY && offset.top,\r\n left: scrollerX && offset.left\r\n };\r\n return {\r\n event: this._eventForUserAction,\r\n scrollOffset: this._scrollOffset,\r\n reachedLeft: scrollerX && scrollerX._reachedMax(),\r\n reachedRight: scrollerX && scrollerX._reachedMin(),\r\n reachedTop: scrollerY && scrollerY._reachedMax(),\r\n reachedBottom: scrollerY && scrollerY._reachedMin()\r\n }\r\n },\r\n _getScrollOffset() {\r\n return {\r\n top: -this.location().top,\r\n left: -this.location().left\r\n }\r\n },\r\n _eventHandler: function(eventName) {\r\n var args = [].slice.call(arguments).slice(1);\r\n var deferreds = map(this._scrollers, scroller => scroller[\"_\" + eventName + \"Handler\"].apply(scroller, args));\r\n return when.apply($, deferreds).promise()\r\n },\r\n location: function() {\r\n var location = locate(this._$content);\r\n location.top -= this._$container.scrollTop();\r\n location.left -= this._$container.scrollLeft();\r\n return location\r\n },\r\n disabledChanged: function() {\r\n this._attachCursorHandlers()\r\n },\r\n _attachCursorHandlers: function() {\r\n eventsEngine.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_CURSOR));\r\n if (!this.option(\"disabled\") && this._isHoverMode()) {\r\n eventsEngine.on(this._$element, addEventNamespace(\"mouseenter\", SCROLLABLE_SIMULATED_CURSOR), this._cursorEnterHandler.bind(this));\r\n eventsEngine.on(this._$element, addEventNamespace(\"mouseleave\", SCROLLABLE_SIMULATED_CURSOR), this._cursorLeaveHandler.bind(this))\r\n }\r\n },\r\n _isHoverMode: function() {\r\n return \"onHover\" === this.option(\"showScrollbar\")\r\n },\r\n _cursorEnterHandler: function(e) {\r\n e = e || {};\r\n e.originalEvent = e.originalEvent || {};\r\n if (activeScrollable || e.originalEvent._hoverHandled) {\r\n return\r\n }\r\n if (hoveredScrollable) {\r\n hoveredScrollable._cursorLeaveHandler()\r\n }\r\n hoveredScrollable = this;\r\n this._eventHandler(\"cursorEnter\");\r\n e.originalEvent._hoverHandled = true\r\n },\r\n _cursorLeaveHandler: function(e) {\r\n if (hoveredScrollable !== this || activeScrollable === hoveredScrollable) {\r\n return\r\n }\r\n this._eventHandler(\"cursorLeave\");\r\n hoveredScrollable = null;\r\n this._refreshCursorState(e && e.relatedTarget)\r\n },\r\n _refreshCursorState: function(target) {\r\n if (!this._isHoverMode() && (!target || activeScrollable)) {\r\n return\r\n }\r\n var $target = $(target);\r\n var $scrollable = $target.closest(\".\".concat(SCROLLABLE_SIMULATED_CLASS, \":not(.dx-state-disabled)\"));\r\n var targetScrollable = $scrollable.length && $scrollable.data(SCROLLABLE_STRATEGY);\r\n if (hoveredScrollable && hoveredScrollable !== targetScrollable) {\r\n hoveredScrollable._cursorLeaveHandler()\r\n }\r\n if (targetScrollable) {\r\n targetScrollable._cursorEnterHandler()\r\n }\r\n },\r\n update: function() {\r\n var result = this._eventHandler(\"update\").done(this._updateAction);\r\n return when(result, deferUpdate(() => {\r\n var allowedDirections = this._allowedDirections();\r\n deferRender(() => {\r\n var touchDirection = allowedDirections.vertical ? \"pan-x\" : \"\";\r\n touchDirection = allowedDirections.horizontal ? \"pan-y\" : touchDirection;\r\n touchDirection = allowedDirections.vertical && allowedDirections.horizontal ? \"none\" : touchDirection;\r\n this._$container.css(\"touchAction\", touchDirection)\r\n });\r\n return when().promise()\r\n }))\r\n },\r\n _allowedDirections: function() {\r\n var bounceEnabled = this.option(\"bounceEnabled\");\r\n var verticalScroller = this._scrollers[VERTICAL];\r\n var horizontalScroller = this._scrollers[HORIZONTAL];\r\n return {\r\n vertical: verticalScroller && (verticalScroller._minOffset < 0 || bounceEnabled),\r\n horizontal: horizontalScroller && (horizontalScroller._minOffset < 0 || bounceEnabled)\r\n }\r\n },\r\n _updateBounds: function() {\r\n this._scrollers[HORIZONTAL] && this._scrollers[HORIZONTAL]._updateBounds()\r\n },\r\n _isHorizontalAndRtlEnabled: function() {\r\n return this.option(\"rtlEnabled\") && this.option(\"direction\") !== VERTICAL\r\n },\r\n updateRtlPosition: function(needInitializeRtlConfig) {\r\n if (needInitializeRtlConfig) {\r\n this._rtlConfig = {\r\n scrollRight: 0,\r\n clientWidth: this._$container.get(0).clientWidth,\r\n windowPixelRatio: this._getWindowDevicePixelRatio()\r\n }\r\n }\r\n this._updateBounds();\r\n if (this._isHorizontalAndRtlEnabled()) {\r\n var scrollLeft = this._getMaxOffset().left - this._rtlConfig.scrollRight;\r\n if (scrollLeft <= 0) {\r\n scrollLeft = 0;\r\n this._rtlConfig.scrollRight = this._getMaxOffset().left\r\n }\r\n if (this._getScrollOffset().left !== scrollLeft) {\r\n this._rtlConfig.skipUpdating = true;\r\n this._component.scrollTo({\r\n left: scrollLeft\r\n });\r\n this._rtlConfig.skipUpdating = false\r\n }\r\n }\r\n },\r\n _updateRtlConfig: function() {\r\n if (this._isHorizontalAndRtlEnabled() && !this._rtlConfig.skipUpdating) {\r\n var {\r\n clientWidth: clientWidth,\r\n scrollLeft: scrollLeft\r\n } = this._$container.get(0);\r\n var windowPixelRatio = this._getWindowDevicePixelRatio();\r\n if (this._rtlConfig.windowPixelRatio === windowPixelRatio && this._rtlConfig.clientWidth === clientWidth) {\r\n this._rtlConfig.scrollRight = this._getMaxOffset().left - scrollLeft\r\n }\r\n this._rtlConfig.clientWidth = clientWidth;\r\n this._rtlConfig.windowPixelRatio = windowPixelRatio\r\n }\r\n },\r\n _getWindowDevicePixelRatio: function() {\r\n return hasWindow() ? getWindow().devicePixelRatio : 1\r\n },\r\n scrollBy: function(distance) {\r\n var verticalScroller = this._scrollers[VERTICAL];\r\n var horizontalScroller = this._scrollers[HORIZONTAL];\r\n if (verticalScroller) {\r\n distance.top = verticalScroller._boundLocation(distance.top + verticalScroller._location) - verticalScroller._location\r\n }\r\n if (horizontalScroller) {\r\n distance.left = horizontalScroller._boundLocation(distance.left + horizontalScroller._location) - horizontalScroller._location\r\n }\r\n this._prepareDirections(true);\r\n this._startAction();\r\n this._eventHandler(\"scrollBy\", {\r\n x: distance.left,\r\n y: distance.top\r\n });\r\n this._endAction();\r\n this._updateRtlConfig()\r\n },\r\n validate: function(e) {\r\n if (isDxMouseWheelEvent(e) && isCommandKeyPressed(e)) {\r\n return false\r\n }\r\n if (this.option(\"disabled\")) {\r\n return false\r\n }\r\n if (this.option(\"bounceEnabled\")) {\r\n return true\r\n }\r\n return isDxMouseWheelEvent(e) ? this._validateWheel(e) : this._validateMove(e)\r\n },\r\n _validateWheel: function(e) {\r\n var scroller = this._scrollers[this._wheelDirection(e)];\r\n var reachedMin = scroller._reachedMin();\r\n var reachedMax = scroller._reachedMax();\r\n var contentGreaterThanContainer = !reachedMin || !reachedMax;\r\n var locatedNotAtBound = !reachedMin && !reachedMax;\r\n var scrollFromMin = reachedMin && e.delta > 0;\r\n var scrollFromMax = reachedMax && e.delta < 0;\r\n var validated = contentGreaterThanContainer && (locatedNotAtBound || scrollFromMin || scrollFromMax);\r\n validated = validated || void 0 !== this._validateWheelTimer;\r\n if (validated) {\r\n clearTimeout(this._validateWheelTimer);\r\n this._validateWheelTimer = setTimeout(() => {\r\n this._validateWheelTimer = void 0\r\n }, VALIDATE_WHEEL_TIMEOUT)\r\n }\r\n return validated\r\n },\r\n _validateMove: function(e) {\r\n if (!this.option(\"scrollByContent\") && !$(e.target).closest(\".\".concat(SCROLLABLE_SCROLLBAR_CLASS)).length) {\r\n return false\r\n }\r\n return this._allowedDirection()\r\n },\r\n getDirection: function(e) {\r\n return isDxMouseWheelEvent(e) ? this._wheelDirection(e) : this._allowedDirection()\r\n },\r\n _wheelProp: function() {\r\n return this._wheelDirection() === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _wheelDirection: function(e) {\r\n switch (this.option(\"direction\")) {\r\n case HORIZONTAL:\r\n return HORIZONTAL;\r\n case VERTICAL:\r\n return VERTICAL;\r\n default:\r\n return e && e.shiftKey ? HORIZONTAL : VERTICAL\r\n }\r\n },\r\n dispose: function() {\r\n this._resetActive();\r\n if (hoveredScrollable === this) {\r\n hoveredScrollable = null\r\n }\r\n this._eventHandler(\"dispose\");\r\n this._detachEventHandlers();\r\n this._$element.removeClass(SCROLLABLE_SIMULATED_CLASS);\r\n this._eventForUserAction = null;\r\n clearTimeout(this._validateWheelTimer);\r\n clearTimeout(this._updateHandlerTimeout)\r\n },\r\n _detachEventHandlers: function() {\r\n eventsEngine.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_CURSOR));\r\n eventsEngine.off(this._$container, \".\".concat(SCROLLABLE_SIMULATED_KEYBOARD))\r\n }\r\n});\r\n"],"sourceRoot":""}