package.dist.ibm-gantt-chart-jquery.js.map Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ibm-gantt-chart Show documentation
Show all versions of ibm-gantt-chart Show documentation
IBM Gantt Chart Component, integrable in Vanilla, jQuery, or React Framework.
The newest version!
{"version":3,"sources":["webpack://ibm-gantt-chart/webpack/universalModuleDefinition","webpack://ibm-gantt-chart/webpack/bootstrap","webpack://ibm-gantt-chart/./src/core/core.js","webpack://ibm-gantt-chart/external {\"root\":\"jQuery\",\"commonjs2\":\"jquery\",\"commonjs\":\"jquery\",\"amd\":\"jquery\"}","webpack://ibm-gantt-chart/external {\"root\":\"vis\",\"commonjs2\":\"vis\",\"commonjs\":\"vis\",\"amd\":\"vis\"}","webpack://ibm-gantt-chart/./src/core/plugins.js","webpack://ibm-gantt-chart/./src/core/selection.js","webpack://ibm-gantt-chart/./src/core/renderer.js","webpack://ibm-gantt-chart/./src/model/index.js","webpack://ibm-gantt-chart/./src/loadchart/loadchartctrl.js","webpack://ibm-gantt-chart/./src/loadchart/index.js","webpack://ibm-gantt-chart/./src/core/utils.js","webpack://ibm-gantt-chart/./src/error/index.js","webpack://ibm-gantt-chart/./src/core/filter.js","webpack://ibm-gantt-chart/./src/core/updates.js","webpack://ibm-gantt-chart/./src/toolbar/index.js","webpack://ibm-gantt-chart/./src/core/tooltip.js","webpack://ibm-gantt-chart/./src/panel/layoutsynch.js","webpack://ibm-gantt-chart/./src/panel/ganttpanel.js","webpack://ibm-gantt-chart/./src/core/dragdrop.js","webpack://ibm-gantt-chart/./src/timetable/css-classes.js","webpack://ibm-gantt-chart/./src/timetable/activityrenderer.js","webpack://ibm-gantt-chart/./src/timetable/rowrenderer.js","webpack://ibm-gantt-chart/./src/timetable/activitylayout.js","webpack://ibm-gantt-chart/./src/constraintgraph/linkrenderer.js","webpack://ibm-gantt-chart/./src/constraintgraph/constraintlayout.js","webpack://ibm-gantt-chart/./src/constraintgraph/constraintgraph.js","webpack://ibm-gantt-chart/./src/constraintgraph/index.js","webpack://ibm-gantt-chart/./src/timetable/timetable.js","webpack://ibm-gantt-chart/./src/gantt.js","webpack://ibm-gantt-chart/./src/loadchart/block.js","webpack://ibm-gantt-chart/C:/Users/076788706/git/gantt-chart/node_modules/moment-with-locales-es6/index.js","webpack://ibm-gantt-chart/./src/loadchart/loadchart.js","webpack://ibm-gantt-chart/./src/jquery/treetable/treetablecontroller.js","webpack://ibm-gantt-chart/./src/index-jquery.js","webpack://ibm-gantt-chart/C:/Users/076788706/git/gantt-chart/node_modules/font-awesome/css/font-awesome.css","webpack://ibm-gantt-chart/./src/core/core.scss?73f4","webpack://ibm-gantt-chart/./src/core/fonts.scss","webpack://ibm-gantt-chart/./src/loadchart/loadchart.scss?f5e0","webpack://ibm-gantt-chart/./src/error/error.scss?afa5","webpack://ibm-gantt-chart/./src/toolbar/toolbar.scss?35af","webpack://ibm-gantt-chart/./src/core/tooltip.scss?8c8f","webpack://ibm-gantt-chart/./src/panel/ganttpanel.scss?2ff9","webpack://ibm-gantt-chart/./src/constraintgraph/constraintgraph.scss?362a","webpack://ibm-gantt-chart/./src/timetable/timetable.scss?1bb8","webpack://ibm-gantt-chart/./src/jquery/jquery-core.js","webpack://ibm-gantt-chart/./src/jquery/utils.js","webpack://ibm-gantt-chart/./src/jquery/split/split-pane.scss?2f77","webpack://ibm-gantt-chart/C:/Users/076788706/git/gantt-chart/node_modules/moment/min/moment-with-locales.js","webpack://ibm-gantt-chart/(webpack)/buildin/module.js","webpack://ibm-gantt-chart/./src/jquery/timeline/timeline.scss?d988","webpack://ibm-gantt-chart/./src/jquery/treetable/treetablecontroller.scss?e5a2","webpack://ibm-gantt-chart/./src/jquery/treetable/datatables.scss?8901","webpack://ibm-gantt-chart/./src/jquery/treetable/columnrenderer.js","webpack://ibm-gantt-chart/./src/jquery/treetable/rowrenderer.js","webpack://ibm-gantt-chart/./src/jquery/treetable/index.js","webpack://ibm-gantt-chart/./src/jquery/split/split.js","webpack://ibm-gantt-chart/./src/jquery/split/index.js","webpack://ibm-gantt-chart/./src/jquery/timeline/timeline.js","webpack://ibm-gantt-chart/./src/jquery/timeline/index.js"],"names":["Gantt","constructor","context","config","utils","isString","document","getElementById","panelClass","components","GanttPanel","impl","gantt","defaultConfiguration","rowHeight","zoomFactor","loadingPanelThresold","events","TITLE_CHANGED","TABLE_INIT","TIME_TABLE_INIT","TIME_LINE_INIT","TIME_WINDOW_CHANGED","TIME_LINE_RANGE_CHANGE","TIME_LINE_RANGE_CHANGED","TIME_LINE_SIZE_CHANGED","TIME_LINE_PAN_MOVE","TIME_LINE_PAN_MOVED","TIME_LINE_SCROLLED","RESIZED","SPLIT_RESIZED","ROWS_FILTERED","DATA_LOADED","ROWS_ADDED","ROWS_REMOVED","ROWS_MODIFIED","ROWS_SORTED","START_SELECTING","SELECTION_CLEARED","STOP_SELECTING","ACTIVITY_SELECTED","ACTIVITY_UNSELECTED","ACTIVITY_SELECTION_CHANGED","ACTIVITY_SELECTION_CLEARED","RESOURCE_SELECTED","RESOURCE_UNSELECTED","RESOURCE_SELECTION_CHANGED","RESOURCE_SELECTION_CLEARED","ROW_SELECTED","ROW_UNSELECTED","ROW_SELECTION_CHANGED","ROW_SELECTION_CLEARED","CONSTRAINT_SELECTED","CONSTRAINT_UNSELECTED","CONSTRAINT_SELECTION_CHANGED","CONSTRAINT_SELECTION_CLEARED","type","ACTIVITY_CHART","SCHEDULE_CHART","constraintTypes","START_TO_START","START_TO_END","END_TO_END","END_TO_START","isFromStart","isToStart","Tooltip","showTooltip","elt","ctx","cb","hideTooltip","destroy","DataFetcher","get","obj","Split","getLeftComponent","getRightComponent","leftComponentCreated","Component","on","event","handler","__events","ar","eventList","isArray","split","i","length","push","one","_this","wrapperHandler","_len","arguments","params","Array","_key","apply","index","indexOf","splice","off","iEvent","triggerEvent","paramsArg","iParam","evCount","count","ErrorHandler","addError","err","hasErrors","clear","showError","getErrors","createErrorNode","node","createElement","className","removeGroup","TimeLine","setTimeWindow","start","end","getTimeAxisHeight","draw","validateZoomFactor","getXFromMillis","time","getDecorationContainer","getHorizon","getScrollableHorizon","setVisibleTimeWindow","window","resetZoom","addTimeMarker","id","classes","removeTimeMarker","setTimeLineItem","item","addTimeLineItem","removeTimeLineItem","TimeTable","setConfiguration","createUpdates","parent","GanttUpdates","highlightRow","row","highlight","deselectAll","getDisplayedActivitiesTimeRange","searchActivities","callback","setConstraints","constraints","update","scrollToRow","scrollToY","y","setScrollTop","setFirstVisibleRow","getScrollLeft","setScrollLeft","x","getScroller","getVisibleWidth","getVisibleHeight","setBodyWidth","w","getBodyWidth","setBodyHeight","h","getBodyHeight","getRightMargin","getBottomMargin","TreeTable","setRows","rows","getRowCount","isRowVisible","param","deleteDrawCache","drawRows","selector","setRowFilter","filter","filterChanged","isRowFiltered","toggleCollapseRow","collapse","setHeaderHeight","height","getTableBody","getScrollableTable","getTop","tr","offsetTop","getRowAt","getHeight","nextRow","getRow","getRows","getRowName","name","getRowTop","expandParents","defaultClass","GanttModel","startUpdating","stopUpdating","getModel","getVisiibleRows","ensureRowVisible","getFirstVisibleRow","getRowActivities","zoomIn","evt","zoomOut","zoom","fitToContent","addFilter","rowFilter","activities","filterTasks","removeFilter","key","preventNotify","search","text","setHideEmptyRows","hide","Filter","options","Renderer","proto","paletteHandler","mergeObjects","ActivityLayout","layout","allowVariableRowHeight","ObjectTypes","Activity","Resource","Row","Constraint","Reservation","SelectionHandler","selections","selectionType","getObjectType","select","notActive","clearSelection","isSelected","processClick","e","LayoutSynchronizer","connect","disconnect","Palette","getColors","defaultPaletteName","defaultPalettes","addUpdate","removeUpdate","reload","_reload","isReload","Toolbar","ganttLoaded","onInitialized","createTitle","title","innerHTML","Button","callbacks","btn","icon","img","src","alt","appendChild","fontIcon","svg","appendSVG","createTextNode","onclick","clicked","map","setId","setSelected","selected","toggleClass","CheckBox","ctnr","style","whiteSpace","input","inputNode","setAttribute","label","setChecked","checked","Toggle","_node","_isSel","btnUnselected","unselected","btnSelected","updateButtons","forEach","c","isSel","parentNode","replaceChild","DropDownList","addClass","labelNode","selectNode","opt","optNode","value","onchange","Input","display","flexDirection","alignItems","deleteBtn","deleteIcon","createEvent","initEvent","dispatchEvent","fireEvent","setText","userCallback","onkeyup","ButtonGroup","buttons","self","installBtnClicked","button","cfgBtns","undefined","setValue","noNotify","getValue","LoadResourceChart","setVisible","visible","left","ConstraintsGraph","cts","setNode","ConstraintLayout","startInitialize","addNode","addConstraint","nodeFrom","nodeTo","cons","stopInitialize","forEachLink","layoutNode","layoutRowNodeLinks","rowIndex","drawRowLinks","parentElt","renderer","envReady","Promise","resolve","module","plugins","register","unregister","getAll","call","method","args","paramsStart","reverse","prototype","slice","inc","result","plugin","Plugin","beforeInit","afterInit","beforeUpdate","afterUpdate","beforeDraw","afterDraw","START_SELECTION_METHOD","STOP_SELECTION_METHOD","CLEAR_SELECTION_METHOD","SELECTION_CHANGED_EVENT","UNSELECT_EVENT","SELECT_EVENT","CLEAR_SELECTION_EVENT","Type","getSelectionChangedEvent","getSelectionChangedMethod","getSelectionEvent","getSelectionMethod","getUnselectionEvent","getUnselectionMethod","getClearSelectionEvent","getClearSelectionMethod","accept","getTypeEvent","getTypeMethod","notify","o","m","clearSelectionMethod","selectionMethod","unselectionMethod","selectionChangedMethod","lock","types","genericType","observers","addConfiguration","addObserver","startSelecting","objType","selTypeChanged","oldType","setObjectSelected","concat","unshift","stopSelecting","unselect","selecting","uns","foundUns","oldSelection","ctrlKey","shiftKey","typeEvent","removeObserver","registerType","AUTOMATIC_COLOR","TEXT_OVERFLOW_ELLIPSIS","TEXT_OVERFLOW_NO_DISPLAY","TEXT_OVERFLOW_CUT","createSelectorFunction","fct","oldFct","fctCtx","object","ext","shapeElt","createShape","getCSS","css","setCSS","getText","getIcon","drawContent","bg","background","setBackground","color","setColor","backgroundColor","classname","drawDefaultContent","drawNoDisplayOverflowContent","ctnt","overflow","justifyContent","top","bottom","right","position","flexWrap","float","separator","width","t","replace","textAlign","drawCutContent","drawEllipsisContent","textOverflow","drawOverflowVisibleContent","stringMatches","createCSSGetter","classOptions","propertyEvaluator","substring","property","console","warn","propGetter","prop","prefix","suffix","addCSSConfiguration","getter","cssGetters","cssClasses","cssToAdd","addFilterConfiguration","oldFilter","addTooltipPropertiesConfiguration","tooltipPropsGetter","getTooltipProperties","addTooltipConfiguration","tooltipGetter","_len2","_key2","getTooltip","addTextConfiguration","textGetter","_len3","_key3","addIconConfiguration","iconGetter","_len4","_key4","addDrawConfiguration","oldDraw","addDrawContentConfiguration","oldDrawContent","addTextOverflowConfiguration","oldDrawDefaultContent","hexToRgb","hex","exec","r","parseInt","g","b","getTextColorFromBackgroundColor","hexColor","rgb","Math","round","addColorConfiguration","colorGetter","_len5","_key5","colors","textColor","error","textColors","paletteConfig","palette","paletteRenderer","getColor","makeColors","values","getValues","isFunction","getPalette","processConfiguration","defaultProcessConfiguration","tooltip","tooltipProperties","initialized","flex","props","tableCtnr","flexShrink","flexGrow","table","body","td","iProp","updateTimeWindow","wnd","activity","ConstraintPrototype","isDisplayed","nodes","clearLink","setNodes","ftchClass","fetchConfig","checkFetcher","fetcher","Error","Object","keys","join","dateParser","dateFormat","createDateParser","makeTimeFct","final","allFetcher","all","_reader","reader","data","_resourcesGetter","resources","_activitiesGetter","_reservationsGetter","reservations","_constraintsGetter","resourceFetcher","_parentIdGetter","_idGetter","_nameGetter","_activityGetter","activityFetcher","_startGetter","_endGetter","resource","_resourceIdGetter","reservationFetcher","_resourceGetter","constraintFetcher","_fromGetter","from","_toGetter","to","_typeGetter","timeWindow","timeWindowFetcher","load","allData","then","loadFromData","actPromise","resaPromise","resourcePromise","consPromise","byIds","flat","wndPromise","Number","MAX_VALUE","resourceGantt","isResourceGantt","timeWindowProcessed","computeTimeWindow","createTreeNodes","_ref","resas","wndResult","createReservationsFromActivityResources","createReservations","createConstraints","resByIds","actByIds","resIdGetter","actIdGetter","resId","res","actId","act","len","resa","createReservationNode","JSON","stringify","rowByIds","resGetter","actNode","getData","consNodes","createConstraintNode","isResourceGanttModel","isFlat","createActivityNode","create","consOuts","consIns","createTreeNode","hasAncestor","p","getAncestorsCount","setRowHeight","isGanttRow","rowFetcher","isActivity","children","origData","parentId","arr","resultIndex","iAct","roots","allActivities","startGetter","endGetter","actsGetter","childNodes","childCount","iChild","idGetter","nameGetter","parentIdGetter","getActivity","LoadResourceChartCtrl","loadCharts","selectionHandler","selection","ctlr","sels","setResources","unselectRows","layoutSynch","synchLayout","timeTableBoundsChanged","bounds","loadChart","setTimeLineBounds","convertBounds","getTimeLineNode","timeWindowChanged","timeLineSizeChanged","setTimeLineWidth","timeLineInitialized","timeLineScrolled","setTimeLineScrollLeft","RendererClass","resourceRenderer","getRowBackground","addLoadResourceChart","setResourceRenderer","addChildResources","a","savedTimeW","savedScrollLeft","isVisible","onInit","timeTableXScrolled","allRes","redraw","unselectDeep","LOAD_RESOURCE_CHART_OPENED","LOAD_RESOURCE_CHART_CLOSED","GANTT_LOAD_RESOURCE_CHART","GanttStrings","intl","formatMessage","v","message","defaultMessage","entries","isInteger","isFinite","floor","defaultDateFormat","format","fmt","year","month","day","hour","min","secs","millis","convertor","yyyy","yy","M","MM","MMMM","d","dd","H","HH","mm","s","ss","S","SS","SSS","part","parts","match","Date","getTime","closest","target","j","getChild","tagname","toUpperCase","tagName","arg","toString","String","isDomElement","nodeType","hasClass","el","classList","contains","RegExp","add","removeClass","remove","reg","set","html","htmlText","walkToAncestor","makeArrayMatcher","array","matcher","getWindowScrollLeft","documentElement","scrollLeft","getWindowScrollTop","scrollTop","getScreenPoint","pt","getBoundingClientRect","offsetHeight","offsetParent","ajax","url","path","tmp","toLocaleLowerCase","toLowerCase","getIntl","setIntl","nintl","getString","defaultValue","formatString","tpl","addEventListener","capture","attachEvent","removeEventListener","detachEvent","implements","clazz","toImplement","hasOwnProperty","detectIE","ua","navigator","userAgent","msie","trident","rv","edge","cfg","svgElt","createElementNS","viewBox","webkitTransform","transform","margin","paths","pathElt","privateFields","settings","createEntry","postProcess","success","reject","ajaxConfig","propEval","model","defConfig","entryConfigs","useDefault","_addEventListener","support","onmousewheel","addWheelListener","elem","useCapture","_addWheelListener","eventName","originalEvent","srcElement","deltaMode","deltaX","deltaY","deltaZ","altKey","preventDefault","returnValue","wheelDelta","wheelDeltaX","detail","token","timezone","timezoneClip","pad","val","date","mask","utc","dF","test","isNaN","SyntaxError","masks","default","_","D","L","getTimezoneOffset","flags","ddd","i18n","dayNames","dddd","mmm","monthNames","mmmm","hh","l","tt","T","TT","Z","pop","abs","$0","shortDate","mediumDate","longDate","fullDate","shortTime","mediumTime","longTime","isoDate","isoTime","isoDateTime","isoUtcDateTime","colorSet","maxColorsSize","addColorSet","col","size","insert","getColorsFromSet","setCount","_getColors","keyCount","log","makeResult","arLen","defaults","listClass","maxErrors","bodyClass","titleClass","barClass","descClass","detailsBtnClass","removeBtnClass","errorExpandedDefault","fadingOutDuration","ErrorGroup","errs","errNodes","errorList","removed","removedElt","removeChild","removeError","updateErrorList","beforeSettingErrorList","firstChild","ensureErrorGroup","errorGroups","errorGroup","lockCount","msg","errDetails","convertError","errNode","createErrorList","unlock","iGroup","lst","errorContent","textContent","divTitle","_toggleErrorDisplay","divErrorBar","desc","divDesc","detailsBtn","tabIndex","removeErrorBtn","status","statusCode","description","stack","errorNode","filters","filterKeys","filterKey","createFilter","addOrFilters","createFilterSet","addAndFilters","DEFAULT_FILTER_SET_MODE_OR","paramList","orFilter","copyLength","filterList","f","acceptString","getObjectFilterMethodName","or","and","setFilter","string","pattern","str","isEmpty","updates","updateLocks","_containsRowChanges","_tableYScrollChanged","rowsChanged","rowRef","tableScrollYChanged","hasTableScrollYChanged","applyUpdates","doApplyUpdates","containsRowChanges","applyReload","iUpdate","applyUpdate","idCount","makeId","checkClass","Checkbox","buttonClass","selectClass","Select","ToolbarComponents","getTitle","justifyLeft","sep","whitespace","component","mini","ganttNode","getPanelNode","comp","refresh","toggleLoadChart","isLoadChartVisible","toggleLoadChartVisible","toolbarNode","leftBar","append","marginRight","cfgNode","template","initTooltip","tooltbar","getTooltipNode","dataset","installTooltip","container","getTooltipDisplayContainer","getBody","getTooltipElement","renderTooltip","tooltipNode","tooltipCtnr","FlatCheckbox","ARROW_STYLE","BOTTOM_ARROW_STYLE","TOP_ARROW_STYLE","_tooltip","visibility","_tooltipArrow","_arrowHeight","_hideTimer","clearTimeout","_hidingElt","_tooltipElt","hidingElt","_showTimer","maxHeight","tooltipHeight","eltScreenPt","limits","limitElt","max","lef","clientWidth","clientHeight","offsetWidth","topAvailHeight","bottomAvailHeight","arrowStyle","arrowPos","adjustHorizontally","limitLeft","limitRight","arrowMargin","maxWidth","setArrowPosition","showDelay","setTimeout","pos","_hideCB","TOOLTIP_FADING_TIME","TOOLTIP_SHOWING_DELAY","tooltipData","getTooltipData","enteringTooltipElement","leavingTooltipElement","relatedTarget","printElement","sameBounds","rect1","rect2","timeTableBounds","resizeHandler","checkBounds","timeWindowChangeListener","timeLineSizeListener","timeLineInitializedListener","timeLineScrollListener","parentBounds","getTimeLine","timeLine","getTimeLineWidth","getWidth","getTimeLineHeight","getTimeLineScrollLeft","timeTable","getTimeAt","newBounds","getScreenTimeTableScrollerBounds","timeTableScroller","onResize","initPromise","splitPane","initializing","TooltipClass","stringMatcher","FilterClass","columnData","activityFilter","tasks","actName","hideEmptyRows","setPaletteConfiguration","palettes","defaultPalette","SelectionClass","actType","resType","rowType","rc","typeForRow","defaultNotify","ErrorClass","errorHandler","oldApplyUpdates","updateScrollerHeight","createModel","createDefaultModelConfig","ModelClass","getLoadConfig","loadResourceChart","loadChartCtrl","loadChartHidden","contentElt","toolbars","toolbar","createToolbars","toolbarElt","header","headerElt","createHeader","bodyElt","bodyCtnr","SplitClass","legendConfig","bind","hConfig","loadChartSplit","divider","horizontal","fixedFirst","hideSecond","onDividerDragEnd","onresized","loadResPanel","createLoadResourceChart","rightComponentCreated","tablePanel","leftComp","createTreeTable","rightPanel","createTimePanel","createTimeLine","timeLineScroller","timeLineInit","loadingPanel","loadTimeout","createLoadingPanel","stopLoading","loading","getTimeWindow","today","_resourceGantt","hasConstraints","toobars","bar","catch","_ref2","updateTableHeaderHeight","updateWidthFromTimeLine","scrollTimeTableToX","updateTimeLineHeight","minWidth","TreeTableClass","tableConfig","rowsConfig","factor","delta","getScrollTop","timePanel","vScrollerFiller","updateTimeLineRightMargin","rightMargin","paddingRight","force","headersHeight","timeTablePanel","TimeTableClass","timeTableConfig","attachTimeTableMouseWheel","drawTimeTable","lp","loaderCtnr","loader","loadChartNode","chartPanel","loadConfig","setLoadChartVisible","setRightComponentVisible","bottomMargin","paddingBottom","scroller","timeLineCtnr","TimeLineClass","ToolbarClass","barConfig","getVisibleRows","getRowHeight","activityRow","forceTableRedraw","loadOnDemand","acts","getActivityNode","getToolbarComponent","sel","currentSel","ls","visibleW","xRef","getTimeTableCoordinates","offsetX","offsetY","timeRef","newScrollLeft","timeRange","updateScrollFromTimeLine","actFilter","searchFilter","hideEmptyRowsFilter","setTitle","setRowColor","centerTimeSheetOnX","offsetLeft","paletteNames","defaultConfig","keySpeed","showMoveOnInvalid","dragActivationThresoldWidth","dragActivationThresoldHeight","DragDropHandler","initialMouseX","initialMouseY","startX","startY","dXKeys","dYKeys","draggedObject","clickedObject","handlers","methodsToHitch","hitchedMethods","addHandler","removeHandler","attach","element","onmousedown","startDragMouse","cancel","clientX","clientY","blur","connectDragStarter","initOffsetX","initOffsetY","checkStartDrag","cancelDragStarter","dragStarterKeys","dragStartSwitchKeyEvents","dX","dY","startDrag","move","switchKeyEvents","keyCode","startMove","releaseElement","dragMouse","dropped","dragKeys","initLeft","initTop","initParentNode","invalid","callHandlers","meth","dx","dy","moved","capturing","hitched","stopDrag","restoreInitPosition","applyMove","TIME_MARKER_DRAG_ITEM","TIME_TABLE_ACTIVITY_CLASSNAME","TIME_TABLE_ROW","UNSELECTABLE_CLASSNAME","DEFAULT_ACTIVITY_CLASSNAME","MILESTONE_CLASSNAME","PARENT_ACTIVITY_CLASSNAME","HIGHLIGHT_CLASS","SELECTION_CLASS","SELECT_CONTENT_CLASSNAME","DECORATION_INVALID_TYPE","DECORATION_INVALID_CLASS","DECORATION_BREAK_TYPE","DECORATION_BREAK_CLASS","ActivityRendererPrototype","border","diamond","triangleBar","triangleWidth","leftTriangle","borderTopStyle","borderTopWidth","borderRightStyle","borderRightWidth","borderRightColor","rightTriangle","borderLeftStyle","borderLeftWidth","borderLeftColor","selElt","drawRightContent","textCtnr","overflowX","getTextWidth","getTextHeight","dist","marginLeft","paddingLeft","addRowHeightConfiguration","generateRowDecorations","addGenerateRowDecorations","generateDecorations","addGenerateDecorations","defaultSetBackground","drawDefaultContentSet","ganttLoadListener","querySelectorAll","borderTopColor","parentBar","querySelector","oldRowHeight","oldGenerateRowDecorations","decorations","newDecos","oldGenerateDecorations","RowRendererPrototype","defaultOptions","cascadeOffset","topMargin","subRowPadding","constantRowHeight","compareBoundingBoxes","miniWidth","STRATEGY_LOGISTIC","STRATEGY_TILE","STRATEGIES","MINI_ACTIVITY_CLASS","MILESTONE","sortTasksOnStart","subRowsCount","computeSubRows","offset","actHeight","actCount","subRowIndex","tableRowHeight","subRowHeight","availMargin","activitiyComparator","act1","act2","sort","subRows","setTaskSubRows","subRowMargin","subRowTasks","task","iTask","strategy","getLayoutStrategy","strategyKey","vLayout","layoutHorizontally","getX","endTimes","endTime","endTimesCount","layoutVertically","iSubRow","addGraphicToSubRowIfFits","subRow","lastRowTask","ID_DELIM","CONSTRAINT_LINK_CLASS","CONSTRAINT_LINK_CTNR_CLASS","STYLE_ARROW","CONSTRAINT_ARROW","NodeLabelLayout","startLayout","getNodeToLabelSpacing","bbox","textWidth","DefaultNodeLabelLayout","nodeToLinkPadding","LinkRendererPrototype","drawLink","points","lastX","lastY","lineWidth","line","horiz","pointerEvents","linkOutlineWidth","paddingTop","link","arrowWidth","arrowHeight","drawRightArrow","drawLeftArrow","borderTop","borderBottom","getName","addLineWidthConfiguration","addArrowConfiguration","nodeLabelLayout","addNodeLabelLayoutConfiguration","oldLineWidth","field","arrowSize","oldArrowSize","labelLayout","oldGetLabelLayout","getLabelLayout","LOCKED","LEFT","RIGHT","SIDE_COUNT","CONNECTOR_COUNT","INCOMINGS","OUTGINGS","Link","consNode","topNode","bottomNode","topIndex","bottomIndex","toNode","switchSides","resetLayout","compareLinks","l1","l2","i1","i2","Node","links","layoutLinks","linksDisplayed","incomingLinks","connectors","addLink","side","thisLink","getLinks","getIncomingLink","setIncomingLink","incConnectionCount","setBBox","hasLinks","clearLinks","iLink","topRight","n","next","defaultLayoutOptions","horizLinkToNodeDist","horizSwitchSideLinkToNodeDist","horizLinkToLinkDist","switchSideLinkVertMargin","beforeTop","beforeBottom","reinteringPath","layoutOneSideNodeLinks","layoutNodeLabel","processConnectors","parentAct","connectIndex","incoming","outgoing","beforeLink","getNodeRect","nodeLimit","limit","lastIndex","skipIndex","last","MIN_VALUE","labelW","iterLinks","nextLink","spacing","startLeft","endLeft","fromNode","iPoint","ready","LayoutClass","LinkRendererClass","linkRenderer","clearConstraintSelection","selectConstraints","unselectConstraints","tooltipEnter","tooltipLeave","clickHandler","ctNode","getConstraintNode","isDragAndDropping","tooltipElt","processConstraints","getActivityFilter","opacity","clearCache","drawCB","firstRowIndex","lastRowIndex","prevRow","linkToLinkPadding","fragment","createDocumentFragment","getConstraint","tooltipCtx","fadingTime","nodesCount","ROW_ID_PREFIX","ACTIVITY_ID_PREFIX","bufferPageSize","processDoubleClick","processMouseDown","clearActivitySelection","selectActvities","unselectActvities","selectRows","rowSelectionChanged","activityRenderer","rowRenderer","interactor","moveInterator","mouseHandler","click","onScroll","synchronizeTableTop","initDragAndDrop","timeTableWidthTester","timeTableHeightTester","minHeight","getTimeTableRowNode","ctsGraph","resetConstraints","renderRow","actRow","variableLayoutRowHeight","odd","rowSpan","rowNode","renderActivities","actNodes","renderActivity","timeTableRowNode","forceRedraw","ctsNode","lastRepaintY","backgroundCtnr","generateGlobalDecorations","ctsRows","maxBufferHeight","yFinal","variableHeightLayout","createContainer","insertBefore","updateScrolls","_ready","padding","isActivityNode","activityElt","activityNode","getActivityRow","highlightActivity","deSelectAll","highlightActs","highlightRows","minDate","maxDate","resGantt","filterFct","dragDropHandler","DragDrop","initActivityRow","initRow","initTimeTablePos","initScrollLeft","initScrollTop","timeLineItem","startRow","startDraggingActivity","scrollDiffX","scrollDiffY","preRow","newRow","currentTime","acceptActivityRowChange","acceptActivityMove","updateTimeLineItem","stopMove","stopDraggingActivity","applyActivityMove","abortActivityMove","createDragTimeLineItem","changeRow","current","currentRow","content","actParam","acceptRowChange","acceptMove","abortMove","processMouseEvent","rowClicked","activityClicked","rowCB","activityCB","coord","rowDoubleClicked","activityDoubleClicked","which","rowRightClicked","activityRightClicked","stopPropagation","decoContainer","objs","addDecoration","zIndex","foreground","createConstraintGrapherNode","foregroundCtnr","LOAD_RESOURCE_BAR_CLASS","RESOURCE_LOAD_CLASS","Block","prev","resNodes","addResource","resNode","block","insertAfter","computeMax","useMaxLoad","usedRes","maxLoad","createVisItem","closing","plotAreaHeight","chartRenderer","toLocaleDateString","CHART_TOP_MARGIN","ResNode","headerContent","leftPanel","legendPanel","overflowY","yAxisPanel","yAxis","timeLineScrollerElt","noSelectionElt","noSelMsg","createGetter","resourceMaxLoad","resourceActivityLoad","info","resourceName","activityName","resourceLoad","initTooltips","timeLineElt","updatePlottingArea","drawCharts","visTimeline","vis","Timeline","orientation","axis","scrollableHorizon","range","emitter","fireReady","timeScaleElt","getElementsByClassName","getComputedStyle","topBorder","timeScaleHeight","$","outerHeight","resRenderer","updateLegend","firstBlock","setYAxisMax","items","yRatio","setItems","legend","hasRes","li","colorBox","verticalAlign","tickCount","tickUnit","closest10Factor","MAX_TICK_COUNT","totalHeight","iTick","createLabelledTick","labelDiv","lineHeight","tick","setPlottingAreaHeight","isResourceLoadNode","getResourceLoadNode","getResource","loadchart","resName","resLoad","resMaxLoad","DATATABLE_FILTER_INSTALLED","TREE_NODE_TYPE","TreeTableController","collapsedNodes","getHierarchyColumn","columns","customizeOptions","hCol","render","oldRender","oldData","full","meta","oldCreatedRow","createdRow","parentRow","hidden","$dataTable","reset","isCollapsedNode","collapseNode","rowsModified","setRowVisible","rowsVisibilityChanged","topCollapsed","install","fn","dataTable","aData","dataIndex","ganttDataTable","__filterMatched","processVisibilityFromChildren","vNode","child","makeComparisonFct","comparator","getSortValue","aParent","lastParent","bParent","order","version","VERSION","NAME","jquery","DataTable","allGantts","getGantt","removeGantt","gantts","each","ganttRef","apiRef","api","extend","$parent","$params","dataType","customizeRequest","beforeSend","statusText","req","request","global","factory","exports","this","hookCallback","hooks","isObject","hasOwnProp","isObjectEmpty","getOwnPropertyNames","k","isUndefined","isNumber","isDate","arrLen","valueOf","createUTC","locale","strict","createLocalOrUTC","getParsingFlags","_pf","empty","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","isValid","parsedParts","isNowValid","_d","some","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","NaN","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","Function","mergeConfigs","parentConfig","childConfig","Locale","zeroFill","number","targetLength","forceSign","absNumber","pow","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","ordinal","func","localeData","formatMoment","expandFormat","mom","output","invalidDate","replaceLongDateFormatTokens","longDateFormat","aliases","dates","days","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hours","ms","milliseconds","millisecond","minutes","minute","months","Q","quarters","quarter","seconds","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","week","W","isoweeks","isoweek","years","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","regexes","isStrict","getParseRegexForToken","regexEscape","matched","p1","p2","p3","p4","absFloor","ceil","toInt","argumentForCoercion","coercedNumber","tokens","addParseToken","tokenLen","addWeekParseToken","_w","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","getSetYear","makeGetSet","unit","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getUTCSeconds","getSeconds","getUTCMinutes","getMinutes","getUTCHours","getHours","getUTCDate","getDate","getUTCDay","getDay","getUTCMonth","getMonth","getUTCFullYear","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setUTCDate","setDate","setUTCFullYear","setFullYear","daysInMonth","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","setMonth","setUTCMonth","getSetMonth","computeMonthsParse","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","_monthsRegex","_monthsShortRegex","_monthsStrictRegex","_monthsShortStrictRegex","createDate","createUTCDate","UTC","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","computeWeekdaysParse","minp","shortp","longp","minPieces","_weekdaysRegex","_weekdaysShortRegex","_weekdaysMinRegex","_weekdaysStrictRegex","_weekdaysShortStrictRegex","_weekdaysMinStrictRegex","hFormat","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","isPM","_meridiem","pos1","pos2","getSetHour","globalLocale","baseConfig","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","LTS","LT","LL","LLL","LLLL","dayOfMonthOrdinalParse","relativeTime","future","past","ww","meridiemParse","locales","localeFamilies","normalizeLocale","chooseLocale","names","loadLocale","arr1","arr2","minl","oldLocale","_abbr","require","getSetGlobalLocale","getLocale","defineLocale","abbr","_config","parentLocale","checkOverflow","_a","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","configFromRFC2822","obsOffset","militaryOffset","parsedArray","weekdayStr","parsedInput","numOffset","hm","configFromArray","currentDate","weekdayOverflow","curWeek","nowValue","now","_useUTC","createLocal","_week","temp","_dayOfYear","yearToUse","_nextDay","expectedWeekday","ISO_8601","RFC_2822","stringLength","totalParsedInputLength","skipped","meridiemHour","isPm","erasConvertYear","prepareConfig","dayOrDate","preparse","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","createFromInputFallback","prototypeMin","other","prototypeMax","pickBy","moments","ordering","Duration","duration","unitHasDecimal","orderLen","parseFloat","_milliseconds","_days","_months","_data","_bubble","isDuration","absRound","utcOffset","sign","offsetFromString","chunkOffset","matches","cloneWithOffset","diff","clone","setTime","local","getDateOffset","isUtc","aspNetRegex","isoRegex","createDuration","ret","parseIso","diffRes","base","isBefore","positiveMomentsDifference","inp","isAfter","createAdder","direction","period","addSubtract","isAdding","subtract","isMomentInput","arrayTest","dataTypeTest","objectTest","propertyTest","properties","propertyLen","monthDiff","wholeMonthDiff","anchor","newLocaleData","defaultFormat","defaultFormatUtc","lang","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","matchEraAbbr","erasAbbrRegex","computeErasParse","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","eras","narrow","_erasRegex","_erasNameRegex","_erasAbbrRegex","_erasNarrowRegex","addWeekYearFormatToken","getSetWeekYearHelper","weeksTarget","dayOfYearData","erasNameRegex","erasNarrowRegex","erasParse","_eraYearOrdinalRegex","eraYearOrdinalParse","_dayOfMonthOrdinalParse","_ordinalParse","_dayOfMonthOrdinalParseLenient","getSetDayOfMonth","getSetMinute","getSetSecond","parseMs","getSetMillisecond","preParsePostFormat","formats","sod","startOf","calendarFormat","asFloat","that","zoneDelta","endOf","startOfDate","inputString","postformat","withoutSuffix","humanize","fromNow","toNow","invalidAt","localInput","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","parsingFlags","prioritized","unitsObj","u","priority","prioritizedLen","toArray","toObject","toDate","toISOString","keepOffset","inspect","zone","isLocal","Symbol","for","toJSON","unix","creationData","eraName","since","until","eraNarrow","eraAbbr","eraYear","dir","isoWeeks","weekInfo","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","parseZone","tZone","hasAlignedHourOffset","isDST","isUtcOffset","zoneAbbr","zoneName","isDSTShifted","_isDSTShifted","array1","array2","dontConvert","lengthDiff","diffs","proto$1","get$1","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","_calendar","_longDateFormat","formatUpper","tok","_invalidDate","_ordinal","isFuture","_relativeTime","pastFuture","source","_eras","Infinity","isFormat","_monthsShort","monthName","_monthsParseExact","ii","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","firstDayOfYear","firstDayOfWeek","_weekdays","_weekdaysMin","_weekdaysShort","weekdayName","_weekdaysParseExact","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","_fullWeekdaysParse","charAt","isLower","langData","mathAbs","addSubtract$1","absCeil","daysToMonths","monthsToDays","makeAs","alias","as","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","makeGetter","thresholds","relativeTime$1","posNegDuration","abs$1","toISOString$1","total","ymSign","daysSign","hmsSign","toFixed","pluralForm","pluralize","plurals","pluralForm$1","pluralize$1","plurals$1","pluralForm$2","pluralize$2","plurals$2","proto$2","monthsFromDays","argWithSuffix","argThresholds","withSuffix","th","assign","toIsoString","updateLocale","tmpLocale","relativeTimeRounding","roundingFunction","relativeTimeThreshold","threshold","myMoment","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","months$1","symbolMap","weekdaysParseExact","1","2","3","4","5","6","7","8","9","0","months$2","symbolMap$1","numberMap","١","٢","٣","٤","٥","٦","٧","٨","٩","٠","symbolMap$2","numberMap$1","symbolMap$3","numberMap$2","months$3","suffixes","70","80","20","50","100","10","30","60","90","relativeTimeWithPlural","num","forms","word","standalone","lastDigit","last2Digits","symbolMap$4","numberMap$3","১","২","৩","৪","৫","৬","৭","৮","৯","০","symbolMap$5","numberMap$4","symbolMap$6","numberMap$5","༡","༢","༣","༤","༥","༦","༧","༨","༩","༠","relativeTimeWithMutation","mutationTable","monthsParseExact","monthsRegex$1","minWeekdaysParse","translate","fullWeekdaysParse","shortWeekdaysParse","monthsStrictRegex","monthsShortStrictRegex","longMonthsParse","shortMonthsParse","lastNumber","ll","lll","llll","months$4","monthsParse$1","monthsRegex$2","plural$1","translate$1","processRelativeTime$1","processRelativeTime$2","processRelativeTime$3","months$5","monthsNominativeEl","monthsGenitiveEl","momentToFormat","_monthsGenitiveEl","_monthsNominativeEl","calendarEl","_calendarEl","monthsShortDot","monthsShort$1","monthsParse$2","monthsRegex$3","monthsShortDot$1","monthsShort$2","monthsParse$3","monthsRegex$4","monthsShortDot$2","monthsShort$3","monthsParse$4","monthsRegex$5","monthsShortDot$3","monthsShort$4","monthsParse$5","monthsRegex$6","processRelativeTime$4","symbolMap$7","numberMap$6","۱","۲","۳","۴","۵","۶","۷","۸","۹","۰","numbersPast","numbersFuture","translate$2","monthsRegex$7","monthsParse$6","monthsShortWithDots","monthsShortWithoutDots","processRelativeTime$5","processRelativeTime$6","symbolMap$8","numberMap$7","૧","૨","૩","૪","૫","૬","૭","૮","૯","૦","symbolMap$9","numberMap$8","१","२","३","४","५","६","७","८","९","०","monthsParse$7","translate$3","weekEndings","translate$4","plural$2","translate$5","eraYearOrdinalRegex","$1","$2","suffixes$1","40","symbolMap$a","numberMap$9","១","២","៣","៤","៥","៦","៧","៨","៩","០","symbolMap$b","numberMap$a","೧","೨","೩","೪","೫","೬","೭","೮","೯","೦","processRelativeTime$7","isUpper","includes","symbolMap$c","numberMap$b","months$8","suffixes$2","processRelativeTime$8","eifelerRegelAppliesToNumber","translateSingular","special","translate$6","units$1","format$1","relativeTimeWithPlural$1","relativeTimeWithSingular","translator","words","correctGrammaticalCase","wordKey","translate$7","symbolMap$d","numberMap$c","relativeTimeMr","symbolMap$e","numberMap$d","၁","၂","၃","၄","၅","၆","၇","၈","၉","၀","symbolMap$f","numberMap$e","monthsShortWithDots$1","monthsShortWithoutDots$1","monthsParse$8","monthsRegex$8","monthsShortWithDots$2","monthsShortWithoutDots$2","monthsParse$9","monthsRegex$9","symbolMap$g","numberMap$f","੧","੨","੩","੪","੫","੬","੭","੮","੯","੦","monthsNominative","monthsSubjective","monthsParse$a","plural$3","translate$8","relativeTimeWithPlural$2","relativeTimeWithPlural$3","monthsParse$b","months$9","days$1","months$a","monthsShort$7","plural$5","translate$9","processRelativeTime$9","translator$1","translator$2","symbolMap$h","numberMap$g","௧","௨","௩","௪","௫","௬","௭","௮","௯","௦","suffixes$3","12","13","suffixes$4","numbersNouns","translate$a","numberNoun","hundred","ten","suffixes$5","processRelativeTime$a","relativeTimeWithPlural$4","processHoursFunction","nominative","accusative","genitive","months$b","days$2","ColumnRendererPrototype","FLAT_CLASS","NUMBER_COLUMN_NAME","HIERARCHY_COLUMN_NAME","defaultDataTableOptions","bInfo","paging","scrollY","scrollX","rowId","getDefaultTableColumns","orderable","searchable","findColumn","iCol","GanttDataTable","language","emptyTable","dataTableOptions","dataTables","defaultColumns","configCol","customizeDataColumn","removedCols","sorting","bSort","initialSorting","controller","oldInitComplete","initComplete","oSettings","json","oldDrawCallback","drawCallback","_drawCallbacks","sortComparator","sortValue","filterValue","colRenderer","iIcon","createdCell","cell","cellData","rowData","tableElt","cellSpacing","thead","scope","initResolver","initPms","resolver","$tableElt","tableBody","headerHeight","tableInitialized","removeAttr","hasNumberColumn","column","allSettings","getScrollableBody","$scrollableBody","find","scrollableBody","ariaLabel","role","$scrollableHead","tableHeader","onDraw","scrollHeadHeight","tds","panelHeight","createRowResult","trs","startingRow","nextSibling","previousSibling","getRowAtIndex","origIndex","nextTr","lastChild","childElementCount","prevTr","defaultHeight","yTop","forceTableReload","methods","init","$splitPanes","setMinHeightAndMinWidth","mousedownHandler","createParentresizeHandler","trigger","firstComponentSize","$splitPane","getComponents","is","fixedTopHandler","pageY","fixedBottomHandler","horizontalPercentHandler","fixedLeftHandler","pageX","fixedRightHandler","verticalPercentHandler","lastComponentSize","setLeftComponentVisible","first","grep","it","SPLITPANERESIZE_HANDLER","_splitpaneparentresize","setup","namespaces","dispatch","teardown","removeData","$divider","$resizeShim","siblings","show","moveEventHandler","createMousemove","pageXof","pageYof","getComponentsSizes","lastComponentMinHeight","maxfirstComponentHeight","setTop","resize","firstComponentMinHeight","maxLastComponentHeight","setBottom","lastComponentMinWidth","maxFirstComponentWidth","setLeft","firstComponentMinWidth","maxLastComponentWidth","setRight","maxFirstComponentHeight","topOffset","newTop","bottomOffset","splitPaneHeight","leftOffset","newLeft","rightOffset","splitPaneWidth","touches","hideFirst","splitPaneElt","leftComponent","rightComponent","$splitPaneElt","scrollableHorizonFactor","itemsByIds","_init","span","momentIntl","moment","horizon","initResolve","updateRatio","getWindow","startMillis","endMillis","ratio","visTimeAxis","xCenter","horizPageCount","getVisibleTimes","scrollTo","animate","interval","setWindow","animation","customTimes","addCustomTime","markerObj","removeCustomTime","$panel"],"mappings":"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","file":"ibm-gantt-chart-jquery.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"jquery\"), require(\"vis\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"jquery\", \"vis\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ibm-gantt-chart\"] = factory(require(\"jquery\"), require(\"vis\"));\n\telse\n\t\troot[\"ibm-gantt-chart\"] = factory(root[\"jQuery\"], root[\"vis\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__2__) {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","import 'font-awesome/css/font-awesome.css';\r\n\r\n/* eslint-disable */\r\nimport './core.scss';\r\nimport './fonts.scss';\r\n\r\nexport default class Gantt {\r\n constructor(context, config) {\r\n this.context = Gantt.utils.isString(context) ? document.getElementById(context) : context;\r\n const panelClass = Gantt.components.GanttPanel.impl || Gantt.components.GanttPanel;\r\n this.gantt = new panelClass(this.context, config);\r\n return this.gantt;\r\n }\r\n}\r\n\r\nGantt.defaultConfiguration = {\r\n rowHeight: 27,\r\n zoomFactor: 0.2,\r\n loadingPanelThresold: 500,\r\n};\r\n\r\n// noinspection SpellCheckingInspection\r\nGantt.events = {\r\n TITLE_CHANGED: 'titleChanged',\r\n TABLE_INIT: 'tableinit',\r\n TIME_TABLE_INIT: 'timesheetinit',\r\n TIME_LINE_INIT: 'timeline_init',\r\n TIME_WINDOW_CHANGED: 'timeWindowChanged',\r\n TIME_LINE_RANGE_CHANGE: 'timeline_rangechange',\r\n TIME_LINE_RANGE_CHANGED: 'timeline_rangechanged',\r\n TIME_LINE_SIZE_CHANGED: 'timeline_sizeChanged',\r\n TIME_LINE_PAN_MOVE: 'timeline_panmove',\r\n TIME_LINE_PAN_MOVED: 'timeline_panmove',\r\n TIME_LINE_SCROLLED: 'timeline_scrolled',\r\n RESIZED: 'resized',\r\n SPLIT_RESIZED: 'split_resized',\r\n ROWS_FILTERED: 'rows_filtered',\r\n DATA_LOADED: 'data_loaded',\r\n ROWS_ADDED: 'rows_added',\r\n ROWS_REMOVED: 'rows_removed',\r\n ROWS_MODIFIED: 'rows_modified',\r\n ROWS_SORTED: 'rows_sorted',\r\n\r\n START_SELECTING: 'startSelecting',\r\n SELECTION_CLEARED: 'selectionCleared',\r\n STOP_SELECTING: 'stopSelecting',\r\n\r\n // Event names are generated from the Type objects associated with the SelectionHandler, with the format type.name + 'Selected|Unselected|SelectionChanged|SelectionCleared'\r\n ACTIVITY_SELECTED: 'activitySelected',\r\n ACTIVITY_UNSELECTED: 'activityUnselected',\r\n ACTIVITY_SELECTION_CHANGED: 'activitySelectionChanged',\r\n ACTIVITY_SELECTION_CLEARED: 'activitySelectionCleared',\r\n\r\n RESOURCE_SELECTED: 'resourceSelected',\r\n RESOURCE_UNSELECTED: 'resourceUnselected',\r\n RESOURCE_SELECTION_CHANGED: 'resourceSelectionChanged',\r\n RESOURCE_SELECTION_CLEARED: 'resourceSelectionCleared',\r\n\r\n ROW_SELECTED: 'rowSelected',\r\n ROW_UNSELECTED: 'rowUnselected',\r\n ROW_SELECTION_CHANGED: 'rowSelectionChanged',\r\n ROW_SELECTION_CLEARED: 'rowSelectionCleared',\r\n\r\n CONSTRAINT_SELECTED: 'constraintSelected',\r\n CONSTRAINT_UNSELECTED: 'constraintUnselected',\r\n CONSTRAINT_SELECTION_CHANGED: 'constraintSelectionChanged',\r\n CONSTRAINT_SELECTION_CLEARED: 'constraintSelectionCleared',\r\n};\r\n\r\nGantt.type = {\r\n ACTIVITY_CHART: 'ActivityChart',\r\n SCHEDULE_CHART: 'ScheduleChart',\r\n};\r\n\r\nGantt.constraintTypes = {\r\n START_TO_START: 0,\r\n START_TO_END: 2,\r\n END_TO_END: 3,\r\n END_TO_START: 1,\r\n isFromStart(type) {\r\n return type === 0 || type === 2;\r\n },\r\n isToStart(type) {\r\n return type < 2;\r\n },\r\n};\r\n\r\nclass Tooltip {\r\n constructor(config) {}\r\n showTooltip(elt, ctx, cb) {}\r\n hideTooltip() {}\r\n destroy() {}\r\n}\r\n\r\nclass DataFetcher {\r\n get(obj) {}\r\n}\r\n\r\nclass Split {\r\n constructor(elt, config) {}\r\n getLeftComponent() {}\r\n getRightComponent() {}\r\n leftComponentCreated() {}\r\n}\r\n\r\nclass Component {\r\n constructor(gantt, config) {\r\n this.gantt = gantt;\r\n this.config = config;\r\n this.utils = Gantt.utils;\r\n }\r\n\r\n on(event, handler) {\r\n let events = this.__events || (this.__events = {});\r\n let ar;\r\n let eventList = (this.utils.isArray(event) && event) || event.split(' ');\r\n for (let i = 0; i < eventList.length; i++) {\r\n event = eventList[i];\r\n if (!(ar = events[event])) {\r\n events[event] = ar = [handler];\r\n } else {\r\n ar.push(handler);\r\n }\r\n }\r\n }\r\n\r\n one(events, handler) {\r\n const wrapperHandler = (...params) => {\r\n handler.apply(this, params);\r\n // remove the handler after it has been notified\r\n const event = params[0];\r\n const index = this.__events[event].indexOf(wrapperHandler);\r\n if (index > -1) {\r\n this.__events[event].splice(index, 1);\r\n }\r\n };\r\n this.on(events, wrapperHandler);\r\n }\r\n\r\n off(event, handler) {\r\n if (this.__events) {\r\n let ar, i;\r\n let eventList = (this.utils.isArray(event) && event) || event.split(' ');\r\n for (let iEvent = 0; iEvent < eventList.length; iEvent++) {\r\n event = eventList[iEvent];\r\n if ((ar = this.__events[event])) {\r\n for (i = 0; i < ar.length; i++) {\r\n if (ar[i] === handler) {\r\n ar.splice(i, 1);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n triggerEvent(events) {\r\n let ar, params;\r\n if (events === true) {\r\n // Apply mode, event parameters are provided as an array\r\n events = arguments[1];\r\n const paramsArg = arguments[2] || [];\r\n params = new Array(paramsArg.length + 1);\r\n for (let iParam = 0; iParam < paramsArg.length; ++iParam) {\r\n params[iParam + 1] = paramsArg[iParam];\r\n }\r\n } else {\r\n params = new Array(arguments.length);\r\n for (let iParam = 1; iParam < arguments.length; ++iParam) {\r\n params[iParam] = arguments[iParam];\r\n }\r\n }\r\n\r\n const eventList = (this.utils.isArray(events) && events) || events.split(' ');\r\n for (let iEvent = 0, event, evCount = eventList.length; iEvent < evCount; iEvent++) {\r\n if ((ar = this.__events && this.__events[(params[0] = event = eventList[iEvent])])) {\r\n for (let i = 0, count = ar.length; i < count; ) {\r\n ar[i].apply(this, params);\r\n // If the handler being notified still in the array, go to next array elt\r\n if (count === ar.length) {\r\n ++i;\r\n } else {\r\n // If the handler was removed during notification (see one method), next element is at same index\r\n count = ar.length;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nclass ErrorHandler extends Component {\r\n constructor(config) {\r\n super(null, config);\r\n this.config = config;\r\n }\r\n\r\n addError(err) {}\r\n\r\n hasErrors() {\r\n return false;\r\n }\r\n\r\n clear() {}\r\n\r\n showError(err) {}\r\n\r\n getErrors() {\r\n return [];\r\n }\r\n\r\n createErrorNode(err) {\r\n const node = document.createElement('div');\r\n node.className = 'gantt_error';\r\n return node;\r\n }\r\n\r\n removeGroup(node) {}\r\n}\r\n\r\n/**\r\n *\r\n *
Emmits events: \r\n * - Gantt.events.TIME_LINE_INIT
\r\n * - Gantt.events.TIME_LINE_RANGE_CHANGE
\r\n * - Gantt.events.TIME_LINE_RANGE_CHANGED
\r\n * - Gantt.events.TIME_LINE_PAN_MOVED
\r\n * - Gantt.events.TIME_LINE_SIZE_CHANGED
\r\n *
\r\n */\r\nclass TimeLine extends Component {\r\n constructor(gantt, node, config) {\r\n super(gantt, config);\r\n this.node = node;\r\n }\r\n\r\n setTimeWindow(start, end) {}\r\n\r\n getTimeAxisHeight() {\r\n return 0;\r\n }\r\n\r\n draw() {}\r\n\r\n validateZoomFactor(zoomFactor) {}\r\n\r\n getXFromMillis(time) {}\r\n\r\n getDecorationContainer() {}\r\n\r\n /**\r\n * Returns the current time horizon, an object with two start and end time properties, time given in milliseconds\r\n */\r\n getHorizon() {}\r\n\r\n getScrollableHorizon() {}\r\n\r\n setVisibleTimeWindow(window) {}\r\n\r\n resetZoom() {}\r\n\r\n /**\r\n * Markers\r\n */\r\n addTimeMarker(id, time, classes) {}\r\n\r\n removeTimeMarker(id) {}\r\n\r\n setTimeLineItem(id, item) {}\r\n\r\n addTimeLineItem(id, item) {}\r\n\r\n removeTimeLineItem(id) {}\r\n}\r\n\r\nclass TimeTable extends Component {\r\n constructor(gantt, node, config) {\r\n super(gantt, config);\r\n this.node = node;\r\n this.setConfiguration(config);\r\n }\r\n setConfiguration(config) {}\r\n\r\n draw() {}\r\n\r\n createUpdates(parent) {\r\n return new (Gantt.components.GanttUpdates.impl || Gantt.components.GanttUpdates)(parent);\r\n }\r\n\r\n highlightRow(row, highlight, deselectAll) {}\r\n\r\n getDisplayedActivitiesTimeRange() {}\r\n\r\n searchActivities(row, callback) {}\r\n\r\n setConstraints(constraints) {}\r\n\r\n update() {}\r\n\r\n scrollToRow(row) {}\r\n\r\n scrollToY(y) {}\r\n\r\n setScrollTop(y) {}\r\n\r\n setFirstVisibleRow(row) {}\r\n\r\n getScrollLeft() {}\r\n setScrollLeft(x) {}\r\n\r\n /**\r\n * Returns the component responsible for scrolling the time table.\r\n */\r\n getScroller() {}\r\n getVisibleWidth() {}\r\n getVisibleHeight() {}\r\n\r\n // Called to adjust the time table body width according to the time line width\r\n setBodyWidth(w) {}\r\n getBodyWidth() {}\r\n\r\n // Called to adjust the height of the time table body according to the height of the gantt table\r\n setBodyHeight(h) {}\r\n getBodyHeight() {}\r\n\r\n // To perfectly horizontally align the time line and the time table, we need to apply a right margin\r\n // to the time line corresponding to the width of the vertical scroller in the time table, if any.\r\n getRightMargin() {}\r\n\r\n // The time line bottom must stops where the horizontal scrollbar of the time table starts.\r\n // The getBottomMargin returns the height of this scrollbar.\r\n getBottomMargin() {}\r\n}\r\n\r\n/**\r\n *\r\n *
Emmits events: \r\n * - Gantt.events.TABLE_INIT
\r\n * - Gantt.events.ROWS_ADDED
\r\n * - Gantt.events.ROWS_REMOVED
\r\n * - Gantt.events.ROWS_MODIFIED
\r\n * - Gantt.events.ROWS_FILTERED
\r\n *
\r\n */\r\nclass TreeTable extends Component {\r\n constructor(gantt, node, config) {\r\n super(gantt, config);\r\n this.node = node;\r\n }\r\n\r\n setRows(rows) {}\r\n\r\n getRowCount() {\r\n return 0;\r\n }\r\n\r\n isRowVisible(param) {}\r\n\r\n deleteDrawCache() {}\r\n\r\n draw() {}\r\n\r\n drawRows(selector) {}\r\n\r\n createUpdates(parent) {\r\n return new (Gantt.components.GanttUpdates.impl || Gantt.components.GanttUpdates)(parent);\r\n }\r\n\r\n highlightRow(row, highlight, deselectAll) {}\r\n\r\n setRowFilter(filter) {}\r\n\r\n filterChanged() {}\r\n\r\n isRowFiltered(row) {\r\n return false;\r\n }\r\n\r\n toggleCollapseRow(param, collapse) {}\r\n\r\n setHeaderHeight(height) {}\r\n\r\n getTableBody() {}\r\n\r\n getScrollableTable() {}\r\n\r\n getTop(tr) {\r\n return (tr && tr.offsetTop - this.getTableBody().offsetTop) || 0;\r\n }\r\n\r\n getRowAt(y) {}\r\n\r\n getHeight() {}\r\n\r\n nextRow(row) {\r\n return null;\r\n }\r\n\r\n getRow(id) {\r\n return null;\r\n }\r\n\r\n getRows(selector) {}\r\n\r\n getRowName(row) {\r\n return row.name;\r\n }\r\n\r\n getRowTop(row) {\r\n return (row.tr && row.tr.offsetTop - this.getTableBody().offsetTop) || 0;\r\n }\r\n\r\n expandParents(row) {}\r\n}\r\n\r\nTreeTable.defaultClass = '';\r\n\r\nclass GanttModel extends Component {\r\n constructor(gantt, config) {\r\n super(gantt, config);\r\n if (config) {\r\n this.setConfiguration(config);\r\n }\r\n }\r\n\r\n setConfiguration(config) {}\r\n}\r\n\r\n/**\r\n *\r\n *
Emmits events: \r\n * - Gantt.events.TABLE_INIT
\r\n * - Gantt.events.ROWS_ADDED
\r\n * - Gantt.events.ROWS_REMOVED
\r\n * - Gantt.events.ROWS_MODIFIED
\r\n * - Gantt.events.ROWS_FILTERED
\r\n *
\r\n */\r\nclass GanttPanel extends Component {\r\n constructor(node, config) {\r\n super(node, config);\r\n this.node = node;\r\n this.events = Gantt.events;\r\n this.constraintTypes = Gantt.constraintTypes;\r\n }\r\n\r\n setConfiguration(config) {}\r\n\r\n draw() {}\r\n\r\n startUpdating() {}\r\n\r\n stopUpdating() {}\r\n\r\n getModel() {}\r\n\r\n getRowCount() {\r\n return 0;\r\n }\r\n\r\n getRow(param) {\r\n return null;\r\n }\r\n\r\n getVisiibleRows() {\r\n return [];\r\n }\r\n\r\n ensureRowVisible(param) {}\r\n\r\n isRowVisible(param) {}\r\n\r\n getFirstVisibleRow() {}\r\n\r\n setFirstVisibleRow(row) {}\r\n\r\n isRowFiltered(param) {}\r\n\r\n toggleCollapseRow(param, collapse) {}\r\n\r\n scrollToY(y) {}\r\n\r\n getRowActivities(param) {}\r\n\r\n resetZoom() {}\r\n\r\n zoomIn(evt) {}\r\n\r\n zoomOut(evt) {}\r\n\r\n zoom(zoomFactor, evt) {}\r\n\r\n fitToContent() {}\r\n\r\n getVisibleHeight() {\r\n return 0;\r\n }\r\n\r\n highlightRow(row, highlight, deselectAll) {}\r\n\r\n /* */\r\n /* Search and filter */\r\n /* */\r\n addFilter(rowFilter, rows, activities) {}\r\n\r\n addFilter(rowFilter, filterTasks) {}\r\n\r\n removeFilter(key, preventNotify) {}\r\n\r\n search(text, rows, activities) {}\r\n\r\n setHideEmptyRows(hide, preventNotify) {}\r\n\r\n /* */\r\n /* Utils */\r\n /* */\r\n}\r\n\r\nclass Filter {\r\n constructor(options) {}\r\n}\r\n\r\nclass Renderer {\r\n constructor(config, proto, paletteHandler) {\r\n if (proto) {\r\n Gantt.utils.mergeObjects(this, proto);\r\n }\r\n this.config = config;\r\n this.paletteHandler = paletteHandler;\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {}\r\n}\r\n\r\nclass ActivityLayout {\r\n constructor(config) {}\r\n\r\n layout(row) {}\r\n\r\n allowVariableRowHeight() {\r\n return false;\r\n }\r\n}\r\n\r\nGantt.ObjectTypes = {\r\n Activity: 2,\r\n Resource: 4,\r\n Row: 1,\r\n Constraint: 8,\r\n Reservation: 16,\r\n};\r\n\r\nclass SelectionHandler extends Component {\r\n constructor(config, proto) {\r\n super(null, config);\r\n this.selections = [];\r\n this.selectionType = null;\r\n if (proto) {\r\n Gantt.utils.mergeObjects(this, proto);\r\n }\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {}\r\n\r\n getObjectType(obj) {}\r\n\r\n select(obj, clear, notActive) {}\r\n\r\n clearSelection() {\r\n this.selections = [];\r\n }\r\n\r\n isSelected(obj) {\r\n return this.selections.indexOf(obj) >= 0;\r\n }\r\n\r\n processClick(e, obj) {}\r\n\r\n destroy() {\r\n this.selections = [];\r\n }\r\n}\r\n\r\nclass LayoutSynchronizer extends Component {\r\n constructor(config, proto) {\r\n super(null, config);\r\n if (proto) {\r\n Gantt.utils.mergeObjects(this, proto || config);\r\n }\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {}\r\n\r\n connect(gantt) {}\r\n\r\n disconnect() {}\r\n\r\n destroy() {\r\n this.disconnect();\r\n }\r\n}\r\n\r\nclass Palette {\r\n constructor(config) {}\r\n getColors(count) {}\r\n}\r\n\r\nGantt.defaultPaletteName = null;\r\nGantt.defaultPalettes = {};\r\n\r\nclass GanttUpdates {\r\n constructor(parent) {\r\n this.parent = parent;\r\n }\r\n\r\n addUpdate(update) {}\r\n\r\n removeUpdate(update) {}\r\n\r\n reload() {\r\n this._reload = true;\r\n }\r\n isReload() {\r\n return false;\r\n }\r\n destroy() {}\r\n startUpdating() {}\r\n stopUpdating() {}\r\n}\r\n\r\nclass Toolbar extends Component {\r\n constructor(gantt, node, config) {\r\n super(gantt, config);\r\n this.node = node;\r\n this.setConfiguration(config, node);\r\n }\r\n\r\n setConfiguration(config, node) {\r\n this.config = config;\r\n }\r\n\r\n connect(gantt) {}\r\n\r\n ganttLoaded(gantt, rows) {}\r\n\r\n onInitialized() {}\r\n\r\n destroy() {}\r\n}\r\n\r\nToolbar.createTitle = function(title) {\r\n const node = document.createElement('div');\r\n node.innerHTML = title;\r\n node.className = 'toolbar-title';\r\n return node;\r\n};\r\n\r\nclass Button extends Component {\r\n constructor(gantt, config) {\r\n super(gantt, config);\r\n this.callbacks = [];\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {\r\n const btn = document.createElement('div');\r\n if (config.id) {\r\n btn.id = config.id;\r\n }\r\n btn.className = `toolbar-button g-hoverable g-selectable${config.classes ? ' ' + config.classes : ''}`;\r\n if (config.icon) {\r\n const img = document.createElement('img');\r\n img.src = config.icon;\r\n img.alt = '';\r\n btn.appendChild(img);\r\n }\r\n if (config.fontIcon) {\r\n const fontIcon = document.createElement('i');\r\n fontIcon.className = config.fontIcon + (config.text ? ' fa-fw' : '');\r\n btn.appendChild(fontIcon);\r\n }\r\n if (config.svg) {\r\n Gantt.utils.appendSVG(btn, config.svg);\r\n }\r\n if (config.text) {\r\n btn.appendChild(document.createTextNode(config.text));\r\n }\r\n this.node = btn;\r\n this.node.onclick = e => {\r\n this.clicked(e);\r\n this.callbacks.map(cb => {\r\n cb({ gantt: this.gantt, event: e });\r\n });\r\n };\r\n if (config.onclick) {\r\n this.onclick(config.onclick);\r\n }\r\n return btn;\r\n }\r\n\r\n onclick(callback) {\r\n this.callbacks.push(callback);\r\n }\r\n\r\n clicked(e) {}\r\n\r\n setId(id) {\r\n this.node.id = id;\r\n }\r\n\r\n update() {}\r\n\r\n setSelected(selected) {\r\n Gantt.utils.toggleClass(this.node, 'selected', selected);\r\n }\r\n}\r\n\r\nclass CheckBox extends Component {\r\n constructor(gantt, config) {\r\n super(gantt, config);\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {\r\n const ctnr = (this.node = document.createElement('div'));\r\n ctnr.style.whiteSpace = 'nowrap';\r\n const input = (this.inputNode = document.createElement('input'));\r\n input.setAttribute('type', 'checkbox');\r\n input.setAttribute('value', 'None');\r\n input.className = 'g-selectable g-hoverable';\r\n if (config.id) {\r\n input.id = id;\r\n }\r\n if (config.classes) {\r\n ctnr.className = config.classes;\r\n }\r\n ctnr.appendChild(input);\r\n const label = document.createElement('label');\r\n if (config.id) {\r\n label.setAttribute('for', config.id);\r\n }\r\n if (config.icon) {\r\n const img = document.createElement('img');\r\n img.src = config.icon;\r\n img.alt = '';\r\n label.appendChild(img);\r\n }\r\n if (config.svg) {\r\n Gantt.utils.appendSVG(label, config.svg);\r\n }\r\n if (config.text) {\r\n label.appendChild(document.createTextNode(config.text));\r\n }\r\n if (config.onclick) {\r\n this.onclick(config.onclick);\r\n }\r\n ctnr.appendChild(label);\r\n return ctnr;\r\n }\r\n\r\n setChecked(checked) {\r\n this.inputNode.checked = checked;\r\n }\r\n\r\n onclick(callback) {\r\n this.inputNode.onclick = e => {\r\n callback(this.inputNode.checked, { gantt: this.gantt, event: e });\r\n };\r\n }\r\n\r\n update() {}\r\n\r\n setId(id) {\r\n this.inputNode.id = id;\r\n }\r\n}\r\n\r\nCheckBox.defaultClass = null;\r\n\r\nclass Toggle extends Component {\r\n constructor(gantt, config) {\r\n super(gantt, config);\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {\r\n this.callbacks = [];\r\n const ctnr = (this._node = document.createElement('div'));\r\n this._isSel = config.isSelected && config.isSelected(this.gantt);\r\n this.btnUnselected = new (Gantt.components.Button.impl || Gantt.components.Button)(this.gantt, config.unselected);\r\n this.btnSelected = new (Gantt.components.Button.impl || Gantt.components.Button)(this.gantt, config.selected);\r\n ctnr.appendChild(this._isSel ? this.btnSelected.node : this.btnUnselected.node);\r\n if (config.id) {\r\n ctnr.id = id;\r\n }\r\n const onclick = e => {\r\n this._isSel = !this._isSel;\r\n this.updateButtons(this._isSel);\r\n this.callbacks.forEach(c => {\r\n c(this._isSel, { gantt: this.gantt, event: e });\r\n });\r\n };\r\n this.btnUnselected.node.onclick = this.btnSelected.node.onclick = onclick;\r\n if (config.onclick) {\r\n this.onclick(config.onclick);\r\n }\r\n return ctnr;\r\n }\r\n\r\n isSelected() {\r\n return this._isSel;\r\n }\r\n\r\n setSelected(selected) {\r\n this._isSel = selected;\r\n this.updateButtons(selected);\r\n }\r\n\r\n get node() {\r\n return this._node;\r\n }\r\n\r\n set node(node) {\r\n this._node = node;\r\n }\r\n\r\n onclick(callback) {\r\n this.callbacks.push(callback);\r\n }\r\n\r\n update() {\r\n this.updateButtons(this.config.isSelected ? (this._isSel = this.config.isSelected(this.gantt)) : this._isSel);\r\n }\r\n\r\n updateButtons(isSel) {\r\n if (this.btnSelected.node.parentNode) {\r\n if (!isSel) this._node.replaceChild(this.btnUnselected.node, this.btnSelected.node);\r\n } else if (this.btnUnselected.node.parentNode) {\r\n this._node.replaceChild(this.btnSelected.node, this.btnUnselected.node);\r\n }\r\n }\r\n}\r\n\r\nToggle.defaultClass = null;\r\n\r\nclass DropDownList extends Component {\r\n constructor(gantt, config) {\r\n super(gantt, config);\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {\r\n const node = (this.node = document.createElement('div'));\r\n const defaultClass = DropDownList.defaultClass;\r\n if (defaultClass) {\r\n node.className = defaultClass;\r\n }\r\n if (config.classes) {\r\n Gantt.utils.addClass(node, config.classes);\r\n }\r\n if (config.text || config.icon || config.fontIcon) {\r\n const labelNode = document.createElement('div');\r\n labelNode.className = 'label';\r\n if (config.icon) {\r\n const img = document.createElement('img');\r\n img.src = config.icon;\r\n img.alt = '';\r\n labelNode.appendChild(img);\r\n }\r\n if (config.fontIcon) {\r\n const fontIcon = document.createElement('i');\r\n fontIcon.className = config.fontIcon + (config.text ? ' fa-fw' : '');\r\n labelNode.appendChild(fontIcon);\r\n }\r\n if (config.text) {\r\n labelNode.appendChild(document.createTextNode(config.text));\r\n }\r\n node.appendChild(labelNode);\r\n }\r\n const select = (this.selectNode = document.createElement('select'));\r\n select.className = 'g-hoverable';\r\n for (let i = 0, count = config.options.length, opt, optNode; i < count; i++) {\r\n opt = config.options[i];\r\n optNode = document.createElement('option');\r\n optNode.text = opt.text;\r\n optNode.value = opt.value;\r\n select.appendChild(optNode);\r\n }\r\n node.appendChild(select);\r\n if (config.onchange) {\r\n this.onchange(config.onchange);\r\n }\r\n return node;\r\n }\r\n\r\n select(value) {\r\n this.selectNode.value = value;\r\n }\r\n\r\n onchange(callback) {\r\n this.selectNode.onchange = e => {\r\n callback(this.selectNode.value, { gantt: this.gantt, event: e });\r\n };\r\n }\r\n\r\n update() {}\r\n\r\n setId(id) {\r\n this.selectNode.id = id;\r\n }\r\n}\r\n\r\nDropDownList.defaultClass = 'dropdown-list';\r\n\r\nclass Input extends Component {\r\n constructor(gantt, config) {\r\n super(gantt, config);\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {\r\n const node = (this.node = document.createElement('div'));\r\n if (Input.defaultClass) {\r\n node.className = Input.defaultClass;\r\n }\r\n if (config.classes) {\r\n Gantt.utils.addClass(node, config.classes);\r\n }\r\n node.style.display = 'flex';\r\n node.style.flexDirection = 'row';\r\n node.style.alignItems = 'center';\r\n\r\n if (config.text || config.icon || config.fontIcon || config.type === 'search') {\r\n const labelNode = document.createElement('div');\r\n labelNode.className = 'label';\r\n labelNode.style.display = 'inline-block';\r\n if (config.icon) {\r\n const img = document.createElement('img');\r\n img.src = config.icon;\r\n img.alt = '';\r\n labelNode.appendChild(img);\r\n }\r\n if (config.fontIcon) {\r\n const fontIcon = document.createElement('i');\r\n fontIcon.className = config.fontIcon + (config.text ? ' fa-fw' : '');\r\n fontIcon.setAttribute('aria-disabled', true);\r\n labelNode.appendChild(fontIcon);\r\n } else if (config.type === 'search') {\r\n const fontIcon = document.createElement('i');\r\n fontIcon.setAttribute('aria-disabled', true);\r\n fontIcon.className = `fa fa-search fa-lg${config.text ? ' fa-fw' : ''}`;\r\n labelNode.appendChild(fontIcon);\r\n }\r\n if (config.text) {\r\n labelNode.appendChild(document.createTextNode(config.text));\r\n }\r\n node.appendChild(labelNode);\r\n }\r\n const input = (this.inputNode = document.createElement('input'));\r\n node.appendChild(input);\r\n\r\n const deleteBtn = document.createElement('div');\r\n deleteBtn.className = 'delete-button';\r\n deleteBtn.display = 'inline-block';\r\n const deleteIcon = document.createElement('i');\r\n deleteIcon.className = 'fa fa-times fa-lg';\r\n deleteBtn.appendChild(deleteIcon);\r\n node.appendChild(deleteBtn);\r\n deleteBtn.onclick = () => {\r\n input.value = '';\r\n if ('createEvent' in document) {\r\n let evt = document.createEvent('HTMLEvents');\r\n evt.initEvent('change', false, true);\r\n input.dispatchEvent(evt);\r\n } else {\r\n input.fireEvent('onchange');\r\n }\r\n };\r\n\r\n if (config.onchange) {\r\n this.onchange(config.onchange);\r\n }\r\n return node;\r\n }\r\n\r\n setText(value) {\r\n this.input.value = value;\r\n }\r\n\r\n onchange(userCallback) {\r\n const callback = e => {\r\n userCallback(this.inputNode.value, { gantt: this.gantt, event: e });\r\n };\r\n this.inputNode.onchange = callback;\r\n this.inputNode.onkeyup = callback;\r\n }\r\n\r\n setId(id) {\r\n this.inputNode.id = id;\r\n }\r\n}\r\n\r\nInput.defaultClass = 'input-box';\r\n\r\nclass ButtonGroup extends Component {\r\n constructor(gantt, config) {\r\n super(gantt, config);\r\n this.selected = null;\r\n this.callbacks = [];\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {\r\n const node = (this.node = document.createElement('div'));\r\n if (config.classes) {\r\n node.className = config.classes;\r\n }\r\n this.buttons = [];\r\n Gantt.utils.addClass(node, 'button-group');\r\n node.style.display = 'flex';\r\n node.style.flexDirection = 'row';\r\n node.style.alignItems = 'center';\r\n\r\n const self = this;\r\n function installBtnClicked(button) {\r\n button.clicked = () => {\r\n self.setSelected(button);\r\n };\r\n }\r\n\r\n this.value = null;\r\n let cfgBtns = config.buttons;\r\n for (let i = 0; i < cfgBtns.length; ++i) {\r\n let btn = new (Gantt.components.Button.impl || Gantt.components.Button)(this.gantt, cfgBtns[i]);\r\n this.buttons.push(btn);\r\n installBtnClicked(btn);\r\n if (cfgBtns[i].selected) {\r\n this.selected = btn;\r\n btn.setSelected(true);\r\n this.value = btn.value;\r\n }\r\n btn.value = cfgBtns[i].value;\r\n node.appendChild(btn.node);\r\n }\r\n if (config.onchange) {\r\n this.onchange(config.onchange);\r\n }\r\n if (config.value !== undefined) {\r\n this.setValue(config.value);\r\n }\r\n return node;\r\n }\r\n\r\n setValue(value, noNotify) {\r\n for (let i = 0; i < this.buttons.length; i++) {\r\n if (this.buttons[i].value === value) {\r\n this.setSelected(this.buttons[i], noNotify);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n getValue() {\r\n return this.value;\r\n }\r\n\r\n setSelected(btn, noNotify) {\r\n if (this.selected !== btn) {\r\n if (this.selected) {\r\n this.selected.setSelected(false);\r\n }\r\n this.selected = btn;\r\n if (btn) {\r\n this.value = btn.value;\r\n btn.setSelected(true);\r\n } else {\r\n this.value = null;\r\n }\r\n if (!noNotify) {\r\n this.callbacks.map(cb => {\r\n cb(this.value);\r\n });\r\n }\r\n }\r\n }\r\n\r\n onchange(userCallback) {\r\n this.callbacks.push(userCallback);\r\n }\r\n\r\n setId(id) {\r\n this.inputNode.id = id;\r\n }\r\n}\r\n\r\nclass LoadResourceChart extends Component {\r\n constructor(gantt, node, config) {\r\n super(gantt, node, config);\r\n this.node = node;\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {}\r\n\r\n setVisible(visible) {}\r\n setScrollLeft(left) {}\r\n}\r\n\r\nclass ConstraintsGraph extends Component {\r\n constructor(gantt, node, config) {\r\n super(gantt, node, config);\r\n this.node = node;\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {}\r\n setConstraints(cts) {}\r\n setNode(node) {}\r\n}\r\n\r\nclass ConstraintLayout extends Component {\r\n constructor(gantt, config) {\r\n super(gantt, null, config);\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {}\r\n startInitialize() {}\r\n addNode(node) {}\r\n addConstraint(nodeFrom, nodeTo, cons) {}\r\n stopInitialize() {}\r\n forEachLink(node, cb) {}\r\n layoutNode(node) {}\r\n layoutRowNodeLinks(rowIndex) {}\r\n drawRowLinks(rowIndex, parentElt, renderer, ctx) {}\r\n}\r\n\r\nGantt.components = {\r\n Component,\r\n GanttPanel,\r\n GanttModel,\r\n TreeTable,\r\n TimeLine,\r\n TimeTable,\r\n Split,\r\n Tooltip,\r\n Filter,\r\n DataFetcher,\r\n ErrorHandler,\r\n Renderer,\r\n ActivityLayout,\r\n SelectionHandler,\r\n LayoutSynchronizer,\r\n GanttUpdates,\r\n Palette,\r\n Toolbar,\r\n Button,\r\n CheckBox,\r\n Toggle,\r\n DropDownList,\r\n Input,\r\n ButtonGroup,\r\n LoadResourceChart,\r\n ConstraintsGraph,\r\n ConstraintLayout,\r\n};\r\n\r\nGantt.envReady = function() {\r\n return Promise.resolve(true);\r\n};\r\n\r\nif (module.hot) {\r\n module.hot.accept();\r\n}\r\n","module.exports = __WEBPACK_EXTERNAL_MODULE__1__;","module.exports = __WEBPACK_EXTERNAL_MODULE__2__;","import Gantt from './core';\r\n\r\nGantt.plugins = {\r\n plugins: [],\r\n\r\n /**\r\n * Registers the list of specified plugins if not already registered.\r\n * @param {Array|Object} plugins plugin instance(s).\r\n */\r\n register(plugins) {\r\n for (let i = 0; i < arguments.length; i++) {\r\n if (this.plugins.indexOf(arguments[i]) === -1) {\r\n this.plugins.push(arguments[i]);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Unregisters the specified plugin if registered.\r\n * @param {Array|Object} plugins plugin instance(s).\r\n */\r\n unregister(plugins) {\r\n for (var i = 0, index; i < arguments.length; i++) {\r\n if ((index = this.plugins.indexOf(arguments[i])) !== -1) {\r\n this.plugins.splice(index, 1);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Remove all registered plugins.\r\n * @see #register\r\n */\r\n clear() {\r\n this.plugins = [];\r\n },\r\n\r\n /**\r\n * Returns the number of registered plugins.\r\n * @returns {Number}\r\n */\r\n count() {\r\n return this.plugins.length;\r\n },\r\n\r\n /**\r\n * Returns all registered plugin instances.\r\n * @returns {Array} array of plugins.\r\n */\r\n getAll() {\r\n return this.plugins;\r\n },\r\n\r\n /**\r\n * Calls the registermed plugins on the specified method, with the provided args. This\r\n * method immediately returns as soon as a plugin returns a value. The\r\n * returned value can be used, for instance, to interrupt the current action.\r\n * @param {String|Boolean} method boolean to indicate the plugin call order of the name of the plugin method to call.\r\n * @param {...Object} args list to apply to the method call.\r\n * @returns {Object} the value false if any of the plugins return false, otherwise returns true.\r\n */\r\n call(method, ...args) {\r\n let paramsStart;\r\n let reverse;\r\n if (typeof method !== 'string') {\r\n reverse = method;\r\n method = arguments[1];\r\n paramsStart = 2;\r\n } else {\r\n paramsStart = 1;\r\n }\r\n const params = Array.prototype.slice.call(arguments, paramsStart);\r\n for (\r\n let i = reverse ? this.plugins.length - 1 : 0,\r\n inc = reverse ? -1 : 1,\r\n end = reverse ? -1 : this.plugins.length,\r\n result;\r\n i !== end;\r\n i += inc\r\n ) {\r\n const plugin = this.plugins[i];\r\n if (typeof plugin[method] === 'function') {\r\n if ((result = plugin[method].apply(plugin, params)) !== undefined) {\r\n return result;\r\n }\r\n }\r\n }\r\n },\r\n};\r\n\r\n/**\r\n * Plugin extension methods.\r\n * @interface Gantt.PluginBase\r\n */\r\nexport default class Plugin {\r\n // Called at start of Gantt init\r\n beforeInit() {}\r\n\r\n // Called at end of Gantt init\r\n afterInit() {}\r\n\r\n // Called at start of update\r\n beforeUpdate() {}\r\n\r\n // Called at end of update\r\n afterUpdate() {}\r\n\r\n // Called at start of draw\r\n beforeDraw() {}\r\n\r\n // Called at end of draw\r\n afterDraw() {}\r\n\r\n // Called during destroy\r\n destroy() {}\r\n}\r\n","import Gantt from './core';\r\n\r\nconst START_SELECTION_METHOD = 'startSelection';\r\nconst STOP_SELECTION_METHOD = 'stopSelection';\r\nconst CLEAR_SELECTION_METHOD = 'clearSelection';\r\n\r\nconst SELECTION_CHANGED_EVENT = 'SelectionChanged';\r\nconst UNSELECT_EVENT = 'Unselected';\r\nconst SELECT_EVENT = 'Selected';\r\nconst CLEAR_SELECTION_EVENT = 'SelectionCleared';\r\nconst START_SELECTING = 'StartSelecting';\r\nconst STOP_SELECTING = 'StopSelecting';\r\n\r\nclass Type {\r\n constructor(config) {\r\n Gantt.utils.mergeObjects(this, config);\r\n this[SELECTION_CHANGED_EVENT] = {\r\n event: () => this.getSelectionChangedEvent(),\r\n method: () => this.getSelectionChangedMethod(),\r\n };\r\n this[SELECT_EVENT] = {\r\n event: () => this.getSelectionEvent(),\r\n method: () => this.getSelectionMethod(),\r\n };\r\n this[UNSELECT_EVENT] = {\r\n event: () => this.getUnselectionEvent(),\r\n method: () => this.getUnselectionMethod(),\r\n };\r\n this[CLEAR_SELECTION_EVENT] = {\r\n event: () => this.getClearSelectionEvent(),\r\n method: () => this.getClearSelectionMethod(),\r\n };\r\n }\r\n\r\n accept(obj) {\r\n return false;\r\n }\r\n\r\n getTypeEvent(event) {\r\n return this[event] && this[event].event();\r\n }\r\n\r\n getTypeMethod(method) {\r\n return this.name + method;\r\n }\r\n\r\n notify(o, event, params) {\r\n let m = this[event] && this[event].method();\r\n if ((m = o[m])) {\r\n m.apply(o, params);\r\n }\r\n }\r\n\r\n getClearSelectionEvent() {\r\n return this.name + CLEAR_SELECTION_EVENT;\r\n }\r\n\r\n getClearSelectionMethod() {\r\n return this.clearSelectionMethod || this.getTypeMethod(SELECT_EVENT);\r\n }\r\n\r\n getSelectionEvent() {\r\n return this.name + SELECT_EVENT;\r\n }\r\n\r\n getSelectionMethod() {\r\n return this.selectionMethod || this.getTypeMethod(SELECT_EVENT);\r\n }\r\n\r\n getUnselectionEvent() {\r\n return this.name + UNSELECT_EVENT;\r\n }\r\n\r\n getUnselectionMethod() {\r\n return this.unselectionMethod || this.getTypeMethod(UNSELECT_EVENT);\r\n }\r\n\r\n getSelectionChangedEvent() {\r\n return this.name + SELECTION_CHANGED_EVENT;\r\n }\r\n\r\n getSelectionChangedMethod() {\r\n return this.selectionChangedMethod || this.getTypeMethod(SELECTION_CHANGED_EVENT);\r\n }\r\n}\r\n\r\nexport default class SelectionHandler extends Gantt.components.SelectionHandler {\r\n constructor(config, proto) {\r\n super(config, proto);\r\n this.lock = 0;\r\n this.types = [];\r\n this.genericType = new Type({ name: '' });\r\n this.genericType[CLEAR_SELECTION_EVENT] = {\r\n event() {\r\n return Gantt.events.SELECTION_CLEARED;\r\n },\r\n method() {\r\n return CLEAR_SELECTION_METHOD;\r\n },\r\n };\r\n this.genericType[START_SELECTING] = {\r\n event() {\r\n return Gantt.events.START_SELECTING;\r\n },\r\n method() {\r\n return START_SELECTION_METHOD;\r\n },\r\n };\r\n this.genericType[STOP_SELECTING] = {\r\n event() {\r\n return Gantt.events.STOP_SELECTING;\r\n },\r\n method() {\r\n return STOP_SELECTION_METHOD;\r\n },\r\n };\r\n }\r\n\r\n /**\r\n * @return {string}\r\n */\r\n static get SELECTION_CHANGED_EVENT() {\r\n return SELECTION_CHANGED_EVENT;\r\n }\r\n\r\n /**\r\n * @return {string}\r\n */\r\n static get UNSELECT_EVENT() {\r\n return UNSELECT_EVENT;\r\n }\r\n\r\n /**\r\n * @return {string}\r\n */\r\n static get SELECT_EVENT() {\r\n return SELECT_EVENT;\r\n }\r\n\r\n /**\r\n * @return {string}\r\n */\r\n static get CLEAR_SELECTION_EVENT() {\r\n return CLEAR_SELECTION_EVENT;\r\n }\r\n\r\n setConfiguration(config) {\r\n this.config = config;\r\n this.observers = [];\r\n if (config) {\r\n if (Gantt.utils.isArray(config)) {\r\n for (let i = 0; i < config.length; i++) {\r\n this.addConfiguration(config[i]);\r\n }\r\n } else {\r\n this.addConfiguration(config);\r\n }\r\n }\r\n }\r\n\r\n addConfiguration(config) {\r\n this.addObserver(config);\r\n }\r\n\r\n select(obj, clear, notActive) {\r\n if (obj) {\r\n this.startSelecting();\r\n const objType = this.getObjectType(obj);\r\n const selTypeChanged = this.selectionType !== objType;\r\n if (this.selections.length && (clear || selTypeChanged)) {\r\n const oldType = this.selectionType;\r\n this.clear();\r\n if (selTypeChanged) {\r\n this.notify(oldType, SELECTION_CHANGED_EVENT, this.selections);\r\n }\r\n }\r\n this.selectionType = objType;\r\n if (notActive && this.selections.length) {\r\n // Add the selections at the end of selections array so that the current active selection at\r\n // position zero remains active\r\n if (Gantt.utils.isArray(obj)) {\r\n for (let i = 0, count = obj.length; i < count; ++i) {\r\n this.setObjectSelected(obj[i], true);\r\n }\r\n this.selections = this.selections.concat(obj);\r\n } else {\r\n this.setObjectSelected(obj, true);\r\n this.selections.push(obj);\r\n }\r\n } else if (Gantt.utils.isArray(obj)) {\r\n for (let i = 0, count = obj.length; i < count; ++i) {\r\n this.setObjectSelected(obj[i], true);\r\n }\r\n this.selections = obj.concat(this.selections);\r\n } else {\r\n // obj becomes the new active selection\r\n this.setObjectSelected(obj, true);\r\n this.selections.unshift(obj);\r\n }\r\n if (this.selections.length) {\r\n this.notify(this.selectionType, SELECT_EVENT, this.selections, this.selections[0]);\r\n }\r\n this.stopSelecting();\r\n }\r\n }\r\n\r\n unselect(obj) {\r\n if (obj) {\r\n let selecting = false;\r\n const uns = (Gantt.utils.isArray(obj) && obj) || [obj];\r\n const foundUns = [];\r\n uns.forEach(o => {\r\n const index = this.selections.indexOf(obj);\r\n if (index >= 0) {\r\n if (!selecting) {\r\n this.startSelecting();\r\n selecting = true;\r\n }\r\n this.selections.splice(index, 1);\r\n this.setObjectSelected(obj, false);\r\n foundUns.push(obj);\r\n }\r\n });\r\n if (selecting) {\r\n this.notify(this.selectionType, UNSELECT_EVENT, foundUns);\r\n this.stopSelecting();\r\n }\r\n }\r\n }\r\n\r\n setObjectSelected(obj, selected) {}\r\n\r\n clear() {\r\n if (this.selections.length) {\r\n this.startSelecting();\r\n const oldSelection = this.selections;\r\n for (let i = 0, count = (oldSelection && oldSelection.length) || 0; i < count; ++i) {\r\n this.setObjectSelected(oldSelection[i], false);\r\n }\r\n this.selections = [];\r\n this.notify(this.selectionType, CLEAR_SELECTION_EVENT, oldSelection);\r\n this.notify(this.genericType, CLEAR_SELECTION_EVENT, oldSelection);\r\n this.stopSelecting();\r\n }\r\n }\r\n\r\n processClick(e, obj) {\r\n if (obj) {\r\n if (e.ctrlKey) {\r\n // toggle object selection.\r\n if (this.isSelected(obj)) {\r\n this.unselect(obj);\r\n } else {\r\n this.select(obj);\r\n }\r\n } else if (!this.isSelected(obj)) {\r\n this.select(obj, !e.shiftKey);\r\n }\r\n }\r\n }\r\n\r\n getObjectType(obj) {\r\n for (let i = 0, count = this.types.length; i < count; ++i) {\r\n if (this.types[i].accept(obj)) return this.types[i];\r\n }\r\n return null;\r\n }\r\n\r\n startSelecting() {\r\n if (++this.lock === 1) {\r\n this.notify(this.genericType, START_SELECTING);\r\n }\r\n }\r\n\r\n stopSelecting() {\r\n if (!--this.lock) {\r\n this.notify(this.genericType, STOP_SELECTING);\r\n if (this.selectionType) {\r\n this.notify(\r\n this.selectionType,\r\n SELECTION_CHANGED_EVENT,\r\n this.selections,\r\n this.selections.length ? this.selections[0] : null\r\n );\r\n }\r\n }\r\n }\r\n\r\n //\r\n // Notify selection observers\r\n //\r\n notify(type, event, ...params) {\r\n const typeEvent = type.getTypeEvent(event);\r\n if (typeEvent) {\r\n this.triggerEvent(true /* Specify 3rd parameter is an array of parameters */, typeEvent, params);\r\n }\r\n for (let i = 0, o; i < this.observers.length; i++) {\r\n o = this.observers[i];\r\n type.notify(o, event, params);\r\n }\r\n }\r\n\r\n /* notifyObserver(type, event, ...params) {\r\n for(let i = 0, o, m; i < this.observers.length; i++) {\r\n o = this.observers[i];\r\n type.notify(o, event, params);\r\n }\r\n } */\r\n\r\n addObserver(o) {\r\n this.observers.push(o);\r\n }\r\n\r\n removeObserver(o) {\r\n const index = this.observers.indexOf(o);\r\n if (index >= 0) {\r\n this.observers.splice(index, 1);\r\n return 0;\r\n }\r\n return null;\r\n }\r\n\r\n //\r\n // Object types\r\n //\r\n registerType(type) {\r\n type = new Type(type);\r\n this.types.push(type);\r\n return type;\r\n }\r\n}\r\n\r\nGantt.components.SelectionHandler.impl = SelectionHandler;\r\n","import Gantt from './core';\r\n\r\nconst AUTOMATIC_COLOR = 'automatic';\r\nconst TEXT_OVERFLOW_ELLIPSIS = 'ellipsis';\r\nconst TEXT_OVERFLOW_NO_DISPLAY = 'noDisplay';\r\nconst TEXT_OVERFLOW_CUT = 'cut';\r\n\r\nfunction createSelectorFunction(selector, fct, oldFct, fctCtx) {\r\n return (\r\n fct &&\r\n function(object, ctx, ext) {\r\n if (!selector || selector(object, ctx)) {\r\n return fctCtx ? fct.call(fctCtx, object, ctx, ext) : fct(object, ctx, ext);\r\n }\r\n return (oldFct && oldFct(object, ctx, ext)) || undefined;\r\n }\r\n );\r\n}\r\n\r\nexport default class Renderer extends Gantt.components.Renderer {\r\n constructor(config, proto, paletteHandler) {\r\n super(config, proto, paletteHandler);\r\n }\r\n\r\n draw(object, parentElt, ctx) {\r\n const shapeElt = (this.createShape && this.createShape(object, parentElt, ctx)) || null;\r\n if (this.getCSS) {\r\n const css = this.getCSS(object, ctx);\r\n if (css) {\r\n this.setCSS(shapeElt || parentElt, css);\r\n }\r\n }\r\n if ((this.getText || this.getIcon) && this.drawContent) {\r\n const text = this.getText && this.getText(object, ctx);\r\n const icon = this.getIcon && this.getIcon(object, ctx);\r\n this.drawContent(shapeElt || parentElt, icon, text, object, ctx);\r\n }\r\n let bg;\r\n if (this.background) {\r\n bg = this.background(object, ctx);\r\n if (bg) {\r\n this.setBackground(shapeElt, bg);\r\n }\r\n }\r\n if (this.color) {\r\n this.setColor(shapeElt, this.color(object, ctx, bg));\r\n }\r\n if (parentElt && shapeElt !== parentElt) {\r\n parentElt.appendChild(shapeElt);\r\n }\r\n return shapeElt;\r\n }\r\n\r\n setBackground(shapeElt, bg) {\r\n shapeElt.style.backgroundColor = bg;\r\n }\r\n\r\n setColor(shapeElt, c) {\r\n shapeElt.style.color = c;\r\n }\r\n\r\n setCSS(elt, classname) {\r\n if (classname) {\r\n elt.className = (elt.className && `${elt.className} ${classname}`) || classname;\r\n }\r\n }\r\n\r\n // noinspection JSUnusedLocalSymbols\r\n createShape(object, parentElt, ctx) {\r\n return null;\r\n }\r\n\r\n // noinspection JSUnusedLocalSymbols\r\n drawContent(elt, icon, text, object, ctx) {\r\n this.drawDefaultContent(elt, icon, text, object, ctx);\r\n }\r\n\r\n drawNoDisplayOverflowContent(elt, icon, text, object, ctx) {\r\n const ctnt = document.createElement('div');\r\n ctnt.className = 'content';\r\n ctnt.style.overflow = 'hidden';\r\n ctnt.style.display = 'flex'; // Cannot used as issue with FF https://github.ibm.com/IBMDecisionOptimization/dd-gantt-component/issues/14\r\n /* ctnt.style.alignItems = 'center'; */ ctnt.style.justifyContent = 'center';\r\n ctnt.style.left = '0';\r\n ctnt.style.top = '0';\r\n ctnt.style.bottom = '0';\r\n ctnt.style.right = '0';\r\n ctnt.style.position = 'absolute';\r\n ctnt.style.flexWrap = 'wrap';\r\n\r\n if (icon) {\r\n const img = document.createElement('img');\r\n img.className = 'image-content';\r\n img.src = icon;\r\n img.alt = '';\r\n img.style.float = 'left';\r\n ctnt.appendChild(img);\r\n }\r\n\r\n const separator = document.createElement('div');\r\n separator.style.width = '1px';\r\n separator.style.display = 'inline-block';\r\n separator.style.height = '100%';\r\n ctnt.appendChild(separator);\r\n\r\n const t = document.createElement('div');\r\n t.className = 'text-content';\r\n t.innerHTML = text.replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\r\n t.style.display = 'flex';\r\n t.style.alignItems = 'center';\r\n t.style.whiteSpace = 'nowrap';\r\n t.style.height = '100%';\r\n t.style.textAlign = 'center';\r\n ctnt.appendChild(t);\r\n elt.appendChild(ctnt);\r\n }\r\n\r\n drawCutContent(elt, icon, text, object, ctx) {\r\n if (icon) {\r\n const img = document.createElement('img');\r\n img.className = 'image-content';\r\n img.src = icon;\r\n img.alt = '';\r\n elt.appendChild(img);\r\n }\r\n elt.style.overflow = 'hidden';\r\n const t = document.createElement('div');\r\n t.className = 'text-content';\r\n t.innerHTML = text;\r\n elt.appendChild(t);\r\n return t;\r\n }\r\n\r\n drawEllipsisContent(elt, icon, text, object, ctx) {\r\n if (icon) {\r\n const img = document.createElement('img');\r\n img.className = 'image-content';\r\n img.src = icon;\r\n img.alt = '';\r\n elt.appendChild(img);\r\n }\r\n const t = document.createElement('div');\r\n t.className = 'text-content';\r\n t.style.textOverflow = 'ellipsis';\r\n t.style.overflow = 'hidden';\r\n t.innerHTML = text;\r\n elt.appendChild(t);\r\n return t;\r\n }\r\n\r\n drawOverflowVisibleContent(elt, icon, text, object, ctx) {\r\n if (icon) {\r\n const img = document.createElement('img');\r\n img.className = 'image-content';\r\n img.src = icon;\r\n img.alt = '';\r\n img.style.float = 'left';\r\n elt.appendChild(img);\r\n }\r\n const t = document.createElement('div');\r\n t.className = 'text-content';\r\n t.overflow = 'visible';\r\n t.innerHTML = text;\r\n elt.appendChild(t);\r\n return t;\r\n }\r\n\r\n filter(object, row, search) {\r\n if (this.getText && search) {\r\n const text = this.getText(object, row);\r\n return text && Gantt.utils.stringMatches(text, search);\r\n }\r\n return false;\r\n }\r\n\r\n createCSSGetter(selector, classOptions, ctx) {\r\n if (typeof classOptions === 'function') {\r\n // Function is given the object to render in parameter and returns a set of CSS classes\r\n return createSelectorFunction(selector, classOptions, null, ctx);\r\n }\r\n if (typeof classOptions === 'string') {\r\n if (classOptions[0] === '@') {\r\n // The string represents the accessor to the object property providing the CSS class\r\n return createSelectorFunction(selector, Gantt.utils.propertyEvaluator(classOptions.substring(1)));\r\n }\r\n\r\n return createSelectorFunction(selector, () => classOptions);\r\n }\r\n // Else the config is a descriptive object of the CSS setter\r\n if (!classOptions.property) {\r\n console.warn('Missing \"property\" field in class setter description:');\r\n console.warn(classOptions);\r\n return null;\r\n }\r\n\r\n const propGetter = Gantt.utils.propertyEvaluator(classOptions.property);\r\n return createSelectorFunction(selector, obj => {\r\n let prop = propGetter.call(obj, obj);\r\n if (prop) {\r\n if (classOptions.prefix) {\r\n prop = classOptions.prefix + prop;\r\n }\r\n if (classOptions.suffix) {\r\n prop = classOptions.suffix + prop;\r\n }\r\n }\r\n return prop;\r\n });\r\n }\r\n\r\n addCSSConfiguration(selector, classes, ctx) {\r\n let i;\r\n let getter;\r\n if (!Gantt.utils.isArray(classes)) {\r\n classes = [classes];\r\n }\r\n for (i = 0; i < classes.length; i++) {\r\n getter = this.createCSSGetter(selector, classes[i], ctx);\r\n if (getter) {\r\n if (this.cssGetters) {\r\n this.cssGetters.push(getter);\r\n } else {\r\n this.cssGetters = [getter];\r\n this.getCSS = function(object, ctx) {\r\n let cssClasses = '';\r\n let cssToAdd;\r\n for (let i = 0; i < this.cssGetters.length; i++) {\r\n cssToAdd = this.cssGetters[i](object, ctx);\r\n if (cssToAdd) {\r\n cssClasses = (cssClasses && `${cssClasses} ${cssToAdd}`) || cssToAdd;\r\n }\r\n }\r\n return cssClasses;\r\n };\r\n }\r\n }\r\n }\r\n }\r\n\r\n addFilterConfiguration(selector, config, ctx) {\r\n let filter;\r\n if (typeof config === 'function') {\r\n filter = (...params) => config.apply(ctx, params);\r\n } else if (typeof config === 'string') {\r\n const getter = Gantt.utils.propertyEvaluator(config);\r\n if (getter) {\r\n filter = function(object, ctx, search) {\r\n if (search) {\r\n const value = getter(object, ctx);\r\n return value && Gantt.utils.stringMatches(value, search);\r\n }\r\n return true;\r\n };\r\n }\r\n } else {\r\n console.warn('Cannot process filter config. Must be a string or a function.');\r\n console.warn(config);\r\n }\r\n if (filter) {\r\n const oldFilter = this.filter;\r\n this.filter = function(object, ctx, search) {\r\n if (!oldFilter(object, ctx, search)) {\r\n return false;\r\n }\r\n if (!selector || selector(object)) {\r\n if (!filter(object, ctx, search)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n };\r\n }\r\n }\r\n\r\n addTooltipPropertiesConfiguration(selector, config, ctx) {\r\n let tooltipPropsGetter;\r\n if (typeof config === 'function') {\r\n tooltipPropsGetter = config;\r\n } else {\r\n console.warn('Cannot process tooltip properties config. Must be a a function.');\r\n console.warn(config);\r\n }\r\n if (tooltipPropsGetter) {\r\n if (selector) {\r\n this.getTooltipProperties = createSelectorFunction(\r\n selector,\r\n tooltipPropsGetter,\r\n this.getTooltipProperties,\r\n ctx\r\n );\r\n } else this.getTooltipProperties = tooltipPropsGetter;\r\n }\r\n }\r\n\r\n addTooltipConfiguration(selector, config, ctx) {\r\n let tooltipGetter;\r\n if (typeof config === 'function') {\r\n tooltipGetter = (...params) => config.apply(ctx, params);\r\n } else {\r\n console.warn('Cannot process tooltip config. Must be a function.');\r\n console.warn(config);\r\n }\r\n if (tooltipGetter) {\r\n if (selector) {\r\n this.getTooltip = createSelectorFunction(selector, tooltipGetter, this.getTooltip);\r\n } else this.getTooltip = tooltipGetter;\r\n }\r\n }\r\n\r\n addTextConfiguration(selector, config, ctx) {\r\n let textGetter;\r\n if (typeof config === 'function') {\r\n textGetter = (...params) => config.apply(ctx, params);\r\n } else if (typeof config === 'string') {\r\n textGetter = Gantt.utils.propertyEvaluator(config);\r\n } else {\r\n console.warn('Cannot process text config. Must be a string or a function.');\r\n console.warn(config);\r\n }\r\n if (textGetter) {\r\n if (selector) {\r\n this.getText = createSelectorFunction(selector, textGetter, this.getText);\r\n } else this.getText = textGetter;\r\n }\r\n }\r\n\r\n addIconConfiguration(selector, config, ctx) {\r\n let iconGetter;\r\n if (typeof config === 'function') {\r\n iconGetter = (...params) => config.apply(ctx, params);\r\n } else if (typeof config === 'string') {\r\n iconGetter = Gantt.utils.propertyEvaluator(config);\r\n } else {\r\n console.warn('Cannot process icon config. Must be a string or a function.');\r\n console.warn(config);\r\n }\r\n if (iconGetter) {\r\n if (selector) {\r\n this.getIcon = createSelectorFunction(selector, iconGetter, this.getIcon);\r\n } else this.getIcon = iconGetter;\r\n }\r\n }\r\n\r\n addDrawConfiguration(selector, config) {\r\n if (selector) {\r\n const oldDraw = this.draw;\r\n this.draw = function(object, elt, ctx) {\r\n if (selector(object, ctx)) {\r\n config.draw(object, elt, ctx);\r\n } else {\r\n oldDraw(object, elt, ctx);\r\n }\r\n };\r\n } else {\r\n this.draw = function(object, elt, ctx) {\r\n config.draw(object, elt, ctx);\r\n };\r\n }\r\n }\r\n\r\n addDrawContentConfiguration(selector, config) {\r\n if (selector) {\r\n const oldDrawContent = this.drawContent;\r\n this.drawContent = function(elt, text, object, ctx) {\r\n if (selector(object, ctx)) {\r\n config.drawContent(elt, text, object, ctx);\r\n } else {\r\n oldDrawContent(elt, text, object, ctx);\r\n }\r\n };\r\n } else {\r\n this.drawContent = function(elt, text, object, ctx) {\r\n config.drawContent(elt, text, object, ctx);\r\n };\r\n }\r\n }\r\n\r\n addTextOverflowConfiguration(selector, config) {\r\n let drawDefaultContent;\r\n if (config === TEXT_OVERFLOW_ELLIPSIS) {\r\n drawDefaultContent = this.drawEllipsisContent;\r\n } else if (config === TEXT_OVERFLOW_NO_DISPLAY) {\r\n drawDefaultContent = this.drawNoDisplayOverflowContent;\r\n } else if (config === TEXT_OVERFLOW_CUT) {\r\n drawDefaultContent = this.drawCutContent;\r\n }\r\n if (selector) {\r\n const oldDrawDefaultContent = this.drawDefaultContent;\r\n this.drawDefaultContent = function(elt, text, object, ctx) {\r\n if (selector(object, ctx)) {\r\n drawDefaultContent.call(this, elt, text, object, ctx);\r\n } else {\r\n oldDrawDefaultContent.call(this, elt, text, object, ctx);\r\n }\r\n };\r\n } else {\r\n this.drawDefaultContent = drawDefaultContent;\r\n }\r\n }\r\n\r\n hexToRgb(hex) {\r\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\r\n return result\r\n ? {\r\n r: parseInt(result[1], 16),\r\n g: parseInt(result[2], 16),\r\n b: parseInt(result[3], 16),\r\n }\r\n : null;\r\n }\r\n\r\n getTextColorFromBackgroundColor(hexColor) {\r\n const rgb = this.hexToRgb(hexColor);\r\n // http://www.w3.org/TR/AERT#color-contrast\r\n const o = Math.round((rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000);\r\n return o > 125 ? '#383633' : 'white';\r\n }\r\n\r\n addColorConfiguration(selector, config, property, ctx) {\r\n let colorGetter;\r\n if (typeof config === 'function') {\r\n colorGetter = (...params) => config.apply(ctx, params);\r\n } else if (typeof config === 'string') {\r\n if (property === 'color' && AUTOMATIC_COLOR === config) {\r\n colorGetter = (obj, ctx, bg) => {\r\n const index = (this.colors && this.colors.indexOf(bg)) || -1;\r\n if (index < 0) {\r\n let textColor;\r\n try {\r\n textColor = this.getTextColorFromBackgroundColor(bg);\r\n } catch (err) {\r\n console.error(`Invalid color format ${bg}`);\r\n console.error(err);\r\n textColor = 'black';\r\n }\r\n if (!this.colors) {\r\n this.colors = [bg];\r\n this.textColors = [textColor];\r\n } else {\r\n this.colors.push(bg);\r\n this.textColors.push(textColor);\r\n }\r\n return textColor;\r\n }\r\n return this.textColors[index];\r\n };\r\n } else {\r\n colorGetter = Gantt.utils.propertyEvaluator(config);\r\n }\r\n } else {\r\n // Object describing how to get a color from a palette\r\n const paletteConfig = config.palette;\r\n const paletteRenderer = {\r\n paletteHandler: this.paletteHandler,\r\n colors: null,\r\n value: Gantt.utils.propertyEvaluator(config.getValue),\r\n getColor(obj, ctx) {\r\n const value = this.value(obj, ctx);\r\n const colors = this.colors || this.makeColors(obj, ctx); // makeColors leads to the creation of this.values\r\n let index = this.values.indexOf(value);\r\n if (index < 0) {\r\n index = this.values.length;\r\n this.values.push(value);\r\n }\r\n return index < 0 ? null : colors[index % colors.length];\r\n },\r\n getValues:\r\n config.values &&\r\n ((Gantt.utils.isFunction(config.values) && config.values) ||\r\n function() {\r\n return config.values;\r\n }),\r\n makeColors(obj, ctx) {\r\n let palette;\r\n if (paletteConfig) {\r\n if (Gantt.utils.isString(paletteConfig)) {\r\n palette = this.paletteHandler.getPalette(paletteConfig);\r\n } else {\r\n palette = new (Gantt.components.Palette.impl || Gantt.components.Palette)(paletteConfig);\r\n }\r\n } else {\r\n palette = this.paletteHandler.getPalette();\r\n }\r\n if (!palette && !this.colors) {\r\n console.error(`No palette found for ${paletteConfig}`);\r\n palette = Gantt.defaultPalettes[Gantt.defaultPaletteName];\r\n }\r\n this.values = (this.getValues && this.getValues(obj, ctx)) || [];\r\n this.colors = palette && palette.getColors(this.values.length || -1); // -1 for the max number of colors handled by the palette.\r\n return this.colors;\r\n },\r\n };\r\n colorGetter = (obj, ctx) => paletteRenderer.getColor(obj, ctx);\r\n }\r\n if (colorGetter) {\r\n if (selector) {\r\n this[property] = createSelectorFunction(selector, colorGetter, this[property]);\r\n } else this[property] = colorGetter;\r\n }\r\n }\r\n\r\n addConfiguration(config) {\r\n let selector;\r\n if (config.selector) {\r\n if (typeof config.selector === 'function') {\r\n selector = (...params) => config.selector(...params);\r\n } else if (typeof config.selector !== 'object' || !config.selector.property || !config.selector.value) {\r\n console.warn('Renderer selector must be a function or an object with \"property\" and \"value\" fields.');\r\n console.warn(config.selector);\r\n } else {\r\n const prop = Gantt.utils.propertyEvaluator(this.config.selector.property);\r\n const values = this.config.selector.value.split(',');\r\n selector = function(object) {\r\n const value = prop(object);\r\n return value && values.indexOf(value) >= 0;\r\n };\r\n }\r\n }\r\n\r\n this.processConfiguration(selector, config);\r\n }\r\n\r\n processConfiguration(selector, config) {\r\n this.defaultProcessConfiguration(selector, config);\r\n }\r\n\r\n defaultProcessConfiguration(selector, config) {\r\n if (config.classes || config.css) {\r\n this.addCSSConfiguration(selector, config.classes || config.css, config);\r\n }\r\n\r\n if (config.text) {\r\n this.addTextConfiguration(selector, config.text, config);\r\n }\r\n if (config.icon) {\r\n this.addIconConfiguration(selector, config.icon, config);\r\n }\r\n\r\n if (config.filter) {\r\n this.addFilterConfiguration(selector, config.filter, config);\r\n }\r\n\r\n if (config.tooltip) {\r\n this.addTooltipConfiguration(selector, config.tooltip, config);\r\n }\r\n\r\n if (config.tooltipProperties) {\r\n this.addTooltipPropertiesConfiguration(selector, config.tooltipProperties, config);\r\n }\r\n\r\n if (config.createShape) {\r\n console.warn('config.createShape: Not implemented');\r\n }\r\n\r\n if (config.drawContent) {\r\n this.addDrawContentConfiguration(selector, config);\r\n }\r\n\r\n if (config.textOverflow) {\r\n this.addTextOverflowConfiguration(selector, config.textOverflow);\r\n }\r\n\r\n if (config.background) {\r\n this.addColorConfiguration(selector, config.background, 'background', config);\r\n }\r\n\r\n if (config.color) {\r\n this.addColorConfiguration(selector, config.color, 'color', config);\r\n }\r\n\r\n if (config.draw) {\r\n this.addDrawConfiguration(selector, config);\r\n }\r\n }\r\n\r\n setConfiguration(config) {\r\n this.drawDefaultContent = this.drawNoDisplayOverflowContent;\r\n\r\n if (Array.isArray(config)) {\r\n for (let i = 0; i < config.length; i++) {\r\n this.addConfiguration(config[i]);\r\n }\r\n } else if (config) {\r\n this.addConfiguration(config);\r\n }\r\n this.initialized(config);\r\n }\r\n\r\n initialized(config) {}\r\n\r\n // noinspection JSUnusedLocalSymbols\r\n getTooltipProperties(obj, ctx) {\r\n return [];\r\n }\r\n\r\n getTooltip(parentNode, obj, ctx) {\r\n parentNode.style.display = 'flex';\r\n parentNode.style.flexDirection = 'column';\r\n /* const tooltipContent = document.createElement('div');\r\n tooltipContent.className = 'gantt-tooltip-content';\r\n tooltipContent.style.display = 'flex';\r\n tooltipContent.style.flexFlow = 'column'; */\r\n if (this.getText) {\r\n const title = document.createElement('h2');\r\n title.appendChild(document.createTextNode(this.getText(obj, ctx)));\r\n title.style.display = 'block';\r\n title.style.flex = '0 0 auto';\r\n parentNode.appendChild(title);\r\n }\r\n const props = this.getTooltipProperties(obj, ctx);\r\n const tableCtnr = document.createElement('div');\r\n tableCtnr.style.overflow = 'auto';\r\n tableCtnr.style.display = 'block';\r\n tableCtnr.style.flexShrink = '1';\r\n tableCtnr.style.flexGrow = '1';\r\n const table = document.createElement('table');\r\n const body = document.createElement('tbody');\r\n let tr;\r\n let td;\r\n for (let iProp = 0, count = props.length; iProp < count; ) {\r\n tr = document.createElement('tr');\r\n td = document.createElement('td');\r\n td.className = 'tooltip-key';\r\n td.appendChild(document.createTextNode(props[iProp++]));\r\n tr.appendChild(td);\r\n\r\n td = document.createElement('td');\r\n td.className = 'tooltip-table-separator';\r\n tr.appendChild(td);\r\n\r\n td = document.createElement('td');\r\n td.className = 'tooltip-value';\r\n td.appendChild(document.createTextNode(props[iProp++]));\r\n tr.appendChild(td);\r\n body.appendChild(tr);\r\n }\r\n table.appendChild(body);\r\n tableCtnr.appendChild(table);\r\n parentNode.appendChild(tableCtnr);\r\n // tooltipContent.appendChild(tableCtnr);\r\n // parentNode.appendChild(tooltipContent);\r\n }\r\n}\r\n\r\nGantt.components.Renderer.impl = Renderer;\r\n","import Gantt from '../core/core';\r\n\r\nfunction updateTimeWindow(wnd, activity) {\r\n if (activity.start && wnd.start > activity.start) {\r\n wnd.start = activity.start;\r\n }\r\n if (activity.end && wnd.end < activity.end) {\r\n wnd.end = activity.end;\r\n }\r\n return activity;\r\n}\r\n\r\nconst ConstraintPrototype = {\r\n isDisplayed() {\r\n return this.nodes !== null;\r\n },\r\n\r\n clearLink() {\r\n this.nodes = null;\r\n },\r\n\r\n setNodes(nodes) {\r\n this.nodes = nodes;\r\n },\r\n};\r\n\r\nexport default class GanttModel extends Gantt.components.GanttModel {\r\n constructor(gantt, config) {\r\n super(gantt, config);\r\n }\r\n\r\n setConfiguration(config) {\r\n this.destroy();\r\n const ftchClass = Gantt.components.DataFetcher.impl || Gantt.components.DataFetcher;\r\n let fetchConfig;\r\n const checkFetcher = (fetcher, type) => {\r\n if (!fetcher.get) {\r\n throw new Error(\r\n `Could not configure data for ${type}. Probably a configuration issue with key(s) ${Object.keys(fetcher).join(\r\n ','\r\n )}`\r\n );\r\n }\r\n };\r\n this.dateParser = null;\r\n if (config.dateFormat) {\r\n try {\r\n this.dateParser = Gantt.utils.createDateParser(config.dateFormat);\r\n } catch (err) {\r\n throw new Error(`Could not process date format ${config.dateFormat}: ${err}`);\r\n }\r\n }\r\n const makeTimeFct = fct => {\r\n if (this.dateParser) {\r\n let final;\r\n return obj => {\r\n if (!final) {\r\n const value = fct(obj);\r\n if (Gantt.utils.isString(value)) {\r\n final = obj => this.dateParser(fct(obj));\r\n return this.dateParser(value);\r\n }\r\n final = fct;\r\n return value;\r\n }\r\n return final(obj);\r\n };\r\n }\r\n return fct;\r\n };\r\n\r\n this.allFetcher = null;\r\n if ((fetchConfig = config.all)) {\r\n this.allFetcher = new ftchClass(\r\n fetchConfig,\r\n ['reader', 'resources', 'activities', 'reservations', 'constraints'],\r\n { gantt: this.gantt }\r\n );\r\n checkFetcher(this.allFetcher, 'all');\r\n this.allFetcher._reader =\r\n fetchConfig.reader && Gantt.utils.isFunction(fetchConfig.reader)\r\n ? fetchConfig.reader\r\n : function(data) {\r\n return fetchConfig.reader;\r\n };\r\n this.allFetcher._resourcesGetter = fetchConfig.resources && Gantt.utils.propertyEvaluator(fetchConfig.resources);\r\n this.allFetcher._activitiesGetter =\r\n fetchConfig.activities && Gantt.utils.propertyEvaluator(fetchConfig.activities);\r\n this.allFetcher._reservationsGetter =\r\n fetchConfig.reservations && Gantt.utils.propertyEvaluator(fetchConfig.reservations);\r\n this.allFetcher._constraintsGetter =\r\n fetchConfig.constraints && Gantt.utils.propertyEvaluator(fetchConfig.constraints);\r\n }\r\n\r\n this.resourceFetcher = null;\r\n if ((fetchConfig = config.resources)) {\r\n this.resourceFetcher = new ftchClass(fetchConfig, ['id', 'parent', 'name', 'activities'], { gantt: this.gantt });\r\n checkFetcher(this.resourceFetcher, 'resources');\r\n if (fetchConfig.parent) {\r\n this.resourceFetcher._parentIdGetter = Gantt.utils.propertyEvaluator(fetchConfig.parent || 'parentId');\r\n }\r\n this.resourceFetcher._idGetter = Gantt.utils.propertyEvaluator(fetchConfig.id || 'id');\r\n this.resourceFetcher._nameGetter =\r\n (fetchConfig.name && Gantt.utils.propertyEvaluator(fetchConfig.name)) || this.resourceFetcher._idGetter;\r\n if (fetchConfig.activities) {\r\n this.resourceFetcher._activityGetter = Gantt.utils.propertyEvaluator(fetchConfig.activities);\r\n }\r\n }\r\n\r\n if ((fetchConfig = config.activities)) {\r\n // Do no not create an activity getter if activities are provided along with the resources\r\n this.activityFetcher =\r\n (this.resourceFetcher && this.resourceFetcher._activityGetter && {}) ||\r\n new ftchClass(fetchConfig, ['id', 'parent', 'name', 'start', 'end', 'resource'], { gantt: this.gantt });\r\n if (!this.resourceFetcher || !this.resourceFetcher._activityGetter) {\r\n checkFetcher(this.activityFetcher, 'activities');\r\n }\r\n if (fetchConfig.parent) {\r\n this.activityFetcher._parentIdGetter = Gantt.utils.propertyEvaluator(fetchConfig.parent || 'parentId');\r\n }\r\n this.activityFetcher._idGetter = Gantt.utils.propertyEvaluator(fetchConfig.id || 'id');\r\n this.activityFetcher._nameGetter =\r\n (fetchConfig.name && Gantt.utils.propertyEvaluator(fetchConfig.name)) || this.activityFetcher._idGetter;\r\n this.activityFetcher._startGetter = makeTimeFct(Gantt.utils.propertyEvaluator(fetchConfig.start || 'start'));\r\n this.activityFetcher._endGetter = makeTimeFct(Gantt.utils.propertyEvaluator(fetchConfig.end || 'end'));\r\n if (fetchConfig.resource) {\r\n this.activityFetcher._resourceIdGetter = Gantt.utils.propertyEvaluator(fetchConfig.resource);\r\n }\r\n }\r\n\r\n if ((fetchConfig = config.reservations)) {\r\n this.reservationFetcher = new ftchClass(fetchConfig, ['activity', 'resource'], { gantt: this.gantt });\r\n checkFetcher(this.reservationFetcher, 'reservations');\r\n // noinspection JSUnresolvedVariable\r\n this.reservationFetcher._activityGetter = Gantt.utils.propertyEvaluator(fetchConfig.activity || 'activity');\r\n this.reservationFetcher._resourceGetter = Gantt.utils.propertyEvaluator(fetchConfig.resource || 'resource');\r\n }\r\n\r\n if ((fetchConfig = config.constraints)) {\r\n this.constraintFetcher = new ftchClass(fetchConfig, ['from', 'to', 'type'], { gantt: this.gantt });\r\n checkFetcher(this.constraintFetcher, 'constraints');\r\n this.constraintFetcher._fromGetter = Gantt.utils.propertyEvaluator(fetchConfig.from || 'from');\r\n // noinspection JSUnresolvedVariable\r\n this.constraintFetcher._toGetter = Gantt.utils.propertyEvaluator(fetchConfig.to || 'to');\r\n this.constraintFetcher._typeGetter = Gantt.utils.propertyEvaluator(fetchConfig.type || 'type');\r\n this.constraintFetcher._idGetter = (fetchConfig.id && Gantt.utils.propertyEvaluator(fetchConfig.id)) || null;\r\n }\r\n\r\n if ((fetchConfig = config.timeWindow)) {\r\n this.timeWindowFetcher = new ftchClass(fetchConfig, null, { gantt: this.gantt });\r\n checkFetcher(this.timeWindowFetcher, 'timeWindow');\r\n this.timeWindowFetcher._startGetter = makeTimeFct(Gantt.utils.propertyEvaluator(fetchConfig.start || 'start'));\r\n this.timeWindowFetcher._endGetter = makeTimeFct(Gantt.utils.propertyEvaluator(fetchConfig.end || 'end'));\r\n }\r\n }\r\n\r\n load(config) {\r\n if (config) {\r\n this.destroy();\r\n this.setConfiguration(config);\r\n }\r\n\r\n this.allData = null;\r\n if (this.allFetcher) {\r\n return this.allFetcher.get().then(data => this.loadFromData(data));\r\n }\r\n return this.loadFromData();\r\n }\r\n\r\n loadFromData(data /* May be null */) {\r\n let actPromise;\r\n let resaPromise;\r\n let resourcePromise;\r\n let consPromise;\r\n this.activities = [];\r\n this.activities.byIds = {};\r\n this.rows = [];\r\n this.constraints = [];\r\n this.constraints.byIds = {};\r\n this.resources = [];\r\n this.resources.byIds = {};\r\n this.reservations = [];\r\n this.reservations.byIds = {};\r\n this.timeWindow = null;\r\n this.flat = true;\r\n\r\n let wnd;\r\n let wndPromise;\r\n if (this.timeWindowFetcher) {\r\n wndPromise = this.timeWindowFetcher.get(data).then(obj => ({\r\n start: this.timeWindowFetcher._startGetter(obj),\r\n end: this.timeWindowFetcher._endGetter(obj),\r\n }));\r\n } else {\r\n // If time window not provided with a specified data fetcher, we compute it.\r\n wnd = { start: Number.MAX_VALUE, end: 0 } || null;\r\n }\r\n\r\n const resourceGantt = this.gantt.isResourceGantt();\r\n if (!this.resourceFetcher && !this.activityFetcher) {\r\n if (resourceGantt) resourcePromise = Promise.resolve([]);\r\n else actPromise = Promise.resolve([]);\r\n } else {\r\n let timeWindowProcessed = !!wndPromise;\r\n if (this.resourceFetcher) {\r\n resourcePromise = this.resourceFetcher.get(data).then(resources => {\r\n // Compute here the time window only if this is resource chart with activities provided along with resources\r\n const computeTimeWindow = !timeWindowProcessed && (resourceGantt && this.resourceFetcher._activityGetter);\r\n this.resources = this.createTreeNodes(resources, this.resourceFetcher, false, computeTimeWindow && wnd);\r\n timeWindowProcessed = timeWindowProcessed || computeTimeWindow;\r\n return this.resources;\r\n });\r\n }\r\n\r\n if (this.activityFetcher && (!resourceGantt || !this.resourceFetcher || !this.resourceFetcher._activityGetter)) {\r\n actPromise = this.activityFetcher.get(data).then(activities => {\r\n // Compute here the time window only if a time window fetcher was not specified\r\n this.activities = this.createTreeNodes(activities, this.activityFetcher, true, !timeWindowProcessed && wnd);\r\n return this.activities;\r\n });\r\n }\r\n\r\n if (this.reservationFetcher) {\r\n resaPromise = this.reservationFetcher.get(data);\r\n }\r\n\r\n if (this.constraintFetcher) {\r\n consPromise = this.constraintFetcher.get(data);\r\n }\r\n }\r\n\r\n return Promise.all([resourcePromise, actPromise, resaPromise, consPromise, wndPromise]).then(\r\n ([resources, activities, resas, cons, wndResult]) => {\r\n // If assigning activities to resources through a resource ID getter on activities\r\n if (this.activityFetcher && this.activityFetcher._resourceIdGetter) {\r\n this.createReservationsFromActivityResources(resourceGantt ? this.resources.byIds : this.activities.byIds);\r\n }\r\n if (resas && resas.length) {\r\n this.createReservations(resas);\r\n }\r\n if (cons && cons.length) {\r\n this.createConstraints(cons);\r\n }\r\n wndResult = wndResult || wnd;\r\n if (!wndResult.end && resourceGantt && activities && activities.length) {\r\n // Gantt without reservations, process time window from unused activities\r\n wndResult.start = activities[0].start;\r\n wndResult.end = activities[0].end;\r\n for (let i = activities.length - 1; i; i--) {\r\n updateTimeWindow(wndResult, activities[i]);\r\n }\r\n }\r\n if (wndResult.end) {\r\n this.timeWindow = { start: wndResult.start, end: wndResult.end };\r\n this.triggerEvent(Gantt.events.TIME_WINDOW_CHANGED, this.timeWindow);\r\n }\r\n return (this.rows = resourceGantt ? resources : activities);\r\n }\r\n );\r\n }\r\n\r\n createReservations(data) {\r\n this.reservations = [];\r\n this.reservations.byIds = {};\r\n if (!data || data.length === 0) {\r\n return;\r\n }\r\n const resByIds = this.resources.byIds;\r\n const actByIds = this.activities.byIds;\r\n const resIdGetter = this.reservationFetcher._resourceGetter;\r\n const actIdGetter = this.reservationFetcher._activityGetter;\r\n for (let i = 0, resId, res, actId, act, len = data.length, resa; i < len; ++i) {\r\n resa = data[i];\r\n resId = resIdGetter(resa);\r\n if ((resId || resId === 0) && (res = resByIds[resId])) {\r\n actId = actIdGetter(resa);\r\n if ((actId || actId === 0) && (act = actByIds[actId])) {\r\n (res.activities || (res.activities = [])).push((resa = this.createReservationNode(act, res)));\r\n this.reservations.push(resa);\r\n if (resa.id) {\r\n this.reservations.byIds[resa.id] = resa;\r\n }\r\n } else if (actId) {\r\n console.error(`Cannot find activity \"${actId}\" for reservation ${JSON.stringify(resa)}`);\r\n } else {\r\n console.error(`No activity specified for reservation ${JSON.stringify(resa)}`);\r\n }\r\n } else if (resId || resId === 0) {\r\n console.error(`Cannot find resource \"${resId}\" for reservation ${JSON.stringify(resa)}`);\r\n } else {\r\n console.error(`No resource specified for reservation ${JSON.stringify(resa)}`);\r\n }\r\n }\r\n }\r\n\r\n createReservationsFromActivityResources(rowByIds) {\r\n const resGetter = this.activityFetcher._resourceIdGetter;\r\n for (let i = 0, resId, res, len = this.activities.length, actNode; i < len; ++i) {\r\n resId = resGetter((actNode = this.activities[i]).getData());\r\n if (resId || resId === 0) {\r\n if ((res = rowByIds[resId])) {\r\n (res.activities || (res.activities = [])).push(this.createReservationNode(actNode, res));\r\n } else {\r\n console.error(`Cannot find resource \"${resId}\" for activity ${JSON.stringify(actNode.getData())}`);\r\n }\r\n } else {\r\n console.error(`No resource specified for activity ${JSON.stringify(actNode.getData())}`);\r\n }\r\n }\r\n }\r\n\r\n createConstraints(data) {\r\n const len = data.length;\r\n const consNodes = new Array(len);\r\n consNodes.byIds = {};\r\n for (let i = 0, node; i < len; ++i) {\r\n consNodes[i] = node = this.createConstraintNode(data[i], this.activities, i);\r\n consNodes.byIds[node.id] = node;\r\n }\r\n return (this.constraints = consNodes);\r\n }\r\n\r\n isResourceGanttModel() {\r\n return !!this.resourceFetcher;\r\n }\r\n\r\n isFlat() {\r\n return this.flat;\r\n }\r\n\r\n createActivityNode(activity) {\r\n const node = Object.create(activity);\r\n node.id = this.activityFetcher._idGetter(activity);\r\n node.name = this.activityFetcher._nameGetter(activity);\r\n node.start = this.activityFetcher._startGetter(activity);\r\n node.end = this.activityFetcher._endGetter(activity);\r\n node.getData = function() {\r\n return activity;\r\n };\r\n node.gantt = this.gantt;\r\n node.getObjectType = function() {\r\n return Gantt.ObjectTypes.Activity;\r\n };\r\n return node;\r\n }\r\n\r\n createReservationNode(activity, row) {\r\n const node = Object.create(activity);\r\n node.row = row;\r\n node.gantt = this.gantt;\r\n node.getObjectType = function() {\r\n return Gantt.ObjectTypes.Activity;\r\n }; // No reservation type as for now an activity acts as a reservation as the copy objects points to a row\r\n return node;\r\n }\r\n\r\n createConstraintNode(cons, activities, index) {\r\n let id = this.constraintFetcher._fromGetter(cons);\r\n if (!id) {\r\n throw `No from activity specified for the constraint ${JSON.stringify(cons)}`;\r\n }\r\n const from = activities.byIds[id];\r\n if (!from) {\r\n throw `No activity could be found with the ID ${id}for constraint ${JSON.stringify(cons)}`;\r\n }\r\n\r\n id = this.constraintFetcher._toGetter(cons);\r\n if (!id) {\r\n throw `No to activity specified for the constraint ${JSON.stringify(cons)}`;\r\n }\r\n const to = activities.byIds[id];\r\n if (!to) {\r\n throw `No activity could be found with the ID ${id}for constraint ${JSON.stringify(cons)}`;\r\n }\r\n const node = Object.create(cons, ConstraintPrototype);\r\n node.from = from;\r\n node.to = to;\r\n node.type = this.constraintFetcher._typeGetter(cons);\r\n node.gantt = this.gantt;\r\n node.getData = function() {\r\n return cons;\r\n };\r\n node.id = this.constraintFetcher._idGetter ? this.constraintFetcher._idGetter(cons) : `cons_${index}`;\r\n if (!from.consOuts) from.consOuts = [node];\r\n else from.consOuts.push(node);\r\n if (!to.consIns) to.consIns = [node];\r\n else to.consIns.push(node);\r\n node.getObjectType = function() {\r\n return Gantt.ObjectTypes.Constraint;\r\n };\r\n return node;\r\n }\r\n\r\n createTreeNode(id, data) {\r\n const row = Object.create(data);\r\n\r\n row.id = id;\r\n row.gantt = this.gantt;\r\n row.getData = function() {\r\n return data;\r\n };\r\n row.hasAncestor = function(node) {\r\n for (let p = row.parent; p; p = p.parent) {\r\n if (p === node) {\r\n return true;\r\n }\r\n }\r\n return true;\r\n };\r\n\r\n row.getAncestorsCount = function() {\r\n let count = 0;\r\n for (let { parent } = row; parent; parent = parent.parent) {\r\n count++;\r\n }\r\n return count;\r\n };\r\n\r\n row.setRowHeight = function(row, h) {};\r\n\r\n row.isGanttRow = function() {\r\n return true;\r\n };\r\n return row;\r\n }\r\n\r\n createTreeNodes(data, rowFetcher, isActivity, wnd) {\r\n const result = new Array(data.length);\r\n const byIds = (result.byIds = {});\r\n const children = {};\r\n let row;\r\n let origData;\r\n let parentId;\r\n let arr;\r\n let i;\r\n let resultIndex;\r\n let id;\r\n let activities;\r\n let iAct;\r\n let len;\r\n const roots = [];\r\n\r\n const allActivities = this.activities;\r\n let actNode;\r\n let startGetter;\r\n let endGetter;\r\n let actsGetter;\r\n let act;\r\n if (isActivity || (actsGetter = rowFetcher._activityGetter)) {\r\n startGetter = this.activityFetcher._startGetter;\r\n endGetter = this.activityFetcher._endGetter;\r\n }\r\n\r\n /* function sortNodes(a, b) {\r\n // Put child nodes with children first\r\n const aChildren = children[a.id], bChildren = children[b.id];\r\n return aChildren && aChildren.length\r\n ? (bChildren && bChildren.length? 0 : -1) : (bChildren && bChildren.length? 1 : 0)\r\n } */\r\n\r\n function addNode(node, parentNode) {\r\n result[resultIndex++] = node;\r\n node.parent = parentNode;\r\n // const childNodes = children[node.id].sort(sortNodes);\r\n const childNodes = children[node.id];\r\n node.children = childNodes;\r\n const childCount = childNodes.length;\r\n for (let iChild = 0; iChild < childCount; ++iChild) {\r\n addNode(childNodes[iChild], node);\r\n }\r\n if (isActivity && childCount && (!node.start || !node.end)) {\r\n if (!node.start) {\r\n node.start = childNodes[0].start;\r\n }\r\n if (!node.end) {\r\n node.end = childNodes[0].end;\r\n }\r\n for (let iChild = 1; iChild < childCount; ++iChild) {\r\n updateTimeWindow(node, childNodes[iChild]);\r\n }\r\n }\r\n if (wnd && isActivity) {\r\n updateTimeWindow(wnd, node);\r\n }\r\n }\r\n\r\n const idGetter = rowFetcher._idGetter;\r\n const nameGetter = rowFetcher._nameGetter;\r\n const parentIdGetter = rowFetcher._parentIdGetter;\r\n\r\n for (i = 0, len = data.length; i < len; ++i) {\r\n origData = data[i];\r\n parentId = parentIdGetter ? parentIdGetter(origData) : null;\r\n id = idGetter(origData);\r\n row = this.createTreeNode(id, origData, children[id]);\r\n if (!children[id]) {\r\n children[id] = [];\r\n }\r\n if (nameGetter) {\r\n row.name = nameGetter(origData);\r\n }\r\n if (isActivity) {\r\n row.start = rowFetcher._startGetter(origData);\r\n row.end = rowFetcher._endGetter(origData);\r\n row.activities = [row];\r\n row.getObjectType = function() {\r\n return Gantt.ObjectTypes.Activity;\r\n };\r\n } else {\r\n row.getObjectType = function() {\r\n return Gantt.ObjectTypes.Resource;\r\n };\r\n }\r\n\r\n // Process the time window\r\n if (wnd) {\r\n if (!isActivity) {\r\n activities = actsGetter(origData);\r\n if (activities) {\r\n row.activities = new Array(activities.length);\r\n for (iAct = 0; iAct < activities.length; ++iAct) {\r\n actNode = this.createActivityNode((act = activities[iAct]));\r\n allActivities.push(actNode);\r\n if (actNode.id) {\r\n allActivities.byIds[actNode.id] = actNode;\r\n }\r\n row.activities[iAct] = this.createReservationNode(updateTimeWindow(wnd, actNode), row);\r\n }\r\n } else {\r\n row.activities = [];\r\n }\r\n } else {\r\n // We are defining an activity chart, rows are activities\r\n updateTimeWindow(wnd, row);\r\n }\r\n }\r\n byIds[id] = row;\r\n if (parentId || parentId === 0) {\r\n arr = children[parentId];\r\n if (!arr) {\r\n children[parentId] = [row];\r\n } else {\r\n arr.push(row);\r\n }\r\n } else {\r\n roots.push(row);\r\n }\r\n }\r\n if (this.gantt.isResourceGantt() !== isActivity) {\r\n this.flat = roots.length === data.length;\r\n }\r\n for (i = 0, len = roots.length, resultIndex = 0; i < len; ++i) {\r\n addNode(roots[i]);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n destroy() {\r\n if (this.allFetcher && this.allFetcher.destroy) {\r\n this.allFetcher.destroy();\r\n }\r\n this.allFetcher = null;\r\n if (this.resourceFetcher && this.resourceFetcher.destroy) {\r\n this.resourceFetcher.destroy();\r\n }\r\n this.resourceFetcher = null;\r\n this.resources = null;\r\n\r\n if (this.activityFetcher && this.activityFetcher.destroy) {\r\n this.activityFetcher.destroy();\r\n }\r\n this.activityFetcher = null;\r\n this.activities = null;\r\n\r\n if (this.reservationFetcher && this.reservationFetcher.destroy) {\r\n this.reservationFetcher.destroy();\r\n }\r\n this.reservationFetcher = null;\r\n this.reservations = null;\r\n\r\n if (this.constraintFetcher && this.constraintFetcher.destroy) {\r\n this.constraintFetcher.destroy();\r\n }\r\n this.constraintFetcher = null;\r\n this.constraints = null;\r\n\r\n if (this.timeWindowFetcher && this.timeWindowFetcher.destroy) {\r\n this.timeWindowFetcher.destroy();\r\n }\r\n this.timeWindowFetcher = null;\r\n this.timeWindow = null;\r\n }\r\n\r\n getActivity(param) {\r\n if (Gantt.utils.isString(param)) {\r\n return this.activities && this.activities.byIds[param];\r\n }\r\n if (this.activities) {\r\n for (let i = 0, count = this.activities.length; i < count; ++i) {\r\n if (this.activities[i].getData() === param) {\r\n return this.activities[i];\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n}\r\n\r\nGantt.components.GanttModel = GanttModel;\r\n","import Gantt from '../core/core';\r\n\r\nexport default class LoadResourceChartCtrl {\r\n constructor(gantt, visible, config) {\r\n this.gantt = gantt;\r\n this.visible = visible;\r\n this.loadCharts = [];\r\n\r\n const selectionHandler = gantt.selection;\r\n const ctlr = this;\r\n selectionHandler.on(Gantt.events.ROW_SELECTION_CHANGED, (e, sels) => {\r\n // Selections array is sorted from the last selected object to the first.\r\n // To keep the same colors associated with the resources when changing\r\n // the selection (Ctrl + Click),\r\n // we need to reverse this order so that the first selected object remains always\r\n // at the same array index.\r\n ctlr.setResources(sels.concat([]).reverse());\r\n });\r\n selectionHandler.on(Gantt.events.ROW_UNSELECTED, (e, sels) => this.unselectRows(sels, this.visible));\r\n selectionHandler.on(Gantt.events.ROW_SELECTION_CLEARED, (e, sels) => this.unselectRows(sels, this.visible));\r\n\r\n this.layoutSynch = this.gantt.synchLayout({\r\n timeTableBoundsChanged(bounds) {\r\n ctlr.loadCharts.forEach(loadChart =>\r\n loadChart.setTimeLineBounds(ctlr.layoutSynch.convertBounds(bounds, loadChart.getTimeLineNode))\r\n );\r\n },\r\n timeWindowChanged(start, end) {\r\n ctlr.timeWindowChanged(start, end);\r\n },\r\n timeLineSizeChanged(width) {\r\n ctlr.loadCharts.forEach(loadChart => loadChart.setTimeLineWidth(width));\r\n },\r\n timeLineInitialized() {},\r\n timeLineScrolled(x) {\r\n ctlr.loadCharts.forEach(loadChart => loadChart.setTimeLineScrollLeft(x));\r\n },\r\n });\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {\r\n const RendererClass = Gantt.components.Renderer.impl || Gantt.components.Renderer;\r\n this.resourceRenderer = new RendererClass(\r\n Gantt.utils.mergeObjects(\r\n {\r\n background: {\r\n getValue: res => this.resources.indexOf(res),\r\n },\r\n },\r\n config && config.renderer\r\n ),\r\n {},\r\n this.gantt\r\n );\r\n }\r\n\r\n getRowBackground(row) {\r\n return row.backgroundColor;\r\n }\r\n\r\n addLoadResourceChart(loadChart) {\r\n this.loadCharts.push(loadChart);\r\n loadChart.setResourceRenderer(this.resourceRenderer);\r\n }\r\n\r\n addChildResources(resources, a) {\r\n for (let i = 0, res; i < resources.length; i++) {\r\n res = resources[i];\r\n a.push(res);\r\n if (res.children) {\r\n this.addChildResources(res.children, a);\r\n }\r\n }\r\n return a;\r\n }\r\n\r\n setVisible(visible) {\r\n if (this.visible !== visible) {\r\n this.visible = visible;\r\n this.loadCharts.forEach(loadChart => loadChart.setVisible(visible));\r\n if (this.visible) {\r\n if (this.savedTimeW) {\r\n const { start, end } = this.savedTimeW;\r\n delete this.savedTimeW;\r\n this.setTimeWindow(start, end, () => {\r\n if (this.resources && this.resources.length) {\r\n this.setResources(this.resources); // Forces a row redraw\r\n }\r\n });\r\n } else if (this.resources && this.resources.length) {\r\n this.setResources(this.resources); // Forces a row redraw\r\n }\r\n if (this.savedScrollLeft) {\r\n const left = this.savedScrollLeft;\r\n delete this.savedScrollLeft;\r\n this.setScrollLeft(left);\r\n }\r\n } else if (this.resources && this.resources.length) {\r\n this.unselectRows(this.resources, true);\r\n }\r\n }\r\n }\r\n\r\n isVisible() {\r\n return this.visible;\r\n }\r\n\r\n timeWindowChanged(start, end) {\r\n if (!this.visible) {\r\n this.savedTimeW = { start, end };\r\n } else {\r\n this.setTimeWindow(start, end);\r\n }\r\n }\r\n\r\n setTimeWindow(start, end, onInit) {\r\n this.loadCharts.forEach(loadChart => loadChart.setTimeWindow(start, end, onInit));\r\n }\r\n\r\n timeTableXScrolled(left) {\r\n if (!this.visible) {\r\n this.savedScrollLeft = left;\r\n } else this.setScrollLeft(left);\r\n }\r\n\r\n setScrollLeft(left) {\r\n this.loadCharts.forEach(loadChart => loadChart.setScrollLeft(left));\r\n }\r\n\r\n setResources(resources) {\r\n const allRes = this.addChildResources(resources, []);\r\n this.resources = allRes;\r\n if (this.visible) {\r\n for (let i = 0, count = allRes.length, res; i < count; i++) {\r\n res = allRes[i];\r\n res.backgroundColor = this.visible && this.resourceRenderer.background(res);\r\n }\r\n this.gantt.drawRows(this.resources);\r\n this.loadCharts.forEach(loadChart => {\r\n loadChart.setResources(allRes);\r\n loadChart.draw();\r\n });\r\n }\r\n }\r\n\r\n unselectRows(rows, redraw) {\r\n const all = [];\r\n const unselectDeep = ar => {\r\n ar.forEach(row => {\r\n all.push(row);\r\n row.backgroundColor = undefined;\r\n if (row.children) {\r\n unselectDeep(row.children);\r\n }\r\n });\r\n };\r\n unselectDeep(rows);\r\n if (redraw) {\r\n this.gantt.drawRows(all);\r\n }\r\n }\r\n\r\n destroy() {\r\n if (this.layoutSynch) {\r\n this.layoutSynch.disconnect();\r\n this.layoutSynch = null;\r\n }\r\n }\r\n}\r\n","export LoadResourceChartCtrl from './loadchartctrl';\r\nexport LoadResourceChart from './loadchart';\r\n\r\nexport const LOAD_RESOURCE_CHART_OPENED = 'load-resource-chart-opened';\r\nexport const LOAD_RESOURCE_CHART_CLOSED = 'load-resource-chart-closed';\r\nexport const GANTT_LOAD_RESOURCE_CHART = 'gantt-load-resource-chart';\r\n","import Gantt from './core';\r\n\r\nconst GanttStrings = {\r\n 'Gantt.MoveActivity': 'Move \"{name}\"',\r\n 'Gantt.ChangeActivityRow': 'Change \"{name}\" of row',\r\n 'timeLine.changeRowItem.fmt':\r\n '{title}
' +\r\n 'From row {start} ' +\r\n 'At date {startRow} ' +\r\n 'To row {current} ' +\r\n 'At date {currentRow} ' +\r\n '
',\r\n 'timeLine.newTimeItem.fmt':\r\n '{title}
' +\r\n 'From {start} ' +\r\n 'To {current} ' +\r\n '
',\r\n 'gantt.loading': 'Loading',\r\n 'gantt.error.details': 'Details',\r\n 'gantt.error.title.fmt': '{msg} : {title}',\r\n 'gantt.toolbar.mini.text': 'Mini',\r\n 'gantt.toolbar.minimize.text': 'Compact',\r\n 'gantt.toolbar.normal.text': 'Normal',\r\n 'gantt.toolbar.mini.tooltip': 'Change row height',\r\n 'gantt.toolbar.fit.tooltip': 'Fit',\r\n 'gantt.toolbar.refresh.text': 'Refresh',\r\n 'gantt.toolbar.refresh.tooltip': 'Refresh',\r\n 'gantt.toolbar.zoomIn.tooltip': 'Zoom In',\r\n 'gantt.toolbar.zoomOut.tooltip': 'Zoom Out',\r\n 'gantt.loadResourceChart.load.title': 'Load',\r\n 'gantt.loadResourceChart.show.tooltip': 'Show Load chart',\r\n 'gantt.loadResourceChart.hide.tooltip': 'Hide Load chart',\r\n 'gantt.loadResourceChart.noSelection.title': 'Select one or more resources to display in the load chart',\r\n 'gantt.constraintChart.from': 'From',\r\n 'gantt.constraintChart.to': 'To',\r\n 'gantt.constraintChart.type': 'Type',\r\n 'gantt.constraintChart.start.start': 'Start to Start',\r\n 'gantt.constraintChart.start.end': 'End to Start',\r\n 'gantt.constraintChart.end.end': 'End to End',\r\n 'gantt.constraintChart.end.start': 'End to Start',\r\n 'gantt.name': 'Name',\r\n 'gantt.id': 'Id',\r\n 'gantt.start': 'Start',\r\n 'gantt.end': 'End',\r\n 'gantt.datatables.empty-table': 'No data available in table',\r\n 'gantt.error.no-time-window-defined': 'No time window defined',\r\n 'gantt.columns': 'columns',\r\n 'gantt.treeTable': 'gantt tree table',\r\n};\r\n\r\nlet intl = {\r\n formatMessage: (m, v) => {\r\n let message = GanttStrings[m.id] || m.defaultMessage || m.id;\r\n if (v) {\r\n Object.entries(v).forEach(([key, value]) => {\r\n message = message.replace(`{${key}}`, value);\r\n });\r\n }\r\n return message;\r\n },\r\n};\r\n\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\r\nNumber.isInteger =\r\n Number.isInteger ||\r\n function(value) {\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n };\r\n\r\nGantt.utils = {\r\n defaultDateFormat: 'mmm d, hh:MM:ss TT',\r\n\r\n createDateParser(format) {\r\n let i = 0;\r\n const fmt = {};\r\n const year = 'year';\r\n const month = 'month';\r\n const day = 'day';\r\n const hour = 'hour';\r\n const min = 'min';\r\n const secs = 'secs';\r\n const millis = 'millis';\r\n const convertor = {\r\n yyyy: year,\r\n yy: year,\r\n y: year,\r\n M: month,\r\n MM: month,\r\n MMMM: month,\r\n d: day,\r\n dd: day,\r\n H: hour,\r\n HH: hour,\r\n m: min,\r\n mm: min,\r\n s: secs,\r\n ss: secs,\r\n S: millis,\r\n SS: millis,\r\n SSS: millis,\r\n };\r\n format.replace(/(yyyy|yy|y|MMMM|MM|M|dd|d|HH|H|mm|m|ss|s|SSS|SS|S)/g, function(part) {\r\n fmt[convertor[part]] = i++;\r\n });\r\n return function(s) {\r\n if (!s) return 0;\r\n const parts = s.match(/(\\d+)/g);\r\n return new Date(\r\n parts[fmt[year]],\r\n parts[fmt[month]] - 1,\r\n parts[fmt[day]],\r\n parts[fmt[hour]],\r\n parts[fmt[min]],\r\n parts[fmt[secs]]\r\n ).getTime();\r\n };\r\n },\r\n\r\n closest(elt, selector) {},\r\n\r\n mergeObjects(target) {\r\n if (!target) {\r\n target = {};\r\n }\r\n for (let i = 1, obj, prop; i < arguments.length; i++) {\r\n if ((obj = arguments[i])) {\r\n for (let j = 0, keys = Object.keys(obj); j < keys.length; j++) {\r\n prop = keys[j];\r\n target[prop] = obj[prop];\r\n }\r\n }\r\n }\r\n return target;\r\n },\r\n\r\n getChild(elt, tagname) {\r\n tagname = tagname ? tagname.toUpperCase() : null;\r\n for (let i = 0; i < elt.childNodes.length; i++) {\r\n if (!tagname || elt.childNodes[i].tagName.toUpperCase() === tagname) {\r\n return elt.childNodes[i];\r\n }\r\n }\r\n return null;\r\n },\r\n isArray(obj) {\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray\r\n if (!Array.isArray) {\r\n Array.isArray = function(arg) {\r\n return Object.prototype.toString.call(arg) === '[object Array]';\r\n };\r\n }\r\n return Array.isArray(obj);\r\n },\r\n isString(obj) {\r\n return typeof obj === 'string' || obj instanceof String;\r\n },\r\n isFunction(obj) {\r\n return typeof obj === 'function';\r\n },\r\n isDomElement(obj) {\r\n return obj.nodeType > 0;\r\n /* return (\r\n typeof HTMLElement === \"object\"\r\n ? o instanceof HTMLElement : o && typeof o === \"object\" && o !== null && o.nodeType === 1 && typeof o.nodeName===\"string\"\r\n ) */\r\n },\r\n hasClass(el, className) {\r\n if (el.classList) {\r\n return el.classList.contains(className);\r\n }\r\n if (el.className && el.className.match) {\r\n // Classname strings for SVG elements don't have some string methods including replace or match\r\n return !!el.className.match(new RegExp(`(\\\\s|^)${className}(\\\\s|$)`));\r\n }\r\n return false;\r\n },\r\n\r\n addClass(el, className) {\r\n if (el.classList) {\r\n el.classList.add(className);\r\n } else if (!this.hasClass(el, className)) {\r\n if (el.className) {\r\n el.className += ` ${className}`;\r\n } else {\r\n el.className = className;\r\n }\r\n }\r\n },\r\n removeClass(el, className) {\r\n if (el.classList) {\r\n el.classList.remove(className);\r\n } else if (this.hasClass(el, className)) {\r\n const reg = new RegExp(`(\\\\s|^)${className}(\\\\s|$)`);\r\n el.className = el.className.replace(reg, ' ');\r\n }\r\n },\r\n toggleClass(el, classname, set) {\r\n if (set === undefined) {\r\n if (this.hasClass(el, classname)) {\r\n this.removeClass(el, classname);\r\n } else {\r\n this.addClass(el, classname);\r\n }\r\n } else if (set) {\r\n this.addClass(el, classname);\r\n } else {\r\n this.removeClass(el, classname);\r\n }\r\n },\r\n html(node, htmlText) {\r\n throw new Error('Gantt.utils.html not supported');\r\n },\r\n walkToAncestor(parent, elt, cb, param) {\r\n function makeArrayMatcher(array) {\r\n return function(obj) {\r\n for (let i = 0; i < array.length; i++) {\r\n if (obj === array[i]) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n }\r\n const matcher =\r\n typeof parent === 'function'\r\n ? parent\r\n : this.isArray(parent)\r\n ? makeArrayMatcher(parent)\r\n : function(obj) {\r\n return parent === obj;\r\n };\r\n for (var p = elt, parentNode; (p && p !== document) || matcher(p); ) {\r\n if (matcher(p)) {\r\n return (param === undefined && p) || param;\r\n }\r\n parentNode = p.parentNode;\r\n if (parentNode === document && !matcher(document)) {\r\n return;\r\n }\r\n if (cb) {\r\n const result = cb(parentNode, p, param);\r\n if (result !== undefined) {\r\n param = result;\r\n }\r\n }\r\n p = parentNode;\r\n }\r\n },\r\n\r\n getWindowScrollLeft() {\r\n let t;\r\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect for this browser safe implementation of scrollLeft\r\n return (((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.scrollLeft === 'number'\r\n ? t\r\n : document.body\r\n ).scrollLeft;\r\n },\r\n\r\n getWindowScrollTop() {\r\n let t;\r\n // https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect for this browser safe implementation of scrollTop\r\n return (((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.scrollTop === 'number'\r\n ? t\r\n : document.body\r\n ).scrollTop;\r\n },\r\n\r\n getScreenPoint(elt, pt) {\r\n const bounds = elt.getBoundingClientRect();\r\n return {\r\n x: bounds.left + this.getWindowScrollLeft() + (pt ? pt.x : 0),\r\n y: bounds.top + this.getWindowScrollTop() + (pt ? pt.y : 0),\r\n };\r\n },\r\n\r\n getHeight(elt) {\r\n // In firefox, actual row heights can be non-integers, which results in elt.offsetHeight (integer)\r\n // being different from the actual display size, as the rounding done in the browser display and the one returned\r\n // from offsetHeight can different. A table row of height 32.5 is displayed with 32px and have its offsetHeight\r\n // returning 33...\r\n return elt.offsetHeight;\r\n },\r\n\r\n offsetParent(elt) {\r\n return elt.parentNode; // Should be the closest ancestor with positioned style (fixed, relative or absolute)\r\n },\r\n\r\n ajax(url, params) {},\r\n propertyEvaluator(path) {\r\n if (this.isFunction(path)) {\r\n return path;\r\n }\r\n const ar = path.split('.');\r\n if (ar.length > 1) {\r\n return function(obj) {\r\n for (let i = 0; obj && i < ar.length; i++) {\r\n obj = obj[ar[i]];\r\n }\r\n return obj;\r\n };\r\n }\r\n if (ar.length === 1) {\r\n return function(obj) {\r\n return obj[path];\r\n };\r\n }\r\n return function(obj) {\r\n return obj;\r\n };\r\n },\r\n stringMatches(s, search) {\r\n if (s && search) {\r\n const tmp = '' + s;\r\n return tmp.toLocaleLowerCase().indexOf(search.toLowerCase()) > -1;\r\n }\r\n return false;\r\n },\r\n getIntl() {\r\n return intl;\r\n },\r\n setIntl(nintl) {\r\n intl = nintl;\r\n },\r\n getString(key, defaultValue) {\r\n // return GanttStrings[key] || defaultValue || key;\r\n return this.getIntl().formatMessage({ id: key, defaultMessage: defaultValue });\r\n },\r\n formatString(tpl, obj) {\r\n // tpl = this.getString(tpl, tpl);\r\n // return tpl.replace(/\\{(\\w+)\\}/g, (_, key) => obj[key]);\r\n return this.getIntl().formatMessage({ id: tpl, defaultMessage: obj}, obj);\r\n },\r\n addEventListener(target, evt, cb, capture) {\r\n if (target.addEventListener) {\r\n target.addEventListener(evt, cb, capture);\r\n } else if (target.attachEvent) {\r\n target.attachEvent(`on${evt}`, cb);\r\n }\r\n },\r\n removeEventListener(target, evt, cb) {\r\n if (target.removeEventListener) {\r\n target.removeEventListener(evt, cb, false);\r\n } else if (target.detachEvent) {\r\n target.detachEvent(`on${evt}`, cb);\r\n }\r\n },\r\n\r\n implements(clazz) {\r\n for (let i = 1, count = arguments.length; i < count; i++) {\r\n const toImplement = arguments[i];\r\n for (const key in toImplement) {\r\n if (toImplement.hasOwnProperty(key)) {\r\n clazz[key] = toImplement[key];\r\n }\r\n }\r\n }\r\n return clazz;\r\n },\r\n\r\n detectIE() {\r\n // https://codepen.io/gapcode/pen/vEJNZN\r\n const ua = window.navigator.userAgent;\r\n\r\n // Test values; Uncomment to check result …\r\n\r\n // IE 10\r\n // ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';\r\n\r\n // IE 11\r\n // ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';\r\n\r\n // Edge 12 (Spartan)\r\n // ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';\r\n\r\n // Edge 13\r\n // ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';\r\n\r\n const msie = ua.indexOf('MSIE ');\r\n if (msie > 0) {\r\n // IE 10 or older => return version number\r\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\r\n }\r\n\r\n const trident = ua.indexOf('Trident/');\r\n if (trident > 0) {\r\n // IE 11 => return version number\r\n const rv = ua.indexOf('rv:');\r\n return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\r\n }\r\n\r\n const edge = ua.indexOf('Edge/');\r\n if (edge > 0) {\r\n // Edge (IE 12+) => return version number\r\n return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);\r\n }\r\n\r\n // other browser\r\n return false;\r\n },\r\n};\r\n\r\nGantt.utils.isInteger = Number.isInteger;\r\n\r\nGantt.utils.appendSVG = function(elt, cfg) {\r\n const svgElt = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\r\n // svgElt.setAttribute(\"viewBox\", \"0 0 \" + config.svg.width + \" \" + config.svg.height);\r\n svgElt.setAttribute('viewBox', cfg.viewBox);\r\n svgElt.style.x = '0';\r\n svgElt.style.y = '0';\r\n svgElt.style.width = `${cfg.width}px`;\r\n svgElt.style.height = `${cfg.height}px`;\r\n // Overrides the transformY(4px) from analytics CSS\r\n svgElt.style.webkitTransform = 'none';\r\n svgElt.style.transform = 'none';\r\n if (cfg.margin) {\r\n svgElt.style.margin = cfg.margin;\r\n } else {\r\n svgElt.style.margin = '0';\r\n }\r\n const paths = (Array.isArray(cfg.paths) && cfg.paths) || [cfg.paths];\r\n paths.forEach(p => {\r\n const pathElt = document.createElementNS('http://www.w3.org/2000/svg', 'path');\r\n pathElt.setAttribute('d', p);\r\n svgElt.appendChild(pathElt);\r\n });\r\n elt.appendChild(svgElt);\r\n};\r\n\r\n//\r\n// DataFetcher\r\n//\r\n/**\r\n * Utility class for accessing remote or local data\r\n * @\r\n * @param config Configuration for accessing data.\r\n * @constructor\r\n */\r\nclass DataFetcher {\r\n /**\r\n * Constructs a new data fetcher associated with specified context and parameterized with the provided\r\n * options.\r\n * @param config parameters describing the access to data.\r\n * @param privateFields (Array) list of fields to not take into account when parsing the configuration.\r\n * @param settings the settings object to provide contextual info to user's callbacks.\r\n */\r\n constructor(config, privateFields, settings) {\r\n const createEntry = (name, cfg) => {\r\n const ctx = config.context || config;\r\n const postProcess = data => {\r\n let p = (data && data.then && data) || Promise.resolve(data);\r\n if (config.success) {\r\n p = p.then(data => config.success.call(ctx, data, settings));\r\n }\r\n return p;\r\n };\r\n if (Gantt.utils.isFunction(cfg)) {\r\n this[name] = (...params) => {\r\n try {\r\n return cfg.apply(settings, params);\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n };\r\n } else if (config.url) {\r\n // make the ajax call\r\n const ajaxConfig = Gantt.utils.mergeObjects({ success: cfg.success, settings }, cfg.ajaxConfig);\r\n this[name] = () => Gantt.utils.ajax(cfg.url, ajaxConfig);\r\n } else if (Gantt.utils.isArray(config)) {\r\n this[name] = () => Promise.resolve(config);\r\n } else {\r\n const { data } = config;\r\n if (data) {\r\n if (Gantt.utils.isString(data)) {\r\n if (!ctx) {\r\n throw `No context defined for data fetcher ${name}`;\r\n }\r\n const propEval = Gantt.utils.propertyEvaluator(data);\r\n const fct = typeof ctx === 'function';\r\n this[name] = model => {\r\n model = model || (fct ? ctx() : ctx);\r\n if (model && model.then) {\r\n // Check if promise. See https://promisesaplus.com/#point-53\r\n return model.then(res => postProcess(propEval(res)));\r\n }\r\n return postProcess(propEval(model));\r\n };\r\n } else if (Gantt.utils.isFunction(data)) {\r\n const fct = typeof ctx === 'function';\r\n this[name] = model => {\r\n model = model || (fct ? ctx() : ctx);\r\n if (model && model.then) {\r\n // Check if promise. See https://promisesaplus.com/#point-53\r\n return model.then(res => postProcess(data.call(ctx, model)));\r\n }\r\n try {\r\n return postProcess(data.call(ctx, model));\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n };\r\n } else {\r\n this[name] = () => postProcess(data);\r\n }\r\n } else {\r\n throw `Data definition for ${JSON.stringify(\r\n config\r\n )} for '${name}' does not define ajax parameters nor static data`;\r\n }\r\n }\r\n };\r\n\r\n if (Gantt.utils.isFunction(config)) {\r\n createEntry('get', config, {});\r\n } else if (Gantt.utils.isArray(config)) {\r\n createEntry('get', config, {});\r\n } else {\r\n const defConfig = { context: settings };\r\n const entryConfigs = [];\r\n let useDefault;\r\n for (let i = 0, prop, keys = Object.keys(config); i < keys.length; i++) {\r\n prop = keys[i];\r\n if (prop === 'data' || prop === 'url' || prop === 'success' || prop === 'context' || prop === 'ajaxConfig') {\r\n defConfig[prop] = config[prop];\r\n useDefault = true;\r\n } else if (!privateFields || privateFields.indexOf(prop) < 0) {\r\n entryConfigs.push(prop);\r\n entryConfigs.push(config[prop]);\r\n }\r\n }\r\n\r\n for (let i = 0, prop; i < entryConfigs.length; ) {\r\n prop = entryConfigs[i++];\r\n createEntry(\r\n prop,\r\n (useDefault && Gantt.utils.mergeObjects({}, defConfig, entryConfigs[i++])) || entryConfigs[i++],\r\n defConfig\r\n );\r\n }\r\n if (!entryConfigs.length && useDefault) {\r\n createEntry('get', defConfig);\r\n }\r\n }\r\n }\r\n}\r\n\r\nGantt.components.DataFetcher.impl = DataFetcher;\r\n\r\n//\r\n// Tooltip\r\n//\r\n\r\n// See https://developer.mozilla.org/en-US/docs/Web/Events/wheel\r\nlet prefix = '';\r\nlet _addEventListener;\r\n\r\n// detect event model\r\nif (window.addEventListener) {\r\n _addEventListener = 'addEventListener';\r\n} else {\r\n _addEventListener = 'attachEvent';\r\n prefix = 'on';\r\n}\r\n\r\n// detect available wheel event\r\n// noinspection JSUnresolvedVariable\r\nconst support =\r\n 'onwheel' in document.createElement('div')\r\n ? 'wheel' // Modern browsers support \"wheel\"\r\n : document.onmousewheel !== undefined\r\n ? 'mousewheel' // Webkit and IE support at least \"mousewheel\"\r\n : 'DOMMouseScroll'; // let's assume that remaining browsers are older Firefox\r\n\r\nwindow.addWheelListener = function(elem, callback, useCapture) {\r\n _addWheelListener(elem, support, callback, useCapture);\r\n\r\n // handle MozMousePixelScroll in older Firefox\r\n if (support === 'DOMMouseScroll') {\r\n _addWheelListener(elem, 'MozMousePixelScroll', callback, useCapture);\r\n }\r\n};\r\n\r\nfunction _addWheelListener(elem, eventName, callback, useCapture) {\r\n elem[_addEventListener](\r\n prefix + eventName,\r\n support === 'wheel'\r\n ? callback\r\n : originalEvent => {\r\n !originalEvent && (originalEvent = window.event);\r\n\r\n // create a normalized event object\r\n const event = {\r\n // keep a ref to the original event object\r\n originalEvent,\r\n target: originalEvent.target || originalEvent.srcElement,\r\n type: 'wheel',\r\n deltaMode: originalEvent.type === 'MozMousePixelScroll' ? 0 : 1,\r\n deltaX: 0,\r\n deltaY: 0,\r\n deltaZ: 0,\r\n altKey: originalEvent.altKey,\r\n ctrlKey: originalEvent.ctrlKey,\r\n shiftKey: originalEvent.shiftKey,\r\n\r\n preventDefault() {\r\n originalEvent.preventDefault ? originalEvent.preventDefault() : (originalEvent.returnValue = false);\r\n },\r\n };\r\n\r\n // calculate deltaY (and deltaX) according to the event\r\n if (support === 'mousewheel') {\r\n event.deltaY = (-1 / 40) * originalEvent.wheelDelta;\r\n // Webkit also support wheelDeltaX\r\n // noinspection JSUnresolvedVariable\r\n originalEvent.wheelDeltaX && (event.deltaX = (-1 / 40) * originalEvent.wheelDeltaX);\r\n } else {\r\n event.deltaY = originalEvent.detail;\r\n }\r\n\r\n // it's time to fire the callback\r\n return callback(event);\r\n },\r\n useCapture || false\r\n );\r\n}\r\n\r\n/* */\r\n/* */\r\n/* Date formatting */\r\n/* */\r\n/* */\r\nvar dateFormat = (function() {\r\n const token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\\1?|[LloSZ]|\"[^\"]*\"|'[^']*'/g;\r\n const timezone = /\\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\\d{4})?)\\b/g;\r\n const timezoneClip = /[^-+\\dA-Z]/g;\r\n const pad = function(val, len) {\r\n val = String(val);\r\n len = len || 2;\r\n while (val.length < len) val = `0${val}`;\r\n return val;\r\n };\r\n\r\n // Regexes and supporting functions are cached through closure\r\n return function(date, mask, utc) {\r\n const dF = dateFormat;\r\n\r\n // You can't provide utc if you skip other args (use the \"UTC:\" mask prefix)\r\n if (arguments.length === 1 && Object.prototype.toString.call(date) === '[object String]' && !/\\d/.test(date)) {\r\n mask = date;\r\n date = undefined;\r\n }\r\n\r\n // Passing date through Date applies Date.parse, if necessary\r\n date = date ? new Date(date) : new Date();\r\n if (Number.isNaN(date)) throw SyntaxError('invalid date');\r\n\r\n mask = String(dF.masks[mask] || mask || dF.masks.default);\r\n\r\n // Allow setting the utc argument via the mask\r\n if (mask.slice(0, 4) === 'UTC:') {\r\n mask = mask.slice(4);\r\n utc = true;\r\n }\r\n\r\n const _ = utc ? 'getUTC' : 'get';\r\n const d = date[`${_}Date`]();\r\n const D = date[`${_}Day`]();\r\n const m = date[`${_}Month`]();\r\n const y = date[`${_}FullYear`]();\r\n const H = date[`${_}Hours`]();\r\n const M = date[`${_}Minutes`]();\r\n const s = date[`${_}Seconds`]();\r\n const L = date[`${_}Milliseconds`]();\r\n const o = utc ? 0 : date.getTimezoneOffset();\r\n const flags = {\r\n d,\r\n dd: pad(d),\r\n ddd: dF.i18n.dayNames[D],\r\n dddd: dF.i18n.dayNames[D + 7],\r\n m: m + 1,\r\n mm: pad(m + 1),\r\n mmm: dF.i18n.monthNames[m],\r\n mmmm: dF.i18n.monthNames[m + 12],\r\n yy: String(y).slice(2),\r\n yyyy: y,\r\n h: H % 12 || 12,\r\n hh: pad(H % 12 || 12),\r\n H,\r\n HH: pad(H),\r\n M,\r\n MM: pad(M),\r\n s,\r\n ss: pad(s),\r\n l: pad(L, 3),\r\n L: pad(L > 99 ? Math.round(L / 10) : L),\r\n t: H < 12 ? 'a' : 'p',\r\n tt: H < 12 ? 'am' : 'pm',\r\n T: H < 12 ? 'A' : 'P',\r\n TT: H < 12 ? 'AM' : 'PM',\r\n Z: utc ? 'UTC' : (String(date).match(timezone) || ['']).pop().replace(timezoneClip, ''),\r\n o: (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + (Math.abs(o) % 60), 4),\r\n S: ['th', 'st', 'nd', 'rd'][d % 10 > 3 ? 0 : (((d % 100) - (d % 10) !== 10) * d) % 10],\r\n };\r\n\r\n return mask.replace(token, function($0) {\r\n return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);\r\n });\r\n };\r\n})();\r\n\r\n// Some common format strings\r\ndateFormat.masks = {\r\n default: 'ddd mmm dd yyyy HH:MM:ss',\r\n shortDate: 'm/d/yy',\r\n mediumDate: 'mmm d, yyyy',\r\n longDate: 'mmmm d, yyyy',\r\n fullDate: 'dddd, mmmm d, yyyy',\r\n shortTime: 'h:MM TT',\r\n mediumTime: 'h:MM:ss TT',\r\n longTime: 'h:MM:ss TT Z',\r\n isoDate: 'yyyy-mm-dd',\r\n isoTime: 'HH:MM:ss',\r\n isoDateTime: \"yyyy-mm-dd'T'HH:MM:ss\",\r\n isoUtcDateTime: \"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'\",\r\n};\r\n\r\n// Internationalization strings\r\ndateFormat.i18n = {\r\n dayNames: [\r\n 'Sun',\r\n 'Mon',\r\n 'Tue',\r\n 'Wed',\r\n 'Thu',\r\n 'Fri',\r\n 'Sat',\r\n 'Sunday',\r\n 'Monday',\r\n 'Tuesday',\r\n 'Wednesday',\r\n 'Thursday',\r\n 'Friday',\r\n 'Saturday',\r\n ],\r\n monthNames: [\r\n 'Jan',\r\n 'Feb',\r\n 'Mar',\r\n 'Apr',\r\n 'May',\r\n 'Jun',\r\n 'Jul',\r\n 'Aug',\r\n 'Sep',\r\n 'Oct',\r\n 'Nov',\r\n 'Dec',\r\n 'January',\r\n 'February',\r\n 'March',\r\n 'April',\r\n 'May',\r\n 'June',\r\n 'July',\r\n 'August',\r\n 'September',\r\n 'October',\r\n 'November',\r\n 'December',\r\n ],\r\n};\r\n\r\n// For convenience...\r\nDate.prototype.format = function(mask, utc) {\r\n return dateFormat(this, mask || Gantt.utils.defaultDateFormat, utc);\r\n};\r\n\r\n//\r\n// Palette\r\n//\r\n\r\nclass Palette extends Gantt.components.Palette {\r\n constructor(config) {\r\n super(config);\r\n this.colorSet = null;\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {\r\n let maxColorsSize = -1;\r\n const addColorSet = (col, size) => {\r\n if (col.length >= maxColorsSize) {\r\n this.colorSet[size] = col;\r\n maxColorsSize = col.length;\r\n } else {\r\n const insert = size - 1;\r\n while (insert >= 0 && this.colorSet[insert].length < col.length) {\r\n this.colorSet[i] = this.colorSet[i - 1];\r\n }\r\n this.colorSet[insert === -1 ? 0 : insert] = col;\r\n }\r\n };\r\n\r\n const getColorsFromSet = count => {\r\n for (let index = 0, setCount = this.colorSet.length; index < setCount; ++index) {\r\n if (this.colorSet[index].length >= count) {\r\n return this.colorSet[index];\r\n }\r\n }\r\n return (this.colorSet.length && this.colorSet[this.colorSet.length - 1]) || null;\r\n };\r\n\r\n if (Gantt.utils.isArray(config)) {\r\n const count = config.length;\r\n if (count) {\r\n if (Gantt.utils.isArray(config[0])) {\r\n // If defining a set of color collections\r\n this.colorSet = new Array(count);\r\n // Sort color collections in this.colorSet from the lowest number of colors to the greatest.\r\n // Algo is optimized for case when receiving ordered array of color collections.\r\n for (let i = 0; i < count; i++) {\r\n addColorSet(config[i], i);\r\n }\r\n this._getColors = getColorsFromSet;\r\n } else {\r\n this.colors = config;\r\n this._getColors = () => this.colors;\r\n }\r\n } else {\r\n this._getColors = () => null;\r\n }\r\n } else if (Gantt.utils.isFunction(config)) {\r\n this._getColors = config;\r\n } else {\r\n const keys = Object.keys(config);\r\n const keyCount = keys.length;\r\n let size = 0;\r\n this.colorSet = new Array(keyCount);\r\n for (let i = 0, val; i < keyCount; ++i) {\r\n if (Gantt.utils.isArray((val = config[keys[i]]))) {\r\n addColorSet(val, size++);\r\n }\r\n }\r\n if (!size || size !== keyCount) {\r\n console.error(`Unkown palette configuration ${config}`);\r\n console.log(config);\r\n this._getColors = () => null;\r\n this.colorSet = null;\r\n } else {\r\n this._getColors = getColorsFromSet;\r\n }\r\n }\r\n }\r\n\r\n getColors(count) {\r\n function makeResult(ar) {\r\n const arLen = ar.length;\r\n if (count < 0 || arLen === count) return ar;\r\n if (arLen > count) return ar.slice(0, count);\r\n // Extremely bad temporary solution when number of required colors exceeds palette's size\r\n const result = new Array(count);\r\n for (let i = 0; i < count; ++i) {\r\n result[i] = ar[i % arLen];\r\n }\r\n return result;\r\n }\r\n const colors = this._getColors(count);\r\n return colors && makeResult(colors);\r\n }\r\n}\r\n\r\nGantt.components.Palette.impl = Palette;\r\n\r\nGantt.defaultPaletteName = 'qualitative20';\r\nGantt.defaultPalettes[Gantt.defaultPaletteName] = new Palette([\r\n // IBM colors. See http://www.ibm.com/design/language/framework/visual/color/\r\n // '#5AA8F8', '#FFA573', '#8CD211', '#EFC100', '#AF6EE8', '#FDE876', '#FF5050', '#00B29E', '#152935', '#4178BC', '#562F72', '#C8F08F', '#FF7832', '#FDD600'\r\n // '#325C80', '#2D660A', '#4178BE', '#4B8401', '#5596E6', '#5AA701', '#5AAAFA', '#8CD211', '#7CC7FF', '#B4E051', '#C0E6FF', '#C8F08F', '#1D3649', '#0A3C02'\r\n // '#6EB400', '#FF7832', '#BA8FF7', '#F0F2F4'\r\n // '#9655D2', '#FF71D2', '#D92780', '#FF7D85', '#FCFAFA'\r\n /* '#C0E6FF', '#7CC7FF', '#5AAAFA', '#5596E6', '#4178BE', '#325C80' */ // blue palette\r\n /* \"#a6cee3\", \"#1f78b4\", \"#b2df8a\", \"#33a02c\", \"#fb9a99\", \"#e31a1c\", \"#fdbf6f\", \"#ff7f00\", \"#cab2d6\", \"#6a3d9a\" // Brewer palette */\r\n // https://releases.fr.eurolabs.ibm.com/display/OS/Design+for+GANTT+CHART\r\n '#41D6C3',\r\n '#8CD211',\r\n '#5AAAFA',\r\n '#BA8FF7',\r\n '#00AE9A',\r\n '#5AA600',\r\n '#4178BE',\r\n '#9855D4',\r\n '#EFC100',\r\n '#FF7832',\r\n '#E71D32',\r\n '#325C80',\r\n '#AC8C00',\r\n '#D74108',\r\n '#AD1625',\r\n '#1D3649',\r\n '#FF71D4',\r\n '#DB2780',\r\n '#9D9393',\r\n '#645A5A',\r\n]);\r\n\r\nGantt.components.GanttPanel.prototype.utils = Gantt.utils;\r\n","import Gantt from '../core/core';\r\n\r\nimport './error.scss';\r\n\r\nconst defaults = {\r\n listClass: 'error-list fit-parent-content',\r\n maxErrors: 5,\r\n bodyClass: 'error-body clearfix',\r\n titleClass: 'error-title',\r\n barClass: 'error-bar',\r\n descClass: 'error-desc',\r\n detailsBtnClass: 'error-details-btn',\r\n removeBtnClass: 'remove-error-btn',\r\n errorExpandedDefault: true,\r\n fadingOutDuration: 600,\r\n};\r\n\r\nclass ErrorGroup {\r\n constructor(node) {\r\n this.node = node;\r\n this.errs = [];\r\n this.errNodes = [];\r\n this.errorList = null;\r\n }\r\n\r\n addError(err, node, maxErrors) {\r\n if (maxErrors && maxErrors > 0 && this.errs.length >= maxErrors) {\r\n this.errs.splice(0, this.errs.length - maxErrors + 1);\r\n const removed = this.errNodes.splice(0, this.errNodes.length - maxErrors + 1);\r\n removed.forEach(removedElt => {\r\n this.errorList.removeChild(removedElt);\r\n });\r\n }\r\n this.errs.push(err);\r\n this.errNodes.push(node);\r\n this.errorList.appendChild(node);\r\n return node;\r\n }\r\n\r\n removeError(err) {\r\n for (let i = 0; i < this.errs.length; i++) {\r\n if (this.errs[i] === err || this.errNodes[i] === err) {\r\n this.errs.splice(i, 1);\r\n const nodes = this.errNodes.splice(i, 1);\r\n if (nodes.length) {\r\n this.errorList.removeChild(nodes[0]);\r\n }\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n clear() {\r\n if (this.errorList && this.errorList.parentNode === this.node) {\r\n this.node.removeChild(this.errorList);\r\n }\r\n this.errs = [];\r\n this.errNodes = [];\r\n this.errorList = null;\r\n }\r\n\r\n updateErrorList() {\r\n if (this.errorList) {\r\n if (this.errs.length) {\r\n this.errorList.style.display = '';\r\n if (!this.errorList.parentNode) {\r\n this.beforeSettingErrorList(this.node);\r\n this.node.appendChild(this.errorList);\r\n }\r\n } else {\r\n this.errorList.style.display = 'none';\r\n }\r\n }\r\n }\r\n\r\n beforeSettingErrorList(node) {\r\n while (node.firstChild) {\r\n node.removeChild(node.firstChild);\r\n }\r\n }\r\n\r\n hasErrors() {\r\n return !!this.errs.length;\r\n }\r\n}\r\n\r\nfunction ensureErrorGroup(node, errorGroups) {\r\n for (let i = 0; i < errorGroups.length; i++) {\r\n if (errorGroups[i].node === node) {\r\n return errorGroups[i];\r\n }\r\n }\r\n const errorGroup = new ErrorGroup(node);\r\n errorGroups.push(errorGroup);\r\n return errorGroup;\r\n}\r\n\r\nexport default class ErrorHandler extends Gantt.components.ErrorHandler {\r\n constructor(node, config) {\r\n super(Gantt.utils.mergeObjects({}, defaults, config));\r\n this.node = node;\r\n this.lockCount = 0;\r\n this.errorGroups = [];\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n addError(err, msg, node) {\r\n if (!this.lockCount) {\r\n const errDetails = this.convertError(err, msg);\r\n const errNode = errDetails && this.createErrorNode(err, errDetails);\r\n if (errNode) {\r\n const errorGroup = ensureErrorGroup(node || this.node, this.errorGroups);\r\n if (!errorGroup.errorList) {\r\n errorGroup.errorList = this.createErrorList();\r\n }\r\n errorGroup.addError(err, errNode, this.config.maxErrors);\r\n errorGroup.updateErrorList();\r\n return errNode;\r\n }\r\n }\r\n }\r\n\r\n lock() {\r\n this.lockCount++;\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n unlock() {\r\n --this.lockCount;\r\n }\r\n\r\n getErrors() {\r\n let result = [];\r\n for (let iGroup = 0, count = this.errorGroups.length; iGroup < count; ++iGroup) {\r\n result = result.concat(this.errorGroups[iGroup].errs);\r\n }\r\n return result;\r\n }\r\n\r\n hasErrors() {\r\n for (let iGroup = 0, count = this.errorGroups.length; iGroup < count; ++iGroup) {\r\n if (this.errorGroups[iGroup].hasErrors()) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n createErrorList() {\r\n const lst = document.createElement('ul');\r\n lst.className = 'error-list';\r\n return lst;\r\n }\r\n\r\n createErrorNode(err, errDetails) {\r\n const node = document.createElement('li');\r\n node.className = (this.config.errorExpandedDefault && 'error-component error-expanded') || 'error-component';\r\n\r\n const errorContent = document.createElement('div');\r\n errorContent.className = 'error-content clearfix';\r\n\r\n const textContent = document.createElement('div');\r\n const divTitle = document.createElement('span');\r\n divTitle.innerHTML = errDetails.title;\r\n divTitle.className = 'error-title';\r\n divTitle.onclick = evt => this._toggleErrorDisplay(node);\r\n textContent.appendChild(divTitle);\r\n\r\n const divErrorBar = document.createElement('div');\r\n divErrorBar.className = 'error-bar';\r\n\r\n if (errDetails.desc) {\r\n const divDesc = document.createElement('div');\r\n divDesc.className = 'error-desc';\r\n divDesc.innerHTML = errDetails.desc;\r\n textContent.appendChild(divDesc);\r\n\r\n const detailsBtn = document.createElement('span');\r\n detailsBtn.tabIndex = 0;\r\n detailsBtn.className = 'error-details-btn';\r\n detailsBtn.innerHTML = Gantt.utils.getString('gantt.error.details');\r\n detailsBtn.onclick = evt => this._toggleErrorDisplay(node);\r\n divErrorBar.appendChild(detailsBtn);\r\n }\r\n\r\n // Remove error button\r\n const removeErrorBtn = document.createElement('span');\r\n removeErrorBtn.className = 'remove-error-btn';\r\n removeErrorBtn.tabIndex = 0;\r\n removeErrorBtn.onclick = evt => this.removeError(err);\r\n divErrorBar.appendChild(removeErrorBtn);\r\n\r\n errorContent.appendChild(divErrorBar);\r\n\r\n errorContent.appendChild(textContent); // Error the text div after the bar so that the bar remains top aligned with its container\r\n node.appendChild(errorContent);\r\n\r\n return node;\r\n }\r\n\r\n convertError(err, msg) {\r\n const c = this.config && this.config.convertError && this.config.convertError(err, msg);\r\n if (c) {\r\n return c;\r\n }\r\n if (Gantt.utils.isString(err)) {\r\n return {\r\n title: err,\r\n };\r\n }\r\n let title = err.message || err.status || err.statusCode;\r\n if (msg) {\r\n title = Gantt.utils.formatString('gantt.error.title.fmt', { msg, title });\r\n }\r\n let desc = err.desc || err.description || err.stack;\r\n if (desc) {\r\n desc = desc.replace(/(?:\\r\\n|\\r|\\n)/g, '
');\r\n }\r\n return {\r\n title,\r\n desc,\r\n };\r\n }\r\n\r\n _toggleErrorDisplay(errorNode) {\r\n Gantt.utils.toggleClass(errorNode, 'error-expanded');\r\n }\r\n\r\n removeError(err) {\r\n for (let iGroup = 0, count = this.errorGroups.length; iGroup < count; iGroup++) {\r\n if (this.errorGroups[iGroup].removeError(err)) {\r\n this.errorGroups[iGroup].updateErrorList();\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n removeGroup(node) {\r\n for (let iGroup = 0, count = this.errorGroups.length; iGroup < count; iGroup++) {\r\n if (this.errorGroups[iGroup].node === node) {\r\n this.errorGroups[iGroup].clear();\r\n this.errorGroups.splice(iGroup, 1);\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n\r\nGantt.components.ErrorHandler.impl = ErrorHandler;\r\n","import Gantt from './core';\r\n\r\nclass Filter {\r\n constructor(options) {\r\n this.filters = [];\r\n this.filterKeys = [];\r\n if (options) {\r\n if (Array.isArray(options)) {\r\n for (let i = 0; i < options.length; i++) {\r\n this.addFilter(options[i]);\r\n }\r\n } else {\r\n this.addFilter(options);\r\n }\r\n }\r\n }\r\n\r\n addFilter(filter) {\r\n const filterKey = filter;\r\n filter = this.createFilter(filter);\r\n if (filter) {\r\n this.filters.push(filter);\r\n this.filterKeys.push(filterKey);\r\n }\r\n return filter;\r\n }\r\n\r\n addOrFilters() {\r\n const params = new Array(arguments.length);\r\n for (let i = 0; i < arguments.length; i++) {\r\n params[i] = arguments[i];\r\n }\r\n const filter = this.createFilterSet(params, true);\r\n if (filter) {\r\n this.filters.push(filter);\r\n this.filterKeys.push(filter);\r\n }\r\n return filter;\r\n }\r\n\r\n addAndFilters() {\r\n const params = new Array(arguments.length);\r\n for (let i = 0; i < arguments.length; i++) {\r\n params[i] = arguments[i];\r\n }\r\n const filter = this.createFilterSet(params, false);\r\n if (filter) {\r\n this.filters.push(filter);\r\n this.filterKeys.push(filter);\r\n }\r\n return filter;\r\n }\r\n\r\n static get DEFAULT_FILTER_SET_MODE_OR() {\r\n return false;\r\n }\r\n\r\n createFilterSet() {\r\n if (!arguments.length) {\r\n return null;\r\n }\r\n let paramList;\r\n let orFilter;\r\n let i;\r\n let filter;\r\n if (Array.isArray(arguments[0])) {\r\n paramList = arguments[0];\r\n orFilter = arguments.length > 1 ? arguments[1] : this.DEFAULT_FILTER_SET_MODE_OR;\r\n } else {\r\n let copyLength;\r\n orFilter = arguments[arguments.length - 1];\r\n if (typeof orFilter !== 'boolean') {\r\n orFilter = this.DEFAULT_FILTER_SET_MODE_OR;\r\n copyLength = arguments.length;\r\n } else {\r\n copyLength = arguments.length - 1;\r\n }\r\n paramList = new Array(copyLength);\r\n for (i = 0; i < copyLength; i++) {\r\n paramList[i] = arguments[i];\r\n }\r\n }\r\n const filterList = [];\r\n for (i = 0; i < paramList.length; i++) {\r\n filter = this.createFilter(paramList[i]);\r\n if (filter) {\r\n filterList.push(filter);\r\n }\r\n }\r\n if (filterList.length) {\r\n filter = orFilter\r\n ? function(args) {\r\n for (let f = 0; f < filterList.length; f++) {\r\n if (filterList[f](args)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n : function(args) {\r\n for (let f = 0; f < filterList.length; f++) {\r\n if (!filterList[f](args)) {\r\n return false;\r\n }\r\n }\r\n };\r\n return filter;\r\n }\r\n return null;\r\n }\r\n\r\n removeFilter(filter) {\r\n let index = this.filters.indexOf(filter);\r\n if (index < 0) {\r\n index = this.filterKeys.indexOf(filter);\r\n }\r\n if (index > -1) {\r\n this.filters.splice(index, 1);\r\n this.filterKeys.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n createFilter(filter) {\r\n if (filter !== undefined) {\r\n const self = this;\r\n if (typeof filter === 'string') {\r\n return (\r\n (filter &&\r\n function() {\r\n const params = arguments[0];\r\n params.push(filter);\r\n const result = self.acceptString.apply(self, params);\r\n params.pop();\r\n return result;\r\n }) ||\r\n function() {\r\n return true;\r\n }\r\n );\r\n }\r\n if (typeof filter === 'function') {\r\n return function() {\r\n return filter.apply(self, arguments[0]);\r\n };\r\n }\r\n if (filter[this.getObjectFilterMethodName()]) {\r\n // Filter is an object with the appropriate filter method\r\n const fct = filter[this.getObjectFilterMethodName()];\r\n return function() {\r\n return fct.apply(filter, arguments[0]);\r\n };\r\n }\r\n if (filter.or) {\r\n return this.createFilterSet(filter.or, true);\r\n }\r\n if (filter.and) {\r\n return this.createFilterSet(filter.and, false);\r\n }\r\n\r\n console.log('Cannot process filter:');\r\n console.log(filter);\r\n } else {\r\n console.log('Null filter specified');\r\n }\r\n return null;\r\n }\r\n\r\n accept() {\r\n const params = [];\r\n let i;\r\n for (i = 0; i < arguments.length; i++) {\r\n params.push(arguments[i]);\r\n }\r\n\r\n for (i = 0; i < this.filters.length; i++) {\r\n if (!this.filters[i].call(this, params)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n setFilter(filter) {\r\n this.filters = [];\r\n this.filterKeys = [];\r\n const params = [];\r\n let i;\r\n for (i = 0; i < arguments.length; i++) {\r\n params.push(arguments[i]);\r\n }\r\n this.addFilter.apply(this, params);\r\n }\r\n\r\n stringMatches(string, pattern) {\r\n return string.indexOf(pattern) > -1;\r\n }\r\n\r\n acceptString(object, str) {}\r\n\r\n getObjectFilterMethodName() {\r\n return 'accept';\r\n }\r\n\r\n isEmpty() {\r\n return this.filters.length === 0;\r\n }\r\n}\r\n\r\nGantt.components.Filter.impl = Filter;\r\n\r\nexport default Filter;\r\n","import Gantt from './core';\r\n\r\nclass GanttUpdates extends Gantt.components.GanttUpdates {\r\n constructor(parent, proto) {\r\n super(parent);\r\n this.children = [];\r\n this.updates = [];\r\n this.updateLocks = 0;\r\n this._reload = false;\r\n if (parent) {\r\n parent.children.push(this);\r\n }\r\n if (proto) {\r\n Gantt.utils.mergeObjects(this, proto);\r\n }\r\n this._containsRowChanges = false;\r\n this._tableYScrollChanged = false;\r\n }\r\n\r\n reload() {\r\n this._reload = true;\r\n this._containsRowChanges = true;\r\n }\r\n\r\n isReload() {\r\n return this._reload || (this.parent && this.parent.isReload());\r\n }\r\n\r\n rowsChanged(event, rows, rowRef) {\r\n this.addUpdate({ type: event, rows, rowRef });\r\n this._containsRowChanges = true;\r\n }\r\n\r\n addUpdate(update) {\r\n this.updates.push(update);\r\n }\r\n\r\n removeUpdate(update) {\r\n const index = this.updates.indexOf(update);\r\n if (index >= 0) {\r\n this.updates.splice(index, 1);\r\n }\r\n\r\n for (let i = 0, count = this.children ? this.children.length : 0; i < count; i++) {\r\n this.children[i].removeUpdate(update);\r\n }\r\n }\r\n\r\n tableScrollYChanged() {\r\n this._tableYScrollChanged = true;\r\n }\r\n\r\n hasTableScrollYChanged() {\r\n return this._tableYScrollChanged || (this.parent && this.parent.hasTableScrollYChanged());\r\n }\r\n\r\n startUpdating() {\r\n ++this.updateLocks;\r\n }\r\n\r\n stopUpdating() {\r\n if (--this.updateLocks === 0) {\r\n this.applyUpdates();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n applyUpdates() {\r\n this.doApplyUpdates();\r\n this.updates = [];\r\n this._reload = false;\r\n for (let i = 0, count = this.children ? this.children.length : 0; i < count; i++) {\r\n this.children[i].applyUpdates();\r\n }\r\n this._containsRowChanges = false;\r\n }\r\n\r\n containsRowChanges() {\r\n return this._containsRowChanges || (this.parent && this.parent.containsRowChanges());\r\n }\r\n\r\n applyReload() {}\r\n\r\n doApplyUpdates() {\r\n if (this._reload) {\r\n this.applyReload();\r\n } else {\r\n for (let iUpdate = 0, count = this.updates.length; iUpdate < count; iUpdate++) {\r\n this.applyUpdate(this.updates[iUpdate]);\r\n }\r\n }\r\n }\r\n\r\n applyUpdate(update) {}\r\n\r\n destroy() {\r\n for (let i = 0, count = this.children ? this.children.length : 0; i < count; i++) {\r\n this.children[i].destroy();\r\n }\r\n this.children = null;\r\n }\r\n}\r\n\r\nGantt.components.GanttUpdates.impl = GanttUpdates;\r\n","/* eslint-disable */\r\n'use strict';\r\n\r\nimport Gantt from '../core/core';\r\n\r\nimport './toolbar.scss';\r\n\r\nvar idCount = 1;\r\n\r\nfunction makeId(prefix) {\r\n return prefix + idCount++;\r\n}\r\n\r\nvar checkClass;\r\nfunction Checkbox(gantt, config) {\r\n if (!checkClass) {\r\n checkClass = Gantt.components.CheckBox.impl || Gantt.components.CheckBox;\r\n }\r\n return new checkClass(gantt, config);\r\n}\r\n\r\nvar buttonClass;\r\nfunction Button(gantt, config) {\r\n if (!buttonClass) {\r\n buttonClass = Gantt.components.Button.impl || Gantt.components.Button;\r\n }\r\n return new buttonClass(gantt, config);\r\n}\r\n\r\nvar selectClass;\r\nfunction Select(gantt, config) {\r\n if (!selectClass) {\r\n selectClass = Gantt.components.DropDownList.impl || Gantt.components.DropDownList;\r\n }\r\n return new selectClass(gantt, config);\r\n}\r\n\r\nvar toggleClass;\r\nfunction Toggle(gantt, config) {\r\n if (!toggleClass) {\r\n toggleClass = Gantt.components.Toggle.impl || Gantt.components.Toggle;\r\n }\r\n return new toggleClass(gantt, config);\r\n}\r\n\r\nconst ToolbarComponents = {\r\n title: {\r\n node: function(parentElt, gantt) {\r\n const node = Gantt.components.Toolbar.createTitle(gantt.getTitle());\r\n gantt.on(Gantt.events.TITLE_CHANGED, (event, title) => {\r\n node.innerHTML = title;\r\n });\r\n return node;\r\n },\r\n\r\n justifyLeft: true,\r\n },\r\n separator: {\r\n node: function(parentElt) {\r\n const sep = document.createElement('div');\r\n sep.className = 'separator';\r\n return sep;\r\n },\r\n },\r\n whitespace: {\r\n node: function(parentElt) {\r\n const sep = document.createElement('div');\r\n sep.className = 'white-space';\r\n return sep;\r\n },\r\n },\r\n\r\n search: {\r\n component(gantt) {\r\n return new (Gantt.components.Input.impl || Gantt.components.Input)(gantt, {\r\n type: 'search',\r\n onchange: function(text) {\r\n gantt.search(text, true, true);\r\n },\r\n });\r\n },\r\n },\r\n mini: {\r\n component(gantt) {\r\n return new Toggle(gantt, {\r\n unselected: {\r\n /*text : Gantt.utils.getString('gantt.toolbar.minimize.text'),*/\r\n tooltip: Gantt.utils.getString('gantt.toolbar.mini.tooltip'),\r\n /*fontIcon : \"fa fa-compress fa-lg\"*/\r\n svg: {\r\n width: 20,\r\n height: 20,\r\n viewBox: '0 0 16 16',\r\n margin: '-6px 0 0 0 ',\r\n paths: ['M4 5h16v2H4zM4 9h16v2H4zM4 13h16v2H4zM4 17h16v2H4z'],\r\n },\r\n },\r\n selected: {\r\n /*fontIcon : \"fa fa-expand fa-lg\",*/\r\n /*text : Gantt.utils.getString('gantt.toolbar.normal.text'),*/\r\n tooltip: Gantt.utils.getString('gantt.toolbar.mini.tooltip'),\r\n svg: {\r\n width: 20,\r\n height: 20,\r\n viewBox: '0 0 24 24',\r\n margin: '-6px 0 0 0 ',\r\n paths: ['M4 5h16v2H4zM4 9h16v2H4zM4 13h16v2H4zM4 17h16v2H4z'],\r\n },\r\n },\r\n isSelected: function() {\r\n const ganttNode = gantt.getPanelNode();\r\n return Gantt.utils.hasClass(ganttNode, 'mini');\r\n },\r\n\r\n onclick: function() {\r\n const ganttNode = gantt.getPanelNode();\r\n Gantt.utils.toggleClass(ganttNode, 'mini');\r\n gantt.draw();\r\n },\r\n });\r\n },\r\n\r\n update(gantt, rows, comp) {\r\n const ganttNode = gantt.getPanelNode();\r\n comp.setChecked(Gantt.utils.hasClass(ganttNode, 'mini'));\r\n },\r\n /* template : \" \\\r\n \\\r\n \\\r\n \",*/\r\n },\r\n\r\n fitToContent: {\r\n component(gantt) {\r\n return Button(gantt, {\r\n /*fontIcon : 'fa fa-arrows fa-lg',*/\r\n // Edited with http://editor.method.ac/\r\n svg: {\r\n width: 20,\r\n height: 20,\r\n viewBox: '0 0 24 24',\r\n paths: [\r\n 'm9,3c3.309,0 6,2.691 6,6s-2.691,6 -6,6s-6,-2.691 -6,-6s2.691,-6 6,-6m0,-2a8,8 0 1 0 0,16a8,8 0 0 0 0,-16zm6,17l3,-3l5,5l-3,3l-5,-5z',\r\n 'm5.067202,10.936161l1.794565,-1.677985l-1.794565,-1.677997l1.025685,-0.958955l2.820467,2.636953l-2.820467,2.637771',\r\n 'm13.211615,7.601521l-1.74349,1.712784l1.74349,1.712783l-0.996386,0.979422l-2.739875,-2.692204l2.739875,-2.69241',\r\n ],\r\n },\r\n tooltip: Gantt.utils.getString('gantt.toolbar.fit.tooltip'),\r\n onclick: function() {\r\n gantt.fitToContent();\r\n },\r\n });\r\n },\r\n },\r\n\r\n refresh: {\r\n component(gantt) {\r\n return Button(gantt, {\r\n fontIcon: 'fa fa-refresh fa-lg',\r\n /*svg : {\r\n width: 24,\r\n height: 40,\r\n margin: '-6px 2px 0 0',\r\n viewBox : \"0 0 24 24\",\r\n paths: [\"M2 13.987c0-4.97 4.032-8.994 9-8.994h7l-2.5-2.506L17 1l5 4.987-5 5-1.5-1.5 2.5-2.5h-6.864c-3.867 0-7.136 3.133-7.136 7S7.146 21 11.013 21a7.034 7.034 0 0 0 5.185-2.29l1.478 1.348A9.067 9.067 0 0 1 11 23c-4.97 0-9-4.043-9-9.013z\"]\r\n },*/\r\n text: Gantt.utils.getString('gantt.toolbar.refresh.text'),\r\n tooltip: Gantt.utils.getString('gantt.toolbar.fit.tooltip'),\r\n onclick: function() {\r\n gantt.draw();\r\n },\r\n });\r\n },\r\n },\r\n\r\n zoomIn: {\r\n component(gantt) {\r\n return Button(gantt, {\r\n /*classes: 'zoom-in',*/\r\n /*fontIcon : 'fa fa-search-plus fa-lg',*/\r\n svg: {\r\n width: 20,\r\n height: 20,\r\n viewBox: '0 0 24 24',\r\n paths: [\r\n 'M9 1a8 8 0 1 0 0 16A8 8 0 0 0 9 1zm0 14c-3.309 0-6-2.691-6-6s2.691-6 6-6 6 2.691 6 6-2.691 6-6 6zM15 18l3-3 5 5-3 3z',\r\n 'M10 5H8v3H5v2h3v3h2v-3h3V8h-3z',\r\n ],\r\n },\r\n tooltip: Gantt.utils.getString('gantt.toolbar.zoomIn.tooltip'),\r\n onclick: function() {\r\n gantt.zoomIn();\r\n },\r\n });\r\n },\r\n },\r\n\r\n zoomOut: {\r\n component(gantt) {\r\n return Button(gantt, {\r\n /*classes: 'zoom-out',*/\r\n /*fontIcon : 'fa fa-search-minus fa-lg',*/\r\n svg: {\r\n width: 20,\r\n height: 20,\r\n /*margin: '-2px 0 0 0',*/\r\n viewBox: '0 0 24 24',\r\n paths: [\r\n 'M9 3c3.309 0 6 2.691 6 6s-2.691 6-6 6-6-2.691-6-6 2.691-6 6-6m0-2a8 8 0 1 0 0 16A8 8 0 0 0 9 1zM14.999 18l3-3 5 5-3 3z',\r\n 'M9 3c3.309 0 6 2.691 6 6s-2.691 6-6 6-6-2.691-6-6 2.691-6 6-6m0-2a8 8 0 1 0 0 16A8 8 0 0 0 9 1z',\r\n 'M5 8h8v2H5z',\r\n ],\r\n },\r\n tooltip: Gantt.utils.getString('gantt.toolbar.zoomOut.tooltip'),\r\n onclick: function() {\r\n gantt.zoomOut();\r\n },\r\n });\r\n },\r\n },\r\n\r\n toggleLoadChart: {\r\n component(gantt) {\r\n return new Toggle(gantt, {\r\n unselected: {\r\n classes: 'toggle-load-chart',\r\n fontIcon: 'fa fa-bar-chart fa-lg',\r\n tooltip: Gantt.utils.getString('gantt.loadResourceChart.show.tooltip'),\r\n },\r\n selected: {\r\n classes: 'toggle-load-chart selected',\r\n fontIcon: 'fa fa-bar-chart fa-lg',\r\n tooltip: Gantt.utils.getString('gantt.loadResourceChart.hide.tooltip'),\r\n },\r\n isSelected: function() {\r\n return gantt.isLoadChartVisible();\r\n },\r\n\r\n onclick: function() {\r\n gantt.toggleLoadChartVisible();\r\n },\r\n });\r\n },\r\n },\r\n};\r\n\r\nclass Toolbar extends Gantt.components.Toolbar {\r\n constructor(gantt, node, config) {\r\n super(gantt, node, config);\r\n }\r\n\r\n setConfiguration(config, toolbarNode) {\r\n this.components = [];\r\n let leftBar = null;\r\n\r\n function append(comp, handler) {\r\n if (handler.justifyLeft) {\r\n if (!leftBar) {\r\n leftBar = document.createElement('div');\r\n leftBar.style.display = 'flex';\r\n leftBar.style.flexDirection = 'row';\r\n leftBar.style.alignItems = 'center';\r\n leftBar.style.marginRight = 'auto';\r\n leftBar.className = 'left-toolbar-body';\r\n toolbarNode.appendChild(leftBar);\r\n }\r\n leftBar.appendChild(comp.node);\r\n } else {\r\n toolbarNode.appendChild(comp.node);\r\n }\r\n }\r\n for (let i = 0, count = config.length, cfgNode, handler, node, comp; i < count; i++) {\r\n cfgNode = config[i];\r\n if (Gantt.utils.isString(cfgNode)) {\r\n handler = ToolbarComponents[cfgNode];\r\n } else {\r\n handler = cfgNode;\r\n }\r\n\r\n if (!handler.node) {\r\n if (handler.component) {\r\n comp = handler.component(this.gantt, toolbarNode);\r\n if (comp.node && !comp.node.parentNode) {\r\n append(comp, handler);\r\n }\r\n } else if (handler.template) {\r\n comp = {\r\n id:\r\n handler.id !== undefined\r\n ? Gantt.utils.isFunction(handler.id)\r\n ? handler.id(handler)\r\n : handler.id\r\n : makeId(Gantt.utils.isString(cfgNode) ? cfgNode : 'toolbarComp'),\r\n };\r\n comp.node = document.createElement('div');\r\n let tpl = Gantt.utils.formatString(handler.template, comp);\r\n Gantt.utils.html(comp.node, tpl);\r\n append(comp, handler);\r\n } else if (handler.type) {\r\n if (handler.type === 'button') {\r\n comp = Button(this.gantt, handler);\r\n } else if (handler.type === 'checkbox') {\r\n comp = Checkbox(this.gantt, handler);\r\n } else if (handler.type === 'select') {\r\n comp = Select(this.gantt, handler);\r\n } else if (handler.type === 'buttonGroup') {\r\n comp = new (Gantt.components.ButtonGroup.impl || Gantt.components.ButtonGroup)(this.gantt, handler);\r\n } else if (handler.type === 'separator') {\r\n handler = ToolbarComponents.separator;\r\n comp = {};\r\n comp.node = handler.node(toolbarNode, this.gantt, comp);\r\n } else {\r\n throw new Error('Unknown toolbar component type: ' + config.type);\r\n }\r\n if (comp.node && !comp.node.parentNode) {\r\n append(comp, handler);\r\n }\r\n } else {\r\n throw new Error('a node property must be specified in a toolbar element: ' + cfgNode);\r\n }\r\n } else if (Gantt.utils.isString(handler.node)) {\r\n comp = { id: handler.node, node: document.getElementById(handler.node) };\r\n } else if (Gantt.utils.isFunction(handler.node)) {\r\n comp = {};\r\n comp.node = handler.node(toolbarNode, this.gantt, comp);\r\n append(comp, handler);\r\n } else {\r\n throw new Error(\r\n 'The node property of a toolbar element must be either a string ID or a function creating a Dom element'\r\n );\r\n }\r\n\r\n if (handler.id) {\r\n comp.setId(handler.id);\r\n }\r\n\r\n if (handler.connect) {\r\n handler.connect(comp.node, comp);\r\n }\r\n if (handler.update) {\r\n comp.update = (gantt, rows) => {\r\n handler.update(gantt, rows, comp);\r\n };\r\n }\r\n if (cfgNode.id) comp.id = cfgNode.id;\r\n this.components.push(comp);\r\n }\r\n this.initTooltip();\r\n }\r\n\r\n onInitialized() {\r\n this.components.forEach(c => {\r\n if (c.onInitialized) {\r\n c.onInitialized();\r\n }\r\n });\r\n }\r\n\r\n initTooltip() {\r\n const tooltbar = this;\r\n function getTooltipNode(elt) {\r\n for (; elt && elt !== tooltbar.node; elt = elt.parentNode) {\r\n // Can be called with an elt outside the toolbar\r\n if (elt.dataset && elt.dataset.tooltip) {\r\n return elt;\r\n }\r\n }\r\n }\r\n this.gantt.tooltip.installTooltip({\r\n // The container that contains elements to display tooltip for.\r\n container: this.node,\r\n // The container inside which bounds the tooltip can be displayed\r\n getTooltipDisplayContainer() {\r\n return tooltbar.gantt.getBody();\r\n },\r\n // Returns an element in the node hierarchy for which a tooltip can be displayed\r\n getTooltipElement(node) {\r\n return getTooltipNode(node);\r\n },\r\n renderTooltip(\r\n tooltipNode /* The element returned by getTooltipElement */,\r\n act /* data returned by getTooltipData for the specified tooltipElt */,\r\n tooltipCtnr /* The container of the tooltip to fill with info. */\r\n ) {\r\n tooltipCtnr.appendChild(document.createTextNode(tooltipNode.dataset.tooltip));\r\n },\r\n });\r\n }\r\n\r\n connect(gantt) {}\r\n\r\n ganttLoaded(gantt, rows) {\r\n for (let i = 0, count = this.components.length, comp; i < count; ++i) {\r\n comp = this.components[i];\r\n if (comp.update) {\r\n comp.update(gantt, rows);\r\n }\r\n }\r\n }\r\n\r\n destroy() {}\r\n}\r\n\r\nGantt.components.Toolbar.impl = Toolbar;\r\n\r\n/* */\r\n/* Toolbar components */\r\n/* */\r\n\r\nclass FlatCheckbox extends Gantt.components.CheckBox {\r\n constructor(gantt, config) {\r\n super(gantt, config);\r\n }\r\n\r\n setConfiguration(config) {\r\n const btn = document.createElement('div');\r\n if (config.id) {\r\n btn.id = config.id;\r\n }\r\n btn.className = 'button g-hoverable g-selectable' + (config.classes ? ' ' + config.classes : '');\r\n if (config.icon) {\r\n const img = document.createElement('img');\r\n img.src = config.icon;\r\n img.alt = '';\r\n btn.appendChild(img);\r\n }\r\n if (config.fontIcon) {\r\n const fontIcon = document.createElement('i');\r\n fontIcon.className = config.fontIcon + (config.text ? ' fa-fw' : '');\r\n btn.appendChild(fontIcon);\r\n }\r\n if (config.text) {\r\n btn.appendChild(document.createTextNode(config.text));\r\n }\r\n this.node = btn;\r\n btn.onclick = e => {\r\n Gantt.utils.toggleClass(btn, 'selected');\r\n if (config.onclick) {\r\n config.onclick(this.gantt);\r\n }\r\n };\r\n return btn;\r\n }\r\n}\r\n\r\nGantt.components.CheckBox.impl = FlatCheckbox;\r\n","import Gantt from './core';\r\n\r\nimport './tooltip.scss';\r\n\r\nconst ARROW_STYLE = 'gantt-tooltip-arrow';\r\nconst BOTTOM_ARROW_STYLE = 'bottom-arrow';\r\nconst TOP_ARROW_STYLE = 'top-arrow';\r\n\r\nclass Tooltip extends Gantt.components.Tooltip {\r\n constructor(options) {\r\n super(options);\r\n this._tooltip = document.createElement('div');\r\n this._tooltip.className = 'gantt-tooltip';\r\n this._tooltip.style.position = 'fixed';\r\n this._tooltip.style.visibility = 'hidden';\r\n\r\n // Cannot have the arrow defined in CSS as the arrow position on the tooltip varies.\r\n this._tooltipArrow = document.createElement('div');\r\n this._tooltipArrow.style.position = 'absolute';\r\n this._tooltipArrow.style.width = '0';\r\n this._tooltipArrow.style.height = '0';\r\n this._arrowHeight = 5;\r\n this._tooltip.appendChild(this._tooltipArrow);\r\n document.body.appendChild(this._tooltip);\r\n\r\n Gantt.utils.addEventListener(\r\n this._tooltip,\r\n 'mouseenter',\r\n evt => {\r\n if (this._hideTimer !== undefined) {\r\n clearTimeout(this._hideTimer);\r\n this._hideTimer = null;\r\n this._hidingElt = null;\r\n }\r\n },\r\n true\r\n ); // Capturing!\r\n Gantt.utils.addEventListener(\r\n this._tooltip,\r\n 'mouseleave',\r\n evt => {\r\n if (evt.target === this._tooltip) {\r\n this.hideTooltip(300);\r\n }\r\n },\r\n true\r\n ); // Capturing!*/\r\n }\r\n\r\n showTooltip(elt, ctx, cb) {\r\n if (elt === this._tooltipElt) return;\r\n if (this._hideTimer !== undefined) {\r\n clearTimeout(this._hideTimer);\r\n delete this._hideTimer;\r\n const hidingElt = this._hidingElt;\r\n this._hidingElt = null;\r\n if (hidingElt === elt) {\r\n return;\r\n }\r\n }\r\n // tooltip associated with same data is already showing.\r\n if (this._showTimer !== undefined) {\r\n if (this._tooltipElt === elt) {\r\n // tooltip associated with same data is about to show, do nothing\r\n return;\r\n }\r\n clearTimeout(this._showTimer);\r\n delete this._showTimer;\r\n this._tooltipElt = null;\r\n }\r\n this._tooltip.innerHTML = '';\r\n if (arguments.length === 2) {\r\n cb = ctx;\r\n ctx = null;\r\n }\r\n cb(this._tooltip);\r\n this._tooltip.style.visibility = 'hidden';\r\n this._tooltip.style.left = this._tooltip.style.top = 0; // If tooltip is a the right/bottom of the page, its processed sized can be cut, before display\r\n this._tooltip.style.maxHeight = 'none';\r\n const tooltipHeight = this._tooltip.offsetHeight + this._arrowHeight;\r\n\r\n const eltScreenPt = Gantt.utils.getScreenPoint(elt);\r\n\r\n // Process the limit bounds in which to display the tooltip\r\n let limits;\r\n if (ctx && ctx.limitElt) {\r\n const bounds = ctx.limitElt.getBoundingClientRect();\r\n const scrollLeft = Gantt.utils.getWindowScrollLeft();\r\n const scrollTop = Gantt.utils.getWindowScrollTop();\r\n limits = {\r\n x: Math.max(bounds.left + scrollLeft + (bounds.left < 0 ? bounds.lef : 0), 0),\r\n y: Math.max(bounds.top + scrollTop + (bounds.left < 0 ? bounds.lef : 0), 0),\r\n };\r\n // limits = Gantt.utils.getScreenPoint(ctx.limitElt);\r\n limits.width =\r\n Math.min(document.documentElement.clientWidth, bounds.right + scrollLeft) - Math.max(bounds.left, 0);\r\n limits.height =\r\n Math.min(document.documentElement.clientHeight, bounds.bottom + scrollTop) - Math.max(bounds.top, 0);\r\n } else {\r\n limits = { x: 0, y: 0, width: document.body.offsetWidth, height: document.body.offsetHeight };\r\n }\r\n\r\n // Display the tooltip at the top or the bottom of the specified element?\r\n // Prefer top\r\n let topAvailHeight;\r\n let bottomAvailHeight;\r\n let arrowStyle;\r\n let arrowPos;\r\n if (eltScreenPt.y - tooltipHeight >= limits.y) {\r\n eltScreenPt.y -= tooltipHeight;\r\n this._tooltip.style.maxHeight = 'none';\r\n arrowStyle = BOTTOM_ARROW_STYLE;\r\n }\r\n // Otherwise, if displaying the tooltip at the bottom works, go for it\r\n else if (eltScreenPt.y + tooltipHeight + elt.offsetHeight <= limits.y + limits.height) {\r\n eltScreenPt.y += elt.offsetHeight + this._arrowHeight;\r\n this._tooltip.style.maxHeight = 'none';\r\n arrowStyle = TOP_ARROW_STYLE;\r\n }\r\n // Otherwise, display on top if more space available on top\r\n else if (\r\n (topAvailHeight = eltScreenPt.y - limits.y) >\r\n (bottomAvailHeight = limits.y + limits.height - eltScreenPt.y - elt.offsetHeight)\r\n ) {\r\n eltScreenPt.y = limits.y;\r\n this._tooltip.style.maxHeight = `${topAvailHeight - this._arrowHeight}px`;\r\n arrowStyle = BOTTOM_ARROW_STYLE;\r\n }\r\n // Display at the bottom\r\n else {\r\n eltScreenPt.y += elt.offsetHeight + this._arrowHeight;\r\n this._tooltip.style.maxHeight = `${bottomAvailHeight - this._arrowHeight}px`;\r\n arrowStyle = TOP_ARROW_STYLE;\r\n }\r\n\r\n // Adjust horizontal position\r\n function adjustHorizontally(x, limitLeft, limitRight) {\r\n return Math.max(Math.min(x, limitRight), limitLeft);\r\n }\r\n const arrowMargin = 10; // Arrow cannot start at the left or right border of the tooltip because of the round border of the tooltip. Suggesting 10px as the minimum space from the tooltip border\r\n arrowPos = eltScreenPt.x + elt.offsetWidth / 2; // Ideal x screen position of the arrow\r\n if (limits.width <= this._tooltip.offsetWidth) {\r\n eltScreenPt.x = limits.x;\r\n this._tooltip.style.maxWidth = `${limits.width}px`;\r\n } else {\r\n eltScreenPt.x = adjustHorizontally(\r\n eltScreenPt.x + elt.offsetWidth / 2 - this._tooltip.offsetWidth / 2,\r\n limits.x,\r\n limits.x + limits.width - this._tooltip.offsetWidth\r\n );\r\n this._tooltip.style.maxWidth = 'none';\r\n }\r\n arrowPos = adjustHorizontally(arrowPos - eltScreenPt.x, arrowMargin, this._tooltip.offsetWidth - arrowMargin);\r\n this.setArrowPosition(arrowStyle, arrowPos);\r\n this._tooltip.appendChild(this._tooltipArrow); // Previously removed with innerHTML = '';\r\n this._tooltip.style.top = `${eltScreenPt.y}px`;\r\n this._tooltip.style.left = `${eltScreenPt.x}px`;\r\n this._tooltipElt = elt;\r\n if (ctx && ctx.showDelay) {\r\n this._showTimer = setTimeout(() => {\r\n delete this._showTimer;\r\n this._tooltip.style.visibility = 'visible';\r\n }, ctx.showDelay);\r\n } else {\r\n this._tooltip.style.visibility = 'visible';\r\n }\r\n }\r\n\r\n setArrowPosition(style, pos) {\r\n this._tooltipArrow.className = `${ARROW_STYLE} ${style}`;\r\n if (style === TOP_ARROW_STYLE) {\r\n // this._tooltipArrow.style.top = 0;\r\n this._tooltipArrow.style.left = `${pos}px`;\r\n } else if (style === BOTTOM_ARROW_STYLE) {\r\n // this._tooltipArrow.style.top = '100%';\r\n this._tooltipArrow.style.left = `${pos}px`;\r\n }\r\n }\r\n\r\n hideTooltip(millis, cb) {\r\n if (this._showTimer !== undefined) {\r\n clearTimeout(this._showTimer);\r\n this._tooltipElt = null;\r\n delete this._showTimer;\r\n // If about to show a tooltip, no tooltip to hide.\r\n return;\r\n }\r\n // If no tooltip shown, nothing to hide\r\n if (!this._tooltipElt) return;\r\n if (millis) {\r\n if (this._hideTimer) {\r\n return;\r\n }\r\n this._hideCB = cb;\r\n this._hidingElt = this._tooltipElt;\r\n this._hideTimer = setTimeout(() => {\r\n this._hideTimer = null;\r\n this._hidingElt = null;\r\n this._tooltipElt = null;\r\n if (this._hideCB) {\r\n this._hideCB();\r\n }\r\n this._hideCB = null;\r\n this._tooltip.style.display = 'none';\r\n }, millis);\r\n } else {\r\n if (cb) {\r\n cb();\r\n }\r\n this._tooltipElt = null;\r\n this._tooltip.style.display = 'none';\r\n }\r\n }\r\n\r\n installTooltip(config) {\r\n const TOOLTIP_FADING_TIME = 1000;\r\n const TOOLTIP_SHOWING_DELAY = 800;\r\n\r\n Gantt.utils.addEventListener(\r\n config.container,\r\n 'mouseenter',\r\n evt => {\r\n // console.log('Enter ' + printElement(evt.target) + ', relatedTarget: ' + (evt.relatedTarget && printElement(evt.relatedTarget) || 'none'));\r\n const tooltipNode = config.getTooltipElement(evt.target);\r\n if (tooltipNode) {\r\n const tooltipData = config.getTooltipData && config.getTooltipData(tooltipNode);\r\n if (config.enteringTooltipElement && config.enteringTooltipElement(tooltipNode, tooltipData) === false) {\r\n // During a drag n drop for example.\r\n return;\r\n }\r\n const ctx = {\r\n limitElt: (config.getTooltipDisplayContainer && config.getTooltipDisplayContainer()) || document.body,\r\n showDelay: TOOLTIP_SHOWING_DELAY,\r\n };\r\n // console.log(' show tooltip: ' + tooltipNode);\r\n this.showTooltip(tooltipNode, ctx, parent => {\r\n config.renderTooltip(tooltipNode, tooltipData, parent);\r\n });\r\n } else {\r\n this.hideTooltip(TOOLTIP_FADING_TIME);\r\n }\r\n },\r\n true\r\n );\r\n Gantt.utils.addEventListener(\r\n config.container,\r\n 'mouseleave',\r\n evt => {\r\n // console.log('Leave ' + printElement(evt.target) + ', relatedTarget: ' + (evt.relatedTarget && printElement(evt.relatedTarget) || 'none'));\r\n const tooltipNode = config.getTooltipElement(evt.target);\r\n if (tooltipNode) {\r\n if (this._tooltipElt === tooltipNode) {\r\n const tooltipData = config.getTooltipData && config.getTooltipData(tooltipNode);\r\n if (config.leavingTooltipElement && config.leavingTooltipElement(tooltipNode, tooltipData) === false) {\r\n // To leave displayed the tooltip after leaving the element we show the tooltip for.\r\n return;\r\n }\r\n if (evt.relatedTarget && config.getTooltipElement(evt.relatedTarget) === tooltipNode) {\r\n // If the element the mouse is moving in is still in the tooltip node, do nothing.\r\n return;\r\n }\r\n }\r\n // Otherwise hide the tooltip\r\n this.hideTooltip(TOOLTIP_FADING_TIME);\r\n }\r\n },\r\n true\r\n );\r\n }\r\n}\r\n\r\nGantt.components.Tooltip.impl = Tooltip;\r\n\r\nfunction printElement(elt) {\r\n return (\r\n elt.tagName +\r\n (elt.id ? `#${elt.id}` : '') +\r\n (elt.className && elt.className.replace ? `.${elt.className.replace(/ /g, '.')}` : '')\r\n );\r\n}\r\n","import Gantt from '../core/core';\r\n\r\nfunction sameBounds(rect1, rect2) {\r\n if (!rect1 || !rect2) {\r\n return !rect1 === !rect2;\r\n }\r\n return rect1.x === rect2.x && rect1.y === rect2.y && rect1.width === rect2.width && rect1.height === rect2.height;\r\n}\r\n\r\nfunction bounds(x, y, width, height) {\r\n return {\r\n x,\r\n y,\r\n width,\r\n height,\r\n toString() {\r\n return `{ x = ${this.x}, y = ${this.y}, width = ${this.width}, height = ${this.height} }`;\r\n },\r\n };\r\n}\r\n\r\nexport default class LayoutSynchronizer extends Gantt.components.LayoutSynchronizer {\r\n constructor(config, proto) {\r\n super(config, config);\r\n this.timeTableBounds = null;\r\n }\r\n\r\n setConfiguration(config) {\r\n if (config) {\r\n Gantt.utils.mergeObjects(this, config);\r\n }\r\n }\r\n\r\n connect(gantt) {\r\n this.gantt = gantt;\r\n this.resizeHandler = e => {\r\n this.checkBounds();\r\n };\r\n gantt.on([Gantt.events.RESIZED, Gantt.events.SPLIT_RESIZED], this.resizeHandler);\r\n\r\n this.timeWindowChangeListener = (e, start, end) => {\r\n this.timeWindowChanged(start, end);\r\n };\r\n gantt.on(Gantt.events.TIME_WINDOW_CHANGED, this.timeWindowChangeListener);\r\n\r\n this.timeLineSizeListener = (e, width, height) => {\r\n this.timeLineSizeChanged(width, height);\r\n };\r\n gantt.on(Gantt.events.TIME_LINE_SIZE_CHANGED, this.timeLineSizeListener);\r\n\r\n this.timeLineInitializedListener = e => {\r\n this.timeLineInitialized();\r\n };\r\n gantt.on(Gantt.events.TIME_LINE_INIT, this.timeLineInitializedListener);\r\n\r\n this.timeLineScrollListener = (e, x) => {\r\n this.timeLineScrolled(x);\r\n };\r\n gantt.on(Gantt.events.TIME_LINE_SCROLLED, this.timeLineScrollListener);\r\n }\r\n\r\n convertBounds(bounds, elt) {\r\n const parent = Gantt.utils.offsetParent(elt);\r\n const parentBounds = Gantt.utils.getScreenPoint(parent);\r\n parentBounds.x = bounds.x - parentBounds.x;\r\n parentBounds.y = bounds.y - parentBounds.y;\r\n parentBounds.width = bounds.width;\r\n parentBounds.height = bounds.height;\r\n return parentBounds;\r\n }\r\n\r\n //\r\n // Time line methods\r\n //\r\n\r\n getTimeLine() {\r\n return this.gantt.timeLine;\r\n }\r\n\r\n getTimeLineWidth() {\r\n return this.gantt.timeLine.getWidth();\r\n }\r\n\r\n getTimeLineHeight() {\r\n return this.gantt.timeLine.getTimeAxisHeight();\r\n }\r\n\r\n getTimeLineScrollLeft() {\r\n return this.gantt.timeTable.getScroller().scrollLeft;\r\n }\r\n\r\n getTimeAt(x) {\r\n return this.gantt.timeLine.getTimeAt(x);\r\n }\r\n\r\n timeLineInitialized() {}\r\n\r\n timeTableBoundsChanged(bounds) {}\r\n\r\n timeWindowChanged(start, end) {}\r\n\r\n timeLineSizeChanged(width, height) {}\r\n\r\n timeLineScrolled(x) {}\r\n\r\n checkBounds() {\r\n const newBounds = this.getScreenTimeTableScrollerBounds();\r\n if (newBounds) {\r\n if (!sameBounds(this.timeTableBounds, newBounds)) {\r\n this.timeTableBounds = newBounds;\r\n this.timeTableBoundsChanged(newBounds);\r\n }\r\n }\r\n }\r\n\r\n getScreenTimeTableScrollerBounds() {\r\n if (!this.gantt.timeTable) {\r\n // Called from first cycle of the Gantt initialization\r\n return null;\r\n }\r\n const timeTableScroller = this.gantt.timeTable.getScroller();\r\n const pt = Gantt.utils.getScreenPoint(timeTableScroller);\r\n return bounds(pt.x, pt.y, this.gantt.timeTable.getVisibleWidth(), this.gantt.timeTable.getVisibleHeight());\r\n }\r\n\r\n disconnect() {\r\n if (this.gantt) {\r\n this.gantt.off([Gantt.events.RESIZED, Gantt.events.SPLIT_RESIZED], this.resizeHandler);\r\n this.gantt.off(Gantt.events.TIME_WINDOW_CHANGED, this.timeWindowChangeListener);\r\n this.gantt.off(Gantt.events.TIME_LINE_SIZE_CHANGED, this.timeLineSizeListener);\r\n this.gantt.off(Gantt.events.TIME_LINE_INIT, this.timeLineInitializedListener);\r\n this.gantt.off(Gantt.events.TIME_LINE_SCROLLED, this.timeLineScrollListener);\r\n }\r\n }\r\n\r\n destroy() {}\r\n}\r\n\r\nGantt.components.LayoutSynchronizer.impl = LayoutSynchronizer;\r\n","import Gantt from '../core/core';\r\n\r\nimport {\r\n GANTT_LOAD_RESOURCE_CHART,\r\n LOAD_RESOURCE_CHART_CLOSED,\r\n LOAD_RESOURCE_CHART_OPENED,\r\n LoadResourceChart,\r\n LoadResourceChartCtrl,\r\n} from '../loadchart';\r\n\r\nimport '../core/utils';\r\nimport '../error';\r\nimport '../core/filter';\r\nimport '../core/updates';\r\nimport '../toolbar';\r\nimport '../core/tooltip';\r\nimport './layoutsynch';\r\nimport './ganttpanel.scss';\r\n\r\n/**\r\n * Gantt panel is structured as follows:\r\n *\r\n * \r\n * .gantt-panel\r\n * ------------------------------------------------------------------------------------------------------------\r\n * | Split pane |\r\n * | -------------------------------------------------------------------------------------------------------- |\r\n * | | .table-panel | .time-panel | |\r\n * | | ----------------- | ------------------------------------------------------------------------------- | |\r\n * | | | Table | | | .time-line-scroller .vertical-scroller-filler | | |\r\n * | | | ------------- | | | -------------------------------------------- ---------------------------- | | |\r\n * | | | | Header | | | | | Time Line | | | | | |\r\n * | | | ------------- | | | -------------------------------------------- ---------------------------- | | |\r\n * | | | | | | | | |\r\n * | | | | | | .time-table-scroller | | |\r\n * | | | ------------- | | | --------------------------------------------------------------------------- | | |\r\n * | | | | Body ^ | | | | | Time Table ^^ | | | |\r\n * | | | | : | | | | |< .............. timeTableWidthTester ...................................>| | | |\r\n * | | | | : | | | | | :: | | | |\r\n * | | | | : | | | | | timeTableHeightTester :: | | | |\r\n * | | | | : | | | | | :: | | | |\r\n * | | | | : | | | | | v: | | | |\r\n * | | ------------:-- | | ---------------------------------------------------------------------------:-- | | |\r\n * | --------------:----------------------------------------------------------------------------------:------ |\r\n * ----------------:----------------------------------------------------------------------------------:--------\r\n * : :\r\n * : Matches height of .time-table-body .time-table-body :\r\n * v v\r\n *
\r\n */\r\nclass GanttPanel extends Gantt.components.GanttPanel {\r\n constructor(node, config) {\r\n super(node, config);\r\n this.resizeHandler = () => this.onResize();\r\n this.initPromise = Gantt.envReady().then(() => this.setConfiguration(config));\r\n }\r\n\r\n setConfiguration(config) {\r\n if (this.splitPane) {\r\n this.destroy();\r\n }\r\n\r\n this.initializing = true;\r\n window.addEventListener('resize', this.resizeHandler);\r\n\r\n this.config = Gantt.utils.mergeObjects({}, Gantt.defaultConfiguration, config);\r\n\r\n // TODO\r\n this.rowHeight = this.config.rowHeight;\r\n this.zoomFactor = this.config.zoomFactor;\r\n\r\n if (this.tooltip && this.tooltip.destroy) {\r\n this.tooltip.destroy();\r\n }\r\n const TooltipClass = Gantt.components.Tooltip.impl || Gantt.components.Tooltip;\r\n this.tooltip = new TooltipClass(this.config.tooltip);\r\n\r\n if (this.config.title) {\r\n if (Gantt.utils.isFunction(this.config.title)) {\r\n this.title = this.config.title(this);\r\n } else {\r\n this.title = this.config.title;\r\n }\r\n } else this.title = null;\r\n\r\n const stringMatcher = Gantt.utils.stringMatches;\r\n const FilterClass = Gantt.components.Filter.impl || Gantt.components.Filter;\r\n this.rowFilter = Gantt.utils.mergeObjects(\r\n new FilterClass(this.config && this.config.rows && this.config.rows.filter),\r\n {\r\n stringMatches(string, pattern) {\r\n return stringMatcher(string, pattern);\r\n },\r\n getObjectFilterMethodName() {\r\n return 'acceptRow';\r\n },\r\n acceptString(row, columnData, rowIndex, text) {\r\n if (!text) {\r\n return true;\r\n }\r\n for (let col = 0; col < columnData.length; col++) {\r\n if (stringMatcher(columnData[col], text)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n }\r\n );\r\n this.activityFilter = Gantt.utils.mergeObjects(\r\n new FilterClass(this.config && this.config.tasks && this.config.tasks.filter),\r\n {\r\n stringMatches(string, pattern) {\r\n return stringMatcher(string, pattern);\r\n },\r\n getObjectFilterMethodName() {\r\n return 'acceptTask';\r\n },\r\n acceptString(activity, row, text) {\r\n const actName = activity.name;\r\n return !text || (actName && stringMatcher(actName, text));\r\n },\r\n }\r\n );\r\n if (this.config.table && this.config.table.hideEmptyRows) {\r\n this.setHideEmptyRows(true, true);\r\n }\r\n\r\n if (this.config.palette) {\r\n this.setPaletteConfiguration(this.config.palette);\r\n } else {\r\n this.palettes = {};\r\n this.defaultPalette = null;\r\n }\r\n\r\n const SelectionClass = Gantt.components.SelectionHandler.impl || Gantt.components.SelectionHandler;\r\n this.selectionHandler = new SelectionClass(this.config && this.config.selection, {\r\n setObjectSelected(obj, selected) {\r\n if (selected) {\r\n obj.selected = true;\r\n } else {\r\n delete obj.selected;\r\n }\r\n },\r\n });\r\n const actType = this.selectionHandler.registerType({\r\n name: 'activity',\r\n accept(o) {\r\n return o.getObjectType() === Gantt.ObjectTypes.Activity;\r\n },\r\n clearSelectionMethod: 'clearActivitySelection',\r\n selectionChangedMethod: 'activitySelectionChanged',\r\n unselectionMethod: 'unselectActivities',\r\n selectionMethod: 'selectActivities',\r\n });\r\n const resType = this.selectionHandler.registerType({\r\n name: 'resource',\r\n accept(o) {\r\n return o.getObjectType() === Gantt.ObjectTypes.Resource;\r\n },\r\n clearSelectionMethod: 'clearResourceSelection',\r\n selectionChangedMethod: 'resourceSelectionChanged',\r\n unselectionMethod: 'unselectResources',\r\n selectionMethod: 'selectResources',\r\n });\r\n this.selectionHandler.registerType({\r\n name: 'constraint',\r\n accept(o) {\r\n return o.getObjectType() === Gantt.ObjectTypes.Constraint;\r\n },\r\n clearSelectionMethod: 'clearConstraintSelection',\r\n selectionChangedMethod: 'constraintSelectionChanged',\r\n unselectionMethod: 'unselectConstraints',\r\n selectionMethod: 'selectConstraints',\r\n });\r\n this.selectionHandler.registerType({\r\n name: 'reservation',\r\n accept(o) {\r\n return o.getObjectType() === Gantt.ObjectTypes.Reservation;\r\n },\r\n clearSelectionMethod: 'clearReservationSelection',\r\n selectionChangedMethod: 'reservationSelectionChanged',\r\n unselectionMethod: 'unselectReservations',\r\n selectionMethod: 'selectReservations',\r\n });\r\n const rowType = this.selectionHandler.registerType({\r\n name: 'row',\r\n clearSelectionMethod: 'clearRowSelection',\r\n selectionChangedMethod: 'rowSelectionChanged',\r\n unselectionMethod: 'unselectRows',\r\n selectionMethod: 'selectRows',\r\n });\r\n\r\n this.type = (config && config.type) || Gantt.type.SCHEDULE_CHART;\r\n const rc = this.isResourceGantt();\r\n // Selection of objects that are rows for the Gantt chart (activities or resources) must generate row specific events\r\n const typeForRow = rc ? resType : actType;\r\n const defaultNotify = this.selectionHandler.notify;\r\n const handler = this.selectionHandler;\r\n this.selectionHandler.notify = function(type, event) {\r\n const args = new Array(arguments.length);\r\n for (let i = 0; i < arguments.length; i++) {\r\n args[i] = arguments[i];\r\n }\r\n defaultNotify.apply(handler, args);\r\n if (type === typeForRow) {\r\n args[0] = rowType;\r\n defaultNotify.apply(handler, args);\r\n }\r\n };\r\n\r\n const ErrorClass = Gantt.components.ErrorHandler.impl || Gantt.components.ErrorHandler;\r\n this.errorHandler = new ErrorClass(this.node, this.config && this.config.error);\r\n\r\n this.updates = new (Gantt.components.GanttUpdates.impl || Gantt.components.GanttUpdates)();\r\n const oldApplyUpdates = this.updates.applyUpdates;\r\n this.updates.applyUpdates = () => {\r\n const containsRowChanges = this.updates.containsRowChanges;\r\n oldApplyUpdates.call(this.updates);\r\n if (containsRowChanges) {\r\n // Time sheet scroller height depends on the height of the time sheet displays rows.\r\n // Call updateScrollerHeight without modifying the time sheet rows first has no effect\r\n this.updateScrollerHeight();\r\n }\r\n if (this.updates.hasTableScrollYChanged()) {\r\n const table = this.table && this.table.getScrollableTable();\r\n const scrollTop = table.scrollTop;\r\n this.timeTable.setScrollTop(scrollTop);\r\n }\r\n };\r\n\r\n this.model = null;\r\n // Create the Gantt\r\n try {\r\n this.create();\r\n } catch (err) {\r\n // Error already display in the Gantt\r\n return Promise.reject(err);\r\n }\r\n\r\n try {\r\n // Constructs the model, not loading it yet\r\n // Load data if specified in the configuration\r\n this.model = this.createModel(this.config.data || this.createDefaultModelConfig());\r\n this.initializing = false;\r\n this.triggerEvent(Gantt.events.RESIZED);\r\n return (this.model && this.load()) || Promise.resolve([]).then(() => this.updateScrollerHeight());\r\n } catch (err) {\r\n this.errorHandler.addError(err, 'Error initializing the Gantt');\r\n return Promise.reject(err);\r\n }\r\n }\r\n\r\n createDefaultModelConfig(config) {\r\n return {\r\n resources: { data: [] },\r\n activities: { data: [] },\r\n reservations: { data: [] },\r\n };\r\n }\r\n\r\n createModel(config) {\r\n const ModelClass = Gantt.components.GanttModel.impl || Gantt.components.GanttModel;\r\n const model = new ModelClass(this, config);\r\n model.on(Gantt.events.TIME_WINDOW_CHANGED, (event, wnd) => this.setTimeWindow(wnd));\r\n return model;\r\n }\r\n\r\n create() {\r\n const getLoadConfig = p => {\r\n const c = this.config.loadResourceChart;\r\n return Gantt.utils.isArray(c) ? (c.length ? c[0][p] : undefined) : c[p];\r\n };\r\n if (this.loadChartCtrl) {\r\n this.loadChartCtrl.destroy();\r\n delete this.loadChartCtrl;\r\n }\r\n const loadChartHidden = !this.config.loadResourceChart || !getLoadConfig('visible');\r\n this.loadChartCtrl = new LoadResourceChartCtrl(this, !loadChartHidden);\r\n\r\n this.contentElt = document.createElement('div');\r\n this.contentElt.className = 'gantt-panel docloud-gantt';\r\n if (this.config.loadResourceChart) {\r\n this.contentElt.className +=\r\n ' gantt-load-resource-chart ' + (loadChartHidden ? LOAD_RESOURCE_CHART_CLOSED : LOAD_RESOURCE_CHART_OPENED);\r\n }\r\n this.contentElt.style.position = 'relative';\r\n this.contentElt.style.display = 'flex';\r\n this.contentElt.style.flexDirection = 'column';\r\n this.contentElt.style.height = '100%';\r\n\r\n this.toolbars = null;\r\n if (this.config.toolbar) {\r\n this.createToolbars(this.config.toolbar);\r\n } else {\r\n this.toolbarElt = null;\r\n }\r\n\r\n if (this.config.classes) {\r\n Gantt.utils.addClass(this.contentElt, this.config.classes);\r\n }\r\n if (this.config.header) {\r\n this.headerElt = this.createHeader(this.config.header);\r\n if (this.headerElt !== null) {\r\n this.contentElt.appendChild(this.headerElt);\r\n }\r\n } else {\r\n this.headerElt = null;\r\n }\r\n\r\n this.node.appendChild(this.contentElt);\r\n\r\n const bodyElt = (this.body = document.createElement('div'));\r\n bodyElt.className = 'gantt-body';\r\n bodyElt.style.position = 'relative'; // Position must be set for the child split pane to get its offsetTop relative to it and have the tooltips positioning work...\r\n bodyElt.style.flexGrow = 1;\r\n bodyElt.style.flexShrink = 1;\r\n // Impressive hack: the flex layout does not manage well resizing of components of height initially to zero!\r\n bodyElt.style.height = '10px';\r\n this.errorHandler.node = bodyElt;\r\n this.contentElt.appendChild(bodyElt); // Need to be added here for the split pane to be created in a element in the DOM\r\n\r\n let bodyCtnr;\r\n const SplitClass = Gantt.components.Split.impl || Gantt.components.Split;\r\n if (this.config.loadResourceChart) {\r\n this.legendConfig = {\r\n selector: () => this.loadChartCtrl.isVisible(),\r\n background: this.loadChartCtrl.getRowBackground.bind(this.loadChartCtrl),\r\n };\r\n let h = 150;\r\n const hConfig = getLoadConfig('height');\r\n if (hConfig) {\r\n if (Gantt.utils.isFunction(hConfig)) {\r\n h = hConfig();\r\n } else if (Gantt.utils.isString(hConfig)) {\r\n h = Number.parseInt(hConfig, 10);\r\n } else {\r\n h = hConfig;\r\n }\r\n }\r\n try {\r\n this.loadChartSplit = new SplitClass(\r\n bodyElt,\r\n Gantt.utils.mergeObjects({}, this.config && this.config.divider, {\r\n pos: -h,\r\n horizontal: false,\r\n fixedFirst: false,\r\n hideSecond: !this.loadChartCtrl.isVisible(),\r\n })\r\n );\r\n this.loadChartSplit.onDividerDragEnd = e => {\r\n if (this.initPromise) {\r\n this.initPromise.then(() => {\r\n this.triggerEvent(Gantt.events.SPLIT_RESIZED);\r\n this.onResize();\r\n });\r\n }\r\n };\r\n } catch (err) {\r\n this.errorHandler.addError(err, 'Load split pane initialization error', this.node);\r\n throw new Error('Load split pane initialization error');\r\n }\r\n bodyCtnr = this.loadChartSplit.getLeftComponent();\r\n } else {\r\n bodyCtnr = bodyElt;\r\n this.legendConfig = undefined;\r\n }\r\n try {\r\n this.splitPane = new SplitClass(bodyCtnr, this.config && this.config.divider);\r\n this.splitPane.onresized = e => {\r\n this.triggerEvent(Gantt.events.SPLIT_RESIZED);\r\n };\r\n } catch (err) {\r\n this.errorHandler.addError(err, 'Split pane initialization error', this.node);\r\n throw new Error('Split pane initialization error');\r\n }\r\n\r\n // Initialize the load resource chart if any\r\n // Initialization prior to table and timetable so that selection listeners are set before selection\r\n // listeners of those two components.\r\n this.loadCharts = null;\r\n this.loadResPanel = null;\r\n if (this.config.loadResourceChart) {\r\n this.loadResPanel = this.createLoadResourceChart(this.config.loadResourceChart);\r\n if (this.loadResPanel) {\r\n // Both width and height to 100% for IE\r\n this.loadResPanel.style.width = '100%';\r\n this.loadResPanel.style.height = '100%';\r\n this.loadChartSplit.getRightComponent().appendChild(this.loadResPanel);\r\n this.loadChartSplit.rightComponentCreated();\r\n }\r\n }\r\n\r\n // Initialize table panel\r\n this.tablePanel = null;\r\n const leftComp = this.splitPane.getLeftComponent();\r\n leftComp.style.overflow = 'hidden';\r\n try {\r\n this.tablePanel = this.createTreeTable(leftComp);\r\n // A non-zero width component has been created in the left component part of the split pane, we can now\r\n // fix the split position\r\n this.splitPane.leftComponentCreated();\r\n } catch (err) {\r\n this.errorHandler.addError(err, 'Tree table initialization error', this.tablePanel || this.node);\r\n throw new Error('Table creation error');\r\n }\r\n\r\n // Initialize the time panel\r\n const rightPanel = this.splitPane.getRightComponent();\r\n rightPanel.style.overflow = 'hidden';\r\n try {\r\n this.createTimePanel(rightPanel);\r\n } catch (err) {\r\n this.errorHandler.addError(err, 'Error creating the time panel', rightPanel);\r\n throw new Error('Time panel creation error');\r\n }\r\n try {\r\n this.createTimeLine(this.timeLineScroller);\r\n } catch (err) {\r\n this.errorHandler.addError(err, 'Error create the time line', this.timeLineScroller);\r\n throw new Error('Time line creation error');\r\n }\r\n\r\n if (this.toolbars) {\r\n for (let i = 0; i < this.toolbars.length; i++) {\r\n this.toolbars[i].connect(this, this.toolbars[i].node);\r\n }\r\n }\r\n }\r\n\r\n load(config) {\r\n if (config) {\r\n if (this.model && this.model.destroy) {\r\n this.model.destroy();\r\n }\r\n this.model = this.createModel(config);\r\n }\r\n this.timeLineInit = null;\r\n\r\n // Loading panel\r\n this.loadingPanel = null;\r\n const loadTimeout = setTimeout(() => {\r\n this.loadingPanel = this.createLoadingPanel(this.config);\r\n this.body.appendChild(this.loadingPanel);\r\n }, this.config.loadingPanelThresold);\r\n const stopLoading = () => {\r\n if (!this.loadingPanel) {\r\n clearTimeout(loadTimeout);\r\n } else {\r\n this.body.removeChild(this.loadingPanel);\r\n }\r\n this.loading = false;\r\n };\r\n\r\n return this.model\r\n .load()\r\n .then(rows => {\r\n const wnd = this.getTimeWindow();\r\n if (!wnd || !wnd.start) {\r\n if (!rows.length) {\r\n // Empty Gantt, this is ok\r\n const today = new Date().getTime();\r\n const day = 1000 * 3600 * 24;\r\n this.setTimeWindow({ start: today - day * 2, end: today + day * 2 });\r\n } else {\r\n stopLoading();\r\n return Promise.reject(Gantt.utils.getString('gantt.error.no-time-window-defined'));\r\n }\r\n }\r\n this.loading = true;\r\n this.startUpdating();\r\n this._resourceGantt = this.isResourceGantt();\r\n Gantt.utils.toggleClass(this.contentElt, 'schedule_chart', this._resourceGantt);\r\n Gantt.utils.toggleClass(this.contentElt, 'activity_chart', !this._resourceGantt);\r\n Gantt.utils.toggleClass(this.contentElt, 'constraints_chart', this.hasConstraints);\r\n return Promise.all([\r\n // Promise.all can be given non-promises as the parameter.\r\n // See example in https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all\r\n this.table.setRows(rows) || rows,\r\n this.timeLineInit || rows,\r\n ]).then(() => {\r\n stopLoading();\r\n // After table is initialized and time line ready with accurate time window\r\n // We can update the time table\r\n\r\n this.triggerEvent(Gantt.events.DATA_LOADED, rows);\r\n this.timeTable.setConstraints(this.model.constraints);\r\n this.updates.timeTable.reload();\r\n this.stopUpdating();\r\n if (this.toobars) {\r\n this.toolbars.forEach(bar => {\r\n bar.ganttLoaded(this, rows);\r\n });\r\n }\r\n return rows;\r\n });\r\n })\r\n .catch(err => {\r\n stopLoading();\r\n this.errorHandler.addError(err, 'Loading error', this.tablePanel);\r\n return Promise.reject(err);\r\n });\r\n }\r\n\r\n isResourceGantt() {\r\n return !this.type || this.type !== Gantt.type.ACTIVITY_CHART;\r\n }\r\n\r\n hasConstraints() {\r\n return this.model && this.model.constraints && this.model.constraints.length;\r\n }\r\n\r\n isFlat() {\r\n return !this.model || this.model.isFlat();\r\n }\r\n\r\n getTimeWindow() {\r\n return this.timeWindow;\r\n }\r\n\r\n setTimeWindow({ start, end }) {\r\n if (end === 0) {\r\n throw new Error(`Invalid time window + ${JSON.stringify({ start, end })}, may not have been processed correctly`);\r\n }\r\n if (this.timeWindow && this.timeWindow.start === start && this.timeWindow.end === end) {\r\n return Promise.resolve(this.timeWindow);\r\n }\r\n this.timeWindow = { start, end };\r\n return (this.timeLineInit = this.timeLine.setTimeWindow(start, end).then(({ start, end }) => {\r\n this.updateTableHeaderHeight();\r\n this.updateWidthFromTimeLine();\r\n this.scrollTimeTableToX(this.timeLine.getXFromMillis(this.timeLine.getHorizon().start));\r\n this.updateTimeLineHeight();\r\n this.triggerEvent(Gantt.events.TIME_WINDOW_CHANGED, start, end);\r\n }));\r\n }\r\n\r\n getBody() {\r\n return this.body;\r\n }\r\n\r\n initialized() {\r\n return this.initPromise;\r\n }\r\n\r\n // noinspection JSUnusedLocalSymbols\r\n createTreeTable(ctnr) {\r\n // Initialize table panel\r\n const tablePanel = document.createElement('div');\r\n tablePanel.className = 'table-panel';\r\n tablePanel.style.position = 'relative';\r\n tablePanel.style.height = '100%';\r\n tablePanel.style.width = '100%';\r\n tablePanel.style.overflow = 'hidden';\r\n // If not setting the min width, the table width would be zero while data being loaded and\r\n // the split pane would not able to set its split position.\r\n tablePanel.style.minWidth = '100px';\r\n const TreeTableClass = Gantt.components.TreeTable.impl || Gantt.components.TreeTable;\r\n let tableConfig = this.config.table;\r\n if (this.legendConfig || this.config.rows) {\r\n const rowsConfig = Gantt.utils.mergeObjects({}, this.legendConfig && { rows: { renderer: this.legendConfig } }, {\r\n rows: this.config.rows,\r\n });\r\n tableConfig = Gantt.utils.mergeObjects(rowsConfig, tableConfig);\r\n }\r\n this.table = new TreeTableClass(this, tablePanel, tableConfig);\r\n this.table.setRowFilter(this.rowFilter);\r\n this.updates.table = this.table.createUpdates(this.updates);\r\n ctnr.appendChild(tablePanel);\r\n window.addWheelListener(tablePanel, evt => {\r\n const factor = evt.deltaMode === 1 /** DOM_DELTA_LINE */ ? 32 : 0.8; // necessary for FF !\r\n const delta = factor * evt.deltaY || -evt.wheelDelta || evt.detail;\r\n this.timeTable.scrollToY(this.timeTable.getScrollTop() + delta);\r\n if (evt.preventDefault) {\r\n evt.preventDefault();\r\n }\r\n });\r\n return tablePanel;\r\n }\r\n\r\n // noinspection JSUnusedLocalSymbols\r\n createTimePanel(ctnr) {\r\n this.timePanel = document.createElement('div');\r\n this.timePanel.className = 'time-panel';\r\n // CSS layout\r\n this.timePanel.style.position = 'relative';\r\n this.timePanel.style.height = '100%';\r\n\r\n // Create the time right panel\r\n const vScrollerFiller = document.createElement('div');\r\n vScrollerFiller.className = 'vertical-scroller-filler';\r\n // CSS layout\r\n vScrollerFiller.style.position = 'absolute';\r\n vScrollerFiller.style.right = 0;\r\n vScrollerFiller.top = 0;\r\n this.timePanel.appendChild(vScrollerFiller);\r\n this.updateTimeLineRightMargin = () => {\r\n const rightMargin = this.timeTable.getRightMargin();\r\n this.timeLineScroller.style.paddingRight = rightMargin ? `${rightMargin}px` : '0';\r\n vScrollerFiller.style.width = this.timeLineScroller.style.paddingRight;\r\n vScrollerFiller.style.display = rightMargin ? 'block' : 'none';\r\n };\r\n\r\n this.updateTableHeaderHeight = force => {\r\n if (!this.initializing && this.timeLine) {\r\n // Timeline is created after first resize events are fired\r\n const h = this.timeLine.getTimeAxisHeight();\r\n if (force || this.headersHeight !== h) {\r\n this.headersHeight = h;\r\n if (!this.table) {\r\n console.log('no table');\r\n }\r\n this.table.setHeaderHeight(h);\r\n if (h) {\r\n this.timeTablePanel.style.top = vScrollerFiller.style.height = `${h}px`;\r\n }\r\n }\r\n }\r\n };\r\n\r\n this.timeLineScroller = document.createElement('div');\r\n this.timeLineScroller.className = 'time-line-scroller';\r\n this.timeLineScroller.style.overflow = 'hidden';\r\n this.timeLineScroller.style.width = '100%';\r\n this.timeLineScroller.style.height = '100%';\r\n\r\n this.timePanel.appendChild(this.timeLineScroller);\r\n\r\n this.timeTablePanel = document.createElement('div');\r\n this.timeTablePanel.className = 'time-table';\r\n // CSS layout\r\n this.timeTablePanel.style.position = 'absolute';\r\n this.timeTablePanel.style.left = '0';\r\n this.timeTablePanel.style.right = '0';\r\n this.timeTablePanel.style.bottom = '0';\r\n\r\n this.timePanel.appendChild(this.timeTablePanel);\r\n\r\n const TimeTableClass = Gantt.components.TimeTable.impl || Gantt.components.TimeTable;\r\n let timeTableConfig = this.config && this.config.timeTable;\r\n if (this.legendConfig || this.config.rows) {\r\n const rowsConfig = Gantt.utils.mergeObjects(\r\n {},\r\n this.legendConfig && { rows: { renderer: this.legendConfig } },\r\n this.config.rows && { rows: this.config.rows }\r\n );\r\n timeTableConfig = Gantt.utils.mergeObjects(rowsConfig, timeTableConfig);\r\n }\r\n this.timeTable = new TimeTableClass(this, this.timeTablePanel, timeTableConfig);\r\n this.updates.timeTable = this.timeTable.createUpdates(this.updates);\r\n this.attachTimeTableMouseWheel(this.timeTable.getScroller());\r\n this.timeTable.getScroller().addEventListener('scroll', e => {\r\n this.timeLineScroller.scrollLeft = e.target.scrollLeft;\r\n this.triggerEvent(Gantt.events.TIME_LINE_SCROLLED, e.target.scrollLeft);\r\n });\r\n ctnr.appendChild(this.timePanel);\r\n return this.timePanel;\r\n }\r\n\r\n drawTimeTable(clear) {\r\n if (clear && this.table.deleteDrawCache) {\r\n this.table.deleteDrawCache();\r\n }\r\n this.timeTable.draw(clear);\r\n }\r\n\r\n createLoadingPanel(config) {\r\n const lp = document.createElement('div');\r\n lp.className = 'loading-panel';\r\n lp.style.position = 'absolute';\r\n lp.style.left = '0';\r\n lp.style.right = '0';\r\n lp.style.top = '0';\r\n lp.style.bottom = '0';\r\n lp.style.display = 'flex';\r\n lp.style.alignItems = 'center';\r\n lp.style.justifyContent = 'center';\r\n\r\n const loaderCtnr = document.createElement('div');\r\n loaderCtnr.style.position = 'absolute';\r\n loaderCtnr.style.left = '50%';\r\n loaderCtnr.style.top = '50%';\r\n loaderCtnr.style.transform = 'translate(-50%, -50%)';\r\n\r\n const loader = document.createElement('div');\r\n loader.className = 'loader';\r\n loaderCtnr.appendChild(loader);\r\n lp.appendChild(loaderCtnr);\r\n\r\n const label = document.createElement('div');\r\n label.className = 'label';\r\n label.appendChild(document.createTextNode(Gantt.utils.getString('gantt.loading')));\r\n lp.appendChild(label);\r\n return lp;\r\n }\r\n\r\n createLoadResourceChart(config) {\r\n let loadChartNode;\r\n let chartPanel;\r\n (Gantt.utils.isArray(config) && config.length && Gantt.utils.isArray(config[0]) ? config : [config]).forEach(\r\n loadConfig => {\r\n // Construct the bar node\r\n if (!chartPanel) {\r\n chartPanel = document.createElement('div');\r\n chartPanel.className = 'load-resource-chart-panel';\r\n chartPanel.style.flexShrink = 0;\r\n chartPanel.style.position = 'relative';\r\n // IE specific\r\n chartPanel.style.display = 'flex';\r\n chartPanel.style.flexDirection = 'columm';\r\n }\r\n loadChartNode = document.createElement('div');\r\n loadChartNode.className = 'load-resource-chart';\r\n chartPanel.appendChild(loadChartNode);\r\n if (!this.loadCharts) {\r\n this.loadCharts = [];\r\n }\r\n const loadChart = new (Gantt.components.LoadResourceChart.impl || Gantt.components.LoadResourceChart)(\r\n this,\r\n loadChartNode,\r\n Gantt.utils.mergeObjects({}, loadConfig, { height: '' })\r\n );\r\n this.loadChartCtrl.addLoadResourceChart(loadChart);\r\n loadChart.node.style.flex = '1 1';\r\n this.loadCharts.push(loadChart);\r\n window.addWheelListener(loadChart.getScroller(), evt => {\r\n evt.preventDefault();\r\n });\r\n }\r\n );\r\n\r\n return chartPanel;\r\n }\r\n\r\n toggleLoadChartVisible() {\r\n this.setLoadChartVisible(!this.isLoadChartVisible());\r\n }\r\n\r\n setLoadChartVisible(visible) {\r\n this.loadChartHidden = !visible;\r\n this.loadChartSplit.setRightComponentVisible(visible);\r\n Gantt.utils.toggleClass(this.contentElt, LOAD_RESOURCE_CHART_OPENED, visible);\r\n Gantt.utils.toggleClass(this.contentElt, LOAD_RESOURCE_CHART_CLOSED, !visible);\r\n this.loadChartCtrl.setVisible(visible);\r\n this.onResize();\r\n }\r\n\r\n isLoadChartVisible() {\r\n return this.loadChartCtrl.isVisible();\r\n }\r\n\r\n getPanelNode() {\r\n return this.contentElt;\r\n }\r\n\r\n updateTimeLineHeight() {\r\n const bottomMargin = this.timeTable.getBottomMargin();\r\n this.timeLineScroller.style.paddingBottom = bottomMargin ? `${bottomMargin}px` : '0';\r\n }\r\n\r\n attachTimeTableMouseWheel(scroller) {\r\n window.addWheelListener(scroller, evt => {\r\n if (evt.ctrlKey && evt.deltaY !== 0) {\r\n if (evt.deltaY < 0) {\r\n this.zoomIn(evt);\r\n } else {\r\n this.zoomOut(evt);\r\n }\r\n evt.preventDefault();\r\n }\r\n });\r\n }\r\n\r\n // noinspection JSUnusedLocalSymbols\r\n createTimeLine(timeLineCtnr) {\r\n const TimeLineClass = Gantt.components.TimeLine.impl || Gantt.components.TimeLine;\r\n this.timeLine = new TimeLineClass(this, timeLineCtnr, this.config);\r\n this.timeLine.on(\r\n [Gantt.events.TIME_LINE_RANGE_CHANGE, Gantt.events.TIME_LINE_RANGE_CHANGED, Gantt.events.TIME_LINE_PAN_MOVED],\r\n () => {\r\n this.updateTableHeaderHeight();\r\n this.updateWidthFromTimeLine();\r\n this.drawTimeTable(true);\r\n }\r\n );\r\n this.timeLine.on(Gantt.events.TIME_LINE_SIZE_CHANGED, (e, w, h) => {\r\n this.updateWidthFromTimeLine();\r\n this.drawTimeTable(true);\r\n this.triggerEvent(Gantt.events.TIME_LINE_SIZE_CHANGED, w, h);\r\n });\r\n this.timeLine.on(Gantt.events.TIME_LINE_INIT, e => {\r\n this.triggerEvent(Gantt.events.TIME_LINE_INIT);\r\n });\r\n return this.timeLine;\r\n }\r\n\r\n createToolbars(config) {\r\n this.toolbars = [];\r\n const ToolbarClass = Gantt.components.Toolbar.impl || Gantt.components.Toolbar;\r\n let toolbarNode;\r\n this.toolbarElt = null;\r\n (Gantt.utils.isArray(config) && config.length && Gantt.utils.isArray(config[0]) ? config : [config]).forEach(\r\n barConfig => {\r\n if (barConfig.node) {\r\n if (Gantt.utils.isString(barConfig.node)) {\r\n toolbarNode = document.getElementById(barConfig.node);\r\n } else if (Gantt.utils.isDomElement(node)) {\r\n toolbarNode = node;\r\n } else if (Gantt.utils.isFunction(barConfig.node)) {\r\n toolbarNode = barConfig.node(this);\r\n } else {\r\n throw new Error(\r\n 'The toolbar.node must be a string(Dom element ID) or a Dom element or a function returning a Dom element'\r\n );\r\n }\r\n barConfig = barConfig.components;\r\n } else {\r\n // Construct the bar node\r\n if (!this.toolbarElt) {\r\n this.toolbarElt = document.createElement('div');\r\n this.toolbarElt.className = 'gantt-toolbars';\r\n this.toolbarElt.style.flexShrink = 0;\r\n }\r\n toolbarNode = document.createElement('div');\r\n toolbarNode.className = 'gantt-toolbar';\r\n this.toolbarElt.appendChild(toolbarNode);\r\n }\r\n this.toolbars.push(new ToolbarClass(this, toolbarNode, barConfig));\r\n }\r\n );\r\n\r\n if (this.toolbarElt) {\r\n this.contentElt.appendChild(this.toolbarElt);\r\n }\r\n // Wait for all toolbar components to be created before triggering onInitialized as components can refer to each others\r\n this.toolbars.forEach(t => {\r\n t.onInitialized();\r\n });\r\n return this.toolbarElt;\r\n }\r\n\r\n createHeader(config) {\r\n const header = document.createElement('div');\r\n header.className = 'gantt-header';\r\n if (Gantt.utils.isString(config)) {\r\n header.appendChild(document.createTextNode(config));\r\n } else if (Gantt.utils.isFunction(config)) {\r\n const node = config(this);\r\n if (node) {\r\n header.appendChild(node);\r\n }\r\n }\r\n return header;\r\n }\r\n\r\n getRowCount() {\r\n return this.table.getRowCount();\r\n }\r\n\r\n getRow(param) {\r\n return this.table.getRow(param);\r\n }\r\n\r\n getRows(selector) {\r\n return this.table.getRows(selector);\r\n }\r\n\r\n getVisibleRows() {\r\n return this.table.getVisibleRows();\r\n }\r\n\r\n getVisibleHeight() {\r\n return this.timeTable.getVisibleHeight();\r\n }\r\n\r\n ensureRowVisible(param) {\r\n const row = this.table.getRow(param);\r\n if (!row) {\r\n throw new Error(`Cannot find row for ${param}`);\r\n }\r\n if (this.table.isRowFiltered(row)) {\r\n throw new Error(`Cannot show the filtered row: ${param}`);\r\n }\r\n this.table.expandParents(row);\r\n this.timeTable.scrollToRow(row);\r\n }\r\n\r\n isRowVisible(param) {\r\n return this.table.isRowVisible(param);\r\n }\r\n\r\n getFirstVisibleRow() {\r\n return this.table.getFirstVisibleRow();\r\n }\r\n\r\n setFirstVisibleRow(param) {\r\n this.timeTable.setFirstVisibleRow(this.getRow(param));\r\n }\r\n\r\n isRowFiltered(param) {\r\n return this.table.isRowFiltered(param);\r\n }\r\n\r\n toggleCollapseRow(param, collapse) {\r\n this.table.toggleCollapseRow(this.getRow(param), collapse);\r\n }\r\n\r\n scrollToY(y) {\r\n this.timeTable.scrollToY(y);\r\n }\r\n\r\n getRowHeight(row) {\r\n row = this.getRow(row);\r\n return row && (row.activityRow ? row.activityRow.height : row.tr.offsetHeight);\r\n }\r\n\r\n draw(forceTableRedraw) {\r\n if (this.timeLine) {\r\n this.timeLine.draw(true);\r\n if (this.table.deleteDrawCache) {\r\n this.table.deleteDrawCache();\r\n }\r\n this.table.draw(forceTableRedraw);\r\n this.timeTable.draw();\r\n this.updateScrollerHeight();\r\n }\r\n }\r\n\r\n drawRows(selector) {\r\n const rows = this.getRows(selector);\r\n this.table.drawRows(rows);\r\n this.timeTable.drawRows(rows);\r\n }\r\n\r\n updateScrollerHeight() {\r\n this.timeTable.setBodyHeight(\r\n this.loadOnDemand ? this.table.getRowCount() * this.getRowHeight() : this.table.getHeight()\r\n );\r\n this.updateTimeLineRightMargin();\r\n }\r\n\r\n getRowActivities(row) {\r\n row = this.getRow(row);\r\n return (row && row.activities) || [];\r\n }\r\n\r\n getActivity(param, row) {\r\n if (row) {\r\n const acts = this.getRowActivities(row);\r\n if (Gantt.utils.isString(param)) {\r\n for (let i = 0, count = acts.length; i < count; ++i) {\r\n if (acts[i].id === param) {\r\n return acts[i];\r\n }\r\n }\r\n return undefined;\r\n }\r\n if (Gantt.utils.isInteger(param)) {\r\n return acts[param];\r\n }\r\n for (let i = 0, count = acts.length; i < count; ++i) {\r\n if (acts[i].getData() === param) {\r\n return acts[i];\r\n }\r\n }\r\n } else {\r\n return this.model.getActivity(param);\r\n }\r\n }\r\n\r\n getActivityNode(param, res) {\r\n const activity = this.getActivity(param, res);\r\n return activity && activity.node;\r\n }\r\n\r\n getToolbarComponent(id) {\r\n for (let i = 0; i < this.toolbars.length; i++) {\r\n for (let j = 0; j < this.toolbars[i].components.length; j++) {\r\n const c = this.toolbars[i].components[j];\r\n if (c && id === c.id) {\r\n return c;\r\n }\r\n }\r\n }\r\n }\r\n\r\n onResize() {\r\n if (this.timeLine && this.timeLine.onResize) {\r\n this.timeLine.onResize();\r\n }\r\n if (this.updateTimeLineRightMargin) {\r\n this.updateTimeLineRightMargin();\r\n }\r\n if (this.table && this.table.onResize) {\r\n this.table.onResize();\r\n }\r\n if (this.updateTableHeaderHeight && this.timeLine) {\r\n this.updateTableHeaderHeight(true);\r\n }\r\n if (this.table) {\r\n this.triggerEvent(Gantt.events.RESIZED);\r\n }\r\n if (this.timeTable && this.timeTable.onResize) {\r\n this.timeTable.onResize();\r\n }\r\n if (this.timeTable) {\r\n this.updateScrollerHeight();\r\n }\r\n }\r\n\r\n destroy() {\r\n Gantt.plugins.call('destroy', this);\r\n if (this.errorHandler && this.errorHandler.destroy) {\r\n this.errorHandler.destroy();\r\n }\r\n\r\n if (this.splitPane && this.splitPane.destroy) {\r\n this.splitPane.destroy();\r\n }\r\n\r\n if (this.table && this.table.destroy) {\r\n this.table.destroy();\r\n }\r\n\r\n if (this.model && this.model.destroy) {\r\n this.model.destroy();\r\n }\r\n\r\n if (this.resizeHandler) {\r\n window.removeEventListener('resize', this.resizeHandler);\r\n this.resizeHandler = null;\r\n }\r\n\r\n if (this.updates) {\r\n this.updates.destroy();\r\n }\r\n\r\n if (this.toolbars) {\r\n this.toolbars.forEach(bar => {\r\n bar.destroy();\r\n });\r\n\r\n this.toobars = null;\r\n }\r\n\r\n while (this.node.firstChild) {\r\n this.node.removeChild(this.node.firstChild);\r\n }\r\n\r\n this.contentElt = null;\r\n this.table = null;\r\n this.body = null;\r\n }\r\n\r\n disconnect() {}\r\n\r\n /* */\r\n /* Rows */\r\n /* */\r\n\r\n highlightRow(row, highlight, deselectAll) {\r\n if (typeof row === 'string') {\r\n row = this.table.getRow(row);\r\n }\r\n highlight = highlight === undefined || highlight;\r\n this.table.highlightRow(row, highlight, deselectAll);\r\n this.timeTable.highlightRow(row, highlight, deselectAll);\r\n }\r\n\r\n /* */\r\n /* Selection */\r\n /* */\r\n\r\n get selection() {\r\n return this.selectionHandler;\r\n }\r\n\r\n set selection(sel) {\r\n const currentSel = this.selectionHandler && this.selectionHandler.get();\r\n if (this.selectionHandler) {\r\n this.selectionHandler.destroy();\r\n }\r\n this.selectionHandler = sel;\r\n if (this.selectionHandler) {\r\n if (currentSel && currentSel.length) {\r\n this.selectionHandler.select(sel);\r\n }\r\n }\r\n }\r\n\r\n /* */\r\n /* Layout synchronizer */\r\n /* */\r\n synchLayout(config) {\r\n const ls = new (Gantt.components.LayoutSynchronizer.impl || Gantt.components.LayoutSynchronizer)(config);\r\n ls.connect(this);\r\n return ls;\r\n }\r\n\r\n /* */\r\n /* Zoom */\r\n /* */\r\n\r\n resetZoom() {\r\n this.timeLine.resetZoom();\r\n this.scrollTimeTableToX(this.timeLine.getXFromMillis(this.timeLine.getHorizon().start));\r\n }\r\n\r\n zoomIn(evt) {\r\n this.zoom(this.zoomFactor, evt);\r\n }\r\n\r\n zoomOut(evt) {\r\n this.zoom(-this.zoomFactor, evt);\r\n }\r\n\r\n zoom(zoomFactor, evt) {\r\n zoomFactor = this.timeLine.validateZoomFactor(zoomFactor);\r\n if (zoomFactor !== 0) {\r\n const visibleW = this.timeTable.getVisibleWidth();\r\n // When zooming, we want to keep the same time coordinate under the mouse, if mousewheel event is provided as a parameter.\r\n let xRef =\r\n (evt && this.getTimeTableCoordinates(evt.target, { x: evt.offsetX, y: evt.offsetY }).x) ||\r\n this.timeTable.getScrollLeft() + visibleW / 2;\r\n const timeRef = this.timeLine.getTimeAt(xRef);\r\n xRef -= this.timeTable.getScrollLeft();\r\n\r\n this.timeLine.zoom(zoomFactor);\r\n\r\n const newScrollLeft = this.timeLine.getXFromMillis(timeRef) - xRef;\r\n this.scrollTimeTableToX(newScrollLeft);\r\n }\r\n }\r\n\r\n fitToContent() {\r\n const timeRange = this.timeTable.getDisplayedActivitiesTimeRange();\r\n this.timeLine.setVisibleTimeWindow(timeRange);\r\n this.scrollTimeTableToX(\r\n this.timeLine.getXFromMillis((timeRange && timeRange.start) || this.timeLine.getHorizon().start)\r\n );\r\n }\r\n\r\n updateScrollFromTimeLine() {}\r\n\r\n updateWidthFromTimeLine() {\r\n this.timeTable.setBodyWidth(this.timeLine.getWidth());\r\n }\r\n\r\n /* */\r\n /* Search and filter */\r\n /* */\r\n addFilter(filter, rows, activities) {\r\n const result = { activities: activities && this.activityFilter.addFilter(filter) };\r\n const actFilter = result.activities;\r\n if (rows) {\r\n // noinspection JSUnusedLocalSymbols\r\n result.row = actFilter\r\n ? this.rowFilter.addOrFilters(filter, (row, columnData, rowIndex) => {\r\n const count = row.activities.length;\r\n const params = [null, row];\r\n for (let i = 0; i < count; i++) {\r\n params[0] = row.activities[i];\r\n if (actFilter(params)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n })\r\n : this.rowFilter.addFilter(filter);\r\n }\r\n if (result.row || result.activities) {\r\n this.filterChanged();\r\n return result;\r\n }\r\n return null;\r\n }\r\n\r\n removeFilter(key, preventNotify) {\r\n let success = false;\r\n if (key) {\r\n if (key.row) {\r\n success = this.rowFilter.removeFilter(key.row);\r\n }\r\n if (key.activities) {\r\n success = this.activityFilter.removeFilter(key.activities);\r\n }\r\n if (this.searchFilter === key) {\r\n this.searchFilter = null;\r\n }\r\n }\r\n if (success && !preventNotify) {\r\n this.filterChanged();\r\n }\r\n return success;\r\n }\r\n\r\n search(text, rows, activities) {\r\n if (this.searchFilter) {\r\n if (this.searchFilter.row) {\r\n this.rowFilter.removeFilter(this.searchFilter.row);\r\n }\r\n if (this.searchFilter.activities) {\r\n this.activityFilter.removeFilter(this.searchFilter.activities);\r\n }\r\n }\r\n if (text && (rows || activities)) {\r\n this.searchFilter = this.addFilter(text, rows, activities);\r\n } else {\r\n this.searchFilter = null;\r\n this.filterChanged();\r\n }\r\n }\r\n\r\n setHideEmptyRows(hide, preventNotify) {\r\n if ((hide && !this.hideEmptyRowsFilter) || (!hide && this.hideEmptyRowsFilter)) {\r\n if (this.hideEmptyRowsFilter) {\r\n this.rowFilter.removeFilter(this.hideEmptyRowsFilter);\r\n this.hideEmptyRowsFilter = null;\r\n } else {\r\n // noinspection JSUnusedLocalSymbols\r\n this.hideEmptyRowsFilter = this.rowFilter.addFilter((row, columnData, rowIndex) => {\r\n let activityFilter = this.activityFilter;\r\n activityFilter = activityFilter && !activityFilter.isEmpty() ? activityFilter : null;\r\n const count = row.activities && row.activities.length;\r\n if (!count || !activityFilter) {\r\n return count;\r\n }\r\n for (let i = 0; i < count; i++) {\r\n if (activityFilter.accept(row.activities[i], row)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n }\r\n if (!preventNotify) {\r\n this.filterChanged();\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n filterChanged() {\r\n if (this.table && this.timeTable) {\r\n this.table.filterChanged();\r\n const table = this.table && this.table.getScrollableTable();\r\n this.updateScrollerHeight();\r\n const scrollTop = table.scrollTop;\r\n this.timeTable.setScrollTop(scrollTop);\r\n this.drawTimeTable(true);\r\n this.triggerEvent(Gantt.events.ROWS_FILTERED);\r\n }\r\n }\r\n\r\n /* */\r\n /* Title */\r\n /* */\r\n getTitle() {\r\n return this.title;\r\n }\r\n\r\n setTitle(title) {\r\n this.title = title;\r\n this.triggerEvent(Gantt.events.TITLE_CHANGED, title);\r\n }\r\n\r\n /* */\r\n /* Row colors */\r\n /* */\r\n\r\n setRowColor(row, color) {\r\n row.color = color;\r\n if (this.table.setRowColor) {\r\n this.table.setRowColor(row, color);\r\n }\r\n if (this.timeTable.setRowColor) {\r\n this.timeTable.setRowColor(row, color);\r\n }\r\n }\r\n\r\n /* */\r\n /* Utils */\r\n /* */\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n centerTimeSheetOnX(x) {\r\n this.scrollTimeTableToX(x - this.timeTable.getVisibleWidth() / 2);\r\n }\r\n\r\n scrollTimeTableToX(x) {\r\n x = Math.min(Math.max(Math.round(x), 0), this.timeTable.getBodyWidth() - this.timeTable.getVisibleWidth());\r\n this.timeTable.setScrollLeft(x);\r\n if (this.loadChartCtrl) {\r\n this.loadChartCtrl.timeTableXScrolled(x);\r\n }\r\n this.triggerEvent(Gantt.events.TIME_LINE_SCROLLED, x);\r\n }\r\n\r\n getTimeTableCoordinates(target, position) {\r\n return Gantt.utils.walkToAncestor(\r\n [this.timeTable.getScroller(), this.timeLineScroller],\r\n target,\r\n (parent, node, position) => {\r\n if (parent === this.timeLineScroller) {\r\n position.x += this.timeTable.getScrollLeft();\r\n } else if (parent === this.timeTable.getScroller()) {\r\n return position;\r\n }\r\n return {\r\n x: position.x + node.offsetLeft - parent.scrollLeft,\r\n y: position.y + node.offsetTop - parent.scrollTop,\r\n };\r\n },\r\n { x: (position && position.x) || 0, y: (position && position.y) || 0 }\r\n );\r\n }\r\n\r\n addTimeMarker(id, time, classes) {\r\n this.timeLine.addTimeMarker(id, time, classes);\r\n }\r\n\r\n removeTimeMarker(id) {\r\n this.timeLine.removeTimeMarker(id);\r\n }\r\n\r\n setTimeLineItem(id, item) {\r\n this.timeLine.setTimeLineItem(id, item);\r\n }\r\n\r\n addTimeLineItem(id, item) {\r\n this.timeLine.addTimeLineItem(id, item);\r\n }\r\n\r\n removeTimeLineItem(id) {\r\n this.timeLine.removeTimeLineItem(id);\r\n }\r\n\r\n /* */\r\n /* Errors */\r\n /* */\r\n\r\n hasErrors() {\r\n return this.errorHandler.hasErrors();\r\n }\r\n\r\n /* */\r\n /* Palettes */\r\n /* */\r\n\r\n setPaletteConfiguration(config) {\r\n if (Gantt.utils.isArray(config) || Gantt.utils.isFunction(config)) {\r\n this.palettes = null;\r\n this.defaultPalette = new (Gantt.components.Palette.impl || Gantt.components.Palette)(config);\r\n } else if (Gantt.utils.isString(config)) {\r\n this.palettes = null;\r\n this.defaultPalette = Gantt.defaultPalettes[config];\r\n if (!this.defaultPalette) {\r\n console.error(`Palette [${config}] does not exist`);\r\n }\r\n } else {\r\n const paletteNames = Object.keys(config);\r\n this.palettes = {};\r\n this.defaultPalette = null;\r\n for (let i = 0, count = paletteNames.length; i < count; ++i) {\r\n this.palettes[paletteNames[i]] = new (Gantt.components.Palette.impl || Gantt.components.Palette)(\r\n config[paletteNames[i]]\r\n );\r\n }\r\n }\r\n }\r\n\r\n getPalette(name) {\r\n if (!name) {\r\n return this.defaultPalette || (Gantt.defaultPaletteName && Gantt.defaultPalettes[Gantt.defaultPaletteName]);\r\n }\r\n return (this.palettes && this.palettes[name]) || Gantt.defaultPalettes[name];\r\n }\r\n\r\n /* */\r\n /* Updates */\r\n /* */\r\n startUpdating() {\r\n this.updates.startUpdating();\r\n }\r\n\r\n stopUpdating() {\r\n if (this.updates.stopUpdating()) {\r\n // nothing to do\r\n }\r\n }\r\n\r\n rowsChanged(event, rows) {\r\n this.updates.startUpdating();\r\n this.triggerEvent(event, rows);\r\n this.updates.rowsChanged(event, rows);\r\n this.updates.stopUpdating();\r\n }\r\n}\r\n\r\nGantt.components.GanttPanel.impl = GanttPanel;\r\n\r\nexport default GanttPanel;\r\n","import Gantt from './core';\r\n\r\nconst defaultConfig = {\r\n keySpeed: 10,\r\n showMoveOnInvalid: true,\r\n dragActivationThresoldWidth: 5,\r\n dragActivationThresoldHeight: 5,\r\n};\r\n\r\nexport default class DragDropHandler {\r\n constructor(container, config) {\r\n Gantt.utils.mergeObjects(this, defaultConfig, config);\r\n\r\n this.container = container;\r\n\r\n this.initialMouseX = undefined;\r\n this.initialMouseY = undefined;\r\n this.startX = undefined;\r\n this.startY = undefined;\r\n this.dXKeys = undefined;\r\n this.dYKeys = undefined;\r\n this.draggedObject = undefined;\r\n this.clickedObject = undefined;\r\n this.handlers = [];\r\n this.methodsToHitch = [];\r\n this.hitchedMethods = [];\r\n }\r\n\r\n addHandler(handler) {\r\n this.handlers.push(handler);\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n removeHandler(handler) {\r\n const index = this.handlers.indexOf(handler);\r\n if (index > -1) {\r\n this.handlers.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n attach(element) {\r\n element.onmousedown = e => this.startDragMouse(e);\r\n }\r\n\r\n startDragMouse(e) {\r\n const evt = e || window.event;\r\n if (evt.button === 2) {\r\n // Right button, we cancel the drag if any\r\n if (this.draggedObject) {\r\n this.cancel(evt);\r\n }\r\n } else if (!evt.button) {\r\n this.initialMouseX = evt.clientX;\r\n this.initialMouseY = evt.clientY;\r\n evt.target.blur();\r\n this.connectDragStarter(evt);\r\n return false;\r\n }\r\n }\r\n\r\n connectDragStarter(evt) {\r\n // Drag will be triggered only if the mouse moves more than options.dragActivationThresoldWidth / options.dragActivationThresoldHeight\r\n this.initOffsetX = evt.offsetX;\r\n this.initOffsetY = evt.offsetY;\r\n this.clickedObject = evt.target;\r\n this.dXKeys = this.dYKeys = 0;\r\n this.addEventListener(document, 'mousemove', this.checkStartDrag);\r\n this.addEventListener(document, 'mouseup', this.cancelDragStarter);\r\n this.addEventListener(document, 'keydown', this.dragStarterKeys);\r\n this.addEventListener(document, 'keypress', this.dragStartSwitchKeyEvents);\r\n }\r\n\r\n checkStartDrag(e) {\r\n const evt = e || window.event;\r\n const dX = evt.clientX - this.initialMouseX;\r\n const dY = evt.clientY - this.initialMouseY;\r\n if (Math.abs(dX) >= this.dragActivationThresoldWidth || Math.abs(dY) >= this.dragActivationThresoldHeight) {\r\n this.cancelDragStarter();\r\n if (this.startDrag()) {\r\n this.move(dX, dY);\r\n }\r\n }\r\n }\r\n\r\n dragStartSwitchKeyEvents() {\r\n // for Opera and Safari 1.3\r\n this.removeEventListener(document, 'keydown', this.dragStarterKeys);\r\n this.removeEventListener(document, 'keypress', this.switchKeyEvents);\r\n this.addEventListener(document, 'keypress', this.dragStarterKeys);\r\n }\r\n\r\n dragStarterKeys(e) {\r\n const evt = e || window.event;\r\n const key = evt.keyCode;\r\n switch (key) {\r\n case 37: // left\r\n case 63234:\r\n this.dXKeys -= this.keySpeed;\r\n break;\r\n case 38: // up\r\n case 63232:\r\n this.dYKeys -= this.keySpeed;\r\n break;\r\n case 39: // right\r\n case 63235:\r\n this.dXKeys += this.keySpeed;\r\n break;\r\n case 40: // down\r\n case 63233:\r\n this.dYKeys += this.keySpeed;\r\n break;\r\n case 13: // enter\r\n case 27: // escape\r\n if (evt.preventDefault) evt.preventDefault();\r\n this.cancelDragStarter(evt);\r\n return false;\r\n default:\r\n return true;\r\n }\r\n if (evt.preventDefault) evt.preventDefault();\r\n this.cancelDragStarter(); // Any movement key pressed triggers the start of the drag\r\n if (this.startDrag()) {\r\n this.move(this.dXKeys, this.dYKeys);\r\n }\r\n return false;\r\n }\r\n\r\n cancelDragStarter() {\r\n this.removeEventListener(document, 'mousemove', this.checkStartDrag);\r\n this.removeEventListener(document, 'mouseup', this.cancelDragStarter);\r\n this.removeEventListener(document, 'keypress', this.dragStarterKeys);\r\n this.removeEventListener(document, 'keypress', this.dragStartSwitchKeyEvents);\r\n this.removeEventListener(document, 'keydown', this.dragStarterKeys);\r\n }\r\n\r\n startDrag() {\r\n const obj = this.startMove(this.clickedObject, this.initOffsetX, this.initOffsetY);\r\n if (!obj) {\r\n return false;\r\n }\r\n if (this.draggedObject) {\r\n this.releaseElement();\r\n }\r\n this.addEventListener(document, 'mousemove', this.dragMouse);\r\n this.addEventListener(document, 'mouseup', this.dropped);\r\n this.addEventListener(document, 'keydown', this.dragKeys);\r\n this.addEventListener(document, 'keypress', this.switchKeyEvents);\r\n this.startX = obj.offsetLeft;\r\n this.startY = obj.offsetTop;\r\n this.initLeft = obj.style.left;\r\n this.initTop = obj.style.top;\r\n this.initParentNode = obj.parentNode;\r\n this.draggedObject = obj;\r\n this.invalid = false;\r\n obj.className += ' dragged';\r\n return true;\r\n }\r\n\r\n callHandlers(meth, evt) {\r\n let result;\r\n let i;\r\n let handler;\r\n for (i = 0; i < this.handlers.length; i++) {\r\n handler = this.handlers[i];\r\n if (handler[meth]) {\r\n result = handler[meth](evt);\r\n if (result !== undefined && !result) {\r\n return false;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n startMove(obj, offsetX, offsetY) {\r\n const result = this.callHandlers('startMove', obj, offsetX, offsetY);\r\n return result === undefined ? obj : result;\r\n }\r\n\r\n dragMouse(e) {\r\n const evt = e || window.event;\r\n const dX = evt.clientX - this.initialMouseX;\r\n const dY = evt.clientY - this.initialMouseY;\r\n this.move(dX, dY);\r\n return false;\r\n }\r\n\r\n move(dx, dy) {\r\n let i;\r\n let handler;\r\n let result;\r\n const pos = {\r\n dx,\r\n dy,\r\n x: this.startX + dx,\r\n y: this.startY + dy,\r\n };\r\n // Check if move valid\r\n this.invalid = false;\r\n for (i = 0; i < this.handlers.length; i++) {\r\n handler = this.handlers[i];\r\n if (handler.move) {\r\n result = handler.move(pos);\r\n if (result !== undefined && !result) {\r\n this.invalid = true;\r\n }\r\n }\r\n }\r\n if (this.invalid && !this.showMoveOnInvalid) {\r\n return false;\r\n }\r\n this.moved(dx, dy);\r\n if (pos.x !== undefined) {\r\n this.draggedObject.style.left = `${pos.x}px`;\r\n }\r\n if (pos.y !== undefined) {\r\n this.draggedObject.style.top = `${pos.y}px`;\r\n }\r\n return true;\r\n }\r\n\r\n dragKeys(e) {\r\n const evt = e || window.event;\r\n const key = evt.keyCode;\r\n switch (key) {\r\n case 37: // left\r\n case 63234:\r\n this.dXKeys -= this.keySpeed;\r\n break;\r\n case 38: // up\r\n case 63232:\r\n this.dYKeys -= this.keySpeed;\r\n break;\r\n case 39: // right\r\n case 63235:\r\n this.dXKeys += this.keySpeed;\r\n break;\r\n case 40: // down\r\n case 63233:\r\n this.dYKeys += this.keySpeed;\r\n break;\r\n case 13: // enter\r\n case 27: // escape\r\n this.cancel(evt);\r\n return false;\r\n default:\r\n return true;\r\n }\r\n this.move(this.dXKeys, this.dYKeys);\r\n if (evt.preventDefault) evt.preventDefault();\r\n return false;\r\n }\r\n\r\n addEventListener(elt, event, method, capturing) {\r\n const index = this.methodsToHitch.indexOf(method);\r\n let hitched = index >= 0 ? this.hitchedMethods[index] : null;\r\n if (index < 0) {\r\n this.methodsToHitch.push(method);\r\n this.hitchedMethods.push((hitched = e => method.call(this, e)));\r\n } else {\r\n hitched = this.hitchedMethods[index];\r\n }\r\n if (capturing) {\r\n Gantt.utils.addEventListener(elt, event, hitched, true);\r\n } else {\r\n Gantt.utils.addEventListener(elt, event, hitched);\r\n }\r\n }\r\n\r\n removeEventListener(elt, event, method) {\r\n const index = this.methodsToHitch.indexOf(method);\r\n if (index >= 0) {\r\n Gantt.utils.removeEventListener(elt, event, this.hitchedMethods[index]);\r\n }\r\n }\r\n\r\n switchKeyEvents() {\r\n // for Opera and Safari 1.3\r\n this.removeEventListener(document, 'keydown', this.dragKeys);\r\n this.removeEventListener(document, 'keypress', this.switchKeyEvents);\r\n this.addEventListener(document, 'keypress', this.dragKeys);\r\n }\r\n\r\n // noinspection JSUnusedLocalSymbols\r\n moved(dx, dy) {\r\n this.callHandlers('moved');\r\n }\r\n\r\n stopDrag() {\r\n this.callHandlers('stopMove');\r\n }\r\n\r\n cancel(evt) {\r\n this.restoreInitPosition();\r\n this.callHandlers('cancel');\r\n this.releaseElement(evt);\r\n }\r\n\r\n restoreInitPosition() {\r\n if (this.draggedObject) {\r\n if (this.callHandlers('restoreInitPosition') !== false) {\r\n this.draggedObject.style.left = this.initLeft;\r\n this.draggedObject.style.top = this.initTop;\r\n if (this.initParentNode !== this.draggedObject.parentNode) {\r\n this.initParentNode.appendChild(this.draggedObject);\r\n }\r\n }\r\n }\r\n }\r\n\r\n dropped(e) {\r\n const evt = e || window.event;\r\n if (!evt.button && this.draggedObject) {\r\n // Drag and drop may have been cancelled through a right click or pressing the Esc key\r\n const dX = evt.clientX - this.initialMouseX;\r\n const dY = evt.clientY - this.initialMouseY;\r\n this.move(dX, dY, true);\r\n this.applyMove();\r\n this.releaseElement(evt);\r\n }\r\n }\r\n\r\n applyMove() {\r\n this.callHandlers('applyMove');\r\n }\r\n\r\n releaseElement(evt) {\r\n this.stopDrag(evt);\r\n this.removeEventListener(document, 'mousemove', this.dragMouse);\r\n this.removeEventListener(document, 'mouseup', this.dropped);\r\n this.removeEventListener(document, 'keypress', this.dragKeys);\r\n this.removeEventListener(document, 'keypress', this.switchKeyEvents);\r\n this.removeEventListener(document, 'keydown', this.dragKeys);\r\n Gantt.utils.removeClass(this.draggedObject, 'dragged');\r\n this.draggedObject = null;\r\n }\r\n}\r\n","export const TIME_MARKER_DRAG_ITEM = 'dragg-item';\r\nexport const TIME_TABLE_ACTIVITY_CLASSNAME = 'time-table-activity';\r\nexport const TIME_TABLE_ROW = 'time-table-row';\r\nexport const UNSELECTABLE_CLASSNAME = 'g-unselectable';\r\n\r\nexport const DEFAULT_ACTIVITY_CLASSNAME = `${TIME_TABLE_ACTIVITY_CLASSNAME} ${UNSELECTABLE_CLASSNAME}`;\r\nexport const MILESTONE_CLASSNAME = `${DEFAULT_ACTIVITY_CLASSNAME} milestone`;\r\nexport const PARENT_ACTIVITY_CLASSNAME = `${DEFAULT_ACTIVITY_CLASSNAME} parent-activity`;\r\nexport const HIGHLIGHT_CLASS = 'highlight';\r\nexport const SELECTION_CLASS = 'selected';\r\nexport const SELECT_CONTENT_CLASSNAME = 'select-content';\r\n\r\nexport const DECORATION_INVALID_TYPE = 'invalid';\r\nexport const DECORATION_INVALID_CLASS = 'time-table-invalid';\r\nexport const DECORATION_BREAK_TYPE = 'break';\r\nexport const DECORATION_BREAK_CLASS = 'time-table-break';\r\n","import Gantt from '../core/core';\r\n\r\nimport {\r\n DEFAULT_ACTIVITY_CLASSNAME,\r\n MILESTONE_CLASSNAME,\r\n PARENT_ACTIVITY_CLASSNAME,\r\n SELECT_CONTENT_CLASSNAME,\r\n} from './css-classes';\r\n\r\nconst ActivityRendererPrototype = {\r\n createShape(activity) {\r\n const elt = document.createElement('div');\r\n const start = activity.start;\r\n const end = activity.end;\r\n if (end === start) {\r\n elt.className = MILESTONE_CLASSNAME;\r\n elt.style.border = 'none';\r\n elt.style.maxWidth = '0';\r\n\r\n const diamond = document.createElement('div');\r\n diamond.className = 'shape';\r\n diamond.style.position = 'absolute';\r\n diamond.style.top = '8px';\r\n diamond.style.left = '0';\r\n diamond.style.right = '0';\r\n diamond.style.bottom = '-8px';\r\n diamond.style.minWidth = '16px';\r\n diamond.style.maxHeight = '16px';\r\n diamond.style.background = 'inherit';\r\n elt.appendChild(diamond);\r\n } else if (activity.children && activity.children.length) {\r\n elt.className = PARENT_ACTIVITY_CLASSNAME;\r\n elt.style.display = 'block';\r\n elt.style.backgroundColor = 'transparent';\r\n const bar = document.createElement('div');\r\n bar.className = 'parent-activity-bar';\r\n bar.style.width = '100%';\r\n bar.style.height = '50%';\r\n elt.appendChild(bar);\r\n\r\n const triangleBar = document.createElement('div');\r\n const triangleWidth = 7;\r\n triangleBar.style.width = '100%';\r\n triangleBar.style.height = '50%';\r\n triangleBar.style.backgroundColor = 'transparent';\r\n\r\n const leftTriangle = document.createElement('div');\r\n leftTriangle.className = 'top-left-triangle activity-limit';\r\n leftTriangle.style.display = 'inline-block';\r\n leftTriangle.style.float = 'left';\r\n leftTriangle.style.width = '0';\r\n leftTriangle.style.height = '0';\r\n leftTriangle.style.borderTopStyle = 'solid';\r\n leftTriangle.style.borderTopWidth = `${triangleWidth}px`;\r\n leftTriangle.style.borderRightStyle = 'solid';\r\n leftTriangle.style.borderRightWidth = `${triangleWidth}px`;\r\n leftTriangle.style.borderRightColor = 'transparent';\r\n triangleBar.appendChild(leftTriangle);\r\n\r\n const rightTriangle = document.createElement('div');\r\n rightTriangle.className = 'top-right-triangle activity-limit';\r\n triangleBar.appendChild(rightTriangle);\r\n rightTriangle.style.display = 'inline-block';\r\n rightTriangle.style.float = 'right';\r\n rightTriangle.style.width = '0';\r\n rightTriangle.style.height = '0';\r\n rightTriangle.style.borderTopStyle = 'solid';\r\n rightTriangle.style.borderTopWidth = `${triangleWidth}px`;\r\n rightTriangle.style.borderLeftStyle = 'solid';\r\n rightTriangle.style.borderLeftWidth = `${triangleWidth}px`;\r\n rightTriangle.style.borderLeftColor = 'transparent';\r\n elt.appendChild(triangleBar);\r\n } else {\r\n elt.className = DEFAULT_ACTIVITY_CLASSNAME;\r\n }\r\n const selElt = document.createElement('div');\r\n selElt.className = SELECT_CONTENT_CLASSNAME;\r\n selElt.style.height = '100%';\r\n selElt.style.display = 'flex';\r\n selElt.style.justifyContent = 'space-between';\r\n selElt.style.alignItems = 'center';\r\n selElt.style.border = 'none';\r\n elt.appendChild(selElt);\r\n return elt;\r\n },\r\n\r\n drawRightContent(elt, icon, text, object) {\r\n const textCtnr = document.createElement('div');\r\n textCtnr.style.position = 'absolute';\r\n textCtnr.className = 'text-container right';\r\n textCtnr.style.left = '100%';\r\n textCtnr.style.top = '0';\r\n textCtnr.style.height = '100%';\r\n if (icon) {\r\n const img = document.createElement('img');\r\n img.className = 'image-content';\r\n img.src = icon;\r\n img.alt = '';\r\n textCtnr.appendChild(img);\r\n }\r\n elt.style.overflowX = 'visible';\r\n const t = document.createElement('span');\r\n t.className = 'text-content';\r\n t.innerHTML = text;\r\n textCtnr.appendChild(t);\r\n elt.appendChild(textCtnr);\r\n object.label = {\r\n getTextWidth() {\r\n return t.offsetWidth;\r\n },\r\n getTextHeight() {\r\n return t.offsetHeight;\r\n },\r\n move(left, dist) {\r\n Gantt.utils.toggleClass(textCtnr, 'left', left);\r\n textCtnr.style.marginLeft = 0; // Default one is for margin on text without links\r\n if (left) {\r\n textCtnr.style.left = `${-dist}px`;\r\n textCtnr.style.paddingLeft = 0;\r\n } else {\r\n textCtnr.style.left = '100%';\r\n textCtnr.style.paddingLeft = `${dist}px`;\r\n }\r\n },\r\n };\r\n return textCtnr;\r\n },\r\n\r\n getText(activity) {\r\n return activity.name;\r\n },\r\n\r\n getTooltipProperties(act) {\r\n const props = [\r\n Gantt.utils.getString('gantt.start'),\r\n new Date(act.start).format(),\r\n Gantt.utils.getString('gantt.end'),\r\n new Date(act.end).format(),\r\n ];\r\n if (act.id !== undefined) {\r\n props.push(Gantt.utils.getString('gantt.id'));\r\n props.push(act.id);\r\n }\r\n return props;\r\n },\r\n\r\n processConfiguration(selector, config) {\r\n this.defaultProcessConfiguration(selector, config);\r\n\r\n if (config.rowHeight) {\r\n this.addRowHeightConfiguration(selector, config.rowHeight);\r\n }\r\n\r\n if (config.generateRowDecorations) {\r\n this.addGenerateRowDecorations(selector, config.generateRowDecorations);\r\n }\r\n\r\n if (config.generateDecorations) {\r\n this.addGenerateDecorations(selector, config.generateDecorations);\r\n }\r\n },\r\n\r\n initialized(config) {\r\n const gantt = this.paletteHandler;\r\n this.defaultSetBackground = this.setBackground;\r\n this.drawDefaultContentSet = this.drawDefaultContent;\r\n this.ganttLoadListener = e => {\r\n if (gantt.isResourceGantt()) {\r\n this.drawDefaultContent = this.drawNoDisplayOverflowContent;\r\n this.setBackground = this.defaultSetBackground;\r\n this.drawDefaultContent = this.drawDefaultContentSet;\r\n } else {\r\n // TODO Don't put a setter in a get...\r\n this.setBackground = function(shapeElt, bg) {\r\n if (Gantt.utils.hasClass(shapeElt, 'parent-activity')) {\r\n shapeElt.querySelectorAll('.activity-limit').forEach(elt => {\r\n elt.style.borderTopColor = bg;\r\n });\r\n const parentBar = shapeElt.querySelector('.parent-activity-bar');\r\n if (parentBar) {\r\n parentBar.style.backgroundColor = bg;\r\n }\r\n } else {\r\n this.drawDefaultContentSet(shapeElt, null, '');\r\n shapeElt.style.backgroundColor = bg;\r\n }\r\n };\r\n this.drawDefaultContent = this.drawRightContent;\r\n }\r\n };\r\n gantt.on(Gantt.events.DATA_LOADED, this.ganttLoadListener);\r\n },\r\n\r\n destroy() {\r\n if (this.ganttLoadListener) {\r\n const gantt = this.paletteHandler;\r\n gantt.off(Gantt.events.DATA_LOADED, this.ganttLoadListener);\r\n this.ganttLoadListener = null;\r\n }\r\n },\r\n\r\n addRowHeightConfiguration(selector, config) {\r\n let rowHeight;\r\n if (typeof config === 'function') {\r\n rowHeight = config;\r\n } else if (typeof config === 'string') {\r\n const getter = Gantt.utils.propertyEvaluator(config);\r\n if (getter) {\r\n rowHeight = (object, ctx) => getter(object, ctx);\r\n }\r\n } else {\r\n rowHeight = () => config;\r\n }\r\n if (rowHeight) {\r\n const oldRowHeight = this.rowHeight;\r\n this.rowHeight = (object, ctx) => {\r\n if (!selector || selector(object)) {\r\n return rowHeight(object, ctx);\r\n }\r\n return oldRowHeight && oldRowHeight(object, ctx);\r\n };\r\n }\r\n },\r\n\r\n //\r\n // Decoration management\r\n //\r\n\r\n addGenerateRowDecorations(selector, config) {\r\n let generateRowDecorations;\r\n if (typeof config === 'function') {\r\n generateRowDecorations = config;\r\n } else if (typeof config === 'string') {\r\n const getter = Gantt.utils.propertyEvaluator(config);\r\n if (getter) {\r\n generateRowDecorations = (row, start, end, ctx) => getter(row, start, end, ctx);\r\n }\r\n } else {\r\n throw new Error('generateRowDecorations must be a function or an accessor to a row method');\r\n }\r\n if (generateRowDecorations) {\r\n const oldGenerateRowDecorations = this.generateRowDecorations;\r\n this.generateRowDecorations = (row, start, end, ctx) => {\r\n const decorations = (oldGenerateRowDecorations && oldGenerateRowDecorations(row, start, end, ctx)) || null;\r\n if (!selector || selector(row)) {\r\n const newDecos = generateRowDecorations(row, start, end, ctx);\r\n if (newDecos && newDecos.length) {\r\n return !decorations || !decorations.length ? newDecos : decorations.concat(newDecos);\r\n }\r\n }\r\n return decorations;\r\n };\r\n }\r\n },\r\n\r\n addGenerateDecorations(selector, config) {\r\n let generateDecorations;\r\n if (typeof config === 'function') {\r\n generateDecorations = config;\r\n } else {\r\n throw new Error('generateDecorations must be a function');\r\n }\r\n if (generateDecorations) {\r\n const oldGenerateDecorations = this.generateDecorations;\r\n this.generateDecorations = (start, end, ctx) => {\r\n const decorations = (oldGenerateDecorations && oldGenerateDecorations(start, end, ctx)) || null;\r\n if (!selector || selector(ctx)) {\r\n const newDecos = generateDecorations(start, end, ctx);\r\n if (newDecos && newDecos.length) {\r\n return !decorations || !decorations.length ? newDecos : decorations.concat(newDecos);\r\n }\r\n }\r\n return decorations;\r\n };\r\n }\r\n },\r\n};\r\n\r\nexport default ActivityRendererPrototype;\r\n","import Gantt from '../core/core';\r\n\r\nconst RowRendererPrototype = {\r\n createShape(activity, parentElt) {\r\n return parentElt;\r\n },\r\n};\r\n\r\nexport default RowRendererPrototype;\r\n","import Gantt from '../core/core';\r\n\r\nconst defaultOptions = {\r\n cascadeOffset: 5,\r\n topMargin: 1,\r\n bottomMargin: 1,\r\n subRowPadding: 1,\r\n constantRowHeight: false,\r\n compareBoundingBoxes: false,\r\n miniWidth: 4,\r\n};\r\n\r\nconst STRATEGY_LOGISTIC = 'logistic';\r\nconst STRATEGY_TILE = 'tile';\r\nconst STRATEGIES = {};\r\nconst MINI_ACTIVITY_CLASS = 'mini-activity';\r\nconst MILESTONE = 'milestone';\r\n\r\nSTRATEGIES[STRATEGY_LOGISTIC] = function(row) {\r\n // this is the activity layout calling this function\r\n ActivityLayout.sortTasksOnStart(row);\r\n const subRowsCount = ActivityLayout.computeSubRows(row);\r\n let offset;\r\n let actHeight = row.height - this.topMargin - this.bottomMargin - 1;\r\n if (subRowsCount > 1) {\r\n offset = this.cascadeOffset;\r\n actHeight = Math.max(actHeight - this.cascadeOffset * (subRowsCount - 1), 0);\r\n if (actHeight === 0) {\r\n offset = 0;\r\n }\r\n }\r\n const actCount = (row.activities && row.activities.length) || 0;\r\n for (let iAct = 0, act; iAct < actCount; ++iAct) {\r\n act = row.activities[iAct];\r\n if (act.node) {\r\n act.node.style.top = `${this.topMargin + offset * act.subRowIndex}px`;\r\n act.node.style.height = actHeight;\r\n }\r\n }\r\n};\r\n\r\nSTRATEGIES[STRATEGY_TILE] = function(row) {\r\n let rowHeight = row.tableRowHeight;\r\n\r\n let { topMargin } = this;\r\n let { bottomMargin } = this;\r\n let subRowHeight = rowHeight - topMargin - bottomMargin - 1;\r\n if (subRowHeight <= 0) {\r\n subRowHeight = 1;\r\n const availMargin = rowHeight - subRowHeight;\r\n topMargin = (availMargin * topMargin) / (topMargin + bottomMargin);\r\n bottomMargin = availMargin - topMargin;\r\n }\r\n\r\n // Compute the overlap, tiling, and number of subrows required to accommodate the\r\n // graphics. First, we associate each graphic with its the bounds in view coordinates.\r\n // Then we sort the array by start time or x position, depending on the overlap\r\n // detection strategy being used.\r\n const activitiyComparator = this.compareBoundingBoxes\r\n ? function(act1, act2) {\r\n return act1.left - act2.left;\r\n }\r\n : function(act1, act2) {\r\n return act1.start - act2.start;\r\n };\r\n row.activities.sort(activitiyComparator);\r\n\r\n // Finally, assign graphics to subrows, increasing the number of subrows as\r\n // necessary so that the graphics do not overlap.\r\n const subRows = this.setTaskSubRows(row);\r\n\r\n // For constant row height, we subdivide the row's current height into the required\r\n // number of subrows. For constant subrow height, we expand the row to accommodate the\r\n // required number of subrows\r\n let subRowMargin = this.subRowPadding;\r\n if (this.constantRowHeight) {\r\n if (subRowMargin * (subRows.length - 1) >= subRowHeight) {\r\n subRowMargin = subRowHeight / (subRows.length - 1);\r\n }\r\n subRowHeight = (subRowHeight - (subRows.length - 1) * subRowMargin) / subRows.length;\r\n } else {\r\n rowHeight = topMargin + bottomMargin + subRows.length * subRowHeight + (subRows.length - 1) * subRowMargin;\r\n // Set the row height so that each subrow has the chart's global row\r\n // height.\r\n row.setRowHeight(Math.round(rowHeight));\r\n }\r\n\r\n // Set the vertical bounds of the activities in each subrow.\r\n let top = topMargin;\r\n let subRowTasks;\r\n let task;\r\n for (var i = 0, iTask; i < subRows.length; i++) {\r\n subRowTasks = subRows[i];\r\n for (iTask = 0; iTask < subRowTasks.length; iTask++) {\r\n task = subRowTasks[iTask];\r\n task.node.style.top = `${top}px`;\r\n task.node.style.height = `${subRowHeight}px`;\r\n }\r\n top += subRowHeight + subRowMargin;\r\n }\r\n};\r\n\r\nexport default class ActivityLayout extends Gantt.components.ActivityLayout {\r\n constructor(config, proto, ctx) {\r\n super(config);\r\n Gantt.utils.mergeObjects(this, defaultOptions, config, proto);\r\n this.ctx = ctx;\r\n\r\n if (this.strategy) {\r\n if (typeof config.strategy === 'string') {\r\n this.getLayoutStrategy = () => this.strategy;\r\n } else if (typeof this.strategy === 'function') {\r\n this.getLayoutStrategy = () => this.strategy(this.ctx);\r\n }\r\n }\r\n }\r\n\r\n layout(row) {\r\n if (row.activities && row.activities.length) {\r\n const strategyKey = this.getLayoutStrategy();\r\n let vLayout;\r\n this.layoutHorizontally(row);\r\n if (strategyKey && (vLayout = STRATEGIES[strategyKey])) {\r\n vLayout.call(this, row);\r\n } else {\r\n let act;\r\n let elt;\r\n for (let iAct = 0; iAct < row.activities.length; iAct++) {\r\n act = row.activities[iAct];\r\n elt = act.node;\r\n if (elt) {\r\n elt.style.top = `${this.topMargin}px`;\r\n elt.style.height = `${row.height - this.topMargin - this.bottomMargin - 1}px`;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * @return {string}\r\n */\r\n static get STRATEGY_LOGISTIC() {\r\n return STRATEGY_LOGISTIC;\r\n }\r\n\r\n /**\r\n * @return {string}\r\n */\r\n static get STRATEGY_TILE() {\r\n return STRATEGY_TILE;\r\n }\r\n\r\n static get STRATEGIES() {\r\n return STRATEGIES;\r\n }\r\n\r\n allowVariableRowHeight() {\r\n const strategyKey = this.getLayoutStrategy();\r\n if (strategyKey && strategyKey === STRATEGY_TILE) {\r\n return !this.constantRowHeight;\r\n }\r\n return false;\r\n }\r\n\r\n layoutHorizontally(row) {\r\n let act;\r\n let elt;\r\n let left;\r\n const actCount = row.activities.length;\r\n for (let iAct = 0; iAct < actCount; iAct++) {\r\n act = row.activities[iAct];\r\n elt = act.node;\r\n if (elt) {\r\n left = act.left = row.getX(act.start);\r\n elt.style.left = `${left}px`;\r\n elt.style.width = `${(act.width = row.getX(act.end) - left + 1)}px`;\r\n if (act.width <= this.miniWidth && !Gantt.utils.hasClass(elt, MILESTONE)) {\r\n act.width = this.miniWidth;\r\n elt.style.width = `${act.width}px`;\r\n Gantt.utils.addClass(elt, MINI_ACTIVITY_CLASS);\r\n }\r\n }\r\n }\r\n }\r\n\r\n static sortTasksOnStart(row) {\r\n row.activities.sort(function(act1, act2) {\r\n return act1.start - act2.start;\r\n });\r\n }\r\n\r\n static computeSubRows(row) {\r\n const endTimes = [];\r\n let endTime;\r\n let iAct;\r\n let act;\r\n let e;\r\n let endTimesCount = 0;\r\n const actCount = (row.activities && row.activities.length) || 0;\r\n for (iAct = 0; iAct < actCount; ++iAct) {\r\n act = row.activities[iAct];\r\n if (act.node) {\r\n for (e = 0; e < endTimesCount; e++) {\r\n endTime = endTimes[e];\r\n if (act.start === endTime || act.start > endTime) {\r\n break;\r\n }\r\n }\r\n act.subRowIndex = e;\r\n if (e < endTimesCount) {\r\n endTimes[e] = act.end;\r\n } else {\r\n endTimes.push(act.end);\r\n endTimesCount++;\r\n }\r\n }\r\n }\r\n return endTimesCount;\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n getLayoutStrategy() {\r\n return null;\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n layoutVertically(row) {\r\n row.subRows = [];\r\n }\r\n\r\n /* */\r\n /* Tiling specific methods */\r\n /* */\r\n /**\r\n * Creates as many subrows as needed to accommodate the given activity graphics and\r\n * assigns the activity graphics to the subrows. The activity graphics are provided\r\n * with their view bounding boxes as an array of {@link GraphicBounds}. This allows\r\n * the tiling policy to take advantage of the precomputed activity bounding boxes when\r\n * computing graphic overlap and assigning activity graphics to subrows. The result of\r\n * this method is a list of subrows, where each subrow is a list of {@link\r\n * GraphicBounds} representing the activities assigned to the subrow. All activity\r\n * graphics provided as input to the tiling policy must be assigned to one and only\r\n * one subrow.\r\n *\r\n * @param graphics The activity graphics to be tiled into subrows, as an\r\n * array of {@link GraphicBounds}. If compareBoundingBoxes
\r\n * is true
then the array will be sorted by\r\n * the x position of each activity graphic's bounding box.\r\n * If compareBoundingBoxes
is\r\n * false
then the array will be sorted by the\r\n * start time of each activity. Note, that the bounding\r\n * boxes are provided as input only. Modifying the\r\n * bounding box of a {@link GraphicBounds} will not affect\r\n * how an activity is positioned.\r\n * @param compareBoundingBoxes Indicates whether the tiling policy should compute\r\n * activity overlap by comparing the graphic bounding\r\n * boxes. If false
, activity overlap should\r\n * be computed by comparing the activity time intervals.\r\n * @return The list of subrows, where each subrow is a list of {@link GraphicBounds}\r\n * representing the activities assigned to the subrow.\r\n */\r\n setTaskSubRows(row) {\r\n const subRows = [];\r\n let act;\r\n let iSubRow;\r\n for (let iAct = 0, actCount = (row.activities && row.activities.length) || 0; iAct < actCount; ++iAct) {\r\n act = row.activities[iAct];\r\n if (act.node) {\r\n for (iSubRow = 0; iSubRow < subRows.length; iSubRow++) {\r\n if (this.addGraphicToSubRowIfFits(act, subRows[iSubRow])) {\r\n break;\r\n }\r\n }\r\n if (iSubRow === subRows.length) {\r\n subRows.push([act]);\r\n }\r\n }\r\n }\r\n return subRows;\r\n }\r\n\r\n /**\r\n * Adds the specified task to the specified subRow if it fits. If the\r\n * task is successfully added to the list of graphics for the subrow, this method\r\n * returns true. If the graphic does not fit into the subrow, this method returns\r\n * false. If the graphic does not fit into any of the existing subrows, the tiling\r\n * policy will create a new subrow for the graphic. Note, that a graphic must always\r\n * succeed in being added to an empty subrow.\r\n *\r\n * @param activity The activity to add.\r\n * @param subRow The subRow, represented as a list of activities.\r\n */\r\n addGraphicToSubRowIfFits(activity, subRow) {\r\n // Adding a graphic to an empty subrow must always succeed.\r\n if (!subRow.length) {\r\n subRow.push(activity);\r\n }\r\n // Otherwise, check whether the graphic fits at the end of the subRow.\r\n else {\r\n const lastRowTask = subRow[subRow.length - 1];\r\n if (this.compareBoundingBoxes) {\r\n if (activity.left < lastRowTask.left + lastRowTask.width) {\r\n return false;\r\n }\r\n } else if (activity.start < lastRowTask.end) {\r\n return false;\r\n }\r\n subRow.push(activity);\r\n }\r\n return true;\r\n }\r\n}\r\n\r\nGantt.components.ActivityLayout.impl = ActivityLayout;\r\n","import Gantt from '../core/core';\r\n\r\nconst ID_DELIM = '_';\r\nconst CONSTRAINT_LINK_CLASS = 'constraint-link';\r\nconst CONSTRAINT_LINK_CTNR_CLASS = 'constraint-link-ctnr';\r\nconst STYLE_ARROW = 1;\r\nconst CONSTRAINT_ARROW = 'constraint-arrow';\r\n\r\nclass NodeLabelLayout {\r\n startLayout(act, ctx) {}\r\n\r\n getNodeToLabelSpacing(act, bbox, textWidth, ctx) {}\r\n}\r\n\r\nclass DefaultNodeLabelLayout extends NodeLabelLayout {\r\n constructor(left) {\r\n super();\r\n this.left = left;\r\n }\r\n\r\n getNodeToLabelSpacing(act, bbox, textWidth, ctx) {\r\n return this.left ? -ctx.nodeToLinkPadding : ctx.nodeToLinkPadding;\r\n }\r\n}\r\n\r\nconst LinkRendererPrototype = {\r\n drawLink(object, points, style, parentElt, ctx) {\r\n if (points.length < 2) return null;\r\n let lastX = points[0].x;\r\n let lastY = points[0].y;\r\n const nodes = [];\r\n const color = this.color ? this.color(object, ctx) : undefined;\r\n const css = this.getCSS && this.getCSS(object, ctx);\r\n const w = this.lineWidth && this.lineWidth(object, ctx);\r\n let i = 0;\r\n let line;\r\n let pt;\r\n let horiz;\r\n // eslint-disable-next-line no-constant-condition\r\n while (true) {\r\n line = document.createElement('div');\r\n line.style.position = 'absolute';\r\n line.style.pointerEvents = 'auto';\r\n pt = points[++i];\r\n if (object && object.id) line.id = object.id + ID_DELIM + i;\r\n horiz = pt.y === lastY;\r\n line.className = `${CONSTRAINT_LINK_CLASS} ${horiz ? 'constraint-horiz-link' : 'constraint-vert-link'}`;\r\n\r\n if (this.linkOutlineWidth) {\r\n line.className = `${CONSTRAINT_LINK_CTNR_CLASS} ${horiz ? 'constraint-horiz-link' : 'constraint-vert-link'}`;\r\n if (horiz) {\r\n line.style.height = `${(w || 1) + this.linkOutlineWidth + this.linkOutlineWidth}px`;\r\n line.style.paddingTop = line.style.paddingBottom = `${this.linkOutlineWidth}px`;\r\n line.style.top = `${lastY - this.linkOutlineWidth}px`;\r\n line.style.left = `${Math.min(lastX, pt.x)}px`;\r\n line.style.width = `${Math.abs(lastX - pt.x) + (i && lastX > pt.x ? w || 1 : 0)}px`;\r\n if (css) line.className += ` ${css}`;\r\n\r\n const link = document.createElement('div');\r\n link.className = `${CONSTRAINT_LINK_CLASS} constraint-horiz-link`;\r\n if (w) link.style.height = `${w}px`;\r\n link.style.width = '100%';\r\n line.appendChild(link);\r\n } else {\r\n line.style.width = `${(w || 1) + this.linkOutlineWidth + this.linkOutlineWidth}px`;\r\n line.style.paddingLeft = line.style.paddingRight = `${this.linkOutlineWidth}px`;\r\n line.style.left = `${lastX - this.linkOutlineWidth}px`;\r\n line.style.top = `${Math.min(lastY, pt.y)}px`;\r\n line.style.height = `${Math.abs(lastY - pt.y)}px`;\r\n if (css) line.className += ` ${css}`;\r\n\r\n const link = document.createElement('div');\r\n link.className = `${CONSTRAINT_LINK_CLASS} constraint-vert-link`;\r\n if (w) link.style.width = `${w}px`;\r\n link.style.height = '100%';\r\n line.appendChild(link);\r\n }\r\n } else if (horiz) {\r\n if (w) line.style.height = `${w}px`;\r\n line.style.top = `${lastY}px`;\r\n line.style.left = `${Math.min(lastX, pt.x)}px`;\r\n line.style.width = `${Math.abs(lastX - pt.x) + (i && lastX > pt.x ? w || 1 : 0)}px`;\r\n if (css) line.className += ` ${css}`;\r\n } else {\r\n if (w) line.style.width = `${w}px`;\r\n line.style.left = `${lastX}px`;\r\n line.style.top = `${Math.min(lastY, pt.y)}px`;\r\n line.style.height = `${Math.abs(lastY - pt.y)}px`;\r\n if (css) line.className += ` ${css}`;\r\n }\r\n nodes.push(line);\r\n parentElt.appendChild(line);\r\n if (i === points.length - 1) {\r\n if (style === STYLE_ARROW) {\r\n if (horiz) {\r\n const arrowWidth = this.arrowWidth(object, ctx);\r\n const arrowHeight = this.arrowHeight(object, ctx);\r\n if (lastX < pt.x) {\r\n line = this.drawRightArrow(pt.x, lastY, arrowWidth, arrowHeight, color);\r\n } else {\r\n line = this.drawLeftArrow(pt.x, lastY, arrowWidth, arrowHeight, color);\r\n }\r\n line.style.pointerEvents = 'auto';\r\n if (css) line.className += ` ${css}`;\r\n if (object && object.id) line.id = `${object.id + ID_DELIM}arrow`;\r\n nodes.push(line);\r\n parentElt.appendChild(line);\r\n }\r\n }\r\n return nodes;\r\n }\r\n\r\n lastX = pt.x;\r\n lastY = pt.y;\r\n }\r\n },\r\n\r\n drawLeftArrow(x, y, arrowWidth, arrowHeight, color) {\r\n const node = document.createElement('div');\r\n node.style.position = 'absolute';\r\n node.className = `${CONSTRAINT_ARROW} constraint-left-arrow`;\r\n node.style.left = `${x}px`;\r\n node.style.top = `${y - (arrowHeight - 1)}px`;\r\n node.style.width = '0';\r\n node.style.height = '0';\r\n node.style.borderTop = `${arrowHeight}px solid transparent`;\r\n node.style.borderBottom = `${arrowHeight}px solid transparent`;\r\n node.style.borderRightWidth = `${arrowWidth}px`;\r\n node.style.borderRightStyle = 'solid';\r\n if (color) node.style.borderRightColor = color;\r\n return node;\r\n },\r\n\r\n drawRightArrow(x, y, arrowWidth, arrowHeight, color) {\r\n const node = document.createElement('div');\r\n node.style.position = 'absolute';\r\n node.className = `${CONSTRAINT_ARROW} constraint-right-arrow`;\r\n node.style.left = `${x - arrowWidth}px`;\r\n node.style.top = `${y - (arrowHeight - 1)}px`;\r\n node.style.width = '0';\r\n node.style.height = '0';\r\n node.style.borderTop = `${arrowHeight}px solid transparent`;\r\n node.style.borderBottom = `${arrowHeight}px solid transparent`;\r\n node.style.borderLeftWidth = `${arrowWidth}px`;\r\n node.style.borderLeftStyle = 'solid';\r\n if (color) node.style.borderLeftColor = color;\r\n return node;\r\n },\r\n\r\n arrowWidth() {\r\n return 5;\r\n },\r\n\r\n arrowHeight() {\r\n return 5;\r\n },\r\n\r\n getTooltipProperties(cons, ctx) {\r\n const getName = function(act) {\r\n return act.name || act.id;\r\n };\r\n const props = [\r\n Gantt.utils.getString('gantt.constraintChart.from'),\r\n getName(cons.from),\r\n Gantt.utils.getString('gantt.constraintChart.to'),\r\n getName(cons.to),\r\n Gantt.utils.getString('gantt.constraintChart.type'),\r\n ];\r\n let type;\r\n if (cons.type === Gantt.constraintTypes.START_TO_START)\r\n type = Gantt.utils.getString('gantt.constraintChart.start.start');\r\n else if (cons.type === Gantt.constraintTypes.START_TO_END)\r\n type = Gantt.utils.getString('gantt.constraintChart.start.end');\r\n else if (cons.type === Gantt.constraintTypes.END_TO_END)\r\n type = Gantt.utils.getString('gantt.constraintChart.end.end');\r\n else type = Gantt.utils.getString('gantt.constraintChart.end.start');\r\n props.push(type);\r\n return props;\r\n },\r\n\r\n processConfiguration(selector, config) {\r\n this.defaultProcessConfiguration(selector, config);\r\n\r\n if (config.lineWidth) {\r\n this.addLineWidthConfiguration(selector, config.lineWidth);\r\n }\r\n\r\n if (config.arrowWidth) {\r\n this.addArrowConfiguration(selector, config.arrowWidth, 'arrowWidth');\r\n }\r\n\r\n if (config.arrowHeight) {\r\n this.addArrowConfiguration(selector, config.arrowWidth, 'arrowHeight');\r\n }\r\n\r\n if (config.nodeLabelLayout) {\r\n this.addNodeLabelLayoutConfiguration(selector, config.nodeLabelLayout);\r\n }\r\n },\r\n\r\n setColor(elt, color) {\r\n elt.style.color = color;\r\n },\r\n\r\n destroy() {},\r\n\r\n addLineWidthConfiguration(selector, config) {\r\n let lineWidth;\r\n if (typeof config === 'function') {\r\n lineWidth = config;\r\n } else if (typeof config === 'string') {\r\n const getter = Gantt.utils.propertyEvaluator(config);\r\n if (getter) {\r\n lineWidth = (object, ctx) => getter(object, ctx);\r\n }\r\n } else {\r\n lineWidth = () => config;\r\n }\r\n if (lineWidth) {\r\n const oldLineWidth = this.lineWidth;\r\n this.lineWidth = (object, ctx) => {\r\n if (!selector || selector(object, ctx)) {\r\n return lineWidth(object, ctx);\r\n }\r\n return oldLineWidth && oldLineWidth(object, ctx);\r\n };\r\n }\r\n },\r\n\r\n addArrowConfiguration(selector, config, field) {\r\n let arrowSize;\r\n if (typeof config === 'function') {\r\n arrowSize = config;\r\n } else if (typeof config === 'string') {\r\n const getter = Gantt.utils.propertyEvaluator(config);\r\n if (getter) {\r\n arrowSize = (object, ctx) => getter(object, ctx);\r\n }\r\n } else {\r\n arrowSize = () => config;\r\n }\r\n if (arrowSize) {\r\n const oldArrowSize = this[field];\r\n this[field] = (object, ctx) => {\r\n if (!selector || selector(object, ctx)) {\r\n return arrowSize(object, ctx);\r\n }\r\n return oldArrowSize && oldArrowSize(object, ctx);\r\n };\r\n }\r\n },\r\n\r\n addNodeLabelLayoutConfiguration(selector, config) {\r\n let labelLayout;\r\n if (typeof config === 'string') {\r\n if (config === 'left' || config === 'LEFT') {\r\n labelLayout = new DefaultNodeLabelLayout(true);\r\n } else if (config === 'right' || config === 'RIGHT') {\r\n labelLayout = new DefaultNodeLabelLayout(false);\r\n }\r\n } else if (Gantt.utils.isFunction(config)) {\r\n labelLayout = new NodeLabelLayout();\r\n labelLayout.getNodeToLabelSpacing = config;\r\n } else {\r\n labelLayout = config;\r\n }\r\n if (labelLayout) {\r\n const oldGetLabelLayout = this.getLabelLayout;\r\n this.getLabelLayout = (object, ctx) => {\r\n if (!selector || selector(object, ctx)) {\r\n return labelLayout;\r\n }\r\n return oldGetLabelLayout && oldGetLabelLayout(object, ctx);\r\n };\r\n }\r\n },\r\n};\r\n\r\nexport { LinkRendererPrototype, ID_DELIM, CONSTRAINT_LINK_CLASS, CONSTRAINT_LINK_CTNR_CLASS, CONSTRAINT_ARROW };\r\n","import Gantt from '../core/core';\r\n\r\nconst LOCKED = Number.MAX_VALUE;\r\n\r\nconst STYLE_ARROW = 1;\r\nconst LEFT = 0;\r\nconst RIGHT = 1;\r\nconst SIDE_COUNT = 2;\r\n\r\nconst CONNECTOR_COUNT = 4;\r\nconst INCOMINGS = new Array(4);\r\nINCOMINGS[Gantt.constraintTypes.START_TO_START] = 0;\r\nINCOMINGS[Gantt.constraintTypes.START_TO_END] = 2;\r\nINCOMINGS[Gantt.constraintTypes.END_TO_START] = 0;\r\nINCOMINGS[Gantt.constraintTypes.END_TO_END] = 2;\r\n\r\nconst OUTGINGS = new Array(4);\r\nOUTGINGS[Gantt.constraintTypes.START_TO_START] = 1;\r\nOUTGINGS[Gantt.constraintTypes.START_TO_END] = 1;\r\nOUTGINGS[Gantt.constraintTypes.END_TO_START] = 3;\r\nOUTGINGS[Gantt.constraintTypes.END_TO_END] = 3;\r\n\r\nclass Link {\r\n constructor(cons) {\r\n this.ar = [cons];\r\n if (cons.from.consNode.index < cons.to.consNode.index) {\r\n this.topNode = cons.from.consNode;\r\n this.bottomNode = cons.to.consNode;\r\n } else {\r\n this.topNode = cons.to.consNode;\r\n this.bottomNode = cons.from.consNode;\r\n }\r\n }\r\n\r\n addConstraint(cons) {\r\n this.ar.push(cons);\r\n const rowIndex = cons.from.consNode.index;\r\n if (rowIndex < this.topNode.index) {\r\n this.topNode = cons.from.consNode;\r\n } else if (rowIndex > this.bottomNode.index) {\r\n this.bottomNode = cons.from.consNode;\r\n }\r\n }\r\n\r\n topIndex() {\r\n return this.topNode.index;\r\n }\r\n\r\n bottomIndex() {\r\n return this.bottomNode.index;\r\n }\r\n\r\n toNode() {\r\n return this.ar[0].to.consNode;\r\n }\r\n\r\n switchSides() {\r\n const { type } = this.ar[0];\r\n return type === Gantt.constraintTypes.END_TO_START || type === Gantt.constraintTypes.START_TO_END;\r\n }\r\n\r\n isDisplayed() {\r\n for (let i = 0; i < this.ar.length; i++) {\r\n if (!this.ar[i].nodes) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n toString() {\r\n let s = 'Link[';\r\n if (this.ar.length > 1) {\r\n s += `(${this.ar\r\n .map(function(cons) {\r\n return cons.from.consNode.toString();\r\n })\r\n .join(',')})`;\r\n } else s += this.ar[0].from.consNode.toString();\r\n s += ' -> ';\r\n s += this.ar[0].to.consNode.toString();\r\n return `${s}]`;\r\n }\r\n\r\n resetLayout() {\r\n this.x = undefined;\r\n for (let i = 0; i < this.ar.length; i++) {\r\n this.ar[i].nodes = undefined;\r\n }\r\n }\r\n}\r\n\r\nfunction compareLinks(l1, l2) {\r\n let i1 = l1.topIndex();\r\n let i2 = l2.topIndex();\r\n if (i1 < i2) return 1;\r\n if (i1 > i2) return -1;\r\n i1 = l1.bottomIndex();\r\n i2 = l2.bottomIndex();\r\n return i1 < i2 ? 1 : i1 > i2 ? -1 : 0;\r\n}\r\n\r\nclass Node {\r\n constructor(act, index) {\r\n this.act = act;\r\n this.index = index;\r\n this.links = [[], []];\r\n this.layoutLinks = 0;\r\n this.linksDisplayed = 0;\r\n this.bbox = null;\r\n this.incomingLinks = new Array(4);\r\n this.connectors = new Array(CONNECTOR_COUNT);\r\n this.nodeLabelLayout = false;\r\n for (let i = 0; i < CONNECTOR_COUNT; i++) {\r\n this.connectors[i] = 0;\r\n }\r\n }\r\n\r\n addLink(link, side) {\r\n const ar = this.links[side];\r\n for (let i = 0, count = ar.length, thisLink; i < count; i++) {\r\n thisLink = ar[i];\r\n if (compareLinks(ar[i], link) >= 0) {\r\n ar.splice(i, 0, link);\r\n return;\r\n }\r\n }\r\n ar.push(link);\r\n }\r\n\r\n getLinks(side) {\r\n return this.links[side];\r\n }\r\n\r\n getIncomingLink(type) {\r\n return this.incomingLinks[type];\r\n }\r\n\r\n setIncomingLink(type, link) {\r\n this.incomingLinks[type] = link;\r\n }\r\n\r\n incConnectionCount(type) {\r\n this.connectors[type]++;\r\n }\r\n\r\n setBBox(bbox) {\r\n this.bbox = bbox;\r\n }\r\n\r\n hasLinks() {\r\n for (let side = 0; side < SIDE_COUNT; side++) {\r\n if (this.links[side].length) return true;\r\n }\r\n return false;\r\n }\r\n\r\n clearLinks() {\r\n this.links = [[], []];\r\n this.connectors = new Array(CONNECTOR_COUNT);\r\n this.bbox = null;\r\n }\r\n\r\n resetLayout() {\r\n for (let side = 0; side < SIDE_COUNT; ++side) {\r\n for (let iLink = 0, ar = this.links[side], link; iLink < ar.length; iLink++) {\r\n if ((link = ar[iLink]).toNode() === this) {\r\n ar[iLink].resetLayout();\r\n }\r\n }\r\n }\r\n this.nodeLabelLayout = false;\r\n }\r\n\r\n topRight() {\r\n let n = this;\r\n while (n.next) {\r\n n = n.next;\r\n }\r\n return n;\r\n }\r\n\r\n toString() {\r\n return this.act.name || this.act.id;\r\n }\r\n}\r\n\r\nconst defaultLayoutOptions = {\r\n horizLinkToNodeDist: 11,\r\n horizSwitchSideLinkToNodeDist: 8,\r\n horizLinkToLinkDist: 10,\r\n switchSideLinkVertMargin: 1, // Vertical space between the To node row and the link crossing over the node\r\n};\r\n\r\nexport default class ConstraintLayout extends Gantt.components.ConstraintLayout {\r\n constructor(gantt, config) {\r\n super(gantt, config);\r\n }\r\n\r\n setConfiguration(config) {\r\n Gantt.utils.mergeObjects(this, defaultLayoutOptions, config);\r\n }\r\n\r\n startInitialize() {\r\n this.nodes = [];\r\n }\r\n\r\n addNode(act, index) {\r\n const node = new Node(act, index);\r\n node.next = this.nodes[index];\r\n this.nodes[index] = node;\r\n return node;\r\n }\r\n\r\n addConstraint(from, to, cons) {\r\n const { type } = cons;\r\n const side = Gantt.constraintTypes.isFromStart(cons.type) ? LEFT : RIGHT;\r\n let link = to.getIncomingLink(INCOMINGS[type]);\r\n let i;\r\n from.incConnectionCount(OUTGINGS[type]);\r\n to.incConnectionCount(INCOMINGS[type]);\r\n if (link) {\r\n const beforeTop = link.topIndex();\r\n const beforeBottom = link.bottomIndex();\r\n link.addConstraint(cons);\r\n for (i = link.topIndex(); i < beforeTop; i++) {\r\n this.nodes[i].addLink(link, side);\r\n }\r\n for (i = beforeBottom + 1; i <= link.bottomIndex(); i++) {\r\n this.nodes[i].addLink(link, side);\r\n }\r\n } else {\r\n to.setIncomingLink(INCOMINGS[type], (link = new Link(cons)));\r\n for (i = link.topIndex(); i <= link.bottomIndex(); i++) {\r\n this.nodes[i].addLink(link, side);\r\n }\r\n }\r\n }\r\n\r\n stopInitialize() {}\r\n\r\n layoutRowNodeLinks(rowIndex, renderer, ctx) {\r\n this.reinteringPath = null;\r\n for (let consNode = this.nodes[rowIndex]; consNode; consNode = consNode.next) {\r\n this.layoutOneSideNodeLinks(consNode, LEFT);\r\n this.layoutOneSideNodeLinks(consNode, RIGHT);\r\n this.layoutNodeLabel(consNode, renderer, ctx);\r\n }\r\n }\r\n\r\n processConnectors(consNode, bbox) {\r\n if (!consNode.links[LEFT].length && !consNode.links[RIGHT].length) return;\r\n const parentAct = consNode.act.children && consNode.act.children.length;\r\n const h = parentAct ? bbox.height / 2 : bbox.height;\r\n\r\n for (let side = 0, connectIndex = 0, incoming, outgoing; side < SIDE_COUNT; side++, connectIndex += 2) {\r\n incoming = consNode.connectors[connectIndex];\r\n outgoing = consNode.connectors[connectIndex + 1];\r\n if (incoming || outgoing) {\r\n if (incoming) {\r\n consNode.connectors[connectIndex] = bbox.y + bbox.top + h / (outgoing ? 3 : 2);\r\n }\r\n if (outgoing) {\r\n consNode.connectors[connectIndex + 1] = bbox.y + bbox.top + h - h / (incoming ? 3 : 2);\r\n }\r\n }\r\n }\r\n }\r\n\r\n layoutOneSideNodeLinks(consNode, side, beforeLink) {\r\n if (!consNode.bbox) {\r\n consNode.setBBox(this.getNodeRect(consNode.act, consNode.index));\r\n this.processConnectors(consNode, consNode.bbox);\r\n }\r\n const left = side === LEFT;\r\n const nodeLimit =\r\n consNode.bbox.x + (left ? -this.horizLinkToNodeDist : consNode.bbox.width + this.horizLinkToNodeDist);\r\n let limit = nodeLimit;\r\n for (\r\n let i = 0,\r\n links = consNode.getLinks(side),\r\n lastIndex = beforeLink ? links.indexOf(beforeLink) : links.length,\r\n link;\r\n i < lastIndex;\r\n i++\r\n ) {\r\n link = links[i];\r\n if (link.x === undefined) {\r\n link.x = LOCKED;\r\n let x = nodeLimit;\r\n let skipIndex;\r\n if (link.switchSides()) {\r\n // If node switch sides (goes from start to end or end to start), we don't need to layout the\r\n // 'to' node as its bounds are not taken into account into the current layout processing which\r\n // layouts the other side.\r\n const toNode = link.toNode();\r\n skipIndex = toNode.index;\r\n // However, it is still necessary to calc the 'to' node bounds for the link when it is to\r\n // be the drawn, in case the 'to' node is outside the layout processing row range.\r\n if (!toNode.bbox) {\r\n toNode.setBBox(this.getNodeRect(toNode.act, toNode.index));\r\n this.processConnectors(toNode, toNode.bbox);\r\n }\r\n }\r\n for (let index = link.topIndex(), last = link.bottomIndex(), value; index <= last; index++) {\r\n if (index !== consNode.index && index !== skipIndex) {\r\n value = this.layoutOneSideNodeLinks(this.nodes[index], side, link);\r\n if (this.reinteringPath) {\r\n this.reinteringPath = `${this.nodes[index].toString()} -> ${link.toString()} -> ${this.reinteringPath}`;\r\n if (!beforeLink) {\r\n throw new Error(\r\n `Re-entering layout on ${left ? 'left side of ' : 'right side of '}${this.reinteringPath}`\r\n );\r\n }\r\n return left ? Number.MAX_VALUE : Number.MIN_VALUE;\r\n }\r\n\r\n x = left ? Math.min(x, value) : Math.max(x, value);\r\n }\r\n }\r\n link.x = x;\r\n consNode.layoutLinks++;\r\n } else if (link.x === LOCKED) {\r\n // Re-entering on a same node, we are looping\r\n this.reinteringPath = `${consNode.toString()} -> ${link.toString()}`;\r\n return left ? Number.MAX_VALUE : Number.MIN_VALUE;\r\n }\r\n limit = left\r\n ? Math.min(limit, link.x - this.horizLinkToLinkDist)\r\n : Math.max(limit, link.x + this.horizLinkToLinkDist);\r\n }\r\n return limit;\r\n }\r\n\r\n layoutNodeLabel(consNode, renderer, ctx) {\r\n const { label } = consNode.act;\r\n if (!label) return;\r\n\r\n const labelLayout = renderer.getLabelLayout && renderer.getLabelLayout(consNode.act, ctx);\r\n if (labelLayout) {\r\n const labelW = label.getTextWidth();\r\n\r\n const iterLinks = side => {\r\n const limit = consNode.bbox.x + (side === LEFT ? 0 : consNode.bbox.width);\r\n const links = consNode.links[side];\r\n let lastX = limit;\r\n let x;\r\n let i = 0;\r\n let link;\r\n for (; i < links.length; i++) {\r\n link = links[i];\r\n if (link.toNode() === consNode && link.switchSides()) continue; // Switching side links are either on top or at the bottom of the row in the label area, cannot go over labels\r\n x = link.x; // Link margin not taken into account, compensated with applied padding\r\n if (labelLayout.nextLink(consNode.act, side === LEFT, link.x, lastX, limit, ctx)) break;\r\n lastX = x;\r\n }\r\n return Math.abs(\r\n lastX + (side === LEFT ? -1 : 1) * (i ? this.horizLinkToLinkDist : this.horizLinkToNodeDist) - limit\r\n );\r\n };\r\n\r\n labelLayout.startLayout(consNode.act, labelW, ctx);\r\n if (consNode.hasLinks() && labelLayout.nextLink) {\r\n iterLinks(RIGHT);\r\n iterLinks(LEFT);\r\n }\r\n\r\n const spacing = labelLayout.getNodeToLabelSpacing(consNode.act, consNode.bbox, labelW, ctx);\r\n if (spacing < 0) {\r\n label.move(true, -spacing + labelW);\r\n } else {\r\n label.move(false, spacing);\r\n }\r\n }\r\n }\r\n\r\n drawLink(link, parentElt, renderer, ctx) {\r\n let cons = link.ar[0];\r\n const toNode = cons.to.consNode;\r\n\r\n // If the link starts from one side (left/right) of the node and comes to the node on the otherside.\r\n const startLeft = Gantt.constraintTypes.isFromStart(cons.type);\r\n const endLeft = Gantt.constraintTypes.isToStart(cons.type);\r\n const points = new Array(startLeft !== endLeft ? 6 : 4);\r\n\r\n link.nodes = null;\r\n for (let i = 0, count = link.ar.length, fromNode, x, y, iPoint; i < count; i++) {\r\n cons = link.ar[i];\r\n iPoint = 0;\r\n fromNode = cons.from.consNode;\r\n points[iPoint++] = {\r\n x: startLeft ? fromNode.bbox.x : fromNode.bbox.x + fromNode.bbox.width,\r\n y: (y = fromNode.connectors[OUTGINGS[cons.type]]),\r\n };\r\n points[iPoint++] = {\r\n x: link.x,\r\n y,\r\n };\r\n if (startLeft !== endLeft) {\r\n y =\r\n fromNode.index < toNode.index\r\n ? toNode.bbox.y + this.switchSideLinkVertMargin\r\n : toNode.bbox.y + toNode.bbox.rowHeight - this.switchSideLinkVertMargin;\r\n points[iPoint++] = {\r\n x: link.x,\r\n y,\r\n };\r\n x = endLeft\r\n ? toNode.bbox.x - this.horizSwitchSideLinkToNodeDist\r\n : toNode.bbox.x + toNode.bbox.width + this.horizSwitchSideLinkToNodeDist;\r\n points[iPoint++] = {\r\n x,\r\n y,\r\n };\r\n points[iPoint++] = {\r\n x,\r\n y: (y = toNode.connectors[INCOMINGS[cons.type]]),\r\n };\r\n } else {\r\n points[iPoint++] = {\r\n x: link.x,\r\n y: (y = toNode.connectors[INCOMINGS[cons.type]]),\r\n };\r\n }\r\n points[iPoint++] = {\r\n x: endLeft ? toNode.bbox.x : toNode.bbox.x + toNode.bbox.width,\r\n y,\r\n };\r\n cons.nodes = renderer.drawLink(cons, points, STYLE_ARROW, parentElt, ctx);\r\n }\r\n }\r\n\r\n drawRowLinks(rowIndex, parentElt, renderer, ctx) {\r\n let side;\r\n let links;\r\n let i;\r\n let count;\r\n for (let consNode = this.nodes[rowIndex]; consNode; consNode = consNode.next) {\r\n if (consNode.linksDisplayed === consNode.links.length) continue;\r\n for (side = 0; side < SIDE_COUNT; side++) {\r\n links = consNode.getLinks(side);\r\n for (i = 0, count = links.length; i < count; ++i) {\r\n if (!links[i].isDisplayed()) {\r\n consNode.linksDisplayed++;\r\n this.drawLink(links[i], parentElt, renderer, ctx);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n clearLinks() {\r\n for (let i = 0, count = this.nodes ? this.nodes.length : 0; i < count; i++) {\r\n for (let node = this.nodes[i]; node; node = node.next) {\r\n node.clearLinks();\r\n }\r\n }\r\n }\r\n\r\n resetLayout() {\r\n for (let i = 0, count = this.nodes ? this.nodes.length : 0; i < count; i++) {\r\n for (let node = this.nodes[i]; node; node = node.next) {\r\n node.resetLayout();\r\n }\r\n }\r\n }\r\n\r\n destroy() {\r\n if (this.nodes) {\r\n for (let i = 0, count = this.nodes.length; i < count; i++) {\r\n if (this.nodes[i].act) {\r\n this.nodes[i].act.consNode = null;\r\n }\r\n }\r\n this.nodes = null;\r\n }\r\n }\r\n}\r\n\r\nGantt.components.ConstraintLayout.impl = ConstraintLayout;\r\n","import Gantt from '../core/core';\r\n\r\nimport {\r\n CONSTRAINT_ARROW,\r\n CONSTRAINT_LINK_CLASS,\r\n CONSTRAINT_LINK_CTNR_CLASS,\r\n ID_DELIM,\r\n LinkRendererPrototype,\r\n} from './linkrenderer';\r\n\r\nimport './constraintlayout';\r\n\r\nconst defaultOptions = {\r\n linkOutlineWidth: 2,\r\n};\r\n\r\nconst TOOLTIP_FADING_TIME = 1000;\r\nconst TOOLTIP_SHOWING_DELAY = 800;\r\n\r\nconst SELECTION_CLASS = 'selected';\r\n\r\nexport default class ConstraintsGraph extends Gantt.components.ConstraintsGraph {\r\n constructor(gantt, node, config) {\r\n super(gantt, node, Gantt.utils.mergeObjects({}, defaultOptions, config));\r\n }\r\n\r\n setConfiguration(config) {\r\n this.destroy();\r\n\r\n this.create();\r\n this.ready = Promise.resolve([]);\r\n\r\n if (config.layout && Gantt.utils.isFunction(config.layout)) {\r\n this.layout = new config.layout(this.gantt);\r\n } else {\r\n const LayoutClass = Gantt.components.ConstraintLayout.impl || Gantt.components.ConstraintLayout;\r\n this.layout = new LayoutClass(this.gantt, config.layout);\r\n }\r\n\r\n const LinkRendererClass = Gantt.components.Renderer.impl || Gantt.components.Renderer;\r\n this.linkRenderer = new LinkRendererClass(config.renderer, LinkRendererPrototype, this.gantt);\r\n if (config.linkOutlineWidth) {\r\n this.linkRenderer.linkOutlineWidth = config.linkOutlineWidth;\r\n }\r\n // Ugly way for managing the exception of this view having several DOM nodes in its life\r\n const node = this.node;\r\n this.node = null;\r\n this.setNode(node);\r\n\r\n const selectionHandler = this.gantt.selection;\r\n selectionHandler.on(Gantt.events.CONSTRAINT_SELECTION_CLEARED, (e, sels) => this.clearConstraintSelection(sels));\r\n selectionHandler.on(Gantt.events.CONSTRAINT_SELECTED, (e, sels) => this.selectConstraints(sels));\r\n selectionHandler.on(Gantt.events.CONSTRAINT_UNSELECTED, (e, sels) => this.unselectConstraints(sels));\r\n }\r\n\r\n setNode(node) {\r\n if (this.node) {\r\n this.gantt.errorHandler.removeGroup(this.node);\r\n if (this.tooltipEnter) {\r\n Gantt.utils.removeEventListener(this.node, 'mouseenter', this.tooltipEnter);\r\n Gantt.utils.removeEventListener(this.node, 'mouseleave', this.tooltipLeave);\r\n Gantt.utils.removeEventListener(this.node, 'click', this.clickHandler);\r\n }\r\n this.node.innerHTML = '';\r\n }\r\n this.node = node;\r\n if (node) {\r\n if (!this.tooltipEnter) {\r\n this.tooltipEnter = evt => {\r\n const ctNode = this.getConstraintNode(evt.target);\r\n if (ctNode && (!this.gantt.timeTable.isDragAndDropping || !this.gantt.timeTable.isDragAndDropping())) {\r\n this.showTooltip(ctNode);\r\n }\r\n };\r\n this.tooltipLeave = evt => {\r\n const ctNode = this.getConstraintNode(evt.target);\r\n if (ctNode && this.tooltipElt === node) {\r\n this.hideTooltip(TOOLTIP_FADING_TIME);\r\n }\r\n };\r\n this.clickHandler = e => this.processClick(e);\r\n }\r\n Gantt.utils.addEventListener(this.node, 'mouseenter', this.tooltipEnter, true);\r\n Gantt.utils.addEventListener(this.node, 'mouseleave', this.tooltipLeave, true);\r\n Gantt.utils.addEventListener(this.node, 'click', this.clickHandler, true);\r\n }\r\n }\r\n\r\n create() {\r\n if (this.config && this.config.classes) {\r\n Gantt.utils.addClass(this.config.classes);\r\n }\r\n }\r\n\r\n setConstraints(cts) {\r\n this.cts = cts;\r\n if (cts && cts.length) {\r\n this.ready = new Promise(resolve => {\r\n setTimeout(() => {\r\n this.processConstraints(cts);\r\n resolve();\r\n }, 0);\r\n });\r\n } else {\r\n this.ready = Promise.resolve([]);\r\n }\r\n }\r\n\r\n processConstraints(cts) {\r\n const table = this.gantt.table;\r\n const activityFilter = this.gantt.timeTable.getActivityFilter();\r\n let row;\r\n let count;\r\n let acts;\r\n let act;\r\n let i;\r\n this.layout.startInitialize();\r\n try {\r\n for (row = table.getFirstVisibleRow(); row; row = table.nextRow(row)) {\r\n acts = row.activities;\r\n count = acts && acts.length;\r\n if (count) {\r\n for (i = 0; i < count; ++i) {\r\n act = acts[i];\r\n act = !activityFilter || activityFilter.accept(act, row) ? act : null;\r\n if (act) {\r\n act.consNode = this.layout.addNode(act, row.index);\r\n }\r\n }\r\n }\r\n }\r\n\r\n let from;\r\n let to;\r\n let cons;\r\n for (i = 0, count = cts.length; i < count; ++i) {\r\n cons = cts[i];\r\n cons.nodes = null; // Remove nodes from previous display\r\n from = cons.from.consNode;\r\n to = cons.to.consNode;\r\n if (from && to) {\r\n this.layout.addConstraint(from, to, cons);\r\n }\r\n }\r\n } catch (e) {\r\n this.addError(e, 'Error processing constraints');\r\n this.layout.stopInitialize();\r\n throw e;\r\n }\r\n\r\n this.layout.stopInitialize();\r\n }\r\n\r\n addError(e, msg) {\r\n if (!this.errorNode) {\r\n this.errorNode = document.createElement('div');\r\n this.errorNode.style.opacity = '0.80';\r\n this.gantt.timeTablePanel.appendChild(this.errorNode);\r\n }\r\n this.gantt.errorHandler.addError(e, msg, this.errorNode);\r\n }\r\n\r\n destroy() {\r\n if (this.layout && this.layout.destroy) {\r\n this.layout.destroy();\r\n }\r\n this.layout = null;\r\n if (this.node && this.tooltipEnter) {\r\n Gantt.utils.removeEventListener(this.node, 'mouseenter', this.tooltipEnter);\r\n Gantt.utils.removeEventListener(this.node, 'mouseleave', this.tooltipLeave);\r\n this.tooltipEnter = this.tooltipLeave = null;\r\n }\r\n }\r\n\r\n clearCache() {\r\n if (this.cts) {\r\n for (let i = 0, count = this.cts.length; i < count; ++i) {\r\n this.cts[i].fromNode = null;\r\n this.cts[i].toNode = null;\r\n }\r\n }\r\n }\r\n\r\n clear() {\r\n this.node.innerHTML = '';\r\n this.clearCache();\r\n }\r\n\r\n clearLinks() {\r\n this.layout.clearLinks();\r\n }\r\n\r\n resetLayout() {\r\n this.layout.resetLayout();\r\n }\r\n\r\n draw(rows, drawCB) {\r\n if (!rows.length) return this.ready;\r\n return this.ready.then(() => {\r\n const table = this.gantt.table;\r\n let firstRowIndex = rows[0].row.index;\r\n let lastRowIndex = rows[rows.length - 1].row.index;\r\n\r\n function getNodeRect(act, index) {\r\n let row;\r\n let y;\r\n if (index < firstRowIndex) {\r\n row = rows[0].row;\r\n y = rows[0].y;\r\n while (index < firstRowIndex) {\r\n row = table.prevRow(row);\r\n drawCB(row);\r\n y -= row.activityRow.height;\r\n rows.splice(0, 0, {\r\n y,\r\n row,\r\n height: row.activityRow.height,\r\n index: --firstRowIndex,\r\n });\r\n }\r\n } else if (index > lastRowIndex) {\r\n row = rows[lastRowIndex];\r\n y = row.y + row.height;\r\n row = row.row;\r\n while (index > lastRowIndex) {\r\n row = table.nextRow(row);\r\n drawCB(row);\r\n rows.push({\r\n y,\r\n row,\r\n height: row.activityRow.height,\r\n index: ++lastRowIndex,\r\n });\r\n y += row.activityRow.height;\r\n }\r\n }\r\n row = rows[index - firstRowIndex];\r\n return act.node\r\n ? {\r\n x: act.left,\r\n y: row.y,\r\n top: Number.parseInt(act.node.style.top, 10),\r\n width: act.node.offsetWidth,\r\n height: act.node.offsetHeight,\r\n rowHeight: row.height,\r\n }\r\n : {\r\n x: 0,\r\n y: row.y,\r\n top: 0,\r\n width: 0,\r\n height: 0,\r\n rowHeight: row.height,\r\n };\r\n }\r\n\r\n this.layout.getNodeRect = getNodeRect;\r\n const ctx = {\r\n gantt: this.gantt,\r\n nodeToLinkPadding: this.layout.horizLinkToNodeDist,\r\n linkToLinkPadding: this.layout.horizLinkToLinkDist,\r\n };\r\n\r\n let i;\r\n let rowIndex;\r\n const count = rows.length;\r\n\r\n try {\r\n for (i = 0, rowIndex = firstRowIndex; i < count; i++, rowIndex++) {\r\n this.layout.layoutRowNodeLinks(rowIndex, this.linkRenderer, ctx);\r\n }\r\n } catch (e) {\r\n this.addError(e);\r\n }\r\n\r\n try {\r\n const fragment = document.createDocumentFragment();\r\n for (i = 0, rowIndex = firstRowIndex; i < count; i++, rowIndex++) {\r\n this.layout.drawRowLinks(rowIndex, fragment, this.linkRenderer, ctx);\r\n }\r\n\r\n this.node.appendChild(fragment);\r\n } catch (e) {\r\n this.addError(e, 'Error drawing constraints');\r\n }\r\n });\r\n }\r\n\r\n getConstraint(node) {\r\n let id = node.id;\r\n let lastIndex = id.indexOf(ID_DELIM);\r\n let index;\r\n if (lastIndex >= 0) {\r\n while ((index = id.indexOf(ID_DELIM, lastIndex + 1)) > 0) {\r\n lastIndex = index;\r\n }\r\n id = id.substring(0, lastIndex);\r\n }\r\n let cons;\r\n if (this.cts.byIds && (cons = this.cts.byIds[id])) {\r\n return cons;\r\n }\r\n return null;\r\n }\r\n\r\n getConstraintNode(elt) {\r\n let node = null;\r\n for (; elt && elt !== this.node; elt = elt.parentNode) {\r\n if (Gantt.utils.hasClass(elt, CONSTRAINT_LINK_CTNR_CLASS) || Gantt.utils.hasClass(elt, CONSTRAINT_ARROW))\r\n return elt;\r\n if (Gantt.utils.hasClass(elt, CONSTRAINT_LINK_CLASS)) node = elt;\r\n }\r\n return node;\r\n }\r\n\r\n /* */\r\n /* Tooltips */\r\n /* */\r\n showTooltip(consNode) {\r\n let cons;\r\n if (consNode && consNode !== this.tooltipElt && (cons = this.getConstraint(consNode))) {\r\n this.tooltipElt = consNode;\r\n const ctx = {\r\n limitElt: this.gantt.getBody(),\r\n showDelay: TOOLTIP_SHOWING_DELAY,\r\n };\r\n this.gantt.tooltip.showTooltip(consNode, ctx, parent => {\r\n const tooltipCtx = { gantt: this.gantt };\r\n this.linkRenderer.getTooltip(parent, cons, tooltipCtx);\r\n });\r\n }\r\n }\r\n\r\n hideTooltip(fadingTime) {\r\n this.tooltipElt = null;\r\n this.gantt.tooltip.hideTooltip(fadingTime);\r\n }\r\n\r\n /**\r\n * Selection management\r\n */\r\n processClick(e) {\r\n this.hideTooltip();\r\n const consNode = this.getConstraintNode(e.target);\r\n let cons;\r\n if (consNode && (cons = this.getConstraint(consNode))) {\r\n this.gantt.selection.processClick(e, cons);\r\n }\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n clearConstraintSelection(sels) {\r\n for (let i = 0, nodes, count = sels.length, sel; i < count; ++i) {\r\n sel = sels[i];\r\n if ((nodes = sel.nodes)) {\r\n for (let j = 0, nodesCount = nodes.length; j < nodesCount; j++) {\r\n Gantt.utils.removeClass(nodes[j], SELECTION_CLASS);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n selectConstraints(sels) {\r\n for (let i = 0, nodes; i < sels.length; i++) {\r\n if ((nodes = sels[i].nodes)) {\r\n for (let j = 0, count = nodes.length; j < count; j++) {\r\n Gantt.utils.addClass(nodes[j], SELECTION_CLASS);\r\n }\r\n }\r\n }\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n unselectConstraints(sels) {\r\n for (let i = 0, nodes; i < sels.length; i++) {\r\n if ((nodes = sels[i].nodes)) {\r\n for (let j = 0, count = nodes.length; j < count; j++) {\r\n Gantt.utils.removeClass(nodes[j], SELECTION_CLASS);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nGantt.components.ConstraintsGraph.impl = ConstraintsGraph;\r\n","import ConstraintsGraph from './constraintgraph';\r\n\r\nimport './constraintgraph.scss';\r\n\r\nexport default ConstraintsGraph;\r\n","import Gantt from '../core/core';\r\nimport DragDrop from '../core/dragdrop';\r\nimport ActivityRendererPrototype from './activityrenderer';\r\nimport RowRendererPrototype from './rowrenderer';\r\n\r\nimport {\r\n DECORATION_BREAK_CLASS,\r\n DECORATION_BREAK_TYPE,\r\n DECORATION_INVALID_CLASS,\r\n DECORATION_INVALID_TYPE,\r\n HIGHLIGHT_CLASS,\r\n SELECTION_CLASS,\r\n TIME_MARKER_DRAG_ITEM,\r\n TIME_TABLE_ACTIVITY_CLASSNAME,\r\n TIME_TABLE_ROW,\r\n UNSELECTABLE_CLASSNAME,\r\n} from './css-classes';\r\n\r\nimport './activitylayout';\r\nimport '../constraintgraph';\r\nimport './timetable.scss';\r\n\r\nconst ROW_ID_PREFIX = 'timeTableRow_';\r\nconst ACTIVITY_ID_PREFIX = '';\r\nconst defaultOptions = {\r\n bufferPageSize: 3,\r\n};\r\n\r\nexport default class TimeTable extends Gantt.components.TimeTable {\r\n constructor(gantt, node, config) {\r\n super(gantt, node, Gantt.utils.mergeObjects({}, defaultOptions, config));\r\n\r\n // Selection management\r\n Gantt.utils.addEventListener(node, 'click', e => this.processClick(e), true);\r\n Gantt.utils.addEventListener(node, 'dblclick', e => this.processDoubleClick(e), true);\r\n Gantt.utils.addEventListener(node, 'contextmenu', e => this.processMouseDown(e), true);\r\n const selectionHandler = gantt.selection;\r\n selectionHandler.on(Gantt.events.ACTIVITY_SELECTION_CLEARED, (e, sels) => this.clearActivitySelection(sels));\r\n selectionHandler.on(Gantt.events.ACTIVITY_SELECTED, (e, sels) => this.selectActvities(sels));\r\n selectionHandler.on(Gantt.events.ACTIVITY_UNSELECTED, (e, sels) => this.unselectActvities(sels));\r\n selectionHandler.on(Gantt.events.ROW_SELECTED, (e, sels) => this.selectRows(sels));\r\n selectionHandler.on(Gantt.events.ROW_UNSELECTED, (e, sels) => this.unselectRows(sels));\r\n selectionHandler.on(Gantt.events.ROW_SELECTION_CLEARED, (e, sels) => this.unselectRows(sels));\r\n selectionHandler.on(Gantt.events.ROW_SELECTION_CHANGED, (e, sels) => this.rowSelectionChanged(sels));\r\n }\r\n\r\n // Method called from super class\r\n // noinspection JSUnusedGlobalSymbols\r\n setConfiguration(config) {\r\n this.destroy();\r\n\r\n this.create();\r\n\r\n this.bufferPageSize = config.bufferPageSize;\r\n\r\n const RendererClass = Gantt.components.Renderer.impl || Gantt.components.Renderer;\r\n this.activityRenderer = new RendererClass(config.renderer, ActivityRendererPrototype, this.gantt);\r\n\r\n this.rowRenderer =\r\n config.rows && config.rows.renderer && new RendererClass(config.rows.renderer, RowRendererPrototype, this.gantt);\r\n\r\n this.interactor = this.config.interactor;\r\n this.moveInterator = this.interactor && this.interactor.move;\r\n this.mouseHandler = this.interactor && this.interactor.click;\r\n\r\n const onScroll = e => {\r\n if (this.synchronizeTableTop(e.target.scrollTop)) {\r\n e.preventDefault && e.preventDefault();\r\n }\r\n };\r\n Gantt.utils.addEventListener(this.scroller, 'scroll', onScroll);\r\n if (this.moveInterator) this.initDragAndDrop();\r\n this.initTooltip();\r\n this.events = {};\r\n\r\n const LayoutClass = Gantt.components.ActivityLayout.impl || Gantt.components.ActivityLayout;\r\n this.layout = new LayoutClass(config && config.layout, null /* proto */, { gantt: this.gantt });\r\n }\r\n\r\n create() {\r\n this.scroller = document.createElement('div');\r\n this.scroller.className = 'time-table-scroller';\r\n this.scroller.tabIndex = 0;\r\n // CSS layout\r\n this.scroller.style.position = 'absolute';\r\n this.scroller.style.height = '100%';\r\n this.scroller.style.top = '0';\r\n this.scroller.style.left = '0';\r\n this.scroller.style.right = '0';\r\n this.scroller.style.bottom = '0';\r\n this.scroller.style.overflowX = 'scroll';\r\n this.node.appendChild(this.scroller);\r\n\r\n // Element used for getting the width of the visible time table area.\r\n const timeTableWidthTester = document.createElement('div');\r\n this.getVisibleWidth = function() {\r\n return timeTableWidthTester.offsetWidth;\r\n };\r\n // CSS layout\r\n timeTableWidthTester.style.width = '100%';\r\n timeTableWidthTester.style.height = 0;\r\n this.scroller.appendChild(timeTableWidthTester);\r\n\r\n // Element used for getting the height of the visible time table area,\r\n // excluding the horizontal scrollbar height\r\n const timeTableHeightTester = document.createElement('div');\r\n // noinspection JSUnusedGlobalSymbols\r\n this.getVisibleHeight = function() {\r\n return timeTableHeightTester.offsetHeight;\r\n };\r\n timeTableHeightTester.style.width = 0;\r\n timeTableHeightTester.style.position = 'absolute';\r\n timeTableHeightTester.style.top = 0;\r\n timeTableHeightTester.style.height = '100%';\r\n this.scroller.appendChild(timeTableHeightTester);\r\n\r\n // noinspection JSUnresolvedVariable\r\n this.body = document.createElement('div');\r\n this.body.style.minHeight = '1px'; // Horizontal scroll position for this.scroll is set before the body is given a height. If this.scroll content (this.body) has no height, the h-scroll position does not apply\r\n this.body.className = 'time-table-body';\r\n // this.scroller.style.width = 0;\r\n\r\n this.scroller.appendChild(this.body);\r\n\r\n Gantt.utils.addEventListener(\r\n this.body,\r\n 'mouseenter',\r\n e => {\r\n const row = this.getTimeTableRowNode(e.target);\r\n if (row) {\r\n this.gantt.highlightRow(row.id.substring(ROW_ID_PREFIX.length), true, true);\r\n }\r\n },\r\n true\r\n );\r\n Gantt.utils.addEventListener(\r\n this.body,\r\n 'mouseleave',\r\n e => {\r\n const row = this.getTimeTableRowNode(e.target);\r\n if (row) {\r\n this.gantt.highlightRow(row.id.substring(ROW_ID_PREFIX.length), false, true);\r\n }\r\n },\r\n true\r\n );\r\n }\r\n\r\n update() {\r\n this.draw();\r\n }\r\n\r\n createUpdates(parent) {\r\n return new (Gantt.components.GanttUpdates.impl || Gantt.components.GanttUpdates)(parent, {\r\n applyReload: () => {\r\n this.draw();\r\n },\r\n\r\n applyUpdates: () => {\r\n if (parent.containsRowChanges()) {\r\n if (this.ctsGraph) {\r\n this.resetConstraints();\r\n }\r\n this.draw(true);\r\n } else {\r\n this.draw();\r\n }\r\n },\r\n });\r\n }\r\n\r\n // noinspection JSUnusedLocalSymbols\r\n renderRow(row, ctx) {\r\n const timeLine = this.gantt.timeLine;\r\n const actRow = {\r\n row,\r\n getX(date) {\r\n return timeLine.getXFromMillis(date);\r\n },\r\n setRowHeight(h) {\r\n this.height = h;\r\n },\r\n };\r\n const node = document.createElement('div');\r\n node.id = ROW_ID_PREFIX + row.id;\r\n const table = this.gantt.table;\r\n // In Firefox, the use of tr.offsetHeight leads to error.\r\n // For a row of height 32.5px, tr.offsetHeight will return 33px where\r\n // as the actual display of the row takes 32px.\r\n // Gantt.utils.getHeight internally invokes the jQuery.height() function which is more reliable.\r\n let oldRowHeight = table.getRowHeight(row);\r\n const variableLayoutRowHeight = this.layout.allowVariableRowHeight();\r\n actRow.tableRowHeight = actRow.height =\r\n (!variableLayoutRowHeight && this.activityRenderer.rowHeight && this.activityRenderer.rowHeight(row)) ||\r\n oldRowHeight;\r\n if (!variableLayoutRowHeight && actRow.height !== oldRowHeight) {\r\n table.setRowHeight(row, actRow.height);\r\n // For example if actRow.height < minimum table row height\r\n actRow.height = oldRowHeight = table.getRowHeight(row);\r\n }\r\n\r\n // See http://help.dottoro.com/lhwdpnva.php\r\n // for making nodes unselectable\r\n node.className =\r\n `${ctx.odd ? `${TIME_TABLE_ROW} odd` : TIME_TABLE_ROW} ${UNSELECTABLE_CLASSNAME}` +\r\n (row.classes ? ' ' + row.classes : '') +\r\n (row.selected ? ' ' + SELECTION_CLASS : '');\r\n if (this.rowRenderer) {\r\n this.rowRenderer.draw(row, node, ctx);\r\n }\r\n // node.style.backgroundColor = row.tr.style.backgroundColor;\r\n\r\n const rowSpan = document.createElement('div');\r\n rowSpan.innerHTML = `${row.index + 1}`;\r\n rowSpan.className = 'row-number';\r\n node.appendChild(rowSpan);\r\n actRow.rowNode = node;\r\n\r\n if (this.activityRenderer.generateRowDecorations) {\r\n this.generateRowDecorations(row, node, ctx);\r\n }\r\n\r\n this.renderActivities(actRow, ctx);\r\n\r\n if (actRow.height !== oldRowHeight) {\r\n table.setRowHeight(row, actRow.height);\r\n // For example if actRow.height < minimum table row height\r\n actRow.height = table.getRowHeight(row);\r\n }\r\n\r\n node.style.height = `${actRow.height}px`;\r\n return actRow;\r\n }\r\n\r\n renderActivities(activityRow) {\r\n const activityFilter = this.getActivityFilter(),\r\n activities = activityRow.row.activities,\r\n actCount = (activities && activities.length) || 0;\r\n let actNodes, iAct, act, actNode;\r\n activityRow.activities = actNodes = [];\r\n if (actCount) {\r\n for (iAct = 0; iAct < actCount; ++iAct) {\r\n act = activities[iAct];\r\n\r\n act.node = actNode =\r\n ((!activityFilter || activityFilter.accept(act, activityRow.row)) &&\r\n this.renderActivity(act, activityRow.row, activityRow.rowNode)) ||\r\n null;\r\n if (actNode) {\r\n if (act.id) {\r\n actNode.id = ACTIVITY_ID_PREFIX + activityRow.rowNode.id + act.id;\r\n }\r\n actNodes.push(act);\r\n activityRow.rowNode.appendChild(actNode);\r\n }\r\n }\r\n this.layout.layout(activityRow);\r\n }\r\n }\r\n\r\n getActivityFilter() {\r\n const activityFilter = this.gantt.activityFilter;\r\n return activityFilter && !activityFilter.isEmpty() ? activityFilter : null;\r\n }\r\n\r\n renderActivity(act, row, timeTableRowNode) {\r\n return this.activityRenderer.draw(act, timeTableRowNode, row);\r\n }\r\n\r\n getX(date) {\r\n return this.gantt.timeLine.getXFromMillis(date);\r\n }\r\n\r\n draw(forceRedraw) {\r\n if (this.container) {\r\n this.body.removeChild(this.container);\r\n this.container = null;\r\n }\r\n let ctsNode;\r\n if (this.ctsGraph && forceRedraw) {\r\n this.resetConstraints();\r\n }\r\n\r\n // Draw the height of several row pages\r\n let top = this.scroller.scrollTop;\r\n this.lastRepaintY = top;\r\n if (top < 0) {\r\n top = 0;\r\n }\r\n const table = this.gantt.table;\r\n top -= Math.abs(((this.bufferPageSize - 1) / 2) * this.scroller.clientHeight);\r\n if (top < 0) {\r\n top = 0;\r\n }\r\n\r\n const timeLine = this.gantt.timeLine;\r\n const ctx = {\r\n getX(millis) {\r\n timeLine.getXFromMillis(millis);\r\n },\r\n horiz: this.gantt.timeLine.getScrollableHorizon(),\r\n gantt: this.gantt,\r\n };\r\n // Generate global decorations\r\n if (this.activityRenderer.generateDecorations && (forceRedraw || !this.backgroundCtnr)) {\r\n this.generateGlobalDecorations(ctx);\r\n }\r\n let row = table.getRowAt(top);\r\n if (row && row.getData()) {\r\n // If no rows are displayed, a row displaying\r\n // 'No matching records found' is displayed instead: no activities to display\r\n top = table.getRowTop(row);\r\n\r\n const ctsRows = this.ctsGraph ? [] : null,\r\n firstRowIndex = row.index;\r\n\r\n const maxBufferHeight = top + this.bufferPageSize * this.scroller.clientHeight;\r\n let yFinal = Math.min(maxBufferHeight, table.getHeight());\r\n const variableHeightLayout = this.layout.allowVariableRowHeight() || this.activityRenderer.rowHeight;\r\n ctx.odd = row.index % 2 === 0; // This is the way datatables work...\r\n\r\n this.container = this.createContainer(top);\r\n\r\n let activityRow;\r\n while (row && top < yFinal) {\r\n activityRow = row.activityRow;\r\n if (forceRedraw || !activityRow || !activityRow.rowNode) {\r\n row.activityRow = activityRow = this.renderRow(row, ctx);\r\n }\r\n this.container.appendChild(activityRow.rowNode);\r\n\r\n if (ctsRows) {\r\n ctsRows.push({ y: top, height: activityRow.height, row });\r\n }\r\n\r\n top += activityRow.height;\r\n if (variableHeightLayout) {\r\n // Row height can change so that the yFinal\r\n yFinal = Math.min(maxBufferHeight, table.getHeight());\r\n }\r\n ctx.odd = !ctx.odd;\r\n row = table.nextRow(row);\r\n }\r\n\r\n if (this.ctsGraph && this.ctsGraph.node) {\r\n this.body.insertBefore(this.container, this.ctsGraph.node);\r\n } else {\r\n this.body.appendChild(this.container);\r\n }\r\n if (variableHeightLayout) {\r\n this.gantt.updateScrollerHeight();\r\n }\r\n\r\n if (this.ctsGraph) {\r\n let updateScrolls = false;\r\n this.ctsGraph\r\n .draw(ctsRows, row => {\r\n // Draw callback to draw additional rows\r\n activityRow = row.activityRow;\r\n if (forceRedraw || !activityRow || !activityRow.rowNode) {\r\n row.activityRow = activityRow = this.renderRow(row, ctx);\r\n }\r\n if (row.index > firstRowIndex) {\r\n // We only add row nodes rendered after the last row node above.\r\n // The constraint draw algorithm ensures that additional rows to be rendered are drawn\r\n // in ascending order, from the lowest to the highest index.\r\n this.container.appendChild(activityRow.rowNode);\r\n updateScrolls = true;\r\n }\r\n })\r\n .then(() => {\r\n if (forceRedraw && ctsNode) {\r\n this.body.appendChild(ctsNode);\r\n }\r\n if (updateScrolls) {\r\n this.gantt.updateScrollerHeight();\r\n }\r\n });\r\n }\r\n }\r\n this._ready = true;\r\n }\r\n\r\n drawRows() {\r\n this.draw(true);\r\n }\r\n\r\n createContainer(y) {\r\n const c = document.createElement('div');\r\n c.className = 'time-table-row-container';\r\n // c.style.width = this.gantt.getTimeTableWidth() + 'px';\r\n c.style.width = `${this.getBodyWidth()}px`;\r\n c.style.overflow = 'none';\r\n c.style.position = 'absolute';\r\n c.style.padding = 0;\r\n c.style.border = 'none';\r\n c.style.top = `${y}px`;\r\n c.style.left = 0;\r\n return c;\r\n }\r\n\r\n on(event, handler) {\r\n if (event === Gantt.events.TIME_TABLE_INIT) {\r\n if (this._ready) {\r\n handler.call(this);\r\n } else {\r\n super.on(this, Gantt.events.TIME_TABLE_INIT, handler);\r\n }\r\n }\r\n }\r\n\r\n onResize() {\r\n this.draw(false);\r\n }\r\n\r\n static isActivityNode(elt) {\r\n return Gantt.utils.hasClass(elt, TIME_TABLE_ACTIVITY_CLASSNAME);\r\n }\r\n\r\n getActivityNode(elt) {\r\n for (; elt && elt !== this.body; elt = elt.parentNode) {\r\n if (TimeTable.isActivityNode(elt)) {\r\n return elt;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getActivity(activityElt) {\r\n const tr = this.getTimeTableRowNode(activityElt);\r\n if (tr) {\r\n const row = this.getRow(tr.id.substring(ROW_ID_PREFIX.length));\r\n\r\n const activities = row && row.activityRow && row.activityRow.activities;\r\n if (activities) {\r\n for (let iAct = 0; iAct < activities.length; iAct++) {\r\n if (activities[iAct].node === activityElt) {\r\n return activities[iAct];\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n getTimeTableRowNode(activityNode) {\r\n for (let tr = activityNode; tr !== this.body; tr = tr.parentNode) {\r\n if (Gantt.utils.hasClass(tr, TIME_TABLE_ROW)) {\r\n return tr;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n getActivityRow(activity) {\r\n let tr;\r\n const actNode = (activity.node && activity.start && activity.node) || activity;\r\n for (tr = actNode.parentNode; tr !== this.body; tr = tr.parentNode) {\r\n if (this.utils.hasClass(tr, TIME_TABLE_ROW)) {\r\n break;\r\n }\r\n }\r\n return tr && this.getRow(tr.id.substring(ROW_ID_PREFIX.length));\r\n }\r\n\r\n getRow(id) {\r\n return this.gantt.table.getRow(id);\r\n }\r\n\r\n scrollToRow(row) {\r\n const y = this.gantt.table.getRowTop(row);\r\n const top = this.scroller.scrollTop;\r\n // If row before or after visible area\r\n if (y < top || y > top + this.getVisibleHeight()) {\r\n this.scrollToY(y);\r\n }\r\n // Check if row is fully visible\r\n else {\r\n // Draw of row has been called, we can access its height.\r\n const rowHeight = this.gantt.getRowHeight(row);\r\n if (top + this.getVisibleHeight() < y + rowHeight) {\r\n this.scrollToY(y);\r\n }\r\n }\r\n }\r\n\r\n setFirstVisibleRow(row) {\r\n const y = this.gantt.table.getRowTop(row);\r\n this.scrollToY(y);\r\n }\r\n\r\n scrollToY(y) {\r\n this.scroller.scrollTop = y;\r\n // For unit test, we want both the time table and table have their top synchronised immediatly\r\n this.synchronizeTableTop(y);\r\n }\r\n\r\n setScrollTop(y) {\r\n this.scroller.scrollTop = y;\r\n }\r\n\r\n getScrollTop() {\r\n return this.scroller.scrollTop;\r\n }\r\n\r\n synchronizeTableTop(top) {\r\n const table = this.gantt.table && this.gantt.table.getScrollableTable();\r\n if (table) {\r\n // Table may not be initialized yet.\r\n table.scrollTop = top;\r\n\r\n const scrollTop = table.scrollTop;\r\n // No empty space below the table which impacts the default scrolling strategy of the element.\r\n // When reaching the bottom of the table, last scroll down events won't impact table's display\r\n // We need to reflect that on the time table scrollbar\r\n // e.target.scrollTop = scrollTop;\r\n if (this.lastRepaintY === undefined || Math.abs(scrollTop - this.lastRepaintY) > this.scroller.clientHeight) {\r\n this.draw();\r\n }\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n highlightActivity(act, highlight, deSelectAll) {\r\n if (deSelectAll && (!act || !Gantt.utils.hasClass(act, HIGHLIGHT_CLASS))) {\r\n const highlightActs = this.body.querySelectorAll(`.${TIME_TABLE_ACTIVITY_CLASSNAME}.${HIGHLIGHT_CLASS}`);\r\n if (highlightActs && highlightActs.length) {\r\n for (let i = 0; i < highlightActs.length; i++) {\r\n Gantt.utils.removeClass(highlightActs[i], HIGHLIGHT_CLASS);\r\n }\r\n }\r\n }\r\n if (act) {\r\n Gantt.utils.toggleClass(act, HIGHLIGHT_CLASS, highlight);\r\n }\r\n }\r\n\r\n highlightRow(row, highlight, deSelectAll) {\r\n if (deSelectAll) {\r\n const highlightRows = this.body.querySelectorAll(`.${TIME_TABLE_ROW}.${HIGHLIGHT_CLASS}`);\r\n if (highlightRows && highlightRows.length) {\r\n for (let i = 0; i < highlightRows.length; i++) {\r\n Gantt.utils.removeClass(highlightRows[i], HIGHLIGHT_CLASS);\r\n }\r\n }\r\n }\r\n if (row) {\r\n if (row.activityRow && row.activityRow.rowNode) {\r\n Gantt.utils.toggleClass(row.activityRow.rowNode, HIGHLIGHT_CLASS, highlight);\r\n }\r\n }\r\n }\r\n\r\n getDisplayedActivitiesTimeRange() {\r\n let top = this.scroller.scrollTop;\r\n if (top < 0) {\r\n top = 0;\r\n }\r\n const table = this.gantt.table;\r\n\r\n let row = table.getRowAt(top);\r\n if (!row || !row.getData()) {\r\n return null; // If no rows are displayed, a row displaying 'No matching records found' is displayed instead: no activities to display\r\n }\r\n top = table.getRowTop(row);\r\n const yFinal = Math.min(top + this.scroller.clientHeight, table.getHeight());\r\n const activityFilter = this.getActivityFilter();\r\n let minDate,\r\n maxDate = 0,\r\n activities,\r\n act,\r\n iAct,\r\n start,\r\n end,\r\n actCount;\r\n while (row && top < yFinal) {\r\n top += row.tr.offsetHeight;\r\n activities = row.activityRow && row.activityRow.activities;\r\n if ((actCount = activities && activities.length)) {\r\n for (iAct = 0; iAct < actCount; ++iAct) {\r\n act = activities[iAct];\r\n if (!activityFilter || activityFilter.accept(act, row)) {\r\n start = act.start;\r\n end = act.end;\r\n if (minDate) {\r\n if (minDate > start) {\r\n minDate = start;\r\n }\r\n if (maxDate < end) {\r\n maxDate = end;\r\n }\r\n } else {\r\n minDate = start;\r\n maxDate = end;\r\n }\r\n }\r\n }\r\n }\r\n row = table.nextRow(row);\r\n }\r\n return minDate && { start: minDate, end: maxDate };\r\n }\r\n\r\n getScrollLeft() {\r\n return this.scroller.scrollLeft;\r\n }\r\n\r\n setScrollLeft(x) {\r\n this.scroller.scrollLeft = x;\r\n }\r\n\r\n getScroller() {\r\n return this.scroller;\r\n }\r\n\r\n getRightMargin() {\r\n return this.scroller.offsetWidth - this.getVisibleWidth();\r\n }\r\n\r\n getBottomMargin() {\r\n return this.scroller.offsetHeight - this.getVisibleHeight();\r\n }\r\n\r\n setBodyWidth(w) {\r\n // this.timeScroller.style.width = this.timeLine.getWidth() + 'px';\r\n this.body.style.width = `${w}px`;\r\n }\r\n\r\n getBodyWidth() {\r\n return this.body.offsetWidth;\r\n }\r\n\r\n setBodyHeight(h) {\r\n this.body.style.height = `${h}px`;\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n getBodyHeight() {\r\n return Gantt.utils.getHeight(this.scroller);\r\n }\r\n\r\n /* */\r\n /* Tooltips */\r\n /* */\r\n initTooltip() {\r\n const timeTable = this;\r\n const resGantt = this.gantt.isResourceGantt();\r\n this.gantt.tooltip.installTooltip({\r\n // The container that contains elements to display tooltip for.\r\n container: this.body,\r\n // The container inside which bounds the tooltip can be displayed\r\n getTooltipDisplayContainer() {\r\n return timeTable.gantt.getBody();\r\n },\r\n // Returns an element in the node hierarchy for which a tooltip can be displayed\r\n getTooltipElement(node) {\r\n return timeTable.getActivityNode(node);\r\n },\r\n getTooltipData(actNode) {\r\n return timeTable.getActivity(actNode);\r\n },\r\n renderTooltip(\r\n actNode /* The element returned by getTooltipElement */,\r\n act /* data returned by getTooltipData for the specified tooltipElt */,\r\n tooltipCtnr /* The container of the tooltip to fill with info. */\r\n ) {\r\n if (act && ((resGantt && act.row) || act)) {\r\n timeTable.activityRenderer.getTooltip(tooltipCtnr, act, act.row);\r\n }\r\n },\r\n enteringTooltipElement(actNode, act) {\r\n if (timeTable.isDragAndDropping()) return false;\r\n if (actNode) {\r\n timeTable.highlightActivity(actNode, true, true);\r\n }\r\n return true;\r\n },\r\n leavingTooltipElement(actNode, act) {\r\n if (actNode) {\r\n timeTable.highlightActivity(actNode, false, true);\r\n }\r\n },\r\n });\r\n }\r\n\r\n hideTooltip() {\r\n this.gantt.tooltip.hideTooltip(0);\r\n }\r\n /* */\r\n /* Search */\r\n /* */\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n searchActivities(row, filter) {\r\n const activities = row.activities;\r\n const actCount = activities && activities.length;\r\n if (actCount) {\r\n const filterFct =\r\n (typeof filter === 'string' && ((act, object, filter) => this.activityRenderer.filter(act, row, filter))) ||\r\n filter;\r\n for (let iAct = 0; iAct < actCount; ++iAct) {\r\n if (filterFct(activities[iAct], row, filter)) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /* */\r\n /* Drag and drop */\r\n /* */\r\n\r\n initDragAndDrop() {\r\n const node = this.body,\r\n timeTable = this;\r\n this.dragDropHandler = new DragDrop(node);\r\n this.dragDropHandler.addHandler({\r\n startMove(target, initOffsetX, initOffsetY) {\r\n const actNode = timeTable.getActivityNode(target);\r\n if (actNode) {\r\n this.activity = timeTable.getActivity(actNode);\r\n if (this.activity === null) {\r\n console.log('null activity!');\r\n return false;\r\n }\r\n this.initActivityRow = timeTable.getTimeTableRowNode(actNode);\r\n this.row = this.initRow = timeTable.getRow(this.initActivityRow.id.substring(ROW_ID_PREFIX.length));\r\n this.initTimeTablePos = timeTable.gantt.getTimeTableCoordinates(target, { x: initOffsetX, y: initOffsetY });\r\n this.initScrollLeft = node.scrollLeft;\r\n this.initScrollTop = node.scrollTop;\r\n this.timeLineItem = {\r\n start: new Date(this.activity.start),\r\n type: 'box',\r\n };\r\n this.timeLineItem.context = {\r\n start: this.timeLineItem.start.format(),\r\n startRow: this.initRow.name,\r\n };\r\n timeTable.hideTooltip();\r\n timeTable.gantt.highlightRow(this.row, true, true);\r\n timeTable.startDraggingActivity(this);\r\n return actNode;\r\n }\r\n return false;\r\n },\r\n move(pos) {\r\n pos.y = undefined; // We don't change the activity Y position\r\n const scrollDiffX = node.scrollLeft - this.initScrollLeft;\r\n if (scrollDiffX) {\r\n pos.dx += scrollDiffX;\r\n pos.x += scrollDiffX;\r\n }\r\n const scrollDiffY = node.scrollTop - this.initScrollTop;\r\n if (scrollDiffY) {\r\n pos.dy += scrollDiffY;\r\n }\r\n const preRow = this.row;\r\n const newRow = timeTable.gantt.table.getRowAt(this.initTimeTablePos.y + pos.dy, preRow);\r\n this.currentTime = new Date(timeTable.gantt.timeLine.getTimeAt(pos.x));\r\n if (newRow) {\r\n this.row = newRow;\r\n if (preRow.id !== newRow.id && this.initRow.id !== preRow.id) {\r\n // Keep highlighting the init row\r\n timeTable.gantt.highlightRow(preRow, false);\r\n }\r\n if (preRow.id !== newRow.id) {\r\n if (this.initRow.id !== preRow.id) {\r\n timeTable.gantt.highlightRow(preRow, false);\r\n }\r\n if (this.initRow.id !== newRow.id) {\r\n timeTable.gantt.highlightRow(newRow, true);\r\n }\r\n if (newRow.activityRow) {\r\n newRow.activityRow.rowNode.appendChild(timeTable.dragDropHandler.draggedObject);\r\n }\r\n }\r\n return this.row.id !== this.initRow.id\r\n ? timeTable.acceptActivityRowChange(this)\r\n : timeTable.acceptActivityMove(this);\r\n }\r\n\r\n return false;\r\n },\r\n moved() {\r\n this.updateTimeLineItem();\r\n },\r\n restoreInitPosition() {\r\n if (this.row && this.initRow.id !== this.row.id) {\r\n timeTable.gantt.highlightRow(this.row, false);\r\n this.row = this.initRow;\r\n }\r\n node.scrollTop = this.initTop;\r\n },\r\n stopMove() {\r\n timeTable.stopDraggingActivity(this);\r\n timeTable.gantt.timeLine.removeTimeLineItem(TIME_MARKER_DRAG_ITEM);\r\n if (this.row) {\r\n timeTable.gantt.highlightRow(this.row, true, true);\r\n }\r\n },\r\n applyMove() {\r\n timeTable.applyActivityMove(this);\r\n },\r\n cancel() {\r\n timeTable.abortActivityMove();\r\n },\r\n updateTimeLineItem() {\r\n timeTable.gantt.timeLine.setTimeLineItem(TIME_MARKER_DRAG_ITEM, this.createDragTimeLineItem());\r\n },\r\n createDragTimeLineItem() {\r\n const item = this.timeLineItem,\r\n changeRow = this.row.id !== this.initRow.id;\r\n item.className = `${TIME_MARKER_DRAG_ITEM} ${\r\n timeTable.dragDropHandler.invalid ? 'dragg-invalid' : 'dragg-valid'\r\n }`;\r\n // item.context.draggStatusClass = dragDropHandler.invalid? 'dragg-invalid' : 'dragg-valid';\r\n item.context.current = this.currentTime.format();\r\n item.start = this.currentTime;\r\n item.context.title = Gantt.utils.formatString(\r\n changeRow ? 'Gantt.ChangeActivityRow' : 'Gantt.MoveActivity',\r\n this.activity\r\n );\r\n if (changeRow) {\r\n item.context.currentRow = this.row.name;\r\n }\r\n item.content = Gantt.utils.formatString(\r\n changeRow ? 'timeLine.changeRowItem.fmt' : 'timeLine.newTimeItem.fmt',\r\n item.context\r\n );\r\n return item;\r\n },\r\n });\r\n this.dragDropHandler.addEventListener(node, 'mousedown', this.dragDropHandler.startDragMouse, true); // Capturing!\r\n }\r\n\r\n startDraggingActivity(actParam) {\r\n if (this.moveInterator && this.moveInterator.startMove) {\r\n this.moveInterator.startMove(actParam);\r\n }\r\n }\r\n\r\n acceptActivityRowChange(actParam) {\r\n if (this.moveInterator && this.moveInterator.acceptRowChange) {\r\n return this.moveInterator.acceptRowChange(actParam);\r\n }\r\n return true;\r\n }\r\n\r\n acceptActivityMove(actParam) {\r\n if (this.moveInterator && this.moveInterator.acceptMove) {\r\n return this.moveInterator.acceptMove(actParam);\r\n }\r\n return true;\r\n }\r\n\r\n abortActivityMove(actParam) {\r\n if (this.moveInterator && this.moveInterator.abortMove) {\r\n return this.moveInterator.abortMove(actParam);\r\n }\r\n return true;\r\n }\r\n\r\n applyActivityMove(actParam) {\r\n if (this.moveInterator && this.moveInterator.applyMove) {\r\n return this.moveInterator.applyMove(actParam);\r\n }\r\n return true;\r\n }\r\n\r\n stopDraggingActivity(actParam) {\r\n if (this.moveInterator && this.moveInterator.stopMove) {\r\n return this.moveInterator.stopMove(actParam);\r\n }\r\n return true;\r\n }\r\n\r\n isDragAndDropping() {\r\n return this.dragDropHandler && this.dragDropHandler.draggedObject;\r\n }\r\n\r\n /* Selection methods */\r\n processClick(e) {\r\n this.hideTooltip();\r\n this.processMouseEvent(\r\n e,\r\n (e, row, date) => {\r\n this.gantt.highlightRow(row, true, true);\r\n this.gantt.selection.processClick(e, row);\r\n if (this.mouseHandler && this.mouseHandler.rowClicked) {\r\n this.mouseHandler.rowClicked(e, row, date);\r\n }\r\n },\r\n (e, activity, date, row) => {\r\n this.gantt.selection.processClick(e, activity);\r\n if (this.mouseHandler && this.mouseHandler.activityClicked) {\r\n this.mouseHandler.activityClicked(e, activity, date, row);\r\n }\r\n }\r\n );\r\n }\r\n\r\n processMouseEvent(e, rowCB, activityCB) {\r\n // const date = new Date(this.gantt.timeLine.getTimeAt(pos.x));\r\n const coord = this.gantt.getTimeTableCoordinates(e.target, { x: event.offsetX, y: event.offsetY });\r\n const date = new Date(this.gantt.timeLine.getTimeAt(coord.x));\r\n if (e.target && Gantt.utils.hasClass(e.target, TIME_TABLE_ROW)) {\r\n const row = this.getRow(e.target.id.substring(ROW_ID_PREFIX.length));\r\n if (row) {\r\n this.gantt.highlightRow(row, true, true);\r\n if (rowCB) {\r\n rowCB(e, row, date);\r\n }\r\n this.gantt.selection.processClick(e, row);\r\n }\r\n } else {\r\n const actNode = Gantt.utils.closest(e.target, `.${TIME_TABLE_ACTIVITY_CLASSNAME}`);\r\n const act = actNode && this.getActivity(actNode);\r\n if (act) {\r\n let row = act.row;\r\n if (!row) {\r\n const rowNode = Gantt.utils.closest(e.target, `.${TIME_TABLE_ROW}`);\r\n row = this.getRow(rowNode.id.substring(ROW_ID_PREFIX.length));\r\n }\r\n if (row) {\r\n this.gantt.highlightRow(row, true, true);\r\n }\r\n if (activityCB) {\r\n activityCB(e, act, date, row);\r\n }\r\n }\r\n }\r\n }\r\n\r\n processDoubleClick(e) {\r\n this.hideTooltip();\r\n this.processMouseEvent(\r\n e,\r\n (e, row, date) => {\r\n if (this.mouseHandler && this.mouseHandler.rowDoubleClicked && row) {\r\n this.mouseHandler.rowDoubleClicked(e, row, date);\r\n }\r\n },\r\n (e, activity, date, row) => {\r\n if (this.mouseHandler && this.mouseHandler.activityDoubleClicked) {\r\n this.mouseHandler.activityDoubleClicked(e, activity, date, row);\r\n }\r\n }\r\n );\r\n }\r\n\r\n processMouseDown(e) {\r\n this.hideTooltip();\r\n if (e.which === 3) {\r\n this.processMouseEvent(\r\n e,\r\n (e, row, date) => {\r\n if (this.mouseHandler && this.mouseHandler.rowRightClicked && row) {\r\n this.mouseHandler.rowRightClicked(e, row, date);\r\n }\r\n },\r\n (e, activity, date, row) => {\r\n if (this.mouseHandler && this.mouseHandler.activityRightClicked) {\r\n this.mouseHandler.activityRightClicked(e, activity, date, row);\r\n }\r\n }\r\n );\r\n e && e.preventDefault && e.preventDefault();\r\n e && e.stopPropagation && e.stopPropagation();\r\n return false;\r\n }\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n clearActivitySelection(sels) {\r\n for (let i = 0, count = sels.length, sel; i < count; ++i) {\r\n sel = sels[i];\r\n if (sel.node) {\r\n Gantt.utils.removeClass(sel.node, SELECTION_CLASS);\r\n }\r\n }\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n selectActvities(sels) {\r\n for (let i = 0, node; i < sels.length; i++) {\r\n if ((node = sels[i].node)) {\r\n Gantt.utils.addClass(node, SELECTION_CLASS);\r\n }\r\n }\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n unselectActvities(sels) {\r\n for (let i = 0, node; i < sels.length; i++) {\r\n if ((node = sels[i].node)) {\r\n Gantt.utils.removeClass(node, SELECTION_CLASS);\r\n }\r\n }\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n selectRows(rows) {\r\n for (let i = 0, node; i < rows.length; i++) {\r\n if ((node = rows[i].activityRow) && (node = node.rowNode)) {\r\n Gantt.utils.addClass(node, SELECTION_CLASS);\r\n }\r\n }\r\n }\r\n\r\n // noinspection JSMethodCanBeStatic\r\n unselectRows(rows) {\r\n for (let i = 0, node; i < rows.length; i++) {\r\n if ((node = rows[i].activityRow) && (node = node.rowNode)) {\r\n Gantt.utils.removeClass(node, SELECTION_CLASS);\r\n }\r\n }\r\n }\r\n\r\n rowSelectionChanged() {\r\n this.draw();\r\n }\r\n\r\n //\r\n // Decoration management\r\n //\r\n generateGlobalDecorations(ctx) {\r\n const decoContainer = this.gantt.timeLine.getDecorationContainer();\r\n if (!decoContainer) {\r\n console.warn('No decoration container found in time line');\r\n return;\r\n }\r\n if (this.backgroundCtnr) {\r\n decoContainer.removeChild(this.backgroundCtnr);\r\n this.backgroundCtnr = null;\r\n }\r\n if (this.activityRenderer.generateDecorations) {\r\n const ctnr = document.createElement('div');\r\n ctnr.className = 'time-table-decoration-ctnr decoration-background-ctnr';\r\n ctnr.style.position = 'absolute';\r\n ctnr.style.left = 0;\r\n ctnr.style.top = 0;\r\n ctnr.style.bottom = 0;\r\n ctnr.style.width = '100%';\r\n ctnr.style.height = '100%';\r\n\r\n const objs = this.activityRenderer.generateDecorations(ctx.horiz.start, ctx.horiz.end, ctx);\r\n for (let i = 0, count = objs ? objs.length : 0, obj; i < count; ++i) {\r\n obj = objs[i];\r\n // noinspection JSUnresolvedVariable\r\n this.addDecoration(obj, ctnr);\r\n }\r\n if (ctnr.firstChild) {\r\n decoContainer.appendChild((this.backgroundCtnr = ctnr));\r\n }\r\n }\r\n }\r\n\r\n generateRowDecorations(row, rowNode, ctx) {\r\n const objs = this.activityRenderer.generateRowDecorations(row, ctx.horiz.start, ctx.horiz.end, ctx);\r\n for (let i = 0, count = objs ? objs.length : 0, obj, node; i < count; ++i) {\r\n obj = objs[i];\r\n node = this.addDecoration(obj, rowNode);\r\n // noinspection JSUnresolvedVariable\r\n node.style.zIndex = obj.foreground ? 1 : -1;\r\n }\r\n }\r\n\r\n addDecoration(obj, ctnr) {\r\n let node;\r\n if (obj.create) {\r\n node = obj.create();\r\n } else {\r\n node = document.createElement('div');\r\n if (obj.type) {\r\n if (obj.type === DECORATION_INVALID_TYPE) {\r\n node.className = DECORATION_INVALID_CLASS;\r\n } else if (obj.type === DECORATION_BREAK_TYPE) {\r\n node.className = DECORATION_BREAK_CLASS;\r\n }\r\n } else {\r\n node.className = DECORATION_BREAK_CLASS;\r\n }\r\n node.display = 'inline-block';\r\n }\r\n\r\n if (obj.className) {\r\n Gantt.utils.addClass(node, obj.className);\r\n }\r\n\r\n node.style.position = 'absolute';\r\n if (obj.background) {\r\n node.style.background = obj.background;\r\n }\r\n // noinspection JSUnresolvedVariable\r\n if (obj.color || obj.foreground) {\r\n // noinspection JSUnresolvedVariable\r\n node.style.color = obj.color || obj.foreground;\r\n }\r\n const left = this.gantt.timeLine.getXFromMillis(obj.start);\r\n node.style.left = `${left}px`;\r\n node.style.width = this.gantt.timeLine.getXFromMillis(obj.end) - left;\r\n node.style.top = '1px';\r\n node.style.bottom = '1px';\r\n ctnr.appendChild(node);\r\n return node;\r\n }\r\n\r\n //\r\n // Constraints\r\n //\r\n\r\n createConstraintGrapherNode() {\r\n if (this.ctsGraph && this.ctsGraph.node) {\r\n this.body.removeChild(this.ctsGraph.node);\r\n }\r\n const ctsNode = document.createElement('div');\r\n ctsNode.className = 'constraints-grapher';\r\n ctsNode.style.height = '100%';\r\n ctsNode.style.width = '100%';\r\n ctsNode.style.position = 'relative';\r\n ctsNode.style.pointerEvents = 'none';\r\n return ctsNode;\r\n }\r\n\r\n setConstraints(constraints) {\r\n this.constraints = constraints;\r\n if (constraints && constraints.length) {\r\n if (!this.ctsGraph) {\r\n const ctsNode = this.createConstraintGrapherNode();\r\n this.ctsGraph = new (Gantt.components.ConstraintsGraph.impl || Gantt.components.ConstraintsGraph)(\r\n this.gantt,\r\n ctsNode,\r\n this.gantt.config && this.gantt.config.constraints\r\n );\r\n this.body.appendChild(ctsNode);\r\n }\r\n this.ctsGraph.setConstraints(constraints);\r\n } else if (this.ctsGraph) {\r\n if (this.ctsGraph.node) {\r\n this.body.removeChild(this.ctsGraph.node);\r\n }\r\n if (this.ctsGraph.destroy) {\r\n this.ctsGraph.destroy();\r\n }\r\n this.ctsGraph = null;\r\n }\r\n }\r\n\r\n resetConstraints() {\r\n const ctsNode = this.createConstraintGrapherNode();\r\n this.ctsGraph.setNode(ctsNode); // Instead of removing all links, we change the link container\r\n this.ctsGraph.setConstraints(this.constraints);\r\n this.body.appendChild(ctsNode);\r\n }\r\n\r\n //\r\n // Destroy\r\n //\r\n destroy() {\r\n if (this.backgroundCtnr) {\r\n this.node.removeChild(this.backgroundCtnr);\r\n this.backgroundCtnr = null;\r\n }\r\n if (this.foregroundCtnr) {\r\n this.node.removeChild(this.foregroundCtnr);\r\n this.foregroundCtnr = null;\r\n }\r\n if (this.activityRenderer) {\r\n this.activityRenderer.destroy();\r\n this.activityRenderer = null;\r\n }\r\n\r\n if (this.ctsGraph) {\r\n this.ctsGraph.destroy();\r\n this.ctsGraph = null;\r\n }\r\n }\r\n}\r\n\r\nGantt.components.TimeTable.impl = TimeTable;\r\n\r\nif (module.hot) {\r\n module.hot.accept();\r\n}\r\n","/**\r\n * Copyright IBM Corp. 2019\r\n *\r\n * This source code is licensed under the Apache-2.0 license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n */\r\n\r\n/* import-sort-ignore */\r\nimport './core/plugins';\r\nimport './core/selection';\r\nimport './core/renderer';\r\nimport './model';\r\nimport './panel';\r\nimport './timetable';\r\nimport './loadchart';\r\n\r\n// import P from 'es6-promise/dist/es6-promise.min';\r\n\r\nexport default from './core/core';\r\n\r\n// if (typeof Promise === 'undefined' /* && Promise.toString().indexOf(\"[native code]\") !== -1 */) {\r\n// console.log('Use of es6-promise');\r\n// P.polyfill();\r\n// }\r\n","const LOAD_RESOURCE_BAR_CLASS = 'load-resource-bar';\r\nexport const RESOURCE_LOAD_CLASS = 'resource-load';\r\n\r\nexport class Block {\r\n constructor(start, end, prev, next) {\r\n this.start = start;\r\n this.end = end;\r\n this.prev = prev;\r\n this.next = next;\r\n this.resNodes = [];\r\n }\r\n\r\n addResource(resNode) {\r\n this.resNodes.push(resNode);\r\n }\r\n\r\n insertBefore(start, end, resNode) {\r\n const block = new Block(start, end, this.prev, this);\r\n this.prev.next = block; // Always a previous as firstBlock initialized with a minimal date.\r\n this.prev = block;\r\n if (resNode) block.addResource(resNode);\r\n return block;\r\n }\r\n\r\n insertAfter(start, end, resNode) {\r\n if (this.next) {\r\n return this.next.insert(start, end, resNode);\r\n }\r\n const block = new Block(start, end, this, null);\r\n this.next = block;\r\n if (resNode) block.addResource(resNode);\r\n return block;\r\n }\r\n\r\n insert(start, end, resNode) {\r\n let block;\r\n if (start >= this.end) {\r\n return this.insertAfter(start, end, resNode);\r\n }\r\n if (start < this.start) {\r\n this.insertBefore(start, Math.min(this.start, end), resNode);\r\n if (end <= this.start) return undefined;\r\n start = this.start;\r\n }\r\n if (start > this.start) {\r\n this.insertBefore(this.start, start).resNodes = [].concat(this.resNodes);\r\n this.start = start;\r\n }\r\n if (end < this.end) {\r\n block = this.insertBefore(this.start, end);\r\n block.resNodes = this.resNodes.concat([resNode]);\r\n this.start = end;\r\n return block;\r\n }\r\n\r\n this.resNodes.push(resNode);\r\n\r\n if (end > this.end) {\r\n return this.insertAfter(this.end, end, resNode);\r\n }\r\n return this;\r\n }\r\n\r\n computeMax(useMaxLoad) {\r\n let max = 0;\r\n const usedRes = [];\r\n this.resNodes.forEach(node => {\r\n if (useMaxLoad) {\r\n if (usedRes.indexOf(node.resource) < 0) {\r\n usedRes.push(node.resource);\r\n max += node.maxLoad;\r\n }\r\n } else max += node.load;\r\n });\r\n this.max = max;\r\n return Math.max(max, this.next ? this.next.computeMax(useMaxLoad) : 0);\r\n }\r\n\r\n createVisItem(ctx) {\r\n // max, verticalPercentage, renderer\r\n if (!this.resNodes.length) return null;\r\n let tpl =\r\n '';\r\n let closing = '';\r\n let max = ctx.max;\r\n let height = ctx.plotAreaHeight;\r\n // Only true if one resource selected => this.resNodes is always of size 1\r\n if (ctx.useMaxLoad && this.max) {\r\n tpl +=\r\n '';\r\n max = this.max; // activities height are now proportional to their max load container height\r\n closing = '' + closing;\r\n }\r\n for (let i = 0, res; i < this.resNodes.length; i++) {\r\n res = this.resNodes[i];\r\n tpl +=\r\n '';\r\n }\r\n tpl += closing;\r\n return {\r\n start: this.start,\r\n end: this.end,\r\n type: 'background',\r\n content: tpl,\r\n };\r\n }\r\n\r\n toString() {\r\n let s;\r\n if (this.start) {\r\n s =\r\n '[ start: ' +\r\n new Date(this.start).toLocaleDateString() +\r\n ' - end: ' +\r\n new Date(this.end).toLocaleDateString() +\r\n '(';\r\n s += this.resNodes.join(', ');\r\n s += ')]';\r\n } else {\r\n s = '';\r\n }\r\n return s + (this.next ? '\\n ' + this.next.toString() : '');\r\n }\r\n}\r\n","\"use strict\"\r\nvar moment = require(\"moment/min/moment-with-locales.min.js\");\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nexports.default = moment;\r\n","import vis from 'vis';\r\n\r\nimport Gantt from '../core/core';\r\n\r\nimport { Block, RESOURCE_LOAD_CLASS } from './block';\r\n\r\nimport './loadchart.scss';\r\n\r\nconst CHART_TOP_MARGIN = 8;\r\n\r\nfunction ResNode(resource, activity, load, maxLoad) {\r\n this.resource = resource;\r\n this.activity = activity;\r\n this.load = load;\r\n this.maxLoad = maxLoad;\r\n}\r\n\r\nResNode.prototype.toString = function() {\r\n return this.resource.name + ' - ' + this.activity.name;\r\n};\r\n\r\nclass LoadResourceChart extends Gantt.components.LoadResourceChart {\r\n setConfiguration(config) {\r\n if (config.classes) {\r\n Gantt.utils.addClass(this.node, config.classes);\r\n }\r\n\r\n this.header = document.createElement('div');\r\n this.header.className = 'load-resource-chart-header';\r\n if (config.header) {\r\n let headerContent;\r\n if (Gantt.utils.isFunction(config.header)) {\r\n headerContent = config.header(this.header);\r\n } else if (Gantt.utils.isDomElement(config.header)) {\r\n headerContent = config.header;\r\n } else {\r\n headerContent = document.createElement('h3');\r\n headerContent.appendChild(document.createTextNode(config.header));\r\n }\r\n if (headerContent) {\r\n this.header.appendChild(headerContent);\r\n }\r\n }\r\n this.node.appendChild(this.header);\r\n this.body = document.createElement('div');\r\n this.body.className = 'load-resource-chart-body';\r\n this.body.style.position = 'relative';\r\n if (config.height) {\r\n if (Gantt.utils.isFunction(config.height)) {\r\n this.body.style.height = config.height() + 'px';\r\n } else if (Gantt.utils.isString(config.height)) {\r\n this.body.style.height = config.height;\r\n } else {\r\n this.body.style.height = config.height + 'px';\r\n }\r\n } else {\r\n this.body.style.height = '100%';\r\n }\r\n this.node.appendChild(this.body);\r\n\r\n this.leftPanel = document.createElement('div');\r\n this.leftPanel.className = 'load-resource-chart-left';\r\n this.leftPanel.style.position = 'absolute';\r\n this.leftPanel.style.left = '0';\r\n this.leftPanel.style.top = '0';\r\n this.leftPanel.style.bottom = '0';\r\n this.legendPanel = document.createElement('div');\r\n this.legendPanel.className = 'legend-panel empty-legend';\r\n this.legendPanel.style.position = 'absolute';\r\n this.legendPanel.style.bottom = '0';\r\n this.legendPanel.style.overflowY = 'auto';\r\n this.leftPanel.appendChild(this.legendPanel);\r\n\r\n // Create Y-Axis panel\r\n this.yAxisPanel = document.createElement('div');\r\n this.yAxisPanel.className = 'y-axis-ctnr';\r\n this.yAxisPanel.style.position = 'absolute';\r\n this.yAxisPanel.style.right = 0;\r\n this.yAxisPanel.style.top = '0';\r\n this.yAxis = document.createElement('div');\r\n this.yAxis.className =\r\n 'y-axis' + (config && config.yAxis && config.yAxis.className ? ' ' + config.yAxis.className : '');\r\n this.yAxis.style.position = 'absolute';\r\n this.yAxis.style.overflow = 'visible';\r\n this.yAxis.style.right = 0;\r\n this.yAxis.style.top = '0';\r\n this.yAxisPanel.appendChild(this.yAxis);\r\n this.leftPanel.appendChild(this.yAxisPanel);\r\n\r\n this.body.appendChild(this.leftPanel);\r\n\r\n this.timeLineScrollerElt = document.createElement('div');\r\n this.timeLineScrollerElt.className = 'load-resource-chart-scroller';\r\n this.timeLineScrollerElt.style.position = 'absolute';\r\n this.timeLineScrollerElt.style.top = '0';\r\n this.timeLineScrollerElt.style.bottom = '0';\r\n this.timeLineScrollerElt.style.right = '0';\r\n this.timeLineScrollerElt.style.overflow = 'hidden';\r\n this.body.appendChild(this.timeLineScrollerElt);\r\n\r\n this.noSelectionElt = document.createElement('div');\r\n this.noSelectionElt.className = 'no-selection';\r\n this.noSelectionElt.style.position = 'absolute';\r\n this.noSelectionElt.style.left = '0';\r\n this.noSelectionElt.style.top = '0';\r\n this.noSelectionElt.style.bottom = '0';\r\n this.noSelectionElt.style.right = '0';\r\n this.noSelectionElt.style.overflow = 'hidden';\r\n this.noSelectionElt.style.display = 'flex';\r\n this.noSelectionElt.style.alignItems = 'center';\r\n this.noSelectionElt.style.justifyContent = 'center';\r\n this.noSelectionElt.style.zIndex = '1';\r\n const noSelMsg = document.createElement('div');\r\n noSelMsg.className = 'no-selection-message';\r\n noSelMsg.appendChild(document.createTextNode(Gantt.utils.getString('gantt.loadResourceChart.noSelection.title')));\r\n this.noSelectionElt.appendChild(noSelMsg);\r\n this.body.appendChild(this.noSelectionElt);\r\n\r\n function createGetter(config) {\r\n if (Gantt.utils.isFunction(config)) {\r\n return config;\r\n }\r\n if (Gantt.utils.isString(config)) {\r\n return Gantt.utils.propertyEvaluator(config);\r\n }\r\n return function() {\r\n return config;\r\n };\r\n }\r\n\r\n this.resourceMaxLoad = config.maxLoad && createGetter(config.maxLoad);\r\n this.resourceActivityLoad =\r\n (config.load && createGetter(config.load)) ||\r\n function() {\r\n return 1;\r\n };\r\n\r\n const loadChart = this;\r\n const RendererClass = Gantt.components.Renderer.impl || Gantt.components.Renderer;\r\n this.chartRenderer = new RendererClass(\r\n {},\r\n {\r\n background(res) {\r\n return loadChart.resourceRenderer.background(res);\r\n },\r\n getTooltipProperties(info) {\r\n const props = ['Resource', info.resourceName, 'Activity', info.activityName, 'Load', info.resourceLoad];\r\n if (info.resourceMaxLoad) {\r\n props.push('Maximum load', info.resourceMaxLoad);\r\n }\r\n return props;\r\n },\r\n },\r\n this.gantt\r\n );\r\n\r\n this.initTooltips();\r\n }\r\n\r\n setVisible(visible) {}\r\n\r\n setTimeLineBounds(bounds) {\r\n this.timeLineScrollerElt.style.left = bounds.x + 'px';\r\n this.timeLineScrollerElt.style.width = bounds.width + 'px';\r\n this.leftPanel.style.width = bounds.x + 'px';\r\n\r\n if (this.timeLineElt) {\r\n this.updatePlottingArea();\r\n this.drawCharts();\r\n }\r\n }\r\n\r\n setTimeLineWidth(w) {\r\n if (this.timeLineElt) {\r\n this.timeLineElt.style.width = w + 'px';\r\n }\r\n }\r\n\r\n setTimeLineScrollLeft(left) {\r\n this.timeLineScrollerElt.scrollLeft = left;\r\n }\r\n\r\n getTimeLineNode() {\r\n return this.timeLineScrollerElt;\r\n }\r\n\r\n setTimeWindow(start, end, onInit) {\r\n if (this.timeLineElt) {\r\n this.timeLineScrollerElt.removeChild(this.timeLineElt);\r\n }\r\n this.timeLineElt = document.createElement('div');\r\n this.timeLineElt.style.width = this.gantt.timeLine.getWidth() + 'px';\r\n this.timeLineElt.style.height = '100%';\r\n\r\n try {\r\n // See https://github.com/almende/vis/issues/24 for time zone hack\r\n this.visTimeline = new vis.Timeline(\r\n this.timeLineElt,\r\n {},\r\n {\r\n // 'millisecond', 'second', 'minute', 'hour', 'weekday', 'day', 'month', 'year'\r\n orientation: { axis: 'bottom', item: 'bottom' },\r\n height: '100%',\r\n start: this.gantt.timeLine.scrollableHorizon.start,\r\n end: this.gantt.timeLine.scrollableHorizon.end,\r\n }\r\n );\r\n this.visTimeline.range.body.emitter.off('mousewheel');\r\n const fireReady = () => {\r\n this.visTimeline.off('changed', fireReady);\r\n this.timeScaleElt = this.timeLineElt.getElementsByClassName('vis-panel vis-bottom')[0];\r\n const style = window.getComputedStyle(this.timeScaleElt);\r\n let bottom = style.bottom;\r\n bottom = bottom ? Number.parseInt(bottom, 10) : 0;\r\n if (Number.isNaN(bottom)) {\r\n bottom = 0;\r\n }\r\n let topBorder = style.borderTopWidth;\r\n topBorder = topBorder ? Number.parseInt(topBorder, 10) : 0;\r\n this.timeScaleHeight = $(this.timeScaleElt).outerHeight() + bottom - topBorder; // visjs set a -2px bottom\r\n this.updatePlottingArea();\r\n this.triggerEvent(Gantt.events.TIME_LINE_INIT);\r\n if (onInit) {\r\n onInit();\r\n }\r\n };\r\n this.visTimeline.on('changed', fireReady);\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n this.timeLineScrollerElt.appendChild(this.timeLineElt);\r\n }\r\n\r\n setScrollLeft(left) {\r\n this.getScroller().scrollLeft = left;\r\n }\r\n\r\n setResources(resources) {\r\n this.resources = resources;\r\n }\r\n\r\n setResourceRenderer(resRenderer) {\r\n this.resourceRenderer = resRenderer;\r\n }\r\n\r\n destroy() {}\r\n\r\n draw() {\r\n if (this.visTimeline) {\r\n this.noSelectionElt.style.display = this.resources && this.resources.length ? 'none' : 'flex';\r\n this.updateLegend();\r\n this.drawCharts();\r\n }\r\n }\r\n\r\n unselectRows(rows) {\r\n rows.forEach(row => (row.backgroundColor = undefined));\r\n }\r\n\r\n drawCharts() {\r\n const firstBlock = new Block(0, 0);\r\n let maxLoad;\r\n let load;\r\n (this.resources || []).forEach(res => {\r\n (res.activities || []).forEach(act => {\r\n load = this.resourceActivityLoad(res, act);\r\n maxLoad = this.resourceMaxLoad && this.resourceMaxLoad(res, act);\r\n firstBlock.insert(act.start, act.end, new ResNode(res, act, load, maxLoad));\r\n });\r\n });\r\n const max = firstBlock.computeMax(this.resourceMaxLoad && this.resources.length === 1);\r\n this.setYAxisMax(max);\r\n const items = [];\r\n let item;\r\n const ctx = {\r\n max,\r\n useMaxLoad: this.resourceMaxLoad && this.resources.length === 1,\r\n chartRenderer: this.chartRenderer,\r\n plotAreaHeight: this.plotAreaHeight - CHART_TOP_MARGIN,\r\n yRatio: this.yRatio,\r\n };\r\n for (let block = firstBlock.next; block; block = block.next) {\r\n item = block.createVisItem(ctx);\r\n if (item) {\r\n items.push(item);\r\n }\r\n }\r\n this.visTimeline.setItems(items);\r\n }\r\n\r\n updateLegend() {\r\n if (this.legend) {\r\n this.legendPanel.removeChild(this.legend);\r\n }\r\n const hasRes = this.resources && this.resources.length;\r\n Gantt.utils.toggleClass(this.legendPanel, 'empty-legend', !hasRes);\r\n this.legendPanel.style.overflowY = 'auto';\r\n if (this.resources) {\r\n this.legend = document.createElement('ul');\r\n this.legend.className = 'legend';\r\n let li;\r\n let colorBox;\r\n let name;\r\n let res;\r\n for (let i = 0, count = this.resources.length; i < count; i++) {\r\n res = this.resources[i];\r\n li = document.createElement('li');\r\n li.className = 'legend-item';\r\n li.style.display = 'table';\r\n colorBox = document.createElement('div');\r\n colorBox.className = 'legend-item-color';\r\n colorBox.style.display = 'table-cell';\r\n colorBox.style.verticalAlign = 'middle';\r\n colorBox.style.backgroundColor = res.backgroundColor;\r\n li.appendChild(colorBox);\r\n\r\n name = document.createElement('div');\r\n name.className = 'legend-item-name';\r\n name.style.display = 'table-cell';\r\n name.style.verticalAlign = 'middle';\r\n name.innerHTML = res.name;\r\n li.appendChild(name);\r\n this.legend.appendChild(li);\r\n }\r\n this.legendPanel.appendChild(this.legend);\r\n }\r\n }\r\n\r\n setYAxisMax(max) {\r\n let tickCount;\r\n let tickUnit;\r\n this.yAxis.innerHTML = '';\r\n\r\n if (!max) return;\r\n // Calc the best tick units\r\n function closest10Factor(n) {\r\n let f = 10;\r\n while (n > f) {\r\n f *= 10;\r\n }\r\n return f;\r\n }\r\n\r\n const MAX_TICK_COUNT = 5;\r\n if (max <= MAX_TICK_COUNT) {\r\n tickUnit = 1;\r\n tickCount = max;\r\n } else {\r\n // Due to the small height of the axis, we can draw a maximum of 5 axis labels\r\n // Determine the best unit to use for a number of labels from 2 to 5\r\n max = closest10Factor(max);\r\n tickCount = MAX_TICK_COUNT;\r\n tickUnit = Math.round(max / tickCount);\r\n }\r\n const totalHeight = this.plotAreaHeight - CHART_TOP_MARGIN;\r\n this.yRatio = Math.round(totalHeight / max);\r\n\r\n // Create the Y Axis labels\r\n for (let iTick = 0, v = 0, h = tickUnit * this.yRatio; iTick <= tickCount; iTick++, v += tickUnit) {\r\n // <= MAX_TICK_COUNT because first tick is zero\r\n const label = this.createLabelledTick('' + v, h);\r\n label.style.top = this.plotAreaHeight - v * this.yRatio - h / 2 - 2 + 'px'; // -2 for the height of the tick border\r\n label.style.right = '0';\r\n this.yAxis.appendChild(label);\r\n }\r\n }\r\n\r\n createLabelledTick(label, height) {\r\n const labelDiv = document.createElement('div');\r\n labelDiv.className = 'y-axis-label';\r\n labelDiv.style.position = 'absolute';\r\n labelDiv.style.height = height + 'px';\r\n labelDiv.style.lineHeight = height + 'px';\r\n labelDiv.style.textAlign = 'center';\r\n labelDiv.style.whiteSpace = 'nowrap';\r\n labelDiv.appendChild(document.createTextNode(label));\r\n const tick = document.createElement('div');\r\n tick.style.display = 'inline-block';\r\n tick.style.position = 'absolute';\r\n tick.style.top = height / 2 + 'px';\r\n tick.style.right = '0';\r\n tick.className = 'y-axis-tick';\r\n labelDiv.appendChild(tick);\r\n return labelDiv;\r\n }\r\n\r\n updatePlottingArea() {\r\n // Cannot use native offsetHeight as it is rounding dimensions\r\n // See warning at https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight\r\n this.setPlottingAreaHeight($(this.body).outerHeight() - this.timeScaleHeight);\r\n }\r\n\r\n setPlottingAreaHeight(h) {\r\n this.yAxis.style.height = h + 'px';\r\n this.plotAreaHeight = h;\r\n }\r\n\r\n getScroller() {\r\n return this.timeLineScrollerElt;\r\n }\r\n\r\n //\r\n // Tooltips\r\n //\r\n initTooltips() {\r\n const isResourceLoadNode = elt => Gantt.utils.hasClass(elt, RESOURCE_LOAD_CLASS);\r\n const getResourceLoadNode = elt => {\r\n for (; elt && elt !== this.body; elt = elt.parentNode) {\r\n if (isResourceLoadNode(elt)) {\r\n return elt;\r\n }\r\n }\r\n return null;\r\n };\r\n const getResource = id => id && this.gantt.table.getRow(id);\r\n const gantt = this.gantt;\r\n const loadchart = this;\r\n this.gantt.tooltip.installTooltip({\r\n // The container that contains elements to display tooltip for.\r\n container: this.body,\r\n // The container inside which bounds the tooltip can be displayed\r\n getTooltipDisplayContainer() {\r\n return gantt.getBody();\r\n },\r\n // Returns an element in the node hierarchy for which a tooltip can be displayed\r\n getTooltipElement(node) {\r\n return getResourceLoadNode(node);\r\n },\r\n getTooltipData(node) {\r\n return {\r\n resourceName: node.dataset.resName,\r\n resourceLoad: node.dataset.resLoad,\r\n resourceMaxLoad: node.dataset.resMaxLoad,\r\n activityName: node.dataset.actName,\r\n };\r\n },\r\n renderTooltip(\r\n node /* The element returned by getTooltipElement */,\r\n info /* data returned by getTooltipData for the specified tooltipElt */,\r\n tooltipCtnr /* The container of the tooltip to fill with info. */\r\n ) {\r\n if (info) {\r\n loadchart.chartRenderer.getTooltip(tooltipCtnr, info);\r\n }\r\n },\r\n });\r\n }\r\n}\r\n\r\nGantt.components.LoadResourceChart.impl = LoadResourceChart;\r\n\r\nexport default LoadResourceChart;\r\n","/* eslint-disable */\r\nimport './treetablecontroller.scss';\r\n\r\nlet DATATABLE_FILTER_INSTALLED = false;\r\nconst TREE_NODE_TYPE = 'tree-node';\r\n\r\nexport default class TreeTableController {\r\n constructor() {\r\n this.collapsedNodes = {};\r\n }\r\n\r\n getHierarchyColumn(columns) {\r\n // Safe enough for now to consider the first column is the one controlling the table hierarchy\r\n return (columns && columns.length && columns[0]) || null;\r\n }\r\n\r\n customizeOptions(options, hCol, rowRenderer) {\r\n if (hCol || (hCol = this.getHierarchyColumn(options.columns))) {\r\n // Without this column, not hierarchy can be managed, this tree table controller remains inactive\r\n if (!hCol.render) {\r\n hCol.render = {};\r\n }\r\n const oldRender = hCol.render.display;\r\n const oldData = hCol.data;\r\n const self = this;\r\n hCol.render.display = function(node, type, full, meta) {\r\n var content =\r\n (oldRender && oldRender.call(this, (oldData && node[oldData]) || node, type, full, meta)) || node.name;\r\n var parent = node.parent;\r\n var prefix = '';\r\n while (parent) {\r\n prefix += '';\r\n parent = parent.parent;\r\n }\r\n prefix +=\r\n '' +\r\n (node.children && node.children.length\r\n ? ''\r\n : '') +\r\n '';\r\n if (node.color) {\r\n prefix += '';\r\n }\r\n return prefix + content.replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\r\n };\r\n hCol.render.filter = function(node, type, full, meta) {\r\n return node ? node.name : '';\r\n };\r\n hCol.className = (hCol.className && hCol.className + ' hierarchy-control') || 'hierarchy-control';\r\n hCol.type = TREE_NODE_TYPE;\r\n\r\n const oldCreatedRow = options.createdRow;\r\n options.createdRow = (row, node, index) => {\r\n row.tabIndex = \"0\";\r\n const parentRow = node.children && node.children.length;\r\n if (rowRenderer) {\r\n rowRenderer.draw(node, row, node);\r\n }\r\n let classname = parentRow\r\n ? (this.collapsedNodes[node.id] && 'parent-row collapsed') || 'parent-row'\r\n : 'leaf-row';\r\n if (node.hidden) {\r\n classname = classname + ' hidden';\r\n }\r\n $(row).addClass(classname);\r\n if (oldCreatedRow) {\r\n oldCreatedRow.call(this, row, node, index);\r\n }\r\n };\r\n }\r\n }\r\n\r\n getData(id) {\r\n const row = this.$dataTable.row(id);\r\n let node;\r\n return (row && (node = row.data()) && node.getData()) || null;\r\n }\r\n\r\n reset() {\r\n this.collapsedNodes = {};\r\n }\r\n\r\n getRow(data) {\r\n if (typeof data === 'string') {\r\n // object ID\r\n return this.$dataTable.row('#' + data);\r\n }\r\n return data;\r\n }\r\n\r\n isCollapsedNode(node) {\r\n if (typeof node === 'string') {\r\n return this.collapsedNodes[node];\r\n }\r\n const row = this.getRow(node);\r\n node = row && row.data();\r\n return node && node.children && this.collapsedNodes[node.id];\r\n }\r\n\r\n collapseNode(node, collapse) {\r\n var row = this.getRow(node);\r\n node = row && row.data();\r\n if (node && node.children && node.children.length) {\r\n var visible = !collapse;\r\n if (!collapse) {\r\n delete this.collapsedNodes[node.id];\r\n $(row.node()).removeClass('collapsed');\r\n } else {\r\n this.collapsedNodes[node.id] = true;\r\n $(row.node()).addClass('collapsed');\r\n }\r\n var rowsModified = [];\r\n for (var i = 0; i < node.children.length; i++) {\r\n this.setRowVisible(node.children[i], visible, rowsModified);\r\n }\r\n this.rowsVisibilityChanged(!collapse, rowsModified, node.id);\r\n }\r\n }\r\n\r\n rowsVisibilityChanged(visible, rows, rowRef) {}\r\n\r\n setRowVisible(row, visible, rowsModified) {\r\n var tr = row.tr || this.$dataTable.row('#' + row.id).node();\r\n if (tr) {\r\n $(tr).toggleClass('hidden', !visible);\r\n if (visible) {\r\n delete row.hidden;\r\n } else {\r\n row.hidden = true;\r\n }\r\n if (rowsModified) {\r\n rowsModified.push(row.id);\r\n }\r\n if (row.children && !this.collapsedNodes[row.id]) {\r\n for (let i = 0, count = row.children.length; i < count; ++i) {\r\n this.setRowVisible(row.children[i], visible, rowsModified);\r\n }\r\n }\r\n }\r\n }\r\n\r\n expandParents(row) {\r\n row = this.getRow(row); // row is Datatable row\r\n let node = row && row.data(); // node is Gantt row.\r\n if (node) {\r\n let parent = node.parent,\r\n topCollapsed;\r\n while (parent) {\r\n if (this.collapsedNodes[parent.id]) {\r\n // Change the collapse state of all collapsed ancestor except for the top most collapsed ancestor\r\n // which will be processed with the call to collapseNode().\r\n if (topCollapsed) {\r\n delete this.collapsedNodes[topCollapsed.id];\r\n }\r\n topCollapsed = parent;\r\n }\r\n parent = parent.parent;\r\n }\r\n if (topCollapsed) {\r\n // Expand the top most collapsed ancestor\r\n this.collapseNode(topCollapsed.id, false);\r\n }\r\n }\r\n }\r\n\r\n install($dataTable, bodyElt) {\r\n this.$dataTable = $dataTable;\r\n $(bodyElt).on('click', 'td.hierarchy-control .tree-node-handle', e => {\r\n const tr = $(e.target).closest('tr');\r\n if (tr && tr.length) {\r\n var row = $dataTable.row(tr);\r\n\r\n this.collapseNode(row, !this.isCollapsedNode(row));\r\n }\r\n });\r\n\r\n if (!DATATABLE_FILTER_INSTALLED) {\r\n DATATABLE_FILTER_INSTALLED = true;\r\n $.fn.dataTable.ext.search.push(function(settings, aData, dataIndex, node) {\r\n var dataTable;\r\n if ((dataTable = settings.ganttDataTable)) {\r\n // Be sure this global search applies only to GanttDataTables\r\n if (!dataTable.filter.isEmpty()) {\r\n node.__filterMatched = dataTable.filter.accept(node, aData, dataIndex);\r\n }\r\n }\r\n return true;\r\n });\r\n $.fn.dataTable.ext.search.push(function(settings, data, dataIndex, node) {\r\n if (settings.ganttDataTable) {\r\n // Be sure this global search applies only to GanttDataTables\r\n if (node.hidden) {\r\n return false;\r\n }\r\n if (!settings.ganttDataTable.filter.isEmpty()) {\r\n // If a search is in place, a collapsed or not matching node cam be made visible if at least one child matches the search\r\n const processVisibilityFromChildren = vNode => {\r\n if (vNode && vNode.children) {\r\n for (var iChild = 0, count = vNode.children.length, child; iChild < count; iChild++) {\r\n child = vNode.children[iChild];\r\n if (child.__filterMatched || processVisibilityFromChildren(child)) {\r\n vNode.__filterMatched = true;\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n return node.__filterMatched || processVisibilityFromChildren(node);\r\n }\r\n return true;\r\n }\r\n return true;\r\n });\r\n\r\n const makeComparisonFct = function(m) {\r\n function comp(a, b, comparator) {\r\n a = a.getSortValue ? a.getSortValue(a) : comparator ? a : a.name;\r\n b = b.getSortValue ? b.getSortValue(b) : comparator ? b : b.name;\r\n return comparator ? comparator(a, b) * m : a < b ? -m : a > b ? m : 0;\r\n }\r\n return (a, b) => {\r\n const comparator = a.comparator; // If comparator specified in user config, we are sure it is provided with a or b. But a.parent or b.parent won't have it has they are not constructed from the sort render callback\r\n if (a.parent === b.parent) {\r\n return comp(a, b, comparator);\r\n }\r\n // Look for common ancestor\r\n let aParent = a.parent,\r\n lastParent = a,\r\n bParent;\r\n while (aParent) {\r\n // Has b aParent has an ancestor?\r\n bParent = b;\r\n while (bParent) {\r\n if (bParent.parent === aParent) {\r\n return comp(lastParent, bParent, comparator);\r\n }\r\n bParent = bParent.parent;\r\n }\r\n lastParent = aParent;\r\n aParent = aParent.parent;\r\n }\r\n // Compare top ancestor for both nodes\r\n for (bParent = b; bParent.parent; ) {\r\n bParent = bParent.parent;\r\n }\r\n return comp(lastParent, bParent, comparator);\r\n };\r\n };\r\n\r\n $.fn.dataTable.ext.type.order[TREE_NODE_TYPE + '-asc'] = makeComparisonFct(1);\r\n $.fn.dataTable.ext.type.order[TREE_NODE_TYPE + '-desc'] = makeComparisonFct(-1);\r\n }\r\n }\r\n}\r\n","/**\r\n * Copyright IBM Corp. 2019\r\n *\r\n * This source code is licensed under the Apache-2.0 license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n */\r\n\r\n/* import-sort-ignore */\r\nimport Gantt from './gantt';\r\n\r\n// jQuery modules\r\nimport './jquery/jquery-core';\r\nimport './jquery/utils';\r\nimport './jquery/split';\r\nimport './jquery/timeline';\r\nimport './jquery/treetable';\r\n\r\n// TODO should be defined in webpack, but there is a .default issue\r\nif (typeof window !== 'undefined') {\r\n window.Gantt = Gantt;\r\n}\r\n\r\nGantt.version = VERSION;\r\ntry {\r\n console.log(`[LOADED] ${NAME}@${VERSION} (jquery@${$().jquery}, datatables.net@${$().DataTable.version})`);\r\n} catch (error) {\r\n // nothig to do\r\n}\r\n\r\nexport default Gantt;\r\n","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","import $ from 'jquery';\r\n\r\nimport Gantt from '../core/core';\r\n\r\nconst allGantts = [];\r\n\r\nconst getGantt = node => {\r\n for (let i = 0, count = allGantts.length; i < count; ++i) {\r\n if (allGantts[i].node === node) {\r\n return allGantts[i];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nconst removeGantt = gantt => {\r\n const index = allGantts.indexOf(gantt);\r\n if (index > -1) {\r\n allGantts.splice(index, 1);\r\n }\r\n return gantt;\r\n};\r\n\r\nGantt.envReady = function() {\r\n return new Promise(function(resolve, reject) {\r\n $(document).ready(resolve);\r\n });\r\n};\r\n\r\ntry {\r\n $.fn.Gantt = function(options) {\r\n const gantts = [];\r\n this.each(function() {\r\n let gantt = getGantt(this);\r\n if (gantt) {\r\n if (options) {\r\n gantt.destroy();\r\n removeGantt(gantt);\r\n } else {\r\n // Use the current gantt associated with this node as no configuration change has been specified.\r\n return;\r\n }\r\n }\r\n gantt = new Gantt(this, options);\r\n gantt.disconnect = () => {\r\n removeGantt(this);\r\n };\r\n gantts.push(gantt);\r\n });\r\n\r\n const ganttRef = gantts.length && gantts[0];\r\n const apiRef = (ganttRef && ganttRef.api && ganttRef.api()) || {};\r\n if (gantts.length === 1) {\r\n this.api = function() {\r\n return apiRef;\r\n };\r\n } else if (gantts.length > 0) {\r\n // TODO\r\n } else {\r\n this.api = function() {\r\n return {};\r\n };\r\n }\r\n $.extend(this, apiRef);\r\n return gantts.length && gantts[0];\r\n };\r\n} catch (e) {\r\n console.error(e);\r\n}\r\n","import $ from 'jquery';\r\n\r\nimport Gantt from '../core/core';\r\n\r\nGantt.utils = $.extend({}, Gantt.utils, {\r\n closest(elt, selector) {\r\n const res = $(elt).closest(selector);\r\n return (res && res.length && res[0]) || null;\r\n },\r\n\r\n mergeObjects() {\r\n const args = [];\r\n for (let i = 0; i < arguments.length; i++) {\r\n args.push(arguments[i]);\r\n }\r\n return $.extend.apply($, args);\r\n },\r\n\r\n // Triggers security issues\r\n // https://github.ibm.com/IBMDecisionOptimization/dd-gantt-component/issues/21\r\n // html(node, htmlText) {\r\n // $(node).html(htmlText);\r\n // },\r\n\r\n offsetParent(elt) {\r\n const $parent = $(elt).offsetParent();\r\n return ($parent.length && $parent[0]) || null;\r\n },\r\n\r\n ajax(url, params) {\r\n const $params = {\r\n url: url || params.url,\r\n dataType: (params && params.dataType) || 'json',\r\n };\r\n if (params && params.method) {\r\n $params.method = params.method;\r\n }\r\n if (params && params.params) {\r\n $params.data = params.params;\r\n }\r\n if (params && params.customizeRequest) {\r\n $params.beforeSend = params.customizeRequest;\r\n }\r\n const { settings } = params;\r\n if (params && params.success) {\r\n return $.ajax($params).then(function(data, statusText, req) {\r\n if (params.settings) {\r\n params.settings.statusText = statusText;\r\n params.settings.request = req;\r\n }\r\n if (params.context) {\r\n return params.success.call(params.context, data, params.settings);\r\n }\r\n return params.success(data, params.settings);\r\n });\r\n }\r\n return $.ajax($params);\r\n },\r\n\r\n getHeight(elt) {\r\n return $(elt).height();\r\n },\r\n});\r\n","// extracted by mini-css-extract-plugin",";(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n //! moment.js locale configuration\n\n hooks.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months$1 = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n hooks.defineLocale('ar-dz', {\n months: months$1,\n monthsShort: months$1,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm$1 = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals$1 = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize$1 = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm$1(number),\n str = plurals$1[u][pluralForm$1(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months$2 = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n hooks.defineLocale('ar-ly', {\n months: months$2,\n monthsShort: months$2,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize$1('s'),\n ss: pluralize$1('s'),\n m: pluralize$1('m'),\n mm: pluralize$1('m'),\n h: pluralize$1('h'),\n hh: pluralize$1('h'),\n d: pluralize$1('d'),\n dd: pluralize$1('d'),\n M: pluralize$1('M'),\n MM: pluralize$1('M'),\n y: pluralize$1('y'),\n yy: pluralize$1('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$1 = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n hooks.defineLocale('ar-ps', {\n months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(\n '_'\n ),\n monthsShort:\n 'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .split('') // reversed since negative lookbehind not supported everywhere\n .reverse()\n .join('')\n .replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n return numberMap[match];\n })\n .split('')\n .reverse()\n .join('')\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$1[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$2 = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap$1 = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n hooks.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap$1[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$2[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$3 = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap$2 = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm$2 = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals$2 = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize$2 = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm$2(number),\n str = plurals$2[u][pluralForm$2(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months$3 = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n hooks.defineLocale('ar', {\n months: months$3,\n monthsShort: months$3,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize$2('s'),\n ss: pluralize$2('s'),\n m: pluralize$2('m'),\n mm: pluralize$2('m'),\n h: pluralize$2('h'),\n hh: pluralize$2('h'),\n d: pluralize$2('d'),\n dd: pluralize$2('d'),\n M: pluralize$2('M'),\n MM: pluralize$2('M'),\n y: pluralize$2('y'),\n yy: pluralize$2('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap$2[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$3[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n hooks.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n hooks.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$4 = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap$3 = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n hooks.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap$3[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$4[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$5 = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap$4 = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n hooks.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap$4[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$5[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$6 = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap$5 = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n hooks.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap$5[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$6[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex$1 =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n hooks.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex$1,\n monthsShortRegex: monthsRegex$1,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 'm':\n return withoutSuffix\n ? 'jedna minuta'\n : isFuture\n ? 'jednu minutu'\n : 'jedne minute';\n }\n }\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jedan sat';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n hooks.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: processRelativeTime,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$4 = {\n standalone:\n 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\n isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse$1 = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex$2 =\n /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural$1(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate$1(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural$1(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n hooks.defineLocale('cs', {\n months: months$4,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex$2,\n monthsShortRegex: monthsRegex$2,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse$1,\n longMonthsParse: monthsParse$1,\n shortMonthsParse: monthsParse$1,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate$1,\n ss: translate$1,\n m: translate$1,\n mm: translate$1,\n h: translate$1,\n hh: translate$1,\n d: translate$1,\n dd: translate$1,\n M: translate$1,\n MM: translate$1,\n y: translate$1,\n yy: translate$1,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$1(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n hooks.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime$1,\n mm: '%d Minuten',\n h: processRelativeTime$1,\n hh: '%d Stunden',\n d: processRelativeTime$1,\n dd: processRelativeTime$1,\n w: processRelativeTime$1,\n ww: '%d Wochen',\n M: processRelativeTime$1,\n MM: processRelativeTime$1,\n y: processRelativeTime$1,\n yy: processRelativeTime$1,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$2(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n hooks.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime$2,\n mm: '%d Minuten',\n h: processRelativeTime$2,\n hh: '%d Stunden',\n d: processRelativeTime$2,\n dd: processRelativeTime$2,\n w: processRelativeTime$2,\n ww: '%d Wochen',\n M: processRelativeTime$2,\n MM: processRelativeTime$2,\n y: processRelativeTime$2,\n yy: processRelativeTime$2,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$3(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n hooks.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime$3,\n mm: '%d Minuten',\n h: processRelativeTime$3,\n hh: '%d Stunden',\n d: processRelativeTime$3,\n dd: processRelativeTime$3,\n w: processRelativeTime$3,\n ww: '%d Wochen',\n M: processRelativeTime$3,\n MM: processRelativeTime$3,\n y: processRelativeTime$3,\n yy: processRelativeTime$3,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$5 = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n hooks.defineLocale('dv', {\n months: months$5,\n monthsShort: months$5,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function isFunction$1(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n hooks.defineLocale('el', {\n monthsNominativeEl:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction$1(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse$2 = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex$3 =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n hooks.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort$1[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex$3,\n monthsShortRegex: monthsRegex$3,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$2,\n longMonthsParse: monthsParse$2,\n shortMonthsParse: monthsParse$2,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortDot$1 =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse$3 = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex$4 =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n hooks.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot$1;\n } else if (/-MMM-/.test(format)) {\n return monthsShort$2[m.month()];\n } else {\n return monthsShortDot$1[m.month()];\n }\n },\n monthsRegex: monthsRegex$4,\n monthsShortRegex: monthsRegex$4,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$3,\n longMonthsParse: monthsParse$3,\n shortMonthsParse: monthsParse$3,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n //! moment.js locale configuration\n\n var monthsShortDot$2 =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse$4 = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex$5 =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n hooks.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot$2;\n } else if (/-MMM-/.test(format)) {\n return monthsShort$3[m.month()];\n } else {\n return monthsShortDot$2[m.month()];\n }\n },\n monthsRegex: monthsRegex$5,\n monthsShortRegex: monthsRegex$5,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$4,\n longMonthsParse: monthsParse$4,\n shortMonthsParse: monthsParse$4,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortDot$3 =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse$5 = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex$6 =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n hooks.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot$3;\n } else if (/-MMM-/.test(format)) {\n return monthsShort$4[m.month()];\n } else {\n return monthsShortDot$3[m.month()];\n }\n },\n monthsRegex: monthsRegex$6,\n monthsShortRegex: monthsRegex$6,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse$5,\n longMonthsParse: monthsParse$5,\n shortMonthsParse: monthsParse$5,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$4(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n hooks.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime$4,\n ss: processRelativeTime$4,\n m: processRelativeTime$4,\n mm: processRelativeTime$4,\n h: processRelativeTime$4,\n hh: processRelativeTime$4,\n d: processRelativeTime$4,\n dd: '%d päeva',\n M: processRelativeTime$4,\n MM: processRelativeTime$4,\n y: processRelativeTime$4,\n yy: processRelativeTime$4,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$7 = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap$6 = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n hooks.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap$6[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$7[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate$2(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n hooks.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate$2,\n ss: translate$2,\n m: translate$2,\n mm: translate$2,\n h: translate$2,\n hh: translate$2,\n d: translate$2,\n dd: translate$2,\n M: translate$2,\n MM: translate$2,\n y: translate$2,\n yy: translate$2,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsStrictRegex$1 =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex$1 =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex$7 =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse$6 = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n hooks.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex$7,\n monthsShortRegex: monthsRegex$7,\n monthsStrictRegex: monthsStrictRegex$1,\n monthsShortStrictRegex: monthsShortStrictRegex$1,\n monthsParse: monthsParse$6,\n longMonthsParse: monthsParse$6,\n shortMonthsParse: monthsParse$6,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n hooks.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$6 = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort$5 = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays$1 = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n hooks.defineLocale('ga', {\n months: months$6,\n monthsShort: monthsShort$5,\n monthsParseExact: true,\n weekdays: weekdays$1,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$7 = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort$6 = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays$2 = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n hooks.defineLocale('gd', {\n months: months$7,\n monthsShort: monthsShort$6,\n monthsParseExact: true,\n weekdays: weekdays$2,\n weekdaysShort: weekdaysShort$1,\n weekdaysMin: weekdaysMin$1,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$5(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n hooks.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime$5,\n ss: processRelativeTime$5,\n m: processRelativeTime$5,\n mm: processRelativeTime$5,\n h: processRelativeTime$5,\n hh: processRelativeTime$5,\n d: processRelativeTime$5,\n dd: processRelativeTime$5,\n M: processRelativeTime$5,\n MM: processRelativeTime$5,\n y: processRelativeTime$5,\n yy: processRelativeTime$5,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$6(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n hooks.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime$6,\n ss: processRelativeTime$6,\n m: processRelativeTime$6,\n mm: processRelativeTime$6,\n h: processRelativeTime$6,\n hh: processRelativeTime$6,\n d: processRelativeTime$6,\n dd: processRelativeTime$6,\n M: processRelativeTime$6,\n MM: processRelativeTime$6,\n y: processRelativeTime$6,\n yy: processRelativeTime$6,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$8 = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap$7 = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n hooks.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap$7[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$8[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$9 = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap$8 = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse$7 = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n hooks.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse$7,\n longMonthsParse: monthsParse$7,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$8[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$9[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function translate$3(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n hooks.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate$3,\n m: translate$3,\n mm: translate$3,\n h: translate$3,\n hh: translate$3,\n d: 'dan',\n dd: translate$3,\n M: 'mjesec',\n MM: translate$3,\n y: 'godinu',\n yy: translate$3,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate$4(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n hooks.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate$4,\n ss: translate$4,\n m: translate$4,\n mm: translate$4,\n h: translate$4,\n hh: translate$4,\n d: translate$4,\n dd: translate$4,\n M: translate$4,\n MM: translate$4,\n y: translate$4,\n yy: translate$4,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function plural$2(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate$5(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural$2(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural$2(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural$2(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural$2(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural$2(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural$2(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n hooks.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate$5,\n ss: translate$5,\n m: translate$5,\n mm: translate$5,\n h: 'klukkustund',\n hh: translate$5,\n d: translate$5,\n dd: translate$5,\n M: translate$5,\n MM: translate$5,\n y: translate$5,\n yy: translate$5,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$1 = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n hooks.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$a = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap$9 = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n hooks.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap$9[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$a[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$b = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap$a = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n hooks.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap$a[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$b[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$7(num, withoutSuffix, key, isFuture) {\n var format = {\n s: ['çend sanîye', 'çend sanîyeyan'],\n ss: [num + ' sanîye', num + ' sanîyeyan'],\n m: ['deqîqeyek', 'deqîqeyekê'],\n mm: [num + ' deqîqe', num + ' deqîqeyan'],\n h: ['saetek', 'saetekê'],\n hh: [num + ' saet', num + ' saetan'],\n d: ['rojek', 'rojekê'],\n dd: [num + ' roj', num + ' rojan'],\n w: ['hefteyek', 'hefteyekê'],\n ww: [num + ' hefte', num + ' hefteyan'],\n M: ['mehek', 'mehekê'],\n MM: [num + ' meh', num + ' mehan'],\n y: ['salek', 'salekê'],\n yy: [num + ' sal', num + ' salan'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n // function obliqueNumSuffix(num) {\n // if(num.includes(':'))\n // num = parseInt(num.split(':')[0]);\n // else\n // num = parseInt(num);\n // return num == 0 || num % 10 == 1 ? 'ê'\n // : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n // }\n function ezafeNumSuffix(num) {\n num = '' + num;\n var l = num.substring(num.length - 1),\n ll = num.length > 1 ? num.substring(num.length - 2) : '';\n if (\n !(ll == 12 || ll == 13) &&\n (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')\n )\n return 'yê';\n return 'ê';\n }\n\n hooks.defineLocale('ku-kmr', {\n // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n // But the names below are more well known and handy\n months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(\n '_'\n ),\n monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),\n monthsParseExact: true,\n weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),\n weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),\n weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'bn' : 'BN';\n } else {\n return isLower ? 'pn' : 'PN';\n }\n },\n meridiemParse: /bn|BN|pn|PN/,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[a] YYYY[an]',\n LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n ll: 'Do MMM[.] YYYY[an]',\n lll: 'Do MMM[.] YYYY[an] HH:mm',\n llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',\n },\n calendar: {\n sameDay: '[Îro di saet] LT [de]',\n nextDay: '[Sibê di saet] LT [de]',\n nextWeek: 'dddd [di saet] LT [de]',\n lastDay: '[Duh di saet] LT [de]',\n lastWeek: 'dddd[a borî di saet] LT [de]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'di %s de',\n past: 'berî %s',\n s: processRelativeTime$7,\n ss: processRelativeTime$7,\n m: processRelativeTime$7,\n mm: processRelativeTime$7,\n h: processRelativeTime$7,\n hh: processRelativeTime$7,\n d: processRelativeTime$7,\n dd: processRelativeTime$7,\n w: processRelativeTime$7,\n ww: processRelativeTime$7,\n M: processRelativeTime$7,\n MM: processRelativeTime$7,\n y: processRelativeTime$7,\n yy: processRelativeTime$7,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n ordinal: function (num, period) {\n var p = period.toLowerCase();\n if (p.includes('w') || p.includes('m')) return num + '.';\n\n return num + ezafeNumSuffix(num);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$c = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap$b = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months$8 = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n hooks.defineLocale('ku', {\n months: months$8,\n monthsShort: months$8,\n weekdays:\n 'یهكشهممه_دووشهممه_سێشهممه_چوارشهممه_پێنجشهممه_ههینی_شهممه'.split(\n '_'\n ),\n weekdaysShort:\n 'یهكشهم_دووشهم_سێشهم_چوارشهم_پێنجشهم_ههینی_شهممه'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره|بهیانی/,\n isPM: function (input) {\n return /ئێواره/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'بهیانی';\n } else {\n return 'ئێواره';\n }\n },\n calendar: {\n sameDay: '[ئهمرۆ كاتژمێر] LT',\n nextDay: '[بهیانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له %s',\n past: '%s',\n s: 'چهند چركهیهك',\n ss: 'چركه %d',\n m: 'یهك خولهك',\n mm: '%d خولهك',\n h: 'یهك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یهك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یهك مانگ',\n MM: '%d مانگ',\n y: 'یهك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap$b[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap$c[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$2 = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n hooks.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$8(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n hooks.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime$8,\n mm: '%d Minutten',\n h: processRelativeTime$8,\n hh: '%d Stonnen',\n d: processRelativeTime$8,\n dd: '%d Deeg',\n M: processRelativeTime$8,\n MM: '%d Méint',\n y: processRelativeTime$8,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate$6(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n hooks.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate$6,\n m: translateSingular,\n mm: translate$6,\n h: translateSingular,\n hh: translate$6,\n d: translateSingular,\n dd: translate$6,\n M: translateSingular,\n MM: translate$6,\n y: translateSingular,\n yy: translate$6,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var units$1 = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format$1(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural$1(number, withoutSuffix, key) {\n return number + ' ' + format$1(units$1[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format$1(units$1[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n hooks.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural$1,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural$1,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural$1,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural$1,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural$1,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural$1,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n hooks.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n //! moment.js locale configuration\n\n function translate$7(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n hooks.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort:\n '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate$7,\n ss: translate$7,\n m: translate$7,\n mm: translate$7,\n h: translate$7,\n hh: translate$7,\n d: translate$7,\n dd: translate$7,\n M: translate$7,\n MM: translate$7,\n y: translate$7,\n yy: translate$7,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$d = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap$c = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n hooks.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$c[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$d[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$e = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap$d = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n hooks.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap$d[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$e[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'én time',\n hh: '%d timer',\n d: 'én dag',\n dd: '%d dager',\n w: 'én uke',\n ww: '%d uker',\n M: 'én måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$f = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap$e = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n hooks.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap$e[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$f[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortWithDots$1 =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots$1 =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse$8 = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex$8 =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n hooks.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots$1;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots$1[m.month()];\n } else {\n return monthsShortWithDots$1[m.month()];\n }\n },\n\n monthsRegex: monthsRegex$8,\n monthsShortRegex: monthsRegex$8,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse$8,\n longMonthsParse: monthsParse$8,\n shortMonthsParse: monthsParse$8,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsShortWithDots$2 =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots$2 =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse$9 = [\n /^jan/i,\n /^feb/i,\n /^(maart|mrt\\.?)$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex$9 =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n hooks.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots$2;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots$2[m.month()];\n } else {\n return monthsShortWithDots$2[m.month()];\n }\n },\n\n monthsRegex: monthsRegex$9,\n monthsShortRegex: monthsRegex$9,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse$9,\n longMonthsParse: monthsParse$9,\n shortMonthsParse: monthsParse$9,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$g = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap$f = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n hooks.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap$f[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$g[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse$a = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural$3(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate$8(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural$3(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural$3(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural$3(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural$3(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural$3(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural$3(number) ? 'lata' : 'lat');\n }\n }\n\n hooks.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse$a,\n longMonthsParse: monthsParse$a,\n shortMonthsParse: monthsParse$a,\n weekdays:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate$8,\n m: translate$8,\n mm: translate$8,\n h: translate$8,\n hh: translate$8,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate$8,\n M: 'miesiąc',\n MM: translate$8,\n y: 'rok',\n yy: translate$8,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural$2(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n hooks.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural$2,\n m: 'un minut',\n mm: relativeTimeWithPlural$2,\n h: 'o oră',\n hh: relativeTimeWithPlural$2,\n d: 'o zi',\n dd: relativeTimeWithPlural$2,\n w: 'o săptămână',\n ww: relativeTimeWithPlural$2,\n M: 'o lună',\n MM: relativeTimeWithPlural$2,\n y: 'un an',\n yy: relativeTimeWithPlural$2,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function plural$4(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural$3(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural$4(format[key], +number);\n }\n }\n var monthsParse$b = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n hooks.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse$b,\n longMonthsParse: monthsParse$b,\n shortMonthsParse: monthsParse$b,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural$3,\n m: relativeTimeWithPlural$3,\n mm: relativeTimeWithPlural$3,\n h: 'час',\n hh: relativeTimeWithPlural$3,\n d: 'день',\n dd: relativeTimeWithPlural$3,\n w: 'неделя',\n ww: relativeTimeWithPlural$3,\n M: 'месяц',\n MM: relativeTimeWithPlural$3,\n y: 'год',\n yy: relativeTimeWithPlural$3,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$9 = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days$1 = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n hooks.defineLocale('sd', {\n months: months$9,\n monthsShort: months$9,\n weekdays: days$1,\n weekdaysShort: days$1,\n weekdaysMin: days$1,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n hooks.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n //! moment.js locale configuration\n\n var months$a =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort$7 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural$5(n) {\n return n > 1 && n < 5;\n }\n function translate$9(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural$5(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n hooks.defineLocale('sk', {\n months: months$a,\n monthsShort: monthsShort$7,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate$9,\n ss: translate$9,\n m: translate$9,\n mm: translate$9,\n h: translate$9,\n hh: translate$9,\n d: translate$9,\n dd: translate$9,\n M: translate$9,\n MM: translate$9,\n y: translate$9,\n yy: translate$9,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function processRelativeTime$9(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n hooks.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime$9,\n ss: processRelativeTime$9,\n m: processRelativeTime$9,\n mm: processRelativeTime$9,\n h: processRelativeTime$9,\n hh: processRelativeTime$9,\n d: processRelativeTime$9,\n dd: processRelativeTime$9,\n M: processRelativeTime$9,\n MM: processRelativeTime$9,\n y: processRelativeTime$9,\n yy: processRelativeTime$9,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var translator$1 = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator$1.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator$1.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n hooks.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator$1.translate,\n m: translator$1.translate,\n mm: translator$1.translate,\n h: translator$1.translate,\n hh: translator$1.translate,\n d: translator$1.translate,\n dd: translator$1.translate,\n M: translator$1.translate,\n MM: translator$1.translate,\n y: translator$1.translate,\n yy: translator$1.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var translator$2 = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator$2.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator$2.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n hooks.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator$2.translate,\n m: translator$2.translate,\n mm: translator$2.translate,\n h: translator$2.translate,\n hh: translator$2.translate,\n d: translator$2.translate,\n dd: translator$2.translate,\n M: translator$2.translate,\n MM: translator$2.translate,\n y: translator$2.translate,\n yy: translator$2.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var symbolMap$h = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap$g = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n hooks.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap$g[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap$h[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$3 = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n hooks.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$4 = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n hooks.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate$a(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n hooks.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate$a,\n m: 'wa’ tup',\n mm: translate$a,\n h: 'wa’ rep',\n hh: translate$a,\n d: 'wa’ jaj',\n dd: translate$a,\n M: 'wa’ jar',\n MM: translate$a,\n y: 'wa’ DIS',\n yy: translate$a,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var suffixes$5 = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n hooks.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n hooks.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime$a,\n ss: processRelativeTime$a,\n m: processRelativeTime$a,\n mm: processRelativeTime$a,\n h: processRelativeTime$a,\n hh: processRelativeTime$a,\n d: processRelativeTime$a,\n dd: processRelativeTime$a,\n M: processRelativeTime$a,\n MM: processRelativeTime$a,\n y: processRelativeTime$a,\n yy: processRelativeTime$a,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime$a(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n //! moment.js locale configuration\n\n hooks.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n function plural$6(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural$4(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural$6(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n hooks.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural$4,\n m: relativeTimeWithPlural$4,\n mm: relativeTimeWithPlural$4,\n h: 'годину',\n hh: relativeTimeWithPlural$4,\n d: 'день',\n dd: relativeTimeWithPlural$4,\n M: 'місяць',\n MM: relativeTimeWithPlural$4,\n y: 'рік',\n yy: relativeTimeWithPlural$4,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n var months$b = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days$2 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n hooks.defineLocale('ur', {\n months: months$b,\n monthsShort: months$b,\n weekdays: days$2,\n weekdaysShort: days$2,\n weekdaysMin: days$2,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n //! moment.js locale configuration\n\n hooks.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n hooks.locale('en');\n\n return hooks;\n\n})));\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","// extracted by mini-css-extract-plugin","import Gantt from '../../core/core';\r\n\r\nconst ColumnRendererPrototype = {\r\n createShape(activity, parentElt, ctx) {\r\n return parentElt;\r\n },\r\n\r\n getText(row) {\r\n return row.name;\r\n },\r\n\r\n drawContent(elt, icon, text, object, ctx) {\r\n // Done through the render method\r\n /* if (icon) {\r\n const img = document.createElement('img');\r\n img.className = 'image-content';\r\n img.src = icon;\r\n img.alt = '';\r\n img.style.float = 'left';\r\n elt.appendChild(img);\r\n }\r\n\r\n if (text) {\r\n elt.appendChild(document.createTextNode(text));\r\n } */\r\n },\r\n};\r\nexport default ColumnRendererPrototype;\r\n","import Gantt from '../../core/core';\r\n\r\nconst RowRendererPrototype = {\r\n createShape(activity, parentElt) {\r\n return parentElt;\r\n },\r\n};\r\n\r\nexport default RowRendererPrototype;\r\n","import $ from 'jquery';\r\n\r\nimport Gantt from '../../core/core';\r\nimport ColumnRendererPrototype from './columnrenderer';\r\nimport RowRendererPrototype from './rowrenderer';\r\nimport TreeTableController from './treetablecontroller';\r\n\r\nimport './datatables.scss';\r\n\r\nconst HIGHLIGHT_CLASS = 'highlight';\r\nconst SELECTION_CLASS = 'selected';\r\nconst FLAT_CLASS = 'tree-table-flat';\r\n\r\nconst NUMBER_COLUMN_NAME = 'rowNumbers';\r\nconst HIERARCHY_COLUMN_NAME = 'hierarchy';\r\n\r\nconst TREE_NODE_TYPE = 'tree-node';\r\n\r\nconst defaultDataTableOptions = {\r\n /* serverSide: true, */\r\n /*\r\n searching: false, */\r\n bInfo: false,\r\n paging: false,\r\n scrollY: '100%',\r\n scrollX: true,\r\n rowId: 'id',\r\n};\r\n\r\nfunction getDefaultTableColumns() {\r\n return [\r\n {\r\n name: NUMBER_COLUMN_NAME,\r\n data: null,\r\n title: '',\r\n render: (data, type, full, meta) => {\r\n const color = full.backgroundColor ? ` style=\"background-color: ${full.backgroundColor}` : '';\r\n return `${meta.row + 1}`;\r\n },\r\n /* \"width\": \"40px\", */\r\n className: 'row-number-col',\r\n orderable: false,\r\n searchable: false,\r\n },\r\n {\r\n name: HIERARCHY_COLUMN_NAME,\r\n data: null,\r\n title: Gantt.utils.getString('gantt.name', 'Name'),\r\n },\r\n ];\r\n}\r\n\r\nconst findColumn = (columns, name) => {\r\n for (let iCol = 0, count = columns ? columns.length : 0; iCol < count; iCol++) {\r\n if (columns[iCol].name === name) {\r\n return columns[iCol];\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport default class GanttDataTable extends Gantt.components.TreeTable {\r\n constructor(gantt, node, config) {\r\n super(gantt, node, config);\r\n this.gantt = gantt;\r\n const selectionHandler = this.gantt.selection;\r\n selectionHandler.on(Gantt.events.ROW_SELECTION_CLEARED, () => this.clearSelection());\r\n selectionHandler.on(Gantt.events.ROW_SELECTED, (e, sels) => this.selectRows(sels));\r\n selectionHandler.on(Gantt.events.ROW_UNSELECTED, (e, sels) => this.unselectRows(sels));\r\n selectionHandler.on(Gantt.events.ROW_SELECTION_CHANGED, (e, sels) => this.rowSelectionChanged(sels));\r\n this.setConfiguration(config);\r\n }\r\n\r\n setConfiguration(config) {\r\n this.config = config;\r\n\r\n if (this.$dataTable) {\r\n this.destroy();\r\n }\r\n\r\n const defaultConfig = Gantt.utils.mergeObjects({}, defaultDataTableOptions, {\r\n language: {\r\n emptyTable: Gantt.utils.getString('gantt.datatables.empty-table'),\r\n },\r\n });\r\n defaultConfig.columns = getDefaultTableColumns(); // Instead of doing a deep copy of the defaultDataTableOptions\r\n this.dataTableOptions = Gantt.utils.mergeObjects(defaultConfig, config && config.dataTables);\r\n\r\n let rowRenderer;\r\n if (config && config.rows && config.rows.renderer) {\r\n rowRenderer = new (Gantt.components.Renderer.impl || Gantt.components.Renderer)(\r\n config.rows.renderer,\r\n RowRendererPrototype,\r\n this.gantt\r\n );\r\n }\r\n if (config && config.columns && config.columns.length) {\r\n const defaultColumns = {};\r\n this.dataTableOptions.columns = this.dataTableOptions.columns.filter(col => {\r\n // Remove default columns if defined - maybe with a different order - in config.columns\r\n if (col.name) {\r\n defaultColumns[col.name] = col;\r\n }\r\n return !col.name || !findColumn(config.columns, col.name);\r\n });\r\n\r\n for (let iCol = 0, configCol, col; iCol < config.columns.length; iCol++) {\r\n configCol = config.columns[iCol];\r\n col = this.customizeDataColumn(\r\n (configCol.name && defaultColumns[configCol.name]) || {},\r\n configCol,\r\n rowRenderer\r\n );\r\n if (col) {\r\n this.dataTableOptions.columns.push(col);\r\n }\r\n }\r\n\r\n // if default columns not in the specified config.columns, add them back in the columns unless explicitely removed\r\n const removedCols = {};\r\n this.dataTableOptions.columns = this.dataTableOptions.columns.filter(col => {\r\n if (col.remove && col.name) {\r\n removedCols[col.name] = true;\r\n return false;\r\n }\r\n return true;\r\n });\r\n\r\n if (!findColumn(this.dataTableOptions.columns, HIERARCHY_COLUMN_NAME) && !removedCols[HIERARCHY_COLUMN_NAME]) {\r\n this.dataTableOptions.columns.splice(0, 0, findColumn(defaultColumns[HIERARCHY_COLUMN_NAME]));\r\n }\r\n if (!findColumn(this.dataTableOptions.columns, NUMBER_COLUMN_NAME) && !removedCols[NUMBER_COLUMN_NAME]) {\r\n this.dataTableOptions.columns.splice(0, 0, findColumn(defaultColumns[NUMBER_COLUMN_NAME]));\r\n }\r\n } else if (rowRenderer) {\r\n for (let iCol = 0, configCol; iCol < this.dataTableOptions.columns.length; iCol++) {\r\n configCol = this.dataTableOptions.columns[iCol];\r\n this.dataTableOptions.columns[iCol] = this.customizeDataColumn(configCol, {}, rowRenderer);\r\n }\r\n }\r\n\r\n if (config && config.sorting !== undefined && !config.sorting) {\r\n this.dataTableOptions.columns.bSort = false;\r\n } else if (!config || !config.initialSorting) {\r\n this.dataTableOptions.order = [];\r\n }\r\n\r\n this.controller = new TreeTableController();\r\n this.controller.rowsVisibilityChanged = (visible, rows, rowRef) => {\r\n this.gantt.startUpdating();\r\n this.triggerEvent(visible ? Gantt.events.ROWS_ADDED : Gantt.events.ROWS_REMOVED, rows, rowRef);\r\n this.gantt.updates.rowsChanged(visible ? Gantt.events.ROWS_ADDED : Gantt.events.ROWS_REMOVED, rows, rowRef);\r\n this.gantt.stopUpdating();\r\n };\r\n this.controller.customizeOptions(\r\n this.dataTableOptions,\r\n findColumn(this.dataTableOptions.columns, HIERARCHY_COLUMN_NAME),\r\n rowRenderer\r\n );\r\n\r\n this.dataTableOptions.rowId = 'id';\r\n\r\n const oldInitComplete = this.dataTableOptions.initComplete;\r\n this.dataTableOptions.initComplete = (oSettings, json) => {\r\n if (oldInitComplete) {\r\n oldInitComplete(oSettings, json);\r\n }\r\n };\r\n const oldDrawCallback = this.dataTableOptions.drawCallback;\r\n this._drawCallbacks = [];\r\n this.dataTableOptions.drawCallback = settings => {\r\n if (oldDrawCallback) {\r\n oldDrawCallback.call(this, settings);\r\n }\r\n for (let i = 0; i < this._drawCallbacks.length; i++) {\r\n this._drawCallbacks[i](settings);\r\n }\r\n this._drawCallbacks = [];\r\n };\r\n this.create();\r\n }\r\n\r\n customizeDataColumn(col, config, rowRenderer) {\r\n if (config.name) {\r\n col.name = config.name;\r\n }\r\n if (config.title) {\r\n col.title = config.title;\r\n }\r\n if (config.width) {\r\n col.width = config.width;\r\n }\r\n if (config.visible) {\r\n col.visible = config.visible;\r\n }\r\n if (config.className) {\r\n col.className = config.className;\r\n }\r\n if (config.remove) {\r\n // Not a dataTables field but pre-processed by this class\r\n col.remove = config.remove;\r\n }\r\n if (config.data || config.text) {\r\n const c = config.data || config.text;\r\n if (typeof c === 'function') {\r\n col.data = c;\r\n } else if (typeof c === 'string') {\r\n const getter = Gantt.utils.propertyEvaluator(c);\r\n if (getter) {\r\n col.data = function(object) {\r\n return getter(object);\r\n };\r\n }\r\n }\r\n }\r\n\r\n if (config.renderer || config.sortComparator || config.sortValue || config.filterValue || rowRenderer) {\r\n const colRenderer = config.renderer\r\n ? new (Gantt.components.Renderer.impl || Gantt.components.Renderer)(\r\n config.renderer,\r\n ColumnRendererPrototype,\r\n this.gantt\r\n )\r\n : null;\r\n if (config.sortValue || config.sortComparator || (colRenderer && colRenderer.getText)) {\r\n col.type = TREE_NODE_TYPE;\r\n let sortValue;\r\n if (config.sortValue) {\r\n if (Gantt.utils.isFunction(config.sortValue)) {\r\n sortValue = function(obj) {\r\n return config.sortValue.call(config, obj);\r\n };\r\n } else if (Gantt.utils.isString(config.sortValue)) {\r\n sortValue = Gantt.utils.propertyEvaluator(config.sortValue);\r\n } else {\r\n console.warn('sortValue column config should be a function or a string');\r\n }\r\n }\r\n if (!sortValue && !config.sortComparator && colRenderer && colRenderer.getText) {\r\n sortValue = function(obj) {\r\n return colRenderer.getText(obj);\r\n };\r\n }\r\n col.render = {};\r\n col.render.sort = (node, type, full) => {\r\n const obj = Object.create(full);\r\n if (sortValue) {\r\n obj.getSortValue = sortValue;\r\n }\r\n if (config.sortComparator) {\r\n obj.comparator = function(a, b) {\r\n return config.sortComparator.call(config, a, b);\r\n };\r\n }\r\n return obj;\r\n };\r\n } else {\r\n col.orderable = false;\r\n }\r\n if (config.filterValue) {\r\n if (!col.render) {\r\n col.render = {};\r\n }\r\n if (Gantt.utils.isFunction(config.filterValue)) {\r\n col.render.filter = function(node, type, full) {\r\n return config.filterValue.call(config, full);\r\n };\r\n } else if (Gantt.utils.isString(config.filterValue)) {\r\n const filterValue = Gantt.utils.propertyEvaluator(config.filterValue);\r\n col.render.filter = function(node, type, full) {\r\n return filterValue(full);\r\n };\r\n } else {\r\n console.warn('filterValue column config should be a function or a string');\r\n }\r\n }\r\n if (colRenderer) {\r\n if (!col.render) {\r\n col.render = {};\r\n }\r\n if (colRenderer && colRenderer.getText) {\r\n // Value used for sorting or filtering if not sort/filter config specified.\r\n col.render._ = function(node, type, full) {\r\n return colRenderer.getText(full);\r\n };\r\n }\r\n col.render.display = (node, type, full, meta) => {\r\n let result = '';\r\n let icon = colRenderer.getIcon && colRenderer.getIcon(node, meta);\r\n if (icon) {\r\n icon = Gantt.utils.isArray(icon) ? icon : [icon];\r\n for (let iIcon = 0; iIcon < icon.length; iIcon++) {\r\n result += ``;\r\n }\r\n }\r\n const text = colRenderer.getText && colRenderer.getText(node, meta);\r\n if (text) {\r\n result += `${text}`;\r\n }\r\n return result;\r\n };\r\n }\r\n // https://datatables.net/reference/option/columns.createdCell\r\n const ctx = {};\r\n if (rowRenderer) {\r\n if (colRenderer) {\r\n col.createdCell = (cell, cellData, rowData) => {\r\n colRenderer.draw(rowData, cell, ctx);\r\n };\r\n } else {\r\n col.createdCell = (cell, cellData, rowData) => {\r\n rowRenderer.draw(rowData, cell, ctx);\r\n };\r\n }\r\n } else if (colRenderer) {\r\n col.createdCell = (cell, cellData, rowData) => {\r\n colRenderer.draw(rowData, cell, ctx);\r\n };\r\n }\r\n }\r\n if (!col.data) {\r\n col.data = null;\r\n }\r\n return col;\r\n }\r\n\r\n setRowFilter(filter) {\r\n this.filter = filter;\r\n }\r\n\r\n create() {}\r\n\r\n setRows(rows) {\r\n this.rows = rows;\r\n if (this.tableElt) {\r\n this.destroy();\r\n }\r\n\r\n this.tableElt = document.createElement('table');\r\n this.tableElt.className = Gantt.components.TreeTable.defaultClass;\r\n this.tableElt.setAttribute('aria-label', Gantt.utils.getString('gantt.columns'));\r\n this.tableElt.cellSpacing = 0;\r\n // this.tableElt.style.width = '100%';\r\n\r\n const thead = document.createElement('thead');\r\n const tr = document.createElement('tr');\r\n tr.tabIndex = 0;\r\n\r\n // Scan columns definitions\r\n const { columns } = this.dataTableOptions;\r\n for (let i = 0, th; i < columns.length; i++) {\r\n th = document.createElement('th');\r\n th.scope = 'col';\r\n th.innerHTML =\r\n (columns[i].key && Gantt.utils.getString(columns[i].key, columns[i].title)) ||\r\n columns[i].title ||\r\n columns[i].data ||\r\n `Col${i + 1}`;\r\n tr.appendChild(th);\r\n }\r\n thead.appendChild(tr);\r\n this.tableElt.appendChild(thead);\r\n\r\n this.node.appendChild(this.tableElt);\r\n\r\n let initResolver;\r\n const initPms = new Promise((resolver, reject) => {\r\n initResolver = resolver;\r\n });\r\n\r\n const $tableElt = $(this.tableElt);\r\n this.tableBody = null;\r\n if (this.headerHeight > 0) {\r\n this.headerHeight = -this.headerHeight;\r\n }\r\n this.$dataTable = $tableElt\r\n .on('init.dt', () => {\r\n this.tableInitialized();\r\n\r\n if (this.headerHeight < 0) {\r\n this.setHeaderHeight(-this.headerHeight);\r\n }\r\n this.triggerEvent(Gantt.events.TABLE_INIT);\r\n initResolver(rows);\r\n this.dataTableOptions.data = null;\r\n })\r\n .DataTable(Gantt.utils.mergeObjects({}, this.dataTableOptions, { data: rows }));\r\n this.$dataTable.on('draw.dt', () => {\r\n $(thead)\r\n .children('tr')\r\n .removeAttr('role'); // No role: https://www.w3.org/TR/html-aria/#tr\r\n });\r\n // https://datatables.net/examples/api/counter_columns.html\r\n const hasNumberColumn = findColumn(this.dataTableOptions.columns, NUMBER_COLUMN_NAME);\r\n this.$dataTable\r\n .on('order.dt search.dt', e => {\r\n if (hasNumberColumn) {\r\n this.$dataTable\r\n .column(`${NUMBER_COLUMN_NAME}:name`, { search: 'applied', order: 'applied' })\r\n .nodes()\r\n .each((cell, i) => {\r\n cell.innerHTML = i + 1;\r\n });\r\n }\r\n })\r\n .draw('full-hold');\r\n\r\n const allSettings = this.$dataTable.settings();\r\n for (let i = 0; i < allSettings.length; i++) {\r\n // Retrieve the GanttDataTable from the global search function\r\n allSettings[i].ganttDataTable = this;\r\n }\r\n const body = this.getScrollableBody(this.tableElt);\r\n this.controller.install(this.$dataTable, body);\r\n /* Impossilbe to use the code below as an alternative of re-creating the table for each setRows\r\n The code below does not set ids to tr rows and the workaround for doing that is too costly.\r\n this.$dataTable.rows.add(rows).draw();\r\n * */\r\n\r\n /* Manage selection */\r\n $(body).on('click', 'tr', e => {\r\n const tr = $(e.target).closest('tr');\r\n const row = tr && tr.length && this.getRow(tr[0]);\r\n if (row) {\r\n this.gantt.highlightRow(row, true, true);\r\n this.gantt.selection.processClick(e, row);\r\n }\r\n });\r\n $(body).on('mouseenter', 'tr', e => {\r\n const tr = $(e.target).closest('tr');\r\n const row = tr && tr.length && this.getRow(tr[0]);\r\n if (row) {\r\n this.gantt.highlightRow(row, true, true);\r\n }\r\n });\r\n $(body).on('mouseleave', 'tr', e => {\r\n const tr = $(e.target).closest('tr');\r\n const row = tr && tr.length && this.getRow(tr[0]);\r\n this.gantt.highlightRow(null, true, true);\r\n });\r\n return initPms;\r\n }\r\n\r\n tableInitialized() {\r\n $(this.node).toggleClass(FLAT_CLASS, this.gantt.isFlat());\r\n this.$scrollableBody = $(this.node).find('div.dataTables_scrollBody');\r\n this.scrollableBody = this.$scrollableBody[0];\r\n this.tableBody = this.$scrollableBody.find('TBODY')[0];\r\n\r\n this.scrollableBody.overflowX = 'scroll';\r\n this.scrollableBody.overflowY = 'hidden';\r\n this.scrollableBody.style.position = 'absolute';\r\n this.scrollableBody.style.right = 0;\r\n this.scrollableBody.style.left = 0;\r\n this.scrollableBody.style.bottom = 0;\r\n this.scrollableBody.style.width = null;\r\n this.scrollableBody.style.height = null;\r\n this.scrollableBody.ariaLabel = Gantt.utils.getString('gantt.treeTable');\r\n this.scrollableBody.tabIndex = 0;\r\n this.scrollableBody.role = \"grid\";\r\n\r\n const $scrollableHead = $(this.node).find('div.dataTables_scrollHead THEAD');\r\n this.tableHeader = $scrollableHead[0];\r\n const table = this;\r\n $scrollableHead.find('th').click(function() {\r\n if (\r\n Gantt.utils.hasClass(this, 'sorting') ||\r\n Gantt.utils.hasClass(this, 'sorting_asc') ||\r\n Gantt.utils.hasClass(this, 'sorting_desc')\r\n ) {\r\n table.gantt.startUpdating();\r\n table.gantt.updates.rowsChanged(Gantt.events.ROWS_SORTED);\r\n table.gantt.updates.tableScrollYChanged(); // When sorting, datatable automatically restore scrolly position to 0\r\n table.triggerEvent(Gantt.events.ROWS_SORTED);\r\n table.gantt.stopUpdating();\r\n }\r\n });\r\n }\r\n\r\n onDraw(fct) {\r\n this._drawCallbacks.push(fct);\r\n }\r\n\r\n createUpdates(parent) {\r\n const updates = new (Gantt.components.GanttUpdates.impl || Gantt.components.GanttUpdates)(parent, {\r\n doApplyUpdates: () => {\r\n if (updates.isReload()) {\r\n this.$dataTable.draw();\r\n } else if (updates.containsRowChanges) {\r\n this.$dataTable.draw('full-hold');\r\n }\r\n },\r\n });\r\n return updates;\r\n }\r\n\r\n getScrollableBody() {\r\n return this.getTableBody();\r\n }\r\n\r\n setHeaderHeight(height) {\r\n if (this.tableHeader) {\r\n this.headerHeight = height;\r\n let scrollHeadHeight;\r\n if (!height) {\r\n scrollHeadHeight = $(this.tableHeader).height();\r\n } else {\r\n scrollHeadHeight = height;\r\n const tds = Gantt.utils.getChild(this.tableHeader, 'TR').childNodes;\r\n for (let i = 0, count = tds.length; i < count; ++i) {\r\n $(tds.item(i)).css({ height: `${height}px` });\r\n }\r\n this.tableHeader.parentNode.height = `${height}px`;\r\n }\r\n // Horrible hack to Datatable issue for fitting its parent div\r\n // https://datatables.net/forums/discussion/12187/datatable-fixed-height\r\n this.scrollableBody.style.top = `${scrollHeadHeight}px`;\r\n const panelHeight = $(this.node).height();\r\n this.$scrollableBody.height(panelHeight - scrollHeadHeight);\r\n // this.getScrollableBody().style.top = scrollHeadHeight + 'px';\r\n }\r\n // Table not initialized yet\r\n else {\r\n // Store it for when the table is initialized\r\n this.headerHeight = -height;\r\n }\r\n }\r\n\r\n getScrollableTable() {\r\n return this.scrollableBody;\r\n }\r\n\r\n getTableBody() {\r\n return this.tableBody;\r\n }\r\n\r\n getHeight() {\r\n return this.tableBody ? this.tableBody.offsetHeight : 0;\r\n }\r\n\r\n getRowCount() {\r\n return this.$dataTable.data().length;\r\n }\r\n\r\n createRowResult(tr, index) {\r\n const { id } = tr;\r\n const node = ((id || id === 0) && this.rows && this.rows.byIds[id]) || null;\r\n if (node) {\r\n node.tr = tr;\r\n if (index !== undefined) {\r\n node.index = index;\r\n }\r\n }\r\n return node;\r\n }\r\n\r\n getRow(param) {\r\n let id;\r\n let row;\r\n if (param && param.isGanttRow) {\r\n row = param;\r\n id = param.id;\r\n } else if (typeof param === 'string' || (param && param.id)) {\r\n id = param.id || param;\r\n row = this.rows && this.rows.byIds && id && this.rows.byIds[id];\r\n } else if (Gantt.utils.isInteger(param)) {\r\n row = this.rows && this.rows[param];\r\n id = row && row.id;\r\n }\r\n if (row && !row.tr && id) {\r\n row.tr = param.nodeType ? param : document.getElementById(id);\r\n }\r\n return row;\r\n }\r\n\r\n getRows(selector) {\r\n if (!selector) {\r\n // Return all rows\r\n return this.rows;\r\n }\r\n if (Gantt.utils.isArray(selector)) {\r\n return selector.map(row => this.getRow(row));\r\n }\r\n return this.getRow(selector);\r\n }\r\n\r\n getVisibleRows() {\r\n if (!this.$dataTable) return [];\r\n const trs = this.$dataTable.$('tr', { filter: 'applied' });\r\n const count = trs.length;\r\n const result = new Array(count);\r\n for (let i = 0, row; i < count; ++i) {\r\n row = trs[i];\r\n row = row.length ? row[0] : row;\r\n row = this.rows && this.rows.byIds[row.id];\r\n result[i] = row;\r\n }\r\n return result;\r\n }\r\n\r\n getRowAt(y, startingRow) {\r\n // TODO code below seems to be quicker but does not work as is as getBoundingClientRect().top does not\r\n // return the coordinate relative to the direct parent\r\n /* var rowHeight = this.getRowHeight();\r\n var rowNum = y / rowHeight;\r\n var row = this.getRowAtIndex(Math.floor(y / rowHeight));\r\n\r\n if (!row && !(row = this.nextRow(null))) {\r\n return null;\r\n }\r\n var rect = row.tr.getBoundingClientRect();\r\n if (y >= rect.top) {\r\n while (y >= rect.bottom) {\r\n row = this.nextRow(row);\r\n if (!row) {\r\n return null;\r\n }\r\n rect = row.tr.getBoundingClientRect()\r\n }\r\n }\r\n else {\r\n while (y < rect.top) {\r\n row = this.prevRow(row);\r\n if (!row) {\r\n return null;\r\n }\r\n rect = row.tr.getBoundingClientRect();\r\n }\r\n }\r\n return row; */\r\n // Alternative slower option, only using element.offsetHeight\r\n let tr;\r\n let index;\r\n if (startingRow && startingRow.getData() && (tr = startingRow.tr)) {\r\n index = startingRow.index;\r\n let top = this.getRowTop(startingRow);\r\n if (top <= y) {\r\n y -= top;\r\n while (tr && y > tr.offsetHeight) {\r\n y -= tr.offsetHeight;\r\n tr = tr.nextSibling;\r\n index++;\r\n }\r\n } else {\r\n do {\r\n tr = tr.previousSibling;\r\n --index;\r\n } while (tr && y < (top -= tr.offsetHeight));\r\n }\r\n if (tr && startingRow.tr === tr) {\r\n return startingRow;\r\n }\r\n } else {\r\n index = 0;\r\n const row = this.nextRow(null);\r\n tr = row && row.tr;\r\n while (tr && y >= tr.offsetHeight) {\r\n y -= tr.offsetHeight;\r\n tr = tr.nextSibling;\r\n ++index;\r\n }\r\n }\r\n return tr && this.createRowResult(tr, index);\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n getRowAtIndex(index) {\r\n const body = this.getTableBody();\r\n if (body) {\r\n let tr = Gantt.utils.getChild(body, 'TR');\r\n const origIndex = index;\r\n while (index-- && tr) {\r\n tr = tr.nextSibling;\r\n }\r\n return (tr && this.createRowResult(tr, origIndex)) || null;\r\n }\r\n return null;\r\n }\r\n\r\n getRowTop(row) {\r\n return (\r\n ((row.tr || (row.tr = document.getElementById(row.id))) && row.tr.offsetTop - this.getTableBody().offsetTop) || 0\r\n );\r\n }\r\n\r\n nextRow(row) {\r\n if (!row) {\r\n const tr = this.getTableBody() && this.getTableBody().firstChild;\r\n return (tr && this.createRowResult(tr, 0)) || null;\r\n }\r\n const nextTr = row.tr.nextSibling;\r\n return (nextTr && this.createRowResult(nextTr, row.index + 1)) || null;\r\n }\r\n\r\n // noinspection JSUnusedGlobalSymbols\r\n prevRow(row) {\r\n if (!row) {\r\n const tr = this.getTableBody() && this.getTableBody().lastChild;\r\n return (tr && this.createRowResult(tr, this.getTableBody().childElementCount)) || null;\r\n }\r\n const prevTr = row.tr.previousSibling;\r\n return (prevTr && this.createRowResult(prevTr, row.index - 1)) || null;\r\n }\r\n\r\n setRowHeight(row, height) {\r\n if (!row.defaultHeight) {\r\n row.defaultHeight = row.tr.offsetHeight;\r\n }\r\n if (height !== row.defaultHeight) {\r\n $(row.tr)\r\n .css({ height: `${height}px` })\r\n .addClass('variable-row-height');\r\n } else {\r\n $(row.tr).css({ height: 'inherit' });\r\n }\r\n }\r\n\r\n getRowHeight(row, height) {\r\n // return $(row.tr).offsetHeight;\r\n if (!row.tr) row.tr = document.getElementById(row.id);\r\n const r = row.tr.getBoundingClientRect();\r\n return r.height;\r\n // return row.tr.getBoundingClientRect().height;\r\n // return $(row.tr || (row.tr = document.getElementById(row.id))).height();\r\n }\r\n\r\n deleteDrawCache() {\r\n if (this.rows) {\r\n for (let i = 0, count = this.rows.length; i < count; ++i) {\r\n delete this.rows[i].activityRow;\r\n }\r\n }\r\n this.$dataTable &&\r\n this.$dataTable\r\n .$('tr.variable-row-height')\r\n .css({ height: 'inherit' })\r\n .removeClass('variable-row-height');\r\n }\r\n\r\n expandParents(row) {\r\n row = this.getRow(row);\r\n if (row) {\r\n this.controller.expandParents(`${row.id}`); // In case row.id is a num\r\n }\r\n }\r\n\r\n getFirstVisibleRow() {\r\n const yTop = this.getScrollableTable().scrollTop;\r\n return this.getRowAt(yTop);\r\n }\r\n\r\n isRowVisible(param) {\r\n const row = this.getRow(param);\r\n if (this.isRowFiltered(row)) {\r\n return false;\r\n }\r\n let { parent } = row;\r\n while (parent) {\r\n if (this.controller.isCollapsedNode(parent.id)) {\r\n return false;\r\n }\r\n parent = parent.parent;\r\n }\r\n return true;\r\n }\r\n\r\n toggleCollapseRow(param, collapse) {\r\n const row = this.getRow(param);\r\n if (!row || this.isRowFiltered(row)) {\r\n return false;\r\n }\r\n if (collapse === undefined) {\r\n collapse = !this.controller.isCollapsedNode(row.id);\r\n }\r\n this.controller.collapseNode(row.id, collapse);\r\n }\r\n\r\n highlightRow(row, highlight, deselectAll) {\r\n const { utils } = Gantt;\r\n if (deselectAll) {\r\n const result = this.getTableBody().querySelectorAll(`tr.${HIGHLIGHT_CLASS}`);\r\n for (let i = 0; i < result.length; i++) {\r\n utils.removeClass(result[i], HIGHLIGHT_CLASS);\r\n }\r\n }\r\n if (row && row.tr) {\r\n utils.toggleClass(row.tr, HIGHLIGHT_CLASS, highlight === undefined || highlight);\r\n } else if (row) {\r\n $(this.getTableBody())\r\n .find(`#${row.id || row}`)\r\n .toggleClass(HIGHLIGHT_CLASS, highlight === undefined || highlight);\r\n }\r\n }\r\n\r\n draw(forceTableReload) {\r\n if (forceTableReload) {\r\n this.$dataTable.draw();\r\n } else {\r\n this.$dataTable.draw('full-hold');\r\n }\r\n }\r\n\r\n drawRows(rows) {\r\n // this.$dataTable.rows(rows.map(row => row.tr)).invalidate().draw();\r\n rows.forEach(element => {\r\n const data = this.$dataTable.row(element.tr).data();\r\n element.tr.style.backgroundColor = data.backgroundColor || '';\r\n });\r\n // this.$dataTable.row(0).invalidate().draw();\r\n // this.$dataTable.rows(rows.map(row => row.tr)).invalidate('dom').draw();\r\n }\r\n\r\n onResize() {\r\n if (this.$dataTable) this.$dataTable.draw('full-hold');\r\n }\r\n\r\n filterChanged() {\r\n if (this.$dataTable) this.$dataTable.draw('full-hold');\r\n }\r\n\r\n isRowFiltered(row) {\r\n return row.__filterMatched !== undefined && !row.__filterMatched;\r\n }\r\n\r\n setRowColor(row, color) {}\r\n\r\n destroy() {\r\n if (this.$dataTable) {\r\n this.$dataTable.destroy(); // https://datatables.net/reference/api/destroy()\r\n if (this.tableElt.parentNode === this.node) {\r\n this.node.removeChild(this.tableElt);\r\n }\r\n this.$dataTable = null;\r\n this.tableElt = null;\r\n this.tableBody = null;\r\n this.$scrollableBody = null;\r\n this.tableHeader = null;\r\n }\r\n }\r\n\r\n /* Selection methods */\r\n clearSelection() {\r\n if (this.$dataTable) {\r\n this.$dataTable.$(`tr.${SELECTION_CLASS}`).removeClass(SELECTION_CLASS);\r\n }\r\n }\r\n\r\n selectRows(rows) {\r\n for (let i = 0, tr; i < rows.length; i++) {\r\n tr = rows[i].tr || this.getRow(rows[i]).tr;\r\n if (tr) {\r\n Gantt.utils.addClass(tr, SELECTION_CLASS);\r\n /* const tds = tr.querySelectorAll('td');\r\n for (let i = 0; i < tds.length; i++) {\r\n Gantt.utils.addClass(tds[i], SELECTION_CLASS);\r\n } */\r\n }\r\n }\r\n }\r\n\r\n unselectRows(rows) {\r\n for (let i = 0, tr; i < rows.length; i++) {\r\n tr = rows[i].tr || this.getRow(rows[i]).tr;\r\n if (tr) {\r\n Gantt.utils.removeClass(tr, SELECTION_CLASS);\r\n }\r\n }\r\n }\r\n\r\n rowSelectionChanged() {\r\n if (this.$dataTable) {\r\n this.$dataTable.draw('full-hold');\r\n }\r\n }\r\n}\r\n\r\nGantt.components.TreeTable.defaultClass = 'gantt-tree-table display nowrap';\r\n\r\nGantt.components.TreeTable.impl = GanttDataTable;\r\n","import $ from 'jquery';\r\n\r\nimport Gantt from '../../core/core';\r\n\r\n/* ONO: Gantt malfunctions with latter versions of this plugin! */\r\n(function(Gantt, $) {\r\n const methods = {};\r\n\r\n methods.init = function() {\r\n const $splitPanes = this;\r\n $splitPanes.each(setMinHeightAndMinWidth);\r\n $splitPanes.append('
© 2015 - 2024 Weber Informatics LLC | Privacy Policy