canvas-datagrid 0.3.20 → 0.3.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/canvas-datagrid.debug.js +92 -8
- package/dist/canvas-datagrid.debug.map +1 -1
- package/dist/canvas-datagrid.js +1 -1
- package/dist/canvas-datagrid.module.js +1 -1
- package/dist/canvas-datagrid.module.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/lib/button.js +1 -0
- package/lib/docs.js +9 -1
- package/lib/events/index.js +16 -4
- package/lib/intf.js +34 -0
- package/lib/publicMethods.js +37 -3
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://canvasDatagrid/webpack/universalModuleDefinition","webpack://canvasDatagrid/./lib/button.js","webpack://canvasDatagrid/./lib/component.js","webpack://canvasDatagrid/./lib/contextMenu.js","webpack://canvasDatagrid/./lib/defaults.js","webpack://canvasDatagrid/./lib/dom.js","webpack://canvasDatagrid/./lib/draw.js","webpack://canvasDatagrid/./lib/events/index.js","webpack://canvasDatagrid/./lib/events/util.js","webpack://canvasDatagrid/./lib/intf.js","webpack://canvasDatagrid/./lib/main.js","webpack://canvasDatagrid/./lib/publicMethods.js","webpack://canvasDatagrid/./lib/touch.js","webpack://canvasDatagrid/./node_modules/is-printable-key-event/dist/index.js","webpack://canvasDatagrid/webpack/bootstrap","webpack://canvasDatagrid/webpack/runtime/compat get default export","webpack://canvasDatagrid/webpack/runtime/define property getters","webpack://canvasDatagrid/webpack/runtime/hasOwnProperty shorthand","webpack://canvasDatagrid/webpack/runtime/make namespace object","webpack://canvasDatagrid/webpack/startup"],"names":["self","zIndexTop","applyButtonMenuItemStyle","buttonMenuItemContainer","createInlineStyle","mobile","addEventListener","applyButtonStyle","button","buttonMenu","createButton","pos","items","imgSrc","wrapper","document","createElement","buttonArrow","buttonIcon","intf","Array","isArray","Error","init","loc","s","scrollOffset","canvas","undefined","style","buttonZIndex","x","left","y","top","height","position","zIndex","scrollBox","scrollLeft","scrollTop","innerHTML","buttonArrowDownHTML","img","setAttribute","maxWidth","appendChild","body","toggleButtonMenu","dispose","parentNode","removeChild","createDisposeEvent","requestAnimationFrame","disposeButtonMenu","offsetHeight","createButtonMenu","selectedIndex","rect","createItems","addItem","item","menuItemContainer","addContent","content","title","click","ev","apply","clickIndex","idx","dispatchEvent","Event","getBoundingClientRect","bottom","window","innerHeight","buttonMenuWindowMargin","right","innerWidth","Object","defineProperty","get","set","value","isNaN","isFinite","length","forEach","index","removeEventListener","disposeButton","e","keyCode","moveButtonPos","attachButton","typeMap","component","dehyphenateProperty","hyphenateProperty","prop","replace","p","nextLetterCap","prototype","call","char","toUpperCase","cust","toLowerCase","getDefaultItem","base","i","r","defaults","filter","applyComponentStyle","supressChangeAndDrawEvents","isComponent","cStyle","getComputedStyle","tagName","defs","computedStyle","styles","def","val","getPropertyValue","setStyleProperty","resize","data","strData","JSON","parse","schema","strSchema","number","strNum","n","parseInt","strBool","test","string","str","getObservableAttributes","attrs","attributes","attr","push","disconnectedCallback","connected","connectedCallback","parentDOMNode","observe","adoptedCallback","attributeChangedCallback","attrName","oldVal","newVal","tfn","dataType","name","Function","observer","MutationObserver","mutations","checkInnerHTML","checkStyle","mutation","attributeName","target","nodeName","addedNodes","type","characterData","childList","subtree","querySelectorAll","el","hoverScrollTimeout","autoCompleteContext","applyContextItemStyle","contextItemContainer","createContextMenu","parentContextMenu","container","upArrow","downArrow","children","childMenuArrow","removeChildContext","relatedTarget","contextMenu","contains","splice","indexOf","contextAddCallback","getAttribute","cPos","childContextMenuMarginLeft","offsetWidth","childContextMenuMarginTop","createChildContext","childContextMenuArrowHTML","checkArrowVisibility","scrollHeight","fade","element","opacity","timer","setInterval","clearInterval","display","animationDurationHideContextMenu","unfade","animationDurationShowContextMenu","startHoverScroll","t","a","contextHoverScrollAmount","setTimeout","contextHoverScrollRateMs","endHoverScroll","clearTimeout","contextMenuZIndex","color","contextMenuArrowColor","textAlign","inputDropdown","maxHeight","autocompleteBottomMargin","minWidth","width","hasFocus","deltaY","deltaX","contextMenuArrowUpHTML","contextMenuArrowDownHTML","contextMenuWindowMargin","parentGrid","c","createFilterContextMenuItems","filterContainer","filterLabel","filterAutoCompleteButton","filterInput","cell","header","iRect","checkRegExpErrorState","background","contextFilterInputBackground","contextFilterInputColor","invalidFilterRegEx","contextFilterInvalidRegExpBackground","contextFilterInvalidRegExpColor","fillAutoComplete","count","blanksItem","viewData","row","cellValue","String","trim","blankValues","includes","blanksText","maxAutoCompleteItems","formatters","stopPropagation","disposeAutocomplete","keys","concat","map","key","createAutoCompleteContext","autoCompleteItems","onclick","disposeContextMenu","preventDefault","setFilter","en","columnFilters","filterOptionText","contextFilterButtonHTML","cf","h","getHeaderByName","removeFilterOptionText","removeFilterClick","controlInput","focus","addDefaultContextMenuItem","isNormalCell","isBackground","isColumnHeaderCellCap","isScrollBar","isCorner","isRowHeader","showFilter","showCopy","selections","reduce","copyText","execCommand","showPaste","clipBoardData","pasteText","paste","columnIndex","rowIndex","draw","showColumnSelector","columnSelectorText","d","getSchema","column","toggleColumnVisibility","hidden","setStorageData","columnSelectorHiddenText","columnSelectorVisibleText","hideColumnText","saveAppearance","showClearSettingsOption","sizes","rows","columns","clearSettingsOptionText","createRowOrders","createColumnOrders","storedSettings","columnWidth","cellWidth","cellHeight","allowSorting","showOrderByOption","showOrderByOptionTextAsc","order","showOrderByOptionTextDesc","event","mousedown","mouseup","contextmenuEvent","overridePos","contextPosition","getLayerPos","NativeEvent","getCellAt","isGrid","contextMenuMarginLeft","canvasOffsetLeft","contextMenuMarginTop","canvasOffsetTop","mobileContextMenuMargin","filterButtonMenuOffsetTop","getClippingRect","ele","boundingRect","eleRect","clipRect","w","parentRect","Infinity","columnHeaderCellHeight","getColumnHeaderCellHeight","rowHeaderCellWidth","getRowHeaderCellWidth","offsetTop","scrollBarWidth","offsetLeft","clipElement","clip","scrollingElement","nodeType","resizeEditInput","input","editCell","bm","gridBorderCollapse","borderWidth","cellBorderWidth","getVisibleCellByIndex","mobileEditInputHeight","cellPaddingLeft","ignoreScrollOffset","offsetParent","clientX","clientY","isChildGrid","endEdit","abort","abortEdit","newValue","oldValue","changes","originalData","boundRowIndex","defaultValue","aborted","addRow","createNewRowData","beginEditAt","inEnterMode","editable","adjacentCells","enumItems","enu","option","valueInEnum","scrollIntoView","setActiveCell","getAdjacentCells","multiLine","editCellZIndex","fontSize","editCellFontSize","scale","cellValueIsEmpty","shouldClearCellValue","nx","ny","altKey","nextRowIndex","shiftKey","Math","max","min","last","first","className","css","padding","buttonPadding","borderStyle","borderColor","buttonBorderColor","cursor","buttonBackgroundColor","userSelect","buttonHoverBackgroundColor","buttonActiveBorderColor","buttonActiveBackgroundColor","verticalAlign","buttonArrowColor","lineHeight","fontWeight","fontFamily","contextMenuFontFamily","contextMenuFontSize","margin","contextMenuItemMargin","borderRadius","contextMenuItemBorderRadius","contextMenuHoverBackground","contextMenuHoverColor","contextMenuLabelMargin","contextMenuLabelDisplay","contextMenuLabelMinWidth","contextMenuLabelMaxWidth","contextMenuBackground","contextMenuColor","border","contextMenuBorder","contextMenuPadding","contextMenuBorderRadius","contextMenuOpacity","overflow","whiteSpace","contextMenuCursor","marginLeft","contextFilterInputBorder","contextFilterInputBorderRadius","contextFilterInputFontFamily","contextFilterInputFontSize","contextFilterButtonBorder","contextFilterButtonBorderRadius","contextMenuFilterButtonFontFamily","contextMenuFilterButtonFontSize","cssFloat","childContextMenuArrowColor","contextMenuChildArrowFontSize","boxSizing","outline","mobileEditFontFamily","mobileEditFontSize","editCellBorder","editCellColor","editCellBackgroundColor","appearance","webkitAppearance","mozAppearance","editCellPaddingLeft","editCellFontFamily","boxShadow","editCellBoxShadow","contextMenuFilterInvalidExpresion","appendTo","setDom","ctx","context","eventParent","onblur","blur","parentIsCanvas","getContext","textBaseline","parentNodeStyle","touchstart","dblclick","mousemove","scrollWheel","copy","cut","keypress","keyup","keydown","perfCounters","cachedImagesDrawn","drawCount","perfWindowSize","entityCount","hiddenFrozenColumnCount","scrollDebugCounters","touchPPSCounters","htmlImageCache","fillArray","low","high","step","drawPerfLine","perfArr","arrIndex","useAbs","beginPath","moveTo","cx","cy","abs","lineTo","strokeStyle","stroke","drawOnAllImagesLoaded","loaded","html","complete","drawHtml","v","formattedValue","cacheKey","toString","round","drawImage","Image","onload","src","btoa","drawOrderByArrow","mt","columnHeaderOrderByArrowMarginTop","ml","columnHeaderOrderByArrowMarginLeft","mr","columnHeaderOrderByArrowMarginRight","aw","columnHeaderOrderByArrowWidth","ah","columnHeaderOrderByArrowHeight","fillStyle","columnHeaderOrderByArrowColor","columnHeaderOrderByArrowBorderColor","orderDirection","fill","drawTreeArrow","treeArrowMarginTop","treeArrowMarginRight","treeArrowMarginLeft","treeArrowWidth","treeArrowHeight","treeArrowColor","treeArrowBorderColor","openChildren","drawFilterButtonArrow","filterButtonHeight","filterButtonArrowHeight","filterButtonWidth","filterButtonArrowWidth","filterButtonArrowColor","filterButtonArrowBorderColor","radiusRect","radius","b","quadraticCurveTo","fillRect","strokeRect","fillText","text","fillCircle","arc","PI","strokeCircle","clipFrozenArea","mode","lastFrozenColumnPixel","lastFrozenRowPixel","fillHandle","selectionHandleType","strokeHandle","addselectionHandle","hw","selectionHandleSize","tr","br","tl","bl","addBorderLine","l","addEllipsis","ellipsisCache","measureText","wrapText","splitChar","lines","calculatedLineHeight","word","words","split","textHeight","out","wrap","cellWhiteSpace","autoResize","autoResizeRows","elWidth","et","ellipsisText","elClipLength","plWidth","clippedVal","ogWordWidth","previousLine","line","cHeight","paddedHeight","curSplitChar","measure","paddedWidth","arr","originText","stepLength","direction","substr","drawText","ll","fontHeight","vPos","hPos","paddingLeft","orderByArrowWidth","horizontalAlignment","paddingRight","verticalAlignment","paddingBottom","lineSpacing","debug","active","font","debugFont","debugColor","stringify","pw","idx_ord","sortColumnIndex","getFrozenColumnsWidth","frozenColumn","getColumnWidth","internal","visible","checkScrollHeight","rowHeaderCell","treeGrid","rowOpen","rowHeight","cornerCell","rowData","aCell","bc","selectionBorders","moveBorders","selectionHandles","rowHeaders","u","currentCell","performance","now","visibleRowHeights","orders","drawScrollBars","drawCorner","entities","m","scrollBarBoxMargin","scrollBarBorderColor","lineWidth","scrollBarBorderWidth","horizontalBox","scrollCache","horizontalBar","scrollBoxWidth","scrollWidth","verticalBox","frozenRow","verticalBar","scrollBoxHeight","horizontalBarVisible","scrollBarBackgroundColor","scrollBarBoxColor","horizontalBoxVisible","scrollBarActiveColor","scrollBarBoxBorderRadius","visibleCells","unshift","verticalBarVisible","verticalBoxVisible","scrollBarCornerBorderColor","scrollBarCornerBackgroundColor","corner","createHandlesOverlayArray","allowMovingSelection","selectionBorderTop","selectionBorderRight","selectionHandle","selectionBorderLeft","selectionBorderBottom","selectionHandleBehavior","createBorderOverlayArray","drawArray","propPrefix","offsetPoint","selectionBorder","isHeader","drawCell","rowOrderIndex","drawEach","headerIndex","columnOrderIndex","cellStyle","cellGridAttributes","isColumnHeader","isFilterable","filterable","selected","hovered","hovers","hoverMode","openedFilter","selectedFilterButton","activeCell","rawValue","activeHeader","f","orderByArrowSize","treeArrowSize","visibleRows","paddingTop","cellLineHeight","cellLineSpacing","viewRowIndex","viewColumnIndex","getBoundRowIndexFromViewRowIndex","boundColumnIndex","getBoundColumnIndexFromViewColumnIndex","sortRowIndex","isNormal","gridId","userHeight","userWidth","cellHeightWithChildGrid","cellWidthWithChildGrid","save","tree","showRowNumbers","childGrids","createGrid","cellGridHeight","grid","orderBy","console","warn","filterTextPrefix","movingSelection","moveOffset","restore","drawFilterButton","isSorting","orderings","showRowNumberGaps","previousRowNumber","hasRowGap","barHeight","rowHeaderCellRowNumberGapHeight","barColor","rowHeaderCellRowNumberGapColor","posX","posY","filterButtonBorderColor","filterButtonBackgroundColor","filterButtonActiveBackgroundColor","onFilterButton","filterButtonHoverBackgroundColor","filterButtonBorderRadius","drawRowHeader","showRowHeaders","filteredRowNumber","rowHeaderValue","hasActiveFilters","headerDescription","drawHeaders","g","o","columnHeaderCell","nonFrozenHeaderWidth","drawHeaderColumnRange","start","end","rArgs","rhIndex","showColumnHeaders","scrollPixelLeft","columnHeaderCellBorderWidth","scrollIndexLeft","isColumnHeaderCell","endCap","drawRow","treeHeight","rowSansTreeHeight","trees","scrollIndexRight","scrollPixelRight","initDraw","drawBackground","gridBackgroundColor","drawFrozenRows","ln","allowFreezingRows","frozenMarkerBorderWidth","frozenMarkerWidth","drawRows","snapToRow","scrollPixelTop","scrollIndexTop","scrollIndexBottom","scrollPixelBottom","showNewRow","newRow","drawMoveMarkers","moveOverlayBorderWidth","moveOverlayBorderColor","setLineDash","moveOverlayBorderSegments","drawReorderMarkers","reorderObject","dragOffset","reorderMarkerBackgroundColor","reorderMarkerBorderWidth","reorderMarkerBorderColor","dragMode","k","getRowHeight","reorderMarkerIndexBorderWidth","reorderMarkerIndexBorderColor","reorderTarget","selectedColumns","drawBorder","gridBorderWidth","gridBorderColor","drawSelectionBorders","selectionOverlayBorderWidth","selectionOverlayBorderColor","dsb","drawSelectionHandles","selectionHandleBorderWidth","selectionHandleBorderColor","selectionHandleColor","az","touchSelectHandleZone","ax","ay","drawActiveCell","cl","acx","acy","acw","ach","selectionMode","activeCellOverlayBorderWidth","activeCellOverlayBorderColor","getHeaderWidth","drawFrozenMarkers","my","mx","xHover","yHover","allowFreezingColumns","frozenMarkerHoverColor","frozenMarkerColor","frozenMarkerHoverBorderColor","frozenMarkerBorderColor","freezeMarkerPosition","frozenMarkerActiveColor","frozenMarkerActiveBorderColor","drawPerfLines","showPerformance","px","py","ph","dpl","debugPerfChartTextColor","toFixed","debugPerfChartBackground","debugScrollHeightColor","debugScrollWidthColor","debugPerformanceColor","debugEntitiesColor","debugTouchPPSXColor","debugTouchPPSYColor","pop","yPPS","xPPS","drawDebug","perf","perfDelta","frozenColumnsWidth","htmlImages","startScale","scaleDelta","zoomDeltaStart","touchLength","touches","touchPosition","touchPosition1","scrollIndex","scrollPixel","canvasOffset","touchDelta","touchAnimateTo","scrollAnimation","touchPPS","touchPPST","xPPST","yPPST","touchDuration","pointerLockPosition","size","mouse","touch","touchStart","dragContext","debugBackgroundColor","lh","wheeling","fn","events","removeEachListener","sfn","defaultPrevented","dispatchEachEvent","getRatio","maxPixelRatio","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","drawAfterResize","vb","nb","co","isScrollBoxCorner","sbw","ratio","cellBorder","columnHeaderCellBorder","dataHeight","dataWidth","dims","ch","checkScrollBoxVisibility","overflowX","overflowY","setScrollBoxSize","setCanvasSize","dim","appliedInlineStyles","reduceSchema","accumulator","va","args","widthBoxRatio","heightBoxRatio","scrollBarBoxMinSize","scrollBarBoxWidth","bar","box","page","pageUpDownOverlap","scroll","dontDraw","floor","ctrl","ctrlKey","metaKey","persistantSelectionMode","singleSelectionMode","dragBounds","sBounds","delta","previousCell","scrollTimer","isInGrid","rowBoundaryCrossed","columnBoundaryCrossed","cellBoundaryCrossed","prefix","draggingItem","dragItem","selecting","dragStart","dragStartObject","getSelectionBounds","ignoreNextClick","selectRow","dragAddToSelection","selectedData","getSelectedData","selectedCells","getSelectedCells","selectionBounds","selectArea","isMultiRowsSelected","autoScrollOnMousemove","movedVertically","autoScrollMargin","movedHorizontally","autoScrollZone","startingBounds","checkSelectionChange","sb","selectAll","columnHeaderClickBehavior","treeArrowClickRadius","toggleTree","dragResizeColumn","resizingStartingWidth","resizingStartingHeight","minColumnWidth","minRowHeight","resizeScrollZone","resizeChildGrids","globalRowResize","stopDragResize","scrollGrid","scrollPointerLock","scrollStartMode","movementX","movementY","scrollMode","scrollStart","scrollModes","scrollRepeatRate","selectionScrollIncrement","stopScrollGrid","exitPointerLock","dragReorder","columReorder","rowReorder","allowColumnReordering","allowRowReordering","isMultiColumnsSelected","selectColumn","source","reorderDeadZone","stopDragReorder","oIndex","tIndex","odata","cr","sortColumnIndices","seletedColumnIndices","deleteCount","selectedRows","dragMove","stopDragMove","moveSelection","freezeMove","stopFreezeMove","startFreezeMove","lastMouseDownTarget","move","freeze","requestPointerLock","dragging","cols","keepFocusOnMouseOut","isPrintableKeyEvent","selectNone","Number","isArrowKey","firstSelectedRowIndex","findIndex","firstSelectedRow","firstSelectedColumnIndex","lastSelectedColumn","yAtTop","yAtBottom","xAtLeft","xAtRight","selection","shift","selectionFollowsActiveCell","fitColumnToValues","autosize","deltaMode","touchHaltAnimation","scrollTo","pasteData","pasteValue","mimeType","startRowIndex","startColIndex","isSupportedHtml","parseData","cellData","join","forEachSelectedCell","colName","realRowIndex","cells","existingRowData","newRowData","assign","colIndex","columnName","boundRowIndexMap","affectedCells","getNextVisibleColumnIndex","visibleColumnIndex","getVisibleSchema","getVisibleColumnIndexOf","clipboardItems","Map","from","clipboardData","supportedMimeTypes","pasteableItems","itemToPaste","startCell","len","pasteType","getAsString","entries","textRows","sData","sSorted","firstRowKeys","isNeat","htmlSafe","rowKeys","textRow","setData","genericDiv","genericSpan","genericTable","excelTable","excelTableRow","some","expression","IGNORE_NODETYPES","isHtmlTable","sanitizeElementData","elementData","innerText","parseHtmlText","doc","DOMParser","parseFromString","querySelector","parseHtmlTable","trs","childNodes","childNode","col","parseText","ctor","treeGridAttributes","storageName","invalidSearchExpClass","localStyleLibraryStorageKey","add","sortFunction","sort","filters","sorters","parsers","schemaHashes","componentL1Events","eventNames","expandToRow","viewDataLength","orderedIndex","has","visibility","localStorage","setItem","tempSchema","applyDefaultValue","newRowIndex","forEachHeader","getSchemaNameHash","getFilteredAndSortedViewData","newViewData","originalRowIndex","headerName","filterText","currentFilterFunction","filterFrozenRows","sortFn","rowA","rowB","rowIndexB","sortFrozenRows","_row","refresh","getBestGuessDataType","drawChildGrids","gridKey","setTimer","selectionScrollZone","validateColumn","setDefaults","obj1","obj2","setAttributes","eachAttribute","setStyle","eachStyle","findColumnMaxTextLength","contextmenu","disconnect","tryLoadStoredSettings","reloadStoredValues","getDomRoot","shadowRoot","host","getFontName","fontStyle","getFontHeight","parseFloat","parseStyleValue","initProp","propName","getStyleProperty","styleKeys","supressDrawAndEvent","isDim","getItem","message","initialized","addStyleKeyIfNoneExists","publicStyleKeyIntf","initScrollBox","ie","navigator","userAgent","edge","webKit","moz","cursorGrab","cursorGrabing","cursorGrabbing","clearChangeLog","gotoCell","gotoRow","addButton","findColumnScrollLeft","findRowScrollTop","isCellVisible","isRowVisible","isColumnVisible","getSchemaFromData","expandTree","collapseTree","insertRow","deleteRow","insertColumn","deleteColumn","addColumn","setRowHeight","setColumnWidth","resetColumnWidths","resetRowHeights","assertPxColor","clearPxColorAssertions","integerToAlpha","DOMStyles","valueObject","filterFor","filterRegExp","regEnd","pattern","exec","flags","substring","flagLength","RegExp","toLocaleUpperCase","textContent","TypeError","currentCursor","find","eventName","RangeError","eachDataRow","setTreeGridAttributes","setCellGridAttributes","schemaGetter","schemaSetter","eachSchemaColumn","hideEachSchemaColumn","getTypes","parseInnerHtml","callback","etl","autoGenerateSchema","dataGetter","dataSetter","autoResizeColumns","sHeight","sWidth","setScrollTop","preventScrollEvent","setScrollLeft","supressDrawEvent","webComponent","modules","dom","publicMethods","Grid","eval","module","attachShadow","HTMLElement","create","customElements","observedAttributes","define","canvasDatagrid","require","EXCLUDE_GLOBAL","tKeys","argKey","tKey","sKey","ordA","charCodeAt","ordZ","fromCharCode","showFilterInCell","offsetX","offsetY","targetX","targetY","sbh","offset","multiColIsSelected","columnIndices","isColumnSelected","colIsSelected","supressEvent","addCol","removeCol","st","de","ri","dragObject","childGrid","trArgs","treeGridHeight","dontSetStorageData","sorter","sel","visibleSchema","selectionLength","xi","maxRowLength","minXi","yi","lastSourceIndex","cidx","useTouchScrollZones","getBorder","entitiy","borderResizeZone","tsz","touchScrollZone","moveMode","borderDragBehavior","moveBorder","xBorderBehavior","yBorderBehavior","isVerticalScrollBar","isHorizontalScrollBar","allowColumnResize","allowColumnResizeFromCell","allowRowHeaderResize","allowRowResize","allowRowResizeFromCell","rowGrabZoneSize","maxCol","minCol","mapEachSchemaColumn","bounds","rowHeaderCellFont","autosizePadding","autosizeHeaderCellPadding","rowHeaderCellPaddingRight","rowHeaderCellPaddingLeft","formatter","columnHeaderCellFont","headerCellPaddingRight","headerCellPaddingLeft","cellFont","cellPaddingRight","cellAutoResizePadding","total","cellFormatterString","headerCell","asc","aValue","bValue","localeCompare","date","Date","getTime","touchTimerMs","debounceTouchMove","touchMoving","touchScrollTimeout","animationFrames","getTouchPos","touchIndex","easingFunctions","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easing","touchEasingMethod","calculatePPSTimed","touchSigmaTimed","calculatePPS","touchSigma","touchEndAnimation","touchReleaseAnimationDurationMs","stopAnimation","touchEditCell","changedTouches","startingCell","calculatePPSTimer","touchContextTimeout","touchStartEvent","zoomAltered","touchStart1","touchScrollStart","touchContextMenuTimeMs","touchEndEvents","touchmove","passive","touchend","touchcancel","touchSelect","handleType","touchSelecting","touchMove","rw","rScrollZone","lScrollZone","bScrollZone","tScrollZone","t1","t2","touchDeadZone","touchZoomSensitivity","touchZoomMin","touchZoomMax","touchScroll","dz","touchReleaseAcceleration","scrollAnimationPPSThreshold"],"mappings":"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","file":"canvas-datagrid.debug.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"canvasDatagrid\"] = factory();\n\telse\n\t\troot[\"canvasDatagrid\"] = factory();\n})(self, function() {\nreturn ","/*jslint browser: true, unparam: true, todo: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false, Event: false*/\n'use strict';\n\nexport default function (self) {\n let zIndexTop;\n\n function applyButtonMenuItemStyle(buttonMenuItemContainer) {\n self.createInlineStyle(\n buttonMenuItemContainer,\n 'canvas-datagrid-button-menu-item' + (self.mobile ? '-mobile' : ''),\n );\n buttonMenuItemContainer.addEventListener('mouseover', function () {\n self.createInlineStyle(\n buttonMenuItemContainer,\n 'canvas-datagrid-button-menu-item:hover',\n );\n });\n buttonMenuItemContainer.addEventListener('mouseout', function () {\n self.createInlineStyle(\n buttonMenuItemContainer,\n 'canvas-datagrid-button-menu-item',\n );\n });\n }\n\n function applyButtonStyle(button) {\n self.createInlineStyle(button, 'canvas-datagrid-button-wrapper');\n button.addEventListener('mouseover', function () {\n if (!self.buttonMenu) {\n self.createInlineStyle(button, 'canvas-datagrid-button-wrapper:hover');\n }\n });\n button.addEventListener('mouseout', function () {\n if (!self.buttonMenu) {\n self.createInlineStyle(button, 'canvas-datagrid-button-wrapper');\n }\n });\n }\n\n function createButton(pos, items, imgSrc) {\n var wrapper = document.createElement('div'),\n buttonArrow = document.createElement('div'),\n buttonIcon = document.createElement('div'),\n intf = {};\n\n if (!Array.isArray(items)) {\n throw new Error('createButton expects an array.');\n }\n\n function init() {\n var loc = {},\n s = self.scrollOffset(self.canvas);\n\n if (zIndexTop === undefined) {\n zIndexTop = self.style.buttonZIndex;\n }\n\n applyButtonStyle(wrapper);\n self.createInlineStyle(buttonIcon, 'canvas-datagrid-button-icon');\n self.createInlineStyle(buttonArrow, 'canvas-datagrid-button-arrow');\n\n loc.x = pos.left - s.left;\n loc.y = pos.top - s.top;\n loc.height = 0;\n zIndexTop += 1;\n wrapper.style.position = 'absolute';\n wrapper.style.zIndex = zIndexTop;\n wrapper.style.left = loc.x + 'px';\n wrapper.style.top = loc.y + 'px';\n wrapper.left = pos.left + self.scrollBox.scrollLeft;\n wrapper.top = pos.top + self.scrollBox.scrollTop;\n buttonArrow.innerHTML = self.style.buttonArrowDownHTML;\n if (imgSrc) {\n let img = document.createElement('img');\n img.setAttribute('src', imgSrc);\n img.style.maxWidth = '100%';\n img.style.height = '100%';\n buttonIcon.appendChild(img);\n }\n wrapper.appendChild(buttonIcon);\n wrapper.appendChild(buttonArrow);\n document.body.appendChild(wrapper);\n wrapper.addEventListener('click', toggleButtonMenu);\n }\n\n intf.wrapper = wrapper;\n intf.items = items;\n init();\n\n intf.dispose = function () {\n if (wrapper.parentNode) {\n wrapper.parentNode.removeChild(wrapper);\n }\n };\n return intf;\n }\n\n function toggleButtonMenu() {\n function createDisposeEvent() {\n requestAnimationFrame(function () {\n document.addEventListener('click', self.disposeButtonMenu);\n });\n }\n if (self.buttonMenu) {\n self.disposeButtonMenu();\n } else {\n let pos = {\n left: self.button.wrapper.left - self.scrollBox.scrollLeft,\n top:\n self.button.wrapper.top +\n self.button.wrapper.offsetHeight -\n self.scrollBox.scrollTop,\n };\n self.buttonMenu = createButtonMenu(pos, self.button.items);\n self.createInlineStyle(\n self.button.wrapper,\n 'canvas-datagrid-button-wrapper:active',\n );\n createDisposeEvent();\n }\n }\n\n function createButtonMenu(pos, items) {\n var buttonMenu = document.createElement('div'),\n selectedIndex = -1,\n intf = {},\n rect;\n\n function createItems() {\n function addItem(item, menuItemContainer) {\n function addContent(content) {\n if (content === null) {\n return;\n }\n\n if (typeof content === 'object') {\n menuItemContainer.appendChild(content);\n return;\n }\n\n applyButtonMenuItemStyle(menuItemContainer);\n menuItemContainer.innerHTML = content;\n return;\n }\n\n addContent(item.title);\n item.buttonMenuItemContainer = menuItemContainer;\n\n if (item.click) {\n menuItemContainer.addEventListener('click', function (ev) {\n item.click.apply(self, [ev]);\n });\n }\n }\n\n for (let item of items) {\n var buttonMenuItemContainer = document.createElement('div');\n addItem(item, buttonMenuItemContainer);\n buttonMenu.appendChild(buttonMenuItemContainer);\n }\n }\n\n function clickIndex(idx) {\n items[idx].buttonMenuItemContainer.dispatchEvent(new Event('click'));\n }\n\n function init() {\n var loc = {},\n s = self.scrollOffset(self.canvas);\n\n if (zIndexTop === undefined) {\n zIndexTop = self.style.buttonZIndex;\n }\n\n createItems();\n self.createInlineStyle(\n buttonMenu,\n 'canvas-datagrid-button-menu' + (self.mobile ? '-mobile' : ''),\n );\n\n loc.x = pos.left - s.left;\n loc.y = pos.top - s.top;\n loc.height = 0;\n zIndexTop += 1;\n buttonMenu.style.position = 'absolute';\n buttonMenu.style.zIndex = zIndexTop;\n buttonMenu.style.left = loc.x + 'px';\n buttonMenu.style.top = loc.y + 'px';\n document.body.appendChild(buttonMenu);\n rect = buttonMenu.getBoundingClientRect();\n\n if (rect.bottom > window.innerHeight) {\n loc.y =\n self.button.wrapper.top -\n buttonMenu.offsetHeight -\n self.scrollBox.scrollTop;\n if (loc.y < 0) {\n loc.y = self.style.buttonMenuWindowMargin;\n }\n\n if (\n buttonMenu.offsetHeight >\n window.innerHeight - self.style.buttonMenuWindowMargin\n ) {\n buttonMenu.style.height =\n window.innerHeight - self.style.buttonMenuWindowMargin * 2 + 'px';\n }\n }\n\n if (rect.right > window.innerWidth) {\n loc.x -=\n rect.right - window.innerWidth + self.style.buttonMenuWindowMargin;\n }\n\n if (loc.x < 0) {\n loc.x = self.style.buttonMenuWindowMargin;\n }\n\n if (loc.y < 0) {\n loc.y = self.style.buttonMenuWindowMargin;\n }\n\n buttonMenu.style.left = loc.x + 'px';\n buttonMenu.style.top = loc.y + 'px';\n }\n\n intf.buttonMenu = buttonMenu;\n init();\n intf.clickIndex = clickIndex;\n intf.rect = rect;\n intf.items = items;\n\n intf.dispose = function () {\n if (buttonMenu.parentNode) {\n buttonMenu.parentNode.removeChild(buttonMenu);\n }\n };\n\n Object.defineProperty(intf, 'selectedIndex', {\n get: function get() {\n return selectedIndex;\n },\n set: function set(value) {\n if (typeof value !== 'number' || isNaN(value) || !isFinite(value)) {\n throw new Error('Button menu selected index must be a sane number.');\n }\n\n selectedIndex = value;\n\n if (selectedIndex > items.length - 1) {\n selectedIndex = items.length - 1;\n }\n\n if (selectedIndex < 0) {\n selectedIndex = 0;\n }\n\n items.forEach(function (item, index) {\n if (index === selectedIndex) {\n return self.createInlineStyle(\n item.buttonMenuItemContainer,\n 'canvas-datagrid-button-menu-item:hover',\n );\n }\n\n self.createInlineStyle(\n item.buttonMenuItemContainer,\n 'canvas-datagrid-button-menu-item',\n );\n });\n },\n });\n return intf;\n }\n\n self.disposeButtonMenu = function () {\n if (self.buttonMenu) {\n document.removeEventListener('click', self.disposeButtonMenu);\n self.buttonMenu.dispose();\n self.buttonMenu = undefined;\n self.createInlineStyle(\n self.button.wrapper,\n 'canvas-datagrid-button-wrapper:hover',\n );\n }\n };\n\n self.disposeButton = function (e) {\n if (e && e.keyCode !== 27) return;\n document.removeEventListener('keydown', self.disposeButton);\n zIndexTop = self.style.buttonZIndex;\n self.disposeButtonMenu();\n\n if (self.button) {\n self.button.dispose();\n }\n\n self.button = undefined;\n };\n\n self.moveButtonPos = function () {\n self.button.wrapper.style.left =\n self.button.wrapper.left - self.scrollBox.scrollLeft + 'px';\n self.button.wrapper.style.top =\n self.button.wrapper.top - self.scrollBox.scrollTop + 'px';\n self.disposeButtonMenu();\n };\n\n self.attachButton = function (pos, items, imgSrc) {\n function createDisposeEvent() {\n requestAnimationFrame(function () {\n document.addEventListener('keydown', self.disposeButton);\n });\n }\n\n if (self.button) {\n self.disposeButton();\n }\n\n self.button = createButton(pos, items, imgSrc);\n createDisposeEvent();\n };\n return;\n}\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nimport defaults from './defaults';\n\nexport default function () {\n var typeMap,\n component = {};\n component.dehyphenateProperty = function hyphenateProperty(prop) {\n prop = prop.replace('--cdg-', '');\n var p = '',\n nextLetterCap;\n Array.prototype.forEach.call(prop, function (char) {\n if (nextLetterCap) {\n nextLetterCap = false;\n p += char.toUpperCase();\n return;\n }\n if (char === '-') {\n nextLetterCap = true;\n return;\n }\n p += char;\n });\n return p;\n };\n component.hyphenateProperty = function hyphenateProperty(prop, cust) {\n var p = '';\n Array.prototype.forEach.call(prop, function (char) {\n if (char === char.toUpperCase()) {\n p += '-' + char.toLowerCase();\n return;\n }\n p += char;\n });\n return (cust ? '--cdg-' : '') + p;\n };\n function getDefaultItem(base, item) {\n var i = {},\n r;\n defaults(i);\n r = i.defaults[base].filter(function (i) {\n return (\n i[0].toLowerCase() === item.toLowerCase() ||\n component.hyphenateProperty(i[0]) === item.toLowerCase() ||\n component.hyphenateProperty(i[0], true) === item.toLowerCase()\n );\n })[0];\n return r;\n }\n component.applyComponentStyle = function (supressChangeAndDrawEvents, intf) {\n if (!intf.isComponent) {\n return;\n }\n var cStyle = window.getComputedStyle(\n intf.tagName === 'CANVAS-DATAGRID' ? intf : intf.canvas,\n null,\n ),\n defs = {};\n intf.computedStyle = cStyle;\n defaults(defs);\n defs = defs.defaults.styles;\n defs.forEach(function (def) {\n var val;\n val = cStyle.getPropertyValue(component.hyphenateProperty(def[0], true));\n if (val === '') {\n val = cStyle.getPropertyValue(\n component.hyphenateProperty(def[0], false),\n );\n }\n if (val !== '' && typeof val === 'string') {\n intf.setStyleProperty(\n def[0],\n typeMap[typeof def[1]](\n val.replace(/^\\s+/, '').replace(/\\s+$/, ''),\n def[1],\n ),\n true,\n );\n }\n });\n if (!supressChangeAndDrawEvents && intf.dispatchEvent) {\n requestAnimationFrame(function () {\n intf.resize(true);\n });\n intf.dispatchEvent('stylechanged', intf.style);\n }\n };\n typeMap = {\n data: function (strData) {\n try {\n return JSON.parse(strData);\n } catch (e) {\n throw new Error('Cannot read JSON data in canvas-datagrid data.');\n }\n },\n schema: function (strSchema) {\n try {\n return JSON.parse(strSchema);\n } catch (e) {\n throw new Error(\n 'Cannot read JSON data in canvas-datagrid schema attribute.',\n );\n }\n },\n number: function (strNum, def) {\n var n = parseInt(strNum, 10);\n return isNaN(n) ? def : n;\n },\n boolean: function (strBool) {\n return /true/i.test(strBool);\n },\n string: function (str) {\n return str;\n },\n };\n component.getObservableAttributes = function () {\n var i = {},\n attrs = ['data', 'schema', 'style', 'className', 'name'];\n defaults(i);\n i.defaults.attributes.forEach(function (attr) {\n attrs.push(attr[0].toLowerCase());\n });\n return attrs;\n };\n component.disconnectedCallback = function () {\n this.connected = false;\n };\n component.connectedCallback = function () {\n var intf = this;\n intf.parentDOMNode.innerHTML = '';\n intf.parentDOMNode.appendChild(intf.canvas);\n intf.connected = true;\n component.observe(intf);\n component.applyComponentStyle(true, intf);\n intf.resize(true);\n };\n component.adoptedCallback = function () {\n this.resize();\n };\n component.attributeChangedCallback = function (attrName, oldVal, newVal) {\n var tfn,\n intf = this,\n def;\n if (attrName === 'style') {\n component.applyComponentStyle(false, intf);\n return;\n }\n if (attrName === 'data') {\n if (intf.dataType === 'application/x-canvas-datagrid') {\n intf.dataType = 'application/json+x-canvas-datagrid';\n }\n intf.data = newVal;\n return;\n }\n if (attrName === 'schema') {\n intf.schema = typeMap.schema(newVal);\n return;\n }\n if (attrName === 'name') {\n intf.name = newVal;\n return;\n }\n if (attrName === 'class' || attrName === 'className') {\n return;\n }\n def = getDefaultItem('attributes', attrName);\n if (def) {\n tfn = typeMap[typeof def[1]];\n intf.attributes[def[0]] = tfn(newVal);\n return;\n }\n if (/^on/.test(attrName)) {\n intf.addEventListener('on' + attrName, Function('e', newVal));\n }\n return;\n };\n component.observe = function (intf) {\n var observer;\n if (!window.MutationObserver) {\n return;\n }\n intf.applyComponentStyle = function () {\n component.applyComponentStyle(false, intf);\n intf.resize();\n };\n /**\n * Applies the computed css styles to the grid. In some browsers, changing directives in attached style sheets does not automatically update the styles in this component. It is necessary to call this method to update in these cases.\n * @memberof canvasDatagrid\n * @name applyComponentStyle\n * @method\n */\n observer = new window.MutationObserver(function (mutations) {\n var checkInnerHTML, checkStyle;\n Array.prototype.forEach.call(mutations, function (mutation) {\n if (\n mutation.attributeName === 'class' ||\n mutation.attributeName === 'style'\n ) {\n checkStyle = true;\n return;\n }\n if (mutation.target.nodeName === 'STYLE') {\n checkStyle = true;\n return;\n }\n if (\n mutation.target.parentNode &&\n mutation.target.parentNode.nodeName === 'STYLE'\n ) {\n checkStyle = true;\n return;\n }\n if (\n mutation.target === intf &&\n (mutation.addedNodes.length > 0 || mutation.type === 'characterData')\n ) {\n checkInnerHTML = true;\n }\n });\n if (checkStyle) {\n intf.applyComponentStyle(false, intf);\n }\n if (checkInnerHTML) {\n if (intf.dataType === 'application/x-canvas-datagrid') {\n intf.dataType = 'application/json+x-canvas-datagrid';\n }\n intf.data = intf.innerHTML;\n }\n });\n observer.observe(intf, {\n characterData: true,\n childList: true,\n attributes: true,\n subtree: true,\n });\n Array.prototype.forEach.call(\n document.querySelectorAll('style'),\n function (el) {\n observer.observe(el, {\n characterData: true,\n childList: true,\n attributes: true,\n subtree: true,\n });\n },\n );\n };\n return component;\n}\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false, Event: false*/\n'use strict';\n\nexport default function (self) {\n var zIndexTop, hoverScrollTimeout, autoCompleteContext;\n function applyContextItemStyle(contextItemContainer) {\n self.createInlineStyle(\n contextItemContainer,\n 'canvas-datagrid-context-menu-item' + (self.mobile ? '-mobile' : ''),\n );\n contextItemContainer.addEventListener('mouseover', function () {\n self.createInlineStyle(\n contextItemContainer,\n 'canvas-datagrid-context-menu-item:hover',\n );\n });\n contextItemContainer.addEventListener('mouseout', function () {\n self.createInlineStyle(\n contextItemContainer,\n 'canvas-datagrid-context-menu-item',\n );\n });\n }\n function createContextMenu(ev, pos, items, parentContextMenu) {\n var container = document.createElement('div'),\n upArrow = document.createElement('div'),\n downArrow = document.createElement('div'),\n children = [],\n selectedIndex = -1,\n intf = {},\n rect;\n if (!Array.isArray(items)) {\n throw new Error('createContextMenu expects an array.');\n }\n function createItems() {\n items.forEach(function (item) {\n var contextItemContainer = document.createElement('div'),\n childMenuArrow;\n function removeChildContext(e) {\n if (\n e.relatedTarget === container ||\n item.contextMenu.container === e.relatedTarget ||\n childMenuArrow === e.relatedTarget ||\n contextItemContainer === e.relatedTarget ||\n item.contextMenu.container.contains(e.relatedTarget)\n ) {\n return;\n }\n item.contextMenu.dispose();\n children.splice(children.indexOf(item.contextMenu), 1);\n item.contextMenu = undefined;\n contextItemContainer.removeEventListener(\n 'mouseout',\n removeChildContext,\n );\n container.removeEventListener('mouseout', removeChildContext);\n contextItemContainer.setAttribute('contextOpen', '0');\n contextItemContainer.setAttribute('opening', '0');\n }\n function contextAddCallback(items) {\n // check yet again if the user hasn't moved off\n if (\n contextItemContainer.getAttribute('opening') !== '1' ||\n contextItemContainer.getAttribute('contextOpen') === '1'\n ) {\n return;\n }\n var cPos = contextItemContainer.getBoundingClientRect();\n cPos = {\n left:\n cPos.left +\n self.style.childContextMenuMarginLeft +\n container.offsetWidth,\n top: cPos.top + self.style.childContextMenuMarginTop,\n bottom: cPos.bottom,\n right: cPos.right,\n };\n item.contextMenu = createContextMenu(ev, cPos, items, intf);\n contextItemContainer.setAttribute('contextOpen', '1');\n contextItemContainer.addEventListener('mouseout', removeChildContext);\n container.addEventListener('mouseout', removeChildContext);\n children.push(item.contextMenu);\n }\n function createChildContext() {\n var i;\n if (contextItemContainer.getAttribute('contextOpen') === '1') {\n return;\n }\n contextItemContainer.setAttribute('opening', '1');\n if (typeof item.items === 'function') {\n i = item.items.apply(intf, [\n function (items) {\n contextAddCallback(items);\n },\n ]);\n if (i !== undefined && Array.isArray(i)) {\n contextAddCallback(i);\n }\n return;\n }\n contextAddCallback(item.items);\n }\n function addItem(item) {\n function addContent(content) {\n if (content === null) {\n return;\n }\n if (typeof content === 'function') {\n return addContent(content(ev));\n }\n if (typeof content === 'object') {\n contextItemContainer.appendChild(content);\n return;\n }\n applyContextItemStyle(contextItemContainer);\n contextItemContainer.innerHTML = content;\n return;\n }\n addContent(item.title);\n item.contextItemContainer = contextItemContainer;\n if (\n (item.items && item.items.length > 0) ||\n typeof item.items === 'function'\n ) {\n childMenuArrow = document.createElement('div');\n self.createInlineStyle(\n childMenuArrow,\n 'canvas-datagrid-context-child-arrow',\n );\n childMenuArrow.innerHTML = self.style.childContextMenuArrowHTML;\n contextItemContainer.appendChild(childMenuArrow);\n contextItemContainer.addEventListener(\n 'mouseover',\n createChildContext,\n );\n contextItemContainer.addEventListener('mouseout', function () {\n contextItemContainer.setAttribute('opening', '0');\n });\n }\n if (item.click) {\n contextItemContainer.addEventListener('click', function (ev) {\n item.click.apply(self, [ev]);\n });\n }\n }\n addItem(item);\n container.appendChild(contextItemContainer);\n });\n }\n function clickIndex(idx) {\n items[idx].contextItemContainer.dispatchEvent(new Event('click'));\n }\n function checkArrowVisibility() {\n if (container.scrollTop > 0) {\n self.parentDOMNode.appendChild(upArrow);\n } else if (upArrow.parentNode) {\n upArrow.parentNode.removeChild(upArrow);\n }\n if (\n container.scrollTop >=\n container.scrollHeight - container.offsetHeight &&\n downArrow.parentNode\n ) {\n downArrow.parentNode.removeChild(downArrow);\n } else if (\n container.scrollHeight - container.offsetHeight > 0 &&\n !(\n container.scrollTop >=\n container.scrollHeight - container.offsetHeight\n )\n ) {\n self.parentDOMNode.appendChild(downArrow);\n }\n }\n function fade(element) {\n var opacity = 1;\n var timer = setInterval(function () {\n if (opacity <= 0.1) {\n clearInterval(timer);\n element.style.display = 'none';\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n element.style.opacity = opacity;\n element.style.filter = 'alpha(opacity=' + opacity * 100 + ')';\n opacity -= opacity * 0.1;\n }, self.attributes.animationDurationHideContextMenu * 0.1);\n }\n function unfade(element) {\n var opacity = 0.1;\n element.style.display = 'block';\n var timer = setInterval(function () {\n if (opacity >= 1) {\n clearInterval(timer);\n }\n element.style.opacity = opacity;\n element.style.filter = 'alpha(opacity=' + opacity * 100 + ')';\n opacity += opacity * 0.1;\n }, self.attributes.animationDurationShowContextMenu * 0.1);\n }\n function startHoverScroll(type) {\n return function t() {\n var a = self.attributes.contextHoverScrollAmount;\n if (type === 'up' && container.scrollTop === 0) {\n return;\n }\n if (type === 'down' && container.scrollTop === container.scrollHeight) {\n return;\n }\n container.scrollTop += type === 'up' ? -a : a;\n hoverScrollTimeout = setTimeout(\n t,\n self.attributes.contextHoverScrollRateMs,\n type,\n );\n };\n }\n function endHoverScroll(type) {\n return function () {\n clearTimeout(hoverScrollTimeout);\n };\n }\n function init() {\n var loc = {},\n s = self.scrollOffset(self.canvas);\n if (zIndexTop === undefined) {\n zIndexTop = self.style.contextMenuZIndex;\n }\n createItems();\n self.createInlineStyle(\n container,\n 'canvas-datagrid-context-menu' + (self.mobile ? '-mobile' : ''),\n );\n loc.x = pos.left - s.left;\n loc.y = pos.top - s.top;\n loc.height = 0;\n zIndexTop += 1;\n container.style.opacity = 0;\n container.style.position = 'absolute';\n upArrow.style.color = self.style.contextMenuArrowColor;\n downArrow.style.color = self.style.contextMenuArrowColor;\n [upArrow, downArrow].forEach(function (el) {\n el.style.textAlign = 'center';\n el.style.position = 'absolute';\n el.style.zIndex = zIndexTop + 1;\n });\n container.style.zIndex = zIndexTop;\n if (parentContextMenu && parentContextMenu.inputDropdown) {\n container.style.maxHeight =\n window.innerHeight -\n loc.y -\n self.style.autocompleteBottomMargin +\n 'px';\n container.style.minWidth = pos.width + 'px';\n loc.y += pos.height;\n }\n if (self.mobile) {\n container.style.width = pos.width + 'px';\n }\n container.style.left = loc.x + 'px';\n container.style.top = loc.y + 'px';\n container.addEventListener('scroll', checkArrowVisibility);\n container.addEventListener('wheel', function (e) {\n if (self.hasFocus) {\n container.scrollTop += e.deltaY;\n container.scrollLeft += e.deltaX;\n }\n checkArrowVisibility();\n });\n upArrow.innerHTML = self.style.contextMenuArrowUpHTML;\n downArrow.innerHTML = self.style.contextMenuArrowDownHTML;\n container.appendChild(upArrow);\n document.body.appendChild(downArrow);\n document.body.appendChild(container);\n unfade(container);\n rect = container.getBoundingClientRect();\n // TODO: fix !(parentContextMenu && parentContextMenu.inputDropdown) state (autocomplete)\n if (rect.bottom > window.innerHeight) {\n if (!(parentContextMenu && parentContextMenu.inputDropdown)) {\n loc.y -=\n rect.bottom +\n self.style.contextMenuWindowMargin -\n window.innerHeight;\n }\n if (loc.y < 0) {\n loc.y = self.style.contextMenuWindowMargin;\n }\n if (\n container.offsetHeight >\n window.innerHeight - self.style.contextMenuWindowMargin\n ) {\n container.style.height =\n window.innerHeight - self.style.contextMenuWindowMargin * 2 + 'px';\n }\n }\n if (rect.right > window.innerWidth) {\n loc.x -=\n rect.right - window.innerWidth + self.style.contextMenuWindowMargin;\n }\n if (loc.x < 0) {\n loc.x = self.style.contextMenuWindowMargin;\n }\n if (loc.y < 0) {\n loc.y = self.style.contextMenuWindowMargin;\n }\n container.style.left = loc.x + 'px';\n container.style.top = loc.y + 'px';\n rect = container.getBoundingClientRect();\n upArrow.style.top = rect.top + 'px';\n downArrow.style.top =\n rect.top + rect.height - downArrow.offsetHeight + 'px';\n upArrow.style.left = rect.left + 'px';\n downArrow.style.left = rect.left + 'px';\n downArrow.style.width = container.offsetWidth + 'px';\n upArrow.style.width = container.offsetWidth + 'px';\n downArrow.addEventListener('mouseover', startHoverScroll('down'));\n downArrow.addEventListener('mouseout', endHoverScroll('down'));\n upArrow.addEventListener('mouseover', startHoverScroll('up'));\n upArrow.addEventListener('mouseout', endHoverScroll('up'));\n checkArrowVisibility();\n }\n intf.parentGrid = self.intf;\n intf.parentContextMenu = parentContextMenu;\n intf.container = container;\n init();\n intf.clickIndex = clickIndex;\n intf.rect = rect;\n intf.items = items;\n intf.upArrow = upArrow;\n intf.downArrow = downArrow;\n intf.dispose = function () {\n clearTimeout(hoverScrollTimeout);\n children.forEach(function (c) {\n c.dispose();\n });\n [downArrow, upArrow, container].forEach(function (el) {\n fade(el);\n });\n };\n Object.defineProperty(intf, 'selectedIndex', {\n get: function () {\n return selectedIndex;\n },\n set: function (value) {\n if (typeof value !== 'number' || isNaN(value || !isFinite(value))) {\n throw new Error('Context menu selected index must be a sane number.');\n }\n selectedIndex = value;\n if (selectedIndex > items.length - 1) {\n selectedIndex = items.length - 1;\n }\n if (selectedIndex < 0) {\n selectedIndex = 0;\n }\n items.forEach(function (item, index) {\n if (index === selectedIndex) {\n return self.createInlineStyle(\n item.contextItemContainer,\n 'canvas-datagrid-context-menu-item:hover',\n );\n }\n self.createInlineStyle(\n item.contextItemContainer,\n 'canvas-datagrid-context-menu-item',\n );\n });\n },\n });\n return intf;\n }\n function createFilterContextMenuItems(e) {\n var filterContainer = document.createElement('div'),\n filterLabel = document.createElement('div'),\n filterAutoCompleteButton = document.createElement('button'),\n filterInput = document.createElement('input'),\n n =\n e.cell && e.cell.header\n ? e.cell.header.title || e.cell.header.name\n : '',\n iRect;\n function checkRegExpErrorState() {\n filterInput.style.background = self.style.contextFilterInputBackground;\n filterInput.style.color = self.style.contextFilterInputColor;\n if (self.invalidFilterRegEx) {\n filterInput.style.background =\n self.style.contextFilterInvalidRegExpBackground;\n filterInput.style.color = self.style.contextFilterInvalidRegExpColor;\n }\n }\n function fillAutoComplete() {\n var count = 0;\n var items = {};\n var blanksItem = [];\n\n self.viewData.forEach(function (row) {\n var cellValue =\n row[e.cell.header.name] == null\n ? row[e.cell.header.name]\n : String(row[e.cell.header.name]).trim();\n var value = self.blankValues.includes(cellValue)\n ? self.attributes.blanksText\n : cellValue;\n\n if (items[value] || count > self.attributes.maxAutoCompleteItems) {\n return;\n }\n count += 1;\n items[value] = {\n title: self.formatters[e.cell.header.type || 'string']({\n cell: { value: value },\n }),\n click: function (e) {\n filterInput.value = value;\n e.stopPropagation();\n filterInput.dispatchEvent(new Event('keyup'));\n self.disposeAutocomplete();\n return;\n },\n };\n });\n\n if (Object.keys(items).indexOf(self.attributes.blanksText) !== -1) {\n blanksItem.push(items[self.attributes.blanksText]);\n delete items[self.attributes.blanksText];\n }\n\n return blanksItem.concat(\n Object.keys(items).map(function (key) {\n return items[key];\n }),\n );\n }\n\n function createAutoCompleteContext(ev) {\n if (ev && ['ArrowDown', 'ArrowUp', 'Enter', 'Tab'].includes(ev.key)) {\n return;\n }\n\n var autoCompleteItems = fillAutoComplete();\n\n iRect = filterInput.getBoundingClientRect();\n if (autoCompleteContext) {\n autoCompleteContext.dispose();\n autoCompleteContext = undefined;\n }\n autoCompleteContext = createContextMenu(\n e,\n {\n left: iRect.left,\n top: iRect.top,\n right: iRect.right,\n bottom: iRect.bottom,\n height: iRect.height,\n width: iRect.width,\n },\n autoCompleteItems,\n { inputDropdown: true },\n );\n autoCompleteContext.selectedIndex = 0;\n }\n self.createInlineStyle(filterLabel, 'canvas-datagrid-context-menu-label');\n self.createInlineStyle(\n filterAutoCompleteButton,\n 'canvas-datagrid-context-menu-filter-button',\n );\n self.createInlineStyle(\n filterInput,\n 'canvas-datagrid-context-menu-filter-input',\n );\n checkRegExpErrorState();\n filterInput.onclick = self.disposeAutocomplete;\n filterInput.addEventListener('keydown', function (e) {\n if (e.key === 'ArrowDown') {\n autoCompleteContext.selectedIndex += 1;\n }\n\n if (e.key === 'ArrowUp') {\n autoCompleteContext.selectedIndex -= 1;\n }\n\n if (e.key === 'Enter') {\n autoCompleteContext.clickIndex(autoCompleteContext.selectedIndex);\n self.disposeContextMenu();\n }\n\n if (e.key === 'Tab') {\n autoCompleteContext.clickIndex(autoCompleteContext.selectedIndex);\n e.preventDefault();\n }\n\n if (e.key === 'Escape') {\n self.disposeContextMenu();\n }\n });\n filterInput.addEventListener('keyup', function () {\n self.setFilter(e.cell.header.name, filterInput.value);\n });\n filterInput.addEventListener('keyup', createAutoCompleteContext);\n ['focus', 'blur', 'keydown', 'keyup', 'change'].forEach(function (en) {\n filterInput.addEventListener(en, checkRegExpErrorState);\n });\n filterInput.value = e.cell.header\n ? self.columnFilters[e.cell.header.name] || ''\n : '';\n filterLabel.innerHTML = self.attributes.filterOptionText.replace(/%s/g, n);\n filterAutoCompleteButton.onclick = function () {\n if (autoCompleteContext) {\n return self.disposeAutocomplete();\n }\n createAutoCompleteContext();\n };\n filterAutoCompleteButton.innerHTML = self.style.contextFilterButtonHTML;\n filterContainer.addEventListener('click', function (e) {\n return e.stopPropagation();\n });\n filterContainer.appendChild(filterLabel);\n filterContainer.appendChild(filterInput);\n filterContainer.appendChild(filterAutoCompleteButton);\n e.items.push({\n title: filterContainer,\n });\n if (Object.keys(self.columnFilters).length) {\n Object.keys(self.columnFilters).forEach(function (cf) {\n var h = self.getHeaderByName(cf);\n e.items.push({\n title: self.attributes.removeFilterOptionText.replace(\n /%s/g,\n h.title || h.name,\n ),\n click: function removeFilterClick(e) {\n e.preventDefault();\n self.setFilter(cf, '');\n self.controlInput.focus();\n },\n });\n });\n }\n }\n function addDefaultContextMenuItem(e) {\n var isNormalCell =\n !(\n e.cell.isBackground ||\n e.cell.isColumnHeaderCellCap ||\n e.cell.isScrollBar ||\n e.cell.isCorner ||\n e.cell.isRowHeader\n ) && e.cell.header;\n if (self.attributes.showFilter && isNormalCell) {\n createFilterContextMenuItems(e);\n }\n if (\n self.attributes.showCopy &&\n self.selections.reduce(function (p, r) {\n return p + r.length;\n }, 0) > 0\n ) {\n e.items.push({\n title: self.attributes.copyText,\n click: function () {\n document.execCommand('copy');\n self.disposeContextMenu();\n self.controlInput.focus();\n },\n });\n }\n if (self.attributes.showPaste && self.clipBoardData) {\n e.items.push({\n title: self.attributes.pasteText,\n click: function () {\n self.paste(self.clipBoardData, e.cell.columnIndex, e.cell.rowIndex);\n self.draw();\n },\n });\n }\n if (self.attributes.showColumnSelector) {\n e.items.push({\n title: self.attributes.columnSelectorText,\n items: function () {\n var d = [];\n self.getSchema().forEach(function (column) {\n function toggleColumnVisibility(e) {\n column.hidden = !column.hidden;\n self.dispatchEvent('togglecolumn', {\n column: column,\n hidden: column.hidden,\n });\n e.preventDefault();\n self.stopPropagation(e);\n self.disposeContextMenu();\n self.resize(true);\n self.setStorageData();\n }\n var el = document.createElement('div');\n applyContextItemStyle(el);\n el.addEventListener('touchstart', toggleColumnVisibility);\n el.addEventListener('click', toggleColumnVisibility);\n el.innerHTML =\n (column.hidden\n ? self.attributes.columnSelectorHiddenText\n : self.attributes.columnSelectorVisibleText) +\n (column.title || column.name);\n d.push({\n title: el,\n });\n });\n return d;\n },\n });\n if (e.cell && e.cell.header && e.cell.columnIndex > -1) {\n e.items.push({\n title: self.attributes.hideColumnText.replace(\n /%s/gi,\n e.cell.header.title || e.cell.header.name,\n ),\n click: function (ev) {\n self.getSchema()[e.cell.columnIndex].hidden = true;\n ev.preventDefault();\n self.stopPropagation(ev);\n self.disposeContextMenu();\n self.setStorageData();\n setTimeout(function () {\n self.resize(true);\n }, 10);\n },\n });\n }\n }\n if (\n self.attributes.saveAppearance &&\n self.attributes.showClearSettingsOption &&\n (Object.keys(self.sizes.rows).length > 0 ||\n Object.keys(self.sizes.columns).length > 0)\n ) {\n e.items.push({\n title: self.attributes.clearSettingsOptionText,\n click: function (e) {\n e.preventDefault();\n self.sizes.rows = {};\n self.sizes.columns = {};\n self.createRowOrders();\n self.createColumnOrders();\n self.storedSettings = undefined;\n self.dispatchEvent('resizecolumn', {\n columnWidth: self.style.cellWidth,\n });\n self.dispatchEvent('resizerow', {\n cellHeight: self.style.cellHeight,\n });\n self.setStorageData();\n self.resize(true);\n self.disposeContextMenu();\n self.controlInput.focus();\n },\n });\n }\n if (\n self.attributes.allowSorting &&\n self.attributes.showOrderByOption &&\n isNormalCell\n ) {\n e.items.push({\n title: self.attributes.showOrderByOptionTextAsc.replace(\n '%s',\n e.cell.header.title || e.cell.header.name,\n ),\n click: function (ev) {\n ev.preventDefault();\n self.order(e.cell.header.name, 'asc');\n self.controlInput.focus();\n },\n });\n e.items.push({\n title: self.attributes.showOrderByOptionTextDesc.replace(\n '%s',\n e.cell.header.title || e.cell.header.name,\n ),\n click: function (ev) {\n ev.preventDefault();\n self.order(e.cell.header.name, 'desc');\n self.disposeContextMenu();\n self.controlInput.focus();\n },\n });\n }\n }\n self.disposeAutocomplete = function () {\n if (autoCompleteContext) {\n autoCompleteContext.dispose();\n autoCompleteContext = undefined;\n }\n };\n self.disposeContextMenu = function (event) {\n document.removeEventListener('click', self.disposeContextMenu);\n zIndexTop = self.style.contextMenuZIndex;\n self.disposeAutocomplete();\n if (self.contextMenu) {\n self.contextMenu.dispose();\n }\n self.contextMenu = undefined;\n if (event) {\n self.canvas.focus();\n self.mousedown(event);\n self.mouseup(event);\n }\n };\n self.contextmenuEvent = function (e, overridePos) {\n if (!self.hasFocus && e.target !== self.canvas) {\n return;\n }\n function createDisposeEvent() {\n requestAnimationFrame(function () {\n document.addEventListener('click', self.disposeContextMenu);\n document.removeEventListener('mouseup', createDisposeEvent);\n });\n }\n var contextPosition,\n items = [],\n pos = overridePos || self.getLayerPos(e),\n ev = {\n NativeEvent: e,\n cell: self.getCellAt(pos.x, pos.y),\n items: items,\n };\n if (!ev.cell.isGrid) {\n addDefaultContextMenuItem(ev);\n }\n if (e.type !== 'mousedown' && self.dispatchEvent('contextmenu', ev)) {\n return;\n }\n if (!ev.cell.isGrid) {\n if (self.contextMenu) {\n self.disposeContextMenu();\n }\n contextPosition = {\n left:\n pos.x +\n pos.rect.left +\n self.style.contextMenuMarginLeft +\n self.canvasOffsetLeft,\n top:\n pos.y +\n pos.rect.top +\n self.style.contextMenuMarginTop +\n self.canvasOffsetTop,\n right: ev.cell.width + ev.cell.x + pos.rect.left,\n bottom: ev.cell.height + ev.cell.y + pos.rect.top,\n height: ev.cell.height,\n width: ev.cell.width,\n };\n if (self.mobile) {\n contextPosition.left = self.style.mobileContextMenuMargin + 'px';\n contextPosition.width =\n self.width - self.style.mobileContextMenuMargin * 2 + 'px';\n }\n if (e.type == 'mousedown') {\n contextPosition.top += self.style.filterButtonMenuOffsetTop;\n }\n self.contextMenu = createContextMenu(ev, contextPosition, items);\n if (e.type == 'mousedown') {\n document.addEventListener('mouseup', createDisposeEvent);\n } else {\n createDisposeEvent();\n }\n e.preventDefault();\n }\n };\n return;\n}\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n\n'use strict';\nexport default function (self) {\n self.defaults = {\n attributes: [\n ['allowColumnReordering', true],\n ['allowColumnResize', true],\n ['allowColumnResizeFromCell', false],\n ['allowFreezingRows', false],\n ['allowFreezingColumns', false],\n ['allowMovingSelection', true],\n ['allowRowHeaderResize', true],\n ['allowRowReordering', false],\n ['allowRowResize', true],\n ['allowRowResizeFromCell', false],\n ['allowSorting', true],\n ['animationDurationShowContextMenu', 50],\n ['animationDurationHideContextMenu', 50],\n ['autoGenerateSchema', false],\n ['autoResizeColumns', false],\n ['autoResizeRows', false],\n ['autoScrollOnMousemove', false],\n ['autoScrollMargin', 5],\n ['blanksText', '(Blanks)'],\n ['borderDragBehavior', 'none'],\n ['borderResizeZone', 10],\n ['clearSettingsOptionText', 'Clear saved settings'],\n ['columnHeaderClickBehavior', 'sort'],\n ['columnSelectorHiddenText', ' '],\n ['columnSelectorText', 'Add/Remove columns'],\n ['columnSelectorVisibleText', '\\u2713'],\n ['contextHoverScrollAmount', 2],\n ['contextHoverScrollRateMs', 5],\n ['copyHeadersOnSelectAll', true],\n ['copyText', 'Copy'],\n ['debug', false],\n ['editable', true],\n ['ellipsisText', '...'],\n ['filterOptionText', 'Filter %s'],\n ['filterTextPrefix', '(filtered) '],\n ['filterFrozenRows', true],\n ['globalRowResize', false],\n ['hideColumnText', 'Hide %s'],\n ['hoverMode', 'cell'],\n ['keepFocusOnMouseOut', false],\n ['maxAutoCompleteItems', 200],\n ['multiLine', false],\n ['name', ''],\n ['pageUpDownOverlap', 1],\n ['pasteText', 'Paste'],\n ['persistantSelectionMode', false],\n ['removeFilterOptionText', 'Remove filter on %s'],\n ['reorderDeadZone', 3],\n ['resizeScrollZone', 20],\n ['rowGrabZoneSize', 5],\n ['saveAppearance', true],\n ['scrollAnimationPPSThreshold', 0.75],\n ['scrollPointerLock', false],\n ['scrollRepeatRate', 75],\n ['selectionFollowsActiveCell', false],\n ['selectionHandleBehavior', 'none'],\n ['selectionMode', 'cell'],\n ['selectionScrollIncrement', 20],\n ['selectionScrollZone', 20],\n ['showClearSettingsOption', true],\n ['showColumnHeaders', true],\n ['showColumnSelector', true],\n ['showCopy', false],\n ['showFilter', true],\n ['showFilterInCell', false],\n ['showNewRow', false],\n ['showOrderByOption', true],\n ['showOrderByOptionTextAsc', 'Order by %s ascending'],\n ['showOrderByOptionTextDesc', 'Order by %s descending'],\n ['showPaste', false],\n ['showPerformance', false],\n ['showRowHeaders', true],\n ['showRowNumbers', true],\n ['showRowNumberGaps', true],\n ['singleSelectionMode', false],\n ['snapToRow', false],\n ['sortFrozenRows', true],\n ['touchContextMenuTimeMs', 800],\n ['touchDeadZone', 3],\n ['touchEasingMethod', 'easeOutQuad'],\n ['touchReleaseAcceleration', 1000],\n ['touchReleaseAnimationDurationMs', 2000],\n ['touchScrollZone', 20],\n ['touchSelectHandleZone', 20],\n ['touchZoomSensitivity', 0.005],\n ['touchZoomMin', 0.5],\n ['touchZoomMax', 1.75],\n ['maxPixelRatio', 2],\n ['tree', false],\n ['treeHorizontalScroll', false],\n ],\n styles: [\n ['activeCellBackgroundColor', 'rgba(255, 255, 255, 1)'],\n ['activeCellBorderColor', 'rgba(110, 168, 255, 1)'],\n ['activeCellBorderWidth', 1],\n ['activeCellColor', 'rgba(0, 0, 0, 1)'],\n ['activeCellFont', '16px sans-serif'],\n ['activeCellHoverBackgroundColor', 'rgba(255, 255, 255, 1)'],\n ['activeCellHorizontalAlignment', 'left'],\n ['activeCellHoverColor', 'rgba(0, 0, 0, 1)'],\n ['activeCellOverlayBorderColor', 'rgba(66, 133, 244, 1)'],\n ['activeCellOverlayBorderWidth', 1],\n ['activeCellPaddingBottom', 5],\n ['activeCellPaddingLeft', 5],\n ['activeCellPaddingRight', 5],\n ['activeCellPaddingTop', 5],\n ['activeCellSelectedBackgroundColor', 'rgba(236, 243, 255, 1)'],\n ['activeCellSelectedColor', 'rgba(0, 0, 0, 1)'],\n ['activeCellVerticalAlignment', 'center'],\n ['activeColumnHeaderCellBackgroundColor', 'rgba(225, 225, 225, 1)'],\n ['activeColumnHeaderCellColor', 'rgba(0, 0, 0, 1)'],\n ['activeRowHeaderCellBackgroundColor', 'rgba(225, 225, 225, 1)'],\n ['activeRowHeaderCellColor', 'rgba(0, 0, 0, 1)'],\n ['autocompleteBottomMargin', 60],\n ['autosizeHeaderCellPadding', 8],\n ['autosizePadding', 5],\n ['buttonActiveBackgroundColor', 'rgba(255, 255, 255, 1)'],\n ['buttonActiveBorderColor', 'rgba(110, 168, 255, 1)'],\n ['buttonArrowColor', 'rgba(50, 50, 50, 1)'],\n ['buttonArrowDownHTML', '▼'],\n ['buttonZIndex', 10000],\n ['buttonBackgroundColor', 'rgba(255, 255, 255, 1)'],\n ['buttonBorderColor', 'rgba(172, 172, 172, 1)'],\n ['buttonHoverBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['buttonMenuWindowMargin', 30],\n ['buttonPadding', '3px'],\n ['cellAutoResizePadding', 13],\n ['cellBackgroundColor', 'rgba(255, 255, 255, 1)'],\n ['cellBorderColor', 'rgba(195, 199, 202, 1)'],\n ['cellBorderWidth', 1],\n ['cellColor', 'rgba(0, 0, 0, 1)'],\n ['cellFont', '16px sans-serif'],\n ['cellGridHeight', 250],\n ['cellHeight', 24],\n ['cellHeightWithChildGrid', 150],\n ['cellHorizontalAlignment', 'left'],\n ['cellHoverBackgroundColor', 'rgba(255, 255, 255, 1)'],\n ['cellHoverColor', 'rgba(0, 0, 0, 1)'],\n ['cellPaddingBottom', 5],\n ['cellPaddingLeft', 5],\n ['cellPaddingRight', 5],\n ['cellPaddingTop', 5],\n ['cellSelectedBackgroundColor', 'rgba(236, 243, 255, 1)'],\n ['cellSelectedColor', 'rgba(0, 0, 0, 1)'],\n ['cellVerticalAlignment', 'center'],\n ['cellWidth', 250],\n ['cellWidthWithChildGrid', 250],\n ['cellWhiteSpace', 'nowrap'],\n ['cellLineHeight', 1],\n ['cellLineSpacing', 3],\n ['childContextMenuArrowColor', 'rgba(43, 48, 43, 1)'],\n ['childContextMenuArrowHTML', '►'],\n ['childContextMenuMarginLeft', -11],\n ['childContextMenuMarginTop', -6],\n ['columnHeaderCellBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['columnHeaderCellBorderColor', 'rgba(172, 172, 172, 1)'],\n ['columnHeaderCellBorderWidth', 1],\n ['columnHeaderCellCapBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['columnHeaderCellCapBorderColor', 'rgba(172, 172, 172, 1)'],\n ['columnHeaderCellCapBorderWidth', 1],\n ['columnHeaderCellColor', 'rgba(50, 50, 50, 1)'],\n ['columnHeaderCellFont', '16px sans-serif'],\n ['columnHeaderCellHeight', 25],\n ['columnHeaderCellHorizontalAlignment', 'left'],\n ['columnHeaderCellHoverBackgroundColor', 'rgba(235, 235, 235, 1)'],\n ['columnHeaderCellHoverColor', 'rgba(0, 0, 0, 1)'],\n ['columnHeaderCellPaddingBottom', 5],\n ['columnHeaderCellPaddingLeft', 5],\n ['columnHeaderCellPaddingRight', 5],\n ['columnHeaderCellPaddingTop', 5],\n ['columnHeaderCellVerticalAlignment', 'center'],\n ['columnHeaderOrderByArrowBorderColor', 'rgba(195, 199, 202, 1)'],\n ['columnHeaderOrderByArrowBorderWidth', 1],\n ['columnHeaderOrderByArrowColor', 'rgba(155, 155, 155, 1)'],\n ['columnHeaderOrderByArrowHeight', 8],\n ['columnHeaderOrderByArrowMarginLeft', 0],\n ['columnHeaderOrderByArrowMarginRight', 5],\n ['columnHeaderOrderByArrowMarginTop', 6],\n ['columnHeaderOrderByArrowWidth', 13],\n ['contextFilterButtonBorder', 'solid 1px rgba(158, 163, 169, 1)'],\n ['contextFilterButtonBorderRadius', '3px'],\n ['contextFilterButtonHTML', '▼'],\n ['contextFilterInputBackground', 'rgba(255,255,255,1)'],\n ['contextFilterInputBorder', 'solid 1px rgba(158, 163, 169, 1)'],\n ['contextFilterInputBorderRadius', '0'],\n ['contextFilterInputColor', 'rgba(0,0,0,1)'],\n ['contextFilterInputFontFamily', 'sans-serif'],\n ['contextFilterInputFontSize', '14px'],\n ['contextFilterInvalidRegExpBackground', 'rgba(180, 6, 1, 1)'],\n ['contextFilterInvalidRegExpColor', 'rgba(255, 255, 255, 1)'],\n ['contextMenuArrowColor', 'rgba(43, 48, 43, 1)'],\n ['contextMenuArrowDownHTML', '▼'],\n ['contextMenuArrowUpHTML', '▲'],\n ['contextMenuBackground', 'rgba(240, 240, 240, 1)'],\n ['contextMenuBorder', 'solid 1px rgba(158, 163, 169, 1)'],\n ['contextMenuBorderRadius', '3px'],\n ['contextMenuChildArrowFontSize', '12px'],\n ['contextMenuColor', 'rgba(43, 48, 43, 1)'],\n ['contextMenuCursor', 'default'],\n ['contextMenuFilterButtonFontFamily', 'sans-serif'],\n ['contextMenuFilterButtonFontSize', '10px'],\n ['contextMenuFilterInvalidExpresion', 'rgba(237, 155, 156, 1)'],\n ['contextMenuFontFamily', 'sans-serif'],\n ['contextMenuFontSize', '16px'],\n ['contextMenuHoverBackground', 'rgba(182, 205, 250, 1)'],\n ['contextMenuHoverColor', 'rgba(43, 48, 153, 1)'],\n ['contextMenuItemBorderRadius', '3px'],\n ['contextMenuItemMargin', '2px'],\n ['contextMenuLabelDisplay', 'inline-block'],\n ['contextMenuLabelMargin', '0 3px 0 0'],\n ['contextMenuLabelMaxWidth', '700px'],\n ['contextMenuLabelMinWidth', '75px'],\n ['contextMenuMarginLeft', 3],\n ['contextMenuMarginTop', -3],\n ['contextMenuOpacity', '0.98'],\n ['contextMenuPadding', '2px'],\n ['contextMenuWindowMargin', 30],\n ['contextMenuZIndex', 10000],\n ['cornerCellBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['cornerCellBorderColor', 'rgba(202, 202, 202, 1)'],\n ['debugBackgroundColor', 'rgba(0, 0, 0, .0)'],\n ['debugColor', 'rgba(255, 15, 24, 1)'],\n ['debugEntitiesColor', 'rgba(76, 231, 239, 1.00)'],\n ['debugFont', '11px sans-serif'],\n ['debugPerfChartBackground', 'rgba(29, 25, 26, 1.00)'],\n ['debugPerfChartTextColor', 'rgba(255, 255, 255, 0.8)'],\n ['debugPerformanceColor', 'rgba(252, 255, 37, 1.00)'],\n ['debugScrollHeightColor', 'rgba(248, 33, 103, 1.00)'],\n ['debugScrollWidthColor', 'rgba(66, 255, 27, 1.00)'],\n ['debugTouchPPSXColor', 'rgba(246, 102, 24, 1.00)'],\n ['debugTouchPPSYColor', 'rgba(186, 0, 255, 1.00)'],\n ['display', 'inline-block'],\n ['editCellBackgroundColor', 'white'],\n ['editCellBorder', 'solid 1px rgba(110, 168, 255, 1)'],\n ['editCellBoxShadow', '0 2px 5px rgba(0,0,0,0.4)'],\n ['editCellColor', 'black'],\n ['editCellFontFamily', 'sans-serif'],\n ['editCellFontSize', '16px'],\n ['editCellPaddingLeft', 4],\n ['editCellZIndex', 10000],\n ['filterButtonActiveBackgroundColor', 'rgba(225, 225, 225, 1)'],\n ['filterButtonArrowBorderColor', 'rgba(195, 199, 202, 1)'],\n ['filterButtonArrowBorderWidth', 1],\n ['filterButtonArrowClickRadius', 5],\n ['filterButtonArrowColor', 'rgba(50, 50, 50, 1)'],\n ['filterButtonArrowHeight', 5],\n ['filterButtonArrowWidth', 8],\n ['filterButtonBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['filterButtonBorderColor', 'rgba(172, 172, 172, 1)'],\n ['filterButtonBorderRadius', 3],\n ['filterButtonHeight', 20],\n ['filterButtonHoverBackgroundColor', 'rgba(235, 235, 235, 1)'],\n ['filterButtonMenuOffsetTop', 10],\n ['filterButtonWidth', 20],\n ['frozenMarkerHoverColor', 'rgba(236, 243, 255, 1)'],\n ['frozenMarkerHoverBorderColor', 'rgba(110, 168, 255, 1)'],\n ['frozenMarkerActiveColor', 'rgba(236, 243, 255, 1)'],\n ['frozenMarkerActiveBorderColor', 'rgba(110, 168, 255, 1)'],\n ['frozenMarkerColor', 'rgba(222, 222, 222, 1)'],\n ['frozenMarkerBorderColor', 'rgba(168, 168, 168, 1)'],\n ['frozenMarkerBorderWidth', 1],\n ['frozenMarkerWidth', 2],\n ['gridBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['gridBorderCollapse', 'collapse'],\n ['gridBorderColor', 'rgba(202, 202, 202, 1)'],\n ['gridBorderWidth', 1],\n ['height', 'auto'],\n ['maxHeight', 'inherit'],\n ['maxWidth', 'inherit'],\n ['minColumnWidth', 45],\n ['minHeight', 'inherit'],\n ['minRowHeight', 24],\n ['minWidth', 'inherit'],\n ['mobileContextMenuMargin', 10],\n ['mobileEditInputHeight', 30],\n ['mobileEditFontFamily', 'sans-serif'],\n ['mobileEditFontSize', '16px'],\n ['moveOverlayBorderWidth', 1],\n ['moveOverlayBorderColor', 'rgba(66, 133, 244, 1)'],\n ['moveOverlayBorderSegments', '12, 7'],\n ['name', 'default'],\n ['overflowY', 'auto'],\n ['overflowX', 'auto'],\n ['reorderMarkerBackgroundColor', 'rgba(0, 0, 0, 0.1)'],\n ['reorderMarkerBorderColor', 'rgba(0, 0, 0, 0.2)'],\n ['reorderMarkerBorderWidth', 1.25],\n ['reorderMarkerIndexBorderColor', 'rgba(66, 133, 244, 1)'],\n ['reorderMarkerIndexBorderWidth', 2.75],\n ['rowHeaderCellBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['rowHeaderCellBorderColor', 'rgba(200, 200, 200, 1)'],\n ['rowHeaderCellBorderWidth', 1],\n ['rowHeaderCellColor', 'rgba(50, 50, 50, 1)'],\n ['rowHeaderCellFont', '16px sans-serif'],\n ['rowHeaderCellHeight', 25],\n ['rowHeaderCellHorizontalAlignment', 'left'],\n ['rowHeaderCellHoverBackgroundColor', 'rgba(235, 235, 235, 1)'],\n ['rowHeaderCellHoverColor', 'rgba(0, 0, 0, 1)'],\n ['rowHeaderCellPaddingBottom', 5],\n ['rowHeaderCellPaddingLeft', 5],\n ['rowHeaderCellPaddingRight', 5],\n ['rowHeaderCellPaddingTop', 5],\n ['rowHeaderCellRowNumberGapHeight', 5],\n ['rowHeaderCellRowNumberGapColor', 'rgba(50, 50, 50, 1)'],\n ['rowHeaderCellSelectedBackgroundColor', 'rgba(217, 217, 217, 1)'],\n ['rowHeaderCellSelectedColor', 'rgba(50, 50, 50, 1)'],\n ['rowHeaderCellVerticalAlignment', 'center'],\n ['rowHeaderCellWidth', 57],\n ['scrollBarActiveColor', 'rgba(125, 125, 125, 1)'],\n ['scrollBarBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['scrollBarBorderColor', 'rgba(202, 202, 202, 1)'],\n ['scrollBarBorderWidth', 0.5],\n ['scrollBarBoxBorderRadius', 4.125],\n ['scrollBarBoxColor', 'rgba(192, 192, 192, 1)'],\n ['scrollBarBoxMargin', 2],\n ['scrollBarBoxMinSize', 15],\n ['scrollBarBoxWidth', 8],\n ['scrollBarCornerBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['scrollBarCornerBorderColor', 'rgba(202, 202, 202, 1)'],\n ['scrollBarWidth', 11],\n ['selectionHandleBorderColor', 'rgba(255, 255, 255, 1)'],\n ['selectionHandleBorderWidth', 1.5],\n ['selectionHandleColor', 'rgba(66, 133, 244, 1)'],\n ['selectionHandleSize', 8],\n ['selectionHandleType', 'square'],\n ['selectionOverlayBorderColor', 'rgba(66, 133, 244, 1)'],\n ['selectionOverlayBorderWidth', 1],\n ['treeArrowBorderColor', 'rgba(195, 199, 202, 1)'],\n ['treeArrowBorderWidth', 1],\n ['treeArrowClickRadius', 5],\n ['treeArrowColor', 'rgba(155, 155, 155, 1)'],\n ['treeArrowHeight', 8],\n ['treeArrowMarginLeft', 0],\n ['treeArrowMarginRight', 5],\n ['treeArrowMarginTop', 6],\n ['treeArrowWidth', 13],\n ['treeGridHeight', 250],\n ['width', 'auto'],\n ],\n };\n}\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nexport default function (self) {\n self.getClippingRect = function (ele) {\n var boundingRect = self.position(self.parentNode),\n eleRect = self.position(ele),\n s = self.scrollOffset(self.canvas),\n clipRect = {\n x: 0,\n y: 0,\n h: 0,\n w: 0,\n },\n parentRect = {\n x: -Infinity,\n y: -Infinity,\n h: Infinity,\n w: Infinity,\n },\n columnHeaderCellHeight = self.getColumnHeaderCellHeight(),\n rowHeaderCellWidth = self.getRowHeaderCellWidth();\n boundingRect.top -= s.top;\n boundingRect.left -= s.left;\n eleRect.top -= s.top;\n eleRect.left -= s.left;\n clipRect.h =\n boundingRect.top +\n boundingRect.height -\n ele.offsetTop -\n self.style.scrollBarWidth;\n clipRect.w =\n boundingRect.left +\n boundingRect.width -\n ele.offsetLeft -\n self.style.scrollBarWidth;\n clipRect.x = boundingRect.left + eleRect.left * -1 + rowHeaderCellWidth;\n clipRect.y = boundingRect.top + eleRect.top * -1 + columnHeaderCellHeight;\n return {\n x: clipRect.x > parentRect.x ? clipRect.x : parentRect.x,\n y: clipRect.y > parentRect.y ? clipRect.y : parentRect.y,\n h: clipRect.h < parentRect.h ? clipRect.h : parentRect.h,\n w: clipRect.w < parentRect.w ? clipRect.w : parentRect.w,\n };\n };\n self.clipElement = function (ele) {\n var clipRect = self.getClippingRect(ele);\n if (clipRect.w < 0) {\n clipRect.w = 0;\n }\n if (clipRect.h < 0) {\n clipRect.h = 0;\n }\n ele.style.clip =\n 'rect(' +\n clipRect.y +\n 'px,' +\n clipRect.w +\n 'px,' +\n clipRect.h +\n 'px,' +\n clipRect.x +\n 'px' +\n ')';\n // INFO https://developer.mozilla.org/en-US/docs/Web/CSS/clip\n // clip has been \"deprecated\" for clipPath. Of course nothing but chrome\n // supports clip path, so we'll keep using clip until someday clipPath becomes\n // more widely support. The code below works correctly, but setting clipPath and clip\n // at the same time has undesirable results.\n // ele.style.clipPath = 'polygon('\n // + clipRect.x + 'px ' + clipRect.y + 'px,'\n // + clipRect.x + 'px ' + clipRect.h + 'px,'\n // + clipRect.w + 'px ' + clipRect.h + 'px,'\n // + clipRect.w + 'px ' + clipRect.y + 'px'\n // + ')';\n };\n self.scrollOffset = function (e) {\n var x = 0,\n y = 0,\n scrollingElement = document.scrollingElement || {\n scrollLeft: 0,\n scrollTop: 0,\n };\n while (\n e.parentNode &&\n e.nodeName !== 'CANVAS-DATAGRID' &&\n e !== self.intf\n ) {\n if (\n e.nodeType !== 'canvas-datagrid-tree' &&\n e.nodeType !== 'canvas-datagrid-cell'\n ) {\n x -= e.scrollLeft;\n y -= e.scrollTop;\n }\n e = e.parentNode;\n }\n return {\n left: x - scrollingElement.scrollLeft,\n top: y - scrollingElement.scrollTop,\n };\n };\n self.resizeEditInput = function () {\n if (self.input && self.input.editCell) {\n var pos = self.canvas.getBoundingClientRect(),\n s = self.scrollOffset(self.intf),\n bm = self.style.gridBorderCollapse === 'collapse' ? 1 : 2,\n borderWidth = self.style.cellBorderWidth * bm,\n cell = self.getVisibleCellByIndex(\n self.input.editCell.columnIndex,\n self.input.editCell.rowIndex,\n ) || { x: -100, y: -100, height: 0, width: 0 };\n if (self.mobile) {\n self.input.style.left = '0';\n self.input.style.top =\n self.height -\n self.style.mobileEditInputHeight -\n borderWidth -\n 1 +\n 'px';\n self.input.style.height = self.style.mobileEditInputHeight + 'px';\n self.input.style.width = self.width - borderWidth - 1 + 'px';\n return;\n }\n self.input.style.left =\n pos.left + cell.x + self.canvasOffsetLeft - s.left + 'px';\n self.input.style.top =\n pos.top +\n cell.y -\n self.style.cellBorderWidth +\n self.canvasOffsetTop -\n s.top +\n 'px';\n self.input.style.height = cell.height - borderWidth + 'px';\n self.input.style.width = cell.width - self.style.cellPaddingLeft + 'px';\n self.clipElement(self.input);\n }\n };\n self.position = function (e, ignoreScrollOffset) {\n var x = 0,\n y = 0,\n s = e,\n h,\n w;\n while (e.offsetParent && e.nodeName !== 'CANVAS-DATAGRID') {\n x += e.offsetLeft;\n y += e.offsetTop;\n h = e.offsetHeight;\n w = e.offsetWidth;\n e = e.offsetParent;\n }\n if (ignoreScrollOffset) {\n return { left: x, top: y, height: h, width: w };\n }\n e = s;\n s = self.scrollOffset(e);\n return { left: x + s.left, top: y + s.top, height: h, width: w };\n };\n self.getLayerPos = function (e) {\n var rect = self.canvas.getBoundingClientRect(),\n pos = {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n };\n if (self.isChildGrid) {\n pos.x -= self.canvasOffsetLeft;\n pos.y -= self.canvasOffsetTop;\n }\n return {\n x: pos.x,\n y: pos.y,\n rect: rect,\n };\n };\n /**\n * Ends editing, optionally aborting the edit.\n * @memberof canvasDatagrid\n * @name endEdit\n * @method\n * @param {boolean} abort When true, abort the edit.\n */\n self.endEdit = function (abort) {\n var cell = self.input.editCell,\n y = cell.rowIndex;\n function abortEdit() {\n abort = true;\n }\n if (\n self.dispatchEvent('beforeendedit', {\n cell: cell,\n newValue: self.input.value,\n oldValue: cell.value,\n abort: abortEdit,\n input: self.input,\n })\n ) {\n return false;\n }\n if (self.input.value !== cell.value && !abort) {\n self.changes[y] = self.changes[y] || {};\n self.changes[y][cell.header.name] = self.input.value;\n if (!cell.data) {\n self.originalData[cell.boundRowIndex] = {};\n cell.data = self.originalData[cell.boundRowIndex];\n }\n cell.data[cell.header.name] = self.input.value;\n if (y === self.viewData.length) {\n if (\n self.dispatchEvent('newrow', {\n value: self.input.value,\n defaultValue: cell.value,\n aborted: abort,\n cell: cell,\n input: self.input,\n })\n ) {\n return false;\n }\n self.addRow(cell.data);\n self.createNewRowData();\n }\n self.draw(true);\n }\n if (self.input.parentNode) {\n self.input.parentNode.removeChild(self.input);\n }\n self.intf.focus();\n self.dispatchEvent('endedit', {\n cell: cell,\n value: self.input.value,\n aborted: abort,\n input: self.input,\n });\n self.input = undefined;\n return true;\n };\n /**\n * Begins editing at cell x, row y.\n * @memberof canvasDatagrid\n * @name beginEditAt\n * @method\n * @param {number} x The column index of the cell to edit.\n * @param {number} y The row index of the cell to edit.\n * @param {boolean} inEnterMode If true, starting to type in cell will replace the\n * cell's previous value instead of appending, and using the arrow keys will allow\n * the user to navigate to adjacent cells instead of moving the text cursor around\n * (default is false, and means user is in 'edit' mode).\n */\n self.beginEditAt = function (x, y, NativeEvent, inEnterMode = false) {\n if (!self.attributes.editable) {\n return;\n }\n if (self.input) {\n self.endEdit();\n }\n var cell = self.getVisibleCellByIndex(x, y),\n s = self.getSchema(),\n adjacentCells,\n enumItems,\n enu,\n option,\n valueInEnum;\n if (!(cell && cell.header)) {\n return;\n }\n //HACK for IE10, does not like literal enum\n enu = cell.header['enum'];\n if (\n self.dispatchEvent('beforebeginedit', {\n cell: cell,\n NativeEvent: NativeEvent,\n })\n ) {\n return false;\n }\n self.scrollIntoView(x, y);\n self.setActiveCell(x, y);\n adjacentCells = self.getAdjacentCells();\n if (enu) {\n self.input = document.createElement('select');\n } else {\n self.input = document.createElement(\n self.attributes.multiLine ? 'textarea' : 'input',\n );\n }\n cell = self.getVisibleCellByIndex(x, y);\n //HACK on mobile devices sometimes edit can begin without the cell being in view, I don't know how.\n if (!cell) {\n return;\n }\n if (enu) {\n // add enums\n if (typeof enu === 'function') {\n enumItems = enu.apply(self.intf, [{ cell: cell }]);\n } else if (Array.isArray(enu)) {\n enumItems = enu;\n }\n enumItems.forEach(function (e) {\n var i = document.createElement('option'),\n val,\n title;\n if (Array.isArray(e)) {\n val = e[0];\n title = e[1];\n } else {\n val = e;\n title = e;\n }\n if (val === cell.value) {\n valueInEnum = true;\n }\n i.value = val;\n i.innerHTML = title;\n self.input.appendChild(i);\n });\n if (!valueInEnum) {\n option = document.createElement('option');\n option.value = cell.value;\n option.innerHTML = cell.value;\n self.input.appendChild(option);\n }\n self.input.addEventListener('change', function () {\n self.endEdit();\n self.draw(true);\n });\n }\n // if the user has not prevented the default action, append to the body\n if (\n !self.dispatchEvent('appendeditinput', { cell: cell, input: self.input })\n ) {\n document.body.appendChild(self.input);\n }\n self.createInlineStyle(\n self.input,\n self.mobile\n ? 'canvas-datagrid-edit-mobile-input'\n : 'canvas-datagrid-edit-input',\n );\n self.input.style.position = 'absolute';\n self.input.editCell = cell;\n self.resizeEditInput();\n self.input.style.zIndex = self.style.editCellZIndex;\n self.input.style.fontSize =\n parseInt(self.style.editCellFontSize, 10) * self.scale + 'px';\n\n var cellValueIsEmpty = [null, undefined].indexOf(cell.value) !== -1;\n var shouldClearCellValue = cellValueIsEmpty || inEnterMode;\n\n self.input.value = shouldClearCellValue ? '' : cell.value;\n self.input.focus();\n self.input.addEventListener('click', self.stopPropagation);\n self.input.addEventListener('dblclick', self.stopPropagation);\n self.input.addEventListener('mouseup', self.stopPropagation);\n self.input.addEventListener('mousedown', self.stopPropagation);\n self.input.addEventListener('keydown', function (e) {\n var nx = cell.columnIndex,\n ny = cell.rowIndex;\n\n if (e.key === 'Escape') {\n self.endEdit(true); // end edit and abort the value change\n self.draw(true);\n } else if (e.key === 'Enter' && self.attributes.multiLine && e.altKey) {\n self.input.value = self.input.value + '\\n';\n self.input.scrollTop = self.input.scrollHeight;\n } else if (e.key === 'Enter') {\n self.endEdit();\n\n // Move to cell in next or previous row\n var nextRowIndex = e.shiftKey\n ? Math.max(0, ny - 1)\n : Math.min(ny + 1, self.viewData.length - 1);\n\n if (nextRowIndex !== ny) {\n self.scrollIntoView(nx, nextRowIndex);\n self.setActiveCell(nx, nextRowIndex);\n }\n\n self.draw(true);\n } else if (\n ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(e.key) &&\n inEnterMode\n ) {\n switch (e.key) {\n case 'ArrowUp':\n ny = Math.max(0, ny - 1);\n break;\n case 'ArrowDown':\n ny = Math.min(ny + 1, self.viewData.length - 1);\n break;\n case 'ArrowLeft':\n nx = Math.max(nx - 1, 0);\n break;\n case 'ArrowRight':\n nx = adjacentCells.right;\n break;\n }\n\n self.endEdit();\n\n self.scrollIntoView(nx, ny);\n self.setActiveCell(nx, ny);\n\n self.draw(true);\n } else if (e.key === 'Tab') {\n e.preventDefault();\n if (!self.endEdit()) {\n return;\n }\n if (e.shiftKey) {\n nx = adjacentCells.left;\n } else {\n nx = adjacentCells.right;\n }\n if (adjacentCells.left === x && e.shiftKey) {\n nx = adjacentCells.last;\n ny -= 1;\n }\n if (adjacentCells.right === x && !e.shiftKey) {\n nx = adjacentCells.first;\n ny += 1;\n }\n if (ny < 0) {\n ny = self.viewData.length - 1;\n }\n if (ny > self.viewData.length - 1) {\n ny = 0;\n }\n self.scrollIntoView(nx, ny);\n self.beginEditAt(nx, ny, e);\n }\n });\n\n self.dispatchEvent('beginedit', { cell: cell, input: self.input });\n };\n self.createInlineStyle = function (el, className) {\n var css = {\n 'canvas-datagrid-button-wrapper': {\n display: 'inline-block',\n padding: self.style.buttonPadding,\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: self.style.buttonBorderColor,\n cursor: 'pointer',\n background: self.style.buttonBackgroundColor,\n userSelect: 'none',\n },\n 'canvas-datagrid-button-wrapper:hover': {\n borderColor: self.style.buttonBorderColor,\n background: self.style.buttonHoverBackgroundColor,\n },\n 'canvas-datagrid-button-wrapper:active': {\n borderColor: self.style.buttonActiveBorderColor,\n background: self.style.buttonActiveBackgroundColor,\n },\n 'canvas-datagrid-button-icon': {\n width: '18px',\n height: '18px',\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n 'canvas-datagrid-button-arrow': {\n display: 'inline-block',\n color: self.style.buttonArrowColor,\n fontSize: '9px',\n },\n 'canvas-datagrid-button-menu-item-mobile': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n color: 'inherit',\n background: 'inherit',\n margin: self.style.contextMenuItemMargin,\n borderRadius: self.style.contextMenuItemBorderRadius,\n verticalAlign: 'middle',\n },\n 'canvas-datagrid-button-menu-item': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n color: 'inherit',\n background: 'inherit',\n margin: self.style.contextMenuItemMargin,\n borderRadius: self.style.contextMenuItemBorderRadius,\n verticalAlign: 'middle',\n },\n 'canvas-datagrid-button-menu-item:hover': {\n background: self.style.contextMenuHoverBackground,\n color: self.style.contextMenuHoverColor,\n },\n 'canvas-datagrid-button-menu-label': {\n margin: self.style.contextMenuLabelMargin,\n display: self.style.contextMenuLabelDisplay,\n minWidth: self.style.contextMenuLabelMinWidth,\n maxWidth: self.style.contextMenuLabelMaxWidth,\n },\n 'canvas-datagrid-button-menu-mobile': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n border: self.style.contextMenuBorder,\n padding: self.style.contextMenuPadding,\n borderRadius: self.style.contextMenuBorderRadius,\n opacity: self.style.contextMenuOpacity,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n 'canvas-datagrid-button-menu': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n border: self.style.contextMenuBorder,\n padding: self.style.contextMenuPadding,\n borderRadius: self.style.contextMenuBorderRadius,\n opacity: self.style.contextMenuOpacity,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n cursor: self.style.contextMenuCursor,\n },\n 'canvas-datagrid-context-menu-filter-input': {\n height: '19px',\n verticalAlign: 'bottom',\n marginLeft: '2px',\n padding: '0',\n background: self.style.contextFilterInputBackground,\n color: self.style.contextFilterInputColor,\n border: self.style.contextFilterInputBorder,\n borderRadius: self.style.contextFilterInputBorderRadius,\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextFilterInputFontFamily,\n fontSize: self.style.contextFilterInputFontSize,\n },\n 'canvas-datagrid-context-menu-filter-button': {\n height: '19px',\n verticalAlign: 'bottom',\n marginLeft: '2px',\n padding: '0',\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n border: self.style.contextFilterButtonBorder,\n borderRadius: self.style.contextFilterButtonBorderRadius,\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFilterButtonFontFamily,\n fontSize: self.style.contextMenuFilterButtonFontSize,\n },\n 'canvas-datagrid-context-child-arrow': {\n cssFloat: 'right',\n color: self.style.childContextMenuArrowColor,\n fontSize: self.style.contextMenuChildArrowFontSize,\n fontFamily: self.style.contextMenuFontFamily,\n verticalAlign: 'middle',\n },\n 'canvas-datagrid-autocomplete': {\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n border: self.style.contextMenuBorder,\n padding: self.style.contextMenuPadding,\n borderRadius: self.style.contextMenuBorderRadius,\n opacity: self.style.contextMenuOpacity,\n position: 'absolute',\n zIndex: 9999,\n overflow: 'hidden',\n },\n 'canvas-datagrid-autocomplete-item': {\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n },\n 'canvas-datagrid-autocomplete-item:hover': {\n background: self.style.contextMenuHoverBackground,\n color: self.style.contextMenuHoverColor,\n },\n 'canvas-datagrid-canvas': {\n position: 'absolute',\n zIndex: '-1',\n },\n 'canvas-datagrid': {\n display: 'block',\n },\n 'canvas-datagrid-control-input': {\n position: 'fixed',\n top: '-5px',\n left: '-5px',\n border: 'none',\n opacity: '0',\n cursor: 'pointer',\n width: '1px',\n height: '1px',\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n },\n 'canvas-datagrid-edit-mobile-input': {\n boxSizing: 'content-box',\n outline: 'none',\n margin: '0',\n padding: '0 0 0 0',\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.mobileEditFontFamily,\n fontSize: self.style.mobileEditFontSize,\n border: self.style.editCellBorder,\n color: self.style.editCellColor,\n background: self.style.editCellBackgroundColor,\n appearance: 'none',\n webkitAppearance: 'none',\n mozAppearance: 'none',\n borderRadius: '0',\n },\n 'canvas-datagrid-edit-input': {\n boxSizing: 'content-box',\n outline: 'none',\n margin: '0',\n padding: '0 0 0 ' + self.style.editCellPaddingLeft + 'px',\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.editCellFontFamily,\n fontSize: self.style.editCellFontSize,\n boxShadow: self.style.editCellBoxShadow,\n border: self.style.editCellBorder,\n color: self.style.editCellColor,\n background: self.style.editCellBackgroundColor,\n appearance: 'none',\n webkitAppearance: 'none',\n mozAppearance: 'none',\n borderRadius: '0',\n },\n 'canvas-datagrid-context-menu-item-mobile': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n color: 'inherit',\n background: 'inherit',\n margin: self.style.contextMenuItemMargin,\n borderRadius: self.style.contextMenuItemBorderRadius,\n verticalAlign: 'middle',\n },\n 'canvas-datagrid-context-menu-item': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n color: 'inherit',\n background: 'inherit',\n margin: self.style.contextMenuItemMargin,\n borderRadius: self.style.contextMenuItemBorderRadius,\n verticalAlign: 'middle',\n },\n 'canvas-datagrid-context-menu-item:hover': {\n background: self.style.contextMenuHoverBackground,\n color: self.style.contextMenuHoverColor,\n },\n 'canvas-datagrid-context-menu-label': {\n margin: self.style.contextMenuLabelMargin,\n display: self.style.contextMenuLabelDisplay,\n minWidth: self.style.contextMenuLabelMinWidth,\n maxWidth: self.style.contextMenuLabelMaxWidth,\n },\n 'canvas-datagrid-context-menu-mobile': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n border: self.style.contextMenuBorder,\n padding: self.style.contextMenuPadding,\n borderRadius: self.style.contextMenuBorderRadius,\n opacity: self.style.contextMenuOpacity,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n 'canvas-datagrid-context-menu': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n border: self.style.contextMenuBorder,\n padding: self.style.contextMenuPadding,\n borderRadius: self.style.contextMenuBorderRadius,\n opacity: self.style.contextMenuOpacity,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n cursor: self.style.contextMenuCursor,\n },\n 'canvas-datagrid-invalid-search-regExp': {\n background: self.style.contextMenuFilterInvalidExpresion,\n },\n };\n if (css[className]) {\n Object.keys(css[className]).map(function (prop) {\n el.style[prop] = css[className][prop];\n });\n }\n return;\n };\n self.appendTo = function (e) {\n self.parentNode = e;\n self.setDom();\n };\n self.setDom = function () {\n if (self.isChildGrid) {\n self.parentGrid = self.parentNode.parentGrid;\n self.ctx = self.parentGrid.context;\n self.canvas = self.parentGrid.canvas;\n self.controlInput = self.parentGrid.controlInput;\n self.eventParent = self.canvas;\n } else {\n self.controlInput = self.controlInput || document.createElement('input');\n self.controlInput.onblur = self.intf.blur;\n self.createInlineStyle(\n self.controlInput,\n 'canvas-datagrid-control-input',\n );\n self.isChildGrid = false;\n self.parentDOMNode = self.parentNode;\n self.parentIsCanvas = /^canvas$/i.test(self.parentDOMNode.tagName);\n if (self.parentIsCanvas) {\n self.canvas = self.parentDOMNode;\n } else {\n self.canvas = document.createElement('canvas');\n self.parentDOMNode.appendChild(self.canvas);\n }\n document.body.appendChild(self.controlInput);\n self.createInlineStyle(self.canvas, 'canvas-datagrid');\n self.ctx = self.canvas.getContext('2d');\n self.ctx.textBaseline = 'alphabetic';\n self.eventParent = self.canvas;\n }\n self.parentNodeStyle = self.canvas.style;\n self.controlInput.setAttribute('readonly', true);\n self.controlInput.addEventListener('blur', function (e) {\n if (e.target !== self.canvas) {\n self.hasFocus = false;\n }\n });\n self.eventParent.addEventListener('scroll', self.resize, false);\n self.eventParent.addEventListener('touchstart', self.touchstart, false);\n self.eventParent.addEventListener('mouseup', self.mouseup, false);\n self.eventParent.addEventListener('mousedown', self.mousedown, false);\n self.eventParent.addEventListener('dblclick', self.dblclick, false);\n self.eventParent.addEventListener('click', self.click, false);\n document.body.addEventListener('mousemove', self.mousemove);\n self[self.isChildGrid ? 'parentGrid' : 'eventParent'].addEventListener(\n 'wheel',\n self.scrollWheel,\n false,\n );\n self.canvas.addEventListener('contextmenu', self.contextmenuEvent, false);\n self.controlInput.addEventListener('copy', self.copy);\n self.controlInput.addEventListener('cut', self.cut);\n self.controlInput.addEventListener('paste', self.paste);\n self.controlInput.addEventListener('keypress', self.keypress, false);\n self.controlInput.addEventListener('keyup', self.keyup, false);\n self.controlInput.addEventListener('keydown', self.keydown, false);\n window.addEventListener('resize', self.resize);\n };\n}\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals XMLSerializer: false, define: true, Blob: false, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nexport default function (self) {\n var perfCounters = [],\n cachedImagesDrawn = false,\n drawCount = 0,\n perfWindowSize = 300,\n entityCount = [],\n hiddenFrozenColumnCount = 0,\n scrollDebugCounters = [],\n touchPPSCounters = [];\n self.htmlImageCache = {};\n // more heavyweight version than fillArray defined in intf.js\n function fillArray(low, high, step, def) {\n step = step || 1;\n var i = [],\n x;\n for (x = low; x <= high; x += step) {\n i[x] = def === undefined ? x : typeof def === 'function' ? def(x) : def;\n }\n return i;\n }\n function drawPerfLine(w, h, x, y, perfArr, arrIndex, max, color, useAbs) {\n var i = w / perfArr.length,\n r = h / max;\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.beginPath();\n self.ctx.moveTo(x, y + h);\n perfArr.forEach(function (n) {\n var val = arrIndex === undefined ? n : n[arrIndex],\n cx,\n cy;\n if (useAbs) {\n val = Math.abs(val);\n }\n cx = x + i;\n cy = y + h - val * r;\n self.ctx.lineTo(cx, cy);\n x += i;\n });\n self.ctx.moveTo(x + w, y + h);\n self.ctx.strokeStyle = color;\n self.ctx.stroke();\n }\n function drawOnAllImagesLoaded() {\n var loaded = true;\n Object.keys(self.htmlImageCache).forEach(function (html) {\n if (!self.htmlImageCache[html].img.complete) {\n loaded = false;\n }\n });\n if (loaded && !cachedImagesDrawn) {\n cachedImagesDrawn = true;\n self.draw();\n }\n }\n function drawHtml(cell) {\n var img,\n v = cell.innerHTML || cell.formattedValue,\n cacheKey =\n v.toString() + cell.rowIndex.toString() + cell.columnIndex.toString(),\n x = Math.round(cell.x + self.canvasOffsetLeft),\n y = Math.round(cell.y + self.canvasOffsetTop);\n if (self.htmlImageCache[cacheKey]) {\n img = self.htmlImageCache[cacheKey].img;\n if (\n self.htmlImageCache[cacheKey].height !== cell.height ||\n self.htmlImageCache[cacheKey].width !== cell.width\n ) {\n // height and width of the cell has changed, invalidate cache\n self.htmlImageCache[cacheKey] = undefined;\n } else {\n if (!img.complete) {\n return;\n }\n return self.ctx.drawImage(img, x, y);\n }\n } else {\n cachedImagesDrawn = false;\n }\n img = new Image(cell.width, cell.height);\n self.htmlImageCache[cacheKey] = {\n img,\n width: cell.width,\n height: cell.height,\n };\n img.onload = function () {\n self.ctx.drawImage(img, x, y);\n drawOnAllImagesLoaded();\n };\n img.src =\n 'data:image/svg+xml;base64,' +\n btoa(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"' +\n cell.width +\n '\" height=\"' +\n cell.height +\n '\">\\n' +\n '<foreignObject class=\"node\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">\\n' +\n '<body xmlns=\"http://www.w3.org/1999/xhtml\" style=\"margin:0;padding:0;\">\\n' +\n v +\n '\\n' +\n '</body>' +\n '</foreignObject>\\n' +\n '</svg>\\n',\n );\n }\n function drawOrderByArrow(x, y) {\n var mt = self.style.columnHeaderOrderByArrowMarginTop * self.scale,\n ml = self.style.columnHeaderOrderByArrowMarginLeft * self.scale,\n mr = self.style.columnHeaderOrderByArrowMarginRight * self.scale,\n aw = self.style.columnHeaderOrderByArrowWidth * self.scale,\n ah = self.style.columnHeaderOrderByArrowHeight * self.scale;\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.fillStyle = self.style.columnHeaderOrderByArrowColor;\n self.ctx.strokeStyle = self.style.columnHeaderOrderByArrowBorderColor;\n self.ctx.beginPath();\n x = x + ml;\n y = y + mt;\n if (self.orderDirection === 'asc') {\n self.ctx.lineTo(x, y + ah);\n self.ctx.lineTo(x + aw, y + ah);\n self.ctx.lineTo(x + aw * 0.5, y);\n self.ctx.lineTo(x, y + ah);\n } else {\n self.ctx.moveTo(x, y);\n self.ctx.lineTo(x + aw, y);\n self.ctx.lineTo(x + aw * 0.5, y + ah);\n self.ctx.moveTo(x, y);\n }\n self.ctx.stroke();\n self.ctx.fill();\n return ml + aw + mr;\n }\n function drawTreeArrow(cell, x, y) {\n var mt = self.style.treeArrowMarginTop * self.scale,\n mr = self.style.treeArrowMarginRight * self.scale,\n ml = self.style.treeArrowMarginLeft * self.scale,\n aw = self.style.treeArrowWidth * self.scale,\n ah = self.style.treeArrowHeight * self.scale;\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.fillStyle = self.style.treeArrowColor;\n self.ctx.strokeStyle = self.style.treeArrowBorderColor;\n self.ctx.beginPath();\n x = x + ml;\n y = y + mt;\n if (self.openChildren[cell.rowIndex]) {\n self.ctx.moveTo(x, y);\n self.ctx.lineTo(x + aw, y);\n self.ctx.lineTo(x + aw * 0.5, y + ah);\n self.ctx.moveTo(x, y);\n } else {\n self.ctx.lineTo(x, y);\n self.ctx.lineTo(x + ah, y + aw * 0.5);\n self.ctx.lineTo(x, y + aw);\n self.ctx.lineTo(x, y);\n }\n self.ctx.stroke();\n self.ctx.fill();\n return ml + aw + mr;\n }\n function drawFilterButtonArrow(x, y) {\n var mt =\n ((self.style.filterButtonHeight - self.style.filterButtonArrowHeight) /\n 2) *\n self.scale,\n ml =\n ((self.style.filterButtonWidth - self.style.filterButtonArrowWidth) /\n 2) *\n self.scale,\n aw = self.style.filterButtonArrowWidth * self.scale,\n ah = self.style.filterButtonArrowHeight * self.scale;\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.fillStyle = self.style.filterButtonArrowColor;\n self.ctx.strokeStyle = self.style.filterButtonArrowBorderColor;\n self.ctx.beginPath();\n x = x + ml;\n y = y + mt;\n\n self.ctx.moveTo(x, y);\n self.ctx.lineTo(x + aw, y);\n self.ctx.lineTo(x + aw * 0.5, y + ah);\n self.ctx.moveTo(x, y);\n\n self.ctx.stroke();\n self.ctx.fill();\n return ml + aw;\n }\n function radiusRect(x, y, w, h, radius) {\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n var r = x + w,\n b = y + h;\n self.ctx.beginPath();\n self.ctx.moveTo(x + radius, y);\n self.ctx.lineTo(r - radius, y);\n self.ctx.quadraticCurveTo(r, y, r, y + radius);\n self.ctx.lineTo(r, y + h - radius);\n self.ctx.quadraticCurveTo(r, b, r - radius, b);\n self.ctx.lineTo(x + radius, b);\n self.ctx.quadraticCurveTo(x, b, x, b - radius);\n self.ctx.lineTo(x, y + radius);\n self.ctx.quadraticCurveTo(x, y, x + radius, y);\n }\n function fillRect(x, y, w, h) {\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.fillRect(x, y, w, h);\n }\n function strokeRect(x, y, w, h) {\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.strokeRect(x, y, w, h);\n }\n function fillText(text, x, y) {\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.fillText(text, x, y);\n }\n function fillCircle(x, y, r) {\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.beginPath();\n self.ctx.arc(x, y, r, 0, 2 * Math.PI);\n self.ctx.fill();\n }\n function strokeCircle(x, y, r) {\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.beginPath();\n self.ctx.arc(x, y, r, 0, 2 * Math.PI);\n self.ctx.stroke();\n }\n function clipFrozenArea(mode) {\n // 0 both, 1 rows, 2 cols\n // self.lastFrozenColumnPixel;\n // self.lastFrozenRowPixel;\n self.ctx.beginPath();\n if (mode === 0) {\n self.ctx.moveTo(self.lastFrozenColumnPixel, self.lastFrozenRowPixel);\n self.ctx.lineTo(self.lastFrozenColumnPixel, self.height);\n self.ctx.lineTo(self.width, self.height);\n self.ctx.lineTo(self.width, self.lastFrozenRowPixel);\n }\n if (mode === 1) {\n self.ctx.moveTo(0, self.lastFrozenRowPixel);\n self.ctx.lineTo(0, self.height);\n self.ctx.lineTo(self.width, self.height);\n self.ctx.lineTo(self.width, self.lastFrozenRowPixel);\n }\n if (mode === 2) {\n self.ctx.moveTo(self.lastFrozenColumnPixel, 0);\n self.ctx.lineTo(self.width, 0);\n self.ctx.lineTo(self.width, self.height);\n self.ctx.lineTo(self.lastFrozenColumnPixel, self.height);\n }\n self.ctx.clip();\n }\n function fillHandle(x, y, r) {\n if (self.style.selectionHandleType === 'circle') {\n return fillCircle(x, y, r * 0.5);\n }\n fillRect(x - r * 0.5, y - r * 0.5, r, r);\n }\n function strokeHandle(x, y, r) {\n if (self.style.selectionHandleType === 'circle') {\n return strokeCircle(x, y, r * 0.5);\n }\n strokeRect(x - r * 0.5, y - r * 0.5, r, r);\n }\n function addselectionHandle(c, pos) {\n var hw = self.style.selectionHandleSize,\n p = {\n tr: function () {\n fillHandle(c.x + c.width, c.y, hw);\n strokeHandle(c.x + c.width, c.y, hw);\n },\n br: function () {\n fillHandle(c.x + c.width, c.y + c.height, hw);\n strokeHandle(c.x + c.width, c.y + c.height, hw);\n },\n tl: function () {\n fillHandle(c.x, c.y, hw);\n strokeHandle(c.x, c.y, hw);\n },\n bl: function () {\n fillHandle(c.x, c.y + c.height, hw);\n strokeHandle(c.x, c.y + c.height, hw);\n },\n };\n p[pos]();\n }\n function addBorderLine(c, pos) {\n self.ctx.beginPath();\n var p = {\n t: function () {\n self.ctx.moveTo(\n c.x + self.canvasOffsetLeft,\n c.y + self.canvasOffsetTop,\n );\n self.ctx.lineTo(\n c.x + self.canvasOffsetLeft + c.width,\n c.y + self.canvasOffsetTop,\n );\n },\n r: function () {\n self.ctx.moveTo(\n c.x + self.canvasOffsetLeft + c.width,\n c.y + self.canvasOffsetTop,\n );\n self.ctx.lineTo(\n c.x + self.canvasOffsetLeft + c.width,\n c.y + self.canvasOffsetTop + c.height,\n );\n },\n b: function () {\n self.ctx.moveTo(\n c.x + self.canvasOffsetLeft,\n c.y + self.canvasOffsetTop + c.height,\n );\n self.ctx.lineTo(\n c.x + self.canvasOffsetLeft + c.width,\n c.y + self.canvasOffsetTop + c.height,\n );\n },\n l: function () {\n self.ctx.moveTo(\n c.x + self.canvasOffsetLeft,\n c.y + self.canvasOffsetTop,\n );\n self.ctx.lineTo(\n c.x + self.canvasOffsetLeft,\n c.y + self.canvasOffsetTop + c.height,\n );\n },\n };\n p[pos]();\n self.ctx.stroke();\n }\n function addEllipsis(text, width) {\n var c,\n w = 0;\n if (self.ellipsisCache[text] && self.ellipsisCache[text][width]) {\n return self.ellipsisCache[text][width];\n }\n //TODO Add ellipsis back when there is a fast way to do it\n w = self.ctx.measureText(text).width;\n self.ellipsisCache[text] = self.ellipsisCache[text] || {};\n c = { value: text, width: w };\n self.ellipsisCache[text][width] = c;\n return c;\n }\n function wrapText(cell, splitChar) {\n if (!cell.formattedValue) {\n return {\n lines: [{ width: 0, value: '' }],\n width: 0,\n height: cell.calculatedLineHeight,\n };\n }\n var max = 0,\n n = '\\n',\n x,\n word,\n words = cell.formattedValue.split(splitChar),\n textHeight = cell.calculatedLineHeight,\n lines = [],\n out = [],\n wrap = self.style.cellWhiteSpace !== 'nowrap',\n autoResize = self.attributes.autoResizeRows && wrap,\n elWidth,\n et = self.attributes.ellipsisText,\n elClipLength,\n plWidth,\n clippedVal,\n ogWordWidth,\n previousLine,\n line = {\n width: 0,\n value: '',\n },\n cHeight = wrap ? cell.paddedHeight : cell.calculatedLineHeight;\n lines.push(line);\n elWidth = self.ctx.measureText(' ' + et).width;\n for (x = 0; x < words.length; x += 1) {\n word = words[x];\n var curSplitChar = word[word.length - 1] === '-' ? '' : splitChar;\n var measure = self.ctx.measureText(word + curSplitChar);\n if (line.width + measure.width + elWidth < cell.paddedWidth) {\n line.value += word + curSplitChar;\n line.width += measure.width;\n continue;\n }\n // if there is a hyphenated word that is too long\n // split it and add the split set to the array\n // then back up and re-read new split set\n // this behavior seems right, it might not be\n if (/\\w-\\w/.test(word) && cell.paddedWidth < measure.width) {\n var arr = word.split('-');\n arr = arr.map((item, index) => {\n return index === arr.length - 1 ? item : item + '-';\n });\n words.splice(x, 1, ...arr);\n x -= 1;\n continue;\n }\n line = {\n width: measure.width,\n value: word + curSplitChar,\n };\n if (x === 0) {\n lines = [];\n lines.push(line);\n }\n textHeight += cell.calculatedLineHeight;\n if (textHeight > cHeight && !autoResize) {\n if (lines.length === 0) {\n break;\n }\n elClipLength = 1;\n previousLine = lines[lines.length - 1];\n if (previousLine.width < cell.paddedWidth && words.length === 1) {\n break;\n }\n clippedVal = previousLine.value + word;\n plWidth = self.ctx.measureText(clippedVal + et).width;\n var originText = clippedVal;\n if (plWidth > cell.paddedWidth) {\n var stepLength = parseInt(clippedVal.length / 2);\n var direction = -1;\n while (stepLength > 0) {\n clippedVal = originText.substr(\n 0,\n stepLength * direction + clippedVal.length,\n );\n plWidth = self.ctx.measureText(clippedVal + et).width;\n direction = plWidth > cell.paddedWidth ? -1 : 1;\n stepLength = parseInt(stepLength / 2);\n }\n }\n clippedVal =\n clippedVal + (originText.length != clippedVal.length ? et : '');\n previousLine.value = clippedVal;\n previousLine.width = plWidth;\n break;\n }\n if (x > 0) {\n lines.push(line);\n }\n }\n return {\n lines: lines,\n width: max,\n height: cell.calculatedLineHeight * lines.length,\n };\n }\n function drawText(cell) {\n var ll = cell.text.lines.length,\n h = cell.fontHeight * cell.lineHeight,\n x,\n line,\n wrap = self.style.cellWhiteSpace !== 'nowrap',\n textHeight = 0;\n for (x = 0; x < cell.text.lines.length; x += 1) {\n line = cell.text.lines[x];\n var vPos =\n Math.max(\n (cell.height -\n (wrap ? cell.text.height : cell.calculatedLineHeight)) *\n 0.5,\n 0,\n ) + h,\n hPos = cell.paddingLeft + cell.treeArrowWidth + cell.orderByArrowWidth;\n if (cell.horizontalAlignment === 'right') {\n hPos = cell.paddingLeft + cell.paddedWidth - line.width;\n } else if (cell.horizontalAlignment === 'center') {\n hPos =\n cell.paddingLeft +\n (cell.paddedWidth + cell.paddingRight) / 2 -\n line.width / 2;\n }\n if (cell.verticalAlignment === 'top') {\n vPos = cell.calculatedLineHeight;\n } else if (cell.verticalAlignment === 'bottom') {\n vPos = cell.height - cell.paddingBottom - cell.text.height;\n }\n line.height = h + cell.lineSpacing;\n line.offsetLeft = hPos;\n line.offsetTop = vPos;\n line.x = cell.x + hPos;\n line.y = cell.y + textHeight + vPos;\n textHeight += line.height;\n fillText(line.value, line.x, line.y);\n }\n if (self.attributes.debug && cell.active) {\n requestAnimationFrame(function () {\n self.ctx.font = self.style.debugFont;\n self.ctx.fillStyle = self.style.debugColor;\n fillText(\n JSON.stringify(\n {\n x: cell.x,\n y: cell.y,\n h: cell.height,\n w: cell.width,\n pw: cell.paddedWidth,\n idx: cell.columnIndex,\n idx_ord: cell.sortColumnIndex,\n },\n null,\n '\\t',\n ),\n cell.x + 14,\n cell.y + 14,\n );\n fillText(\n JSON.stringify(\n cell.text.lines.map(function (l) {\n return { w: l.width, v: l.value.length };\n }),\n null,\n '\\t',\n ),\n cell.x + 14,\n cell.y + 30,\n );\n });\n }\n }\n function getFrozenColumnsWidth() {\n var w = 0,\n s = self.getSchema(),\n x = 0,\n n = Math.min(self.frozenColumn, s.length),\n column;\n hiddenFrozenColumnCount = 0;\n while (x < n) {\n column = s[x];\n if (column.hidden) {\n hiddenFrozenColumnCount += 1;\n } else {\n w += self.getColumnWidth(x);\n }\n x += 1;\n }\n return w;\n }\n /**\n * Redraws the grid. No matter what the change, this is the only method required to refresh everything.\n * @memberof canvasDatagrid\n * @name draw\n * @method\n */\n // r = literal row index\n // rd = row data array\n // i = user order index\n // o = literal data index\n // y = y drawing cursor\n // x = x drawing cursor\n // s = visible schema array\n // cx = current x drawing cursor sub calculation var\n // cy = current y drawing cursor sub calculation var\n // a = static cell (like corner cell)\n // p = perf counter\n // l = data length\n // u = current cell\n // h = current height\n // w = current width\n self.draw = function (internal) {\n if (self.dispatchEvent('beforedraw', {})) {\n return;\n }\n if (!self.isChildGrid && (!self.height || !self.width)) {\n return;\n }\n if (self.isChildGrid && internal) {\n requestAnimationFrame(self.parentGrid.draw);\n return;\n }\n if (self.intf.visible === false) {\n return;\n }\n // initial values\n var checkScrollHeight,\n rowHeaderCell,\n p,\n cx,\n cy,\n treeGrid,\n rowOpen,\n rowHeight,\n cornerCell,\n y,\n x,\n c,\n h,\n w,\n schema,\n rowIndex,\n rowData,\n aCell,\n viewData = self.viewData || [],\n bc = self.style.gridBorderCollapse === 'collapse',\n selectionBorders = [],\n moveBorders = [],\n selectionHandles = [],\n rowHeaders = [],\n l = viewData.length,\n u = self.currentCell || {},\n columnHeaderCellHeight = self.getColumnHeaderCellHeight(),\n rowHeaderCellWidth = self.getRowHeaderCellWidth(),\n cellHeight = self.style.cellHeight;\n drawCount += 1;\n p = performance.now();\n self.visibleRowHeights = [];\n // if data length has changed, there is no way to know\n if (viewData.length > self.orders.rows.length) {\n self.createRowOrders();\n }\n function drawScrollBars() {\n var drawCorner,\n en = self.scrollBox.entities,\n m = self.style.scrollBarBoxMargin * 2;\n self.ctx.strokeStyle = self.style.scrollBarBorderColor;\n self.ctx.lineWidth = self.style.scrollBarBorderWidth;\n if (self.frozenColumn > 0) {\n en.horizontalBox.x =\n rowHeaderCellWidth +\n self.style.scrollBarBoxMargin +\n self.scrollCache.x[self.frozenColumn - 1] +\n (en.horizontalBar.width -\n self.scrollCache.x[self.frozenColumn - 1] -\n self.scrollBox.scrollBoxWidth) *\n (self.scrollBox.scrollLeft / self.scrollBox.scrollWidth);\n } else {\n en.horizontalBox.x =\n rowHeaderCellWidth +\n self.style.scrollBarBoxMargin +\n (en.horizontalBar.width - self.scrollBox.scrollBoxWidth) *\n (self.scrollBox.scrollLeft / self.scrollBox.scrollWidth);\n }\n en.verticalBox.y =\n columnHeaderCellHeight +\n self.style.scrollBarBoxMargin +\n self.scrollCache.y[self.frozenRow] +\n (en.verticalBar.height -\n self.scrollBox.scrollBoxHeight -\n self.scrollCache.y[self.frozenRow]) *\n (self.scrollBox.scrollTop / self.scrollBox.scrollHeight);\n if (self.scrollBox.horizontalBarVisible) {\n self.ctx.fillStyle = self.style.scrollBarBackgroundColor;\n fillRect(\n en.horizontalBar.x,\n en.horizontalBar.y,\n en.horizontalBar.width + m,\n en.horizontalBar.height,\n );\n strokeRect(\n en.horizontalBar.x,\n en.horizontalBar.y,\n en.horizontalBar.width + m,\n en.horizontalBar.height,\n );\n self.ctx.fillStyle = self.style.scrollBarBoxColor;\n if (self.scrollBox.horizontalBoxVisible) {\n if (/horizontal/.test(u.context)) {\n self.ctx.fillStyle = self.style.scrollBarActiveColor;\n }\n radiusRect(\n en.horizontalBox.x,\n en.horizontalBox.y,\n en.horizontalBox.width,\n en.horizontalBox.height,\n self.style.scrollBarBoxBorderRadius,\n );\n self.ctx.stroke();\n self.ctx.fill();\n }\n drawCorner = true;\n self.visibleCells.unshift(en.horizontalBar);\n self.visibleCells.unshift(en.horizontalBox);\n }\n if (self.scrollBox.verticalBarVisible) {\n self.ctx.fillStyle = self.style.scrollBarBackgroundColor;\n fillRect(\n en.verticalBar.x,\n en.verticalBar.y,\n en.verticalBar.width,\n en.verticalBar.height + m,\n );\n strokeRect(\n en.verticalBar.x,\n en.verticalBar.y,\n en.verticalBar.width,\n en.verticalBar.height + m,\n );\n if (self.scrollBox.verticalBoxVisible) {\n self.ctx.fillStyle = self.style.scrollBarBoxColor;\n if (/vertical/.test(u.context)) {\n self.ctx.fillStyle = self.style.scrollBarActiveColor;\n }\n radiusRect(\n en.verticalBox.x,\n en.verticalBox.y,\n en.verticalBox.width,\n en.verticalBox.height,\n self.style.scrollBarBoxBorderRadius,\n );\n self.ctx.stroke();\n self.ctx.fill();\n }\n drawCorner = true;\n self.visibleCells.unshift(en.verticalBar);\n self.visibleCells.unshift(en.verticalBox);\n }\n if (drawCorner) {\n //corner\n self.ctx.strokeStyle = self.style.scrollBarCornerBorderColor;\n self.ctx.fillStyle = self.style.scrollBarCornerBackgroundColor;\n radiusRect(\n en.corner.x,\n en.corner.y,\n en.corner.width,\n en.corner.height,\n 0,\n );\n self.ctx.stroke();\n self.ctx.fill();\n self.visibleCells.unshift(en.corner);\n }\n }\n function createHandlesOverlayArray(cell) {\n if (self.attributes.allowMovingSelection || self.mobile) {\n if (\n cell.selectionBorderTop &&\n cell.selectionBorderRight &&\n self.mobile\n ) {\n selectionHandles.push([cell, 'tr']);\n cell.selectionHandle = 'tr';\n }\n if (\n cell.selectionBorderTop &&\n cell.selectionBorderLeft &&\n self.mobile\n ) {\n selectionHandles.push([cell, 'tl']);\n cell.selectionHandle = 'tl';\n }\n if (\n cell.selectionBorderBottom &&\n cell.selectionBorderLeft &&\n self.mobile\n ) {\n selectionHandles.push([cell, 'bl']);\n cell.selectionHandle = 'bl';\n }\n if (\n cell.selectionBorderBottom &&\n cell.selectionBorderRight &&\n (self.attributes.selectionHandleBehavior !== 'none' || self.mobile)\n ) {\n selectionHandles.push([cell, 'br']);\n cell.selectionHandle = 'br';\n }\n }\n }\n function createBorderOverlayArray(\n cell,\n drawArray,\n propPrefix,\n offsetPoint,\n ) {\n offsetPoint = offsetPoint || { x: 0, y: 0 };\n cell.selectionBorder = '';\n if (\n !cell.isRowHeader &&\n self.selections[cell.rowIndex + -offsetPoint.y] &&\n self.selections[cell.rowIndex + -offsetPoint.y].indexOf(\n cell.columnIndex + -offsetPoint.x,\n ) !== -1\n ) {\n if (\n (!self.selections[cell.rowIndex - 1 + -offsetPoint.y] ||\n self.selections[cell.rowIndex - 1 + -offsetPoint.y].indexOf(\n cell.columnIndex + -offsetPoint.x,\n ) === -1 ||\n cell.rowIndex === 0) &&\n !cell.isHeader\n ) {\n drawArray.push([cell, 't']);\n cell[propPrefix + 'BorderTop'] = true;\n cell[propPrefix + 'Border'] += 't';\n }\n if (\n !self.selections[cell.rowIndex + 1 + -offsetPoint.y] ||\n self.selections[cell.rowIndex + 1 + -offsetPoint.y].indexOf(\n cell.columnIndex + -offsetPoint.x,\n ) === -1\n ) {\n drawArray.push([cell, 'b']);\n cell[propPrefix + 'BorderBottom'] = true;\n cell[propPrefix + 'Border'] += 'b';\n }\n if (\n !self.selections[cell.rowIndex + -offsetPoint.y] ||\n cell.columnIndex === 0 ||\n self.selections[cell.rowIndex + -offsetPoint.y].indexOf(\n cell.columnIndex - 1 + -offsetPoint.x,\n ) === -1\n ) {\n drawArray.push([cell, 'l']);\n cell[propPrefix + 'BorderLeft'] = true;\n cell[propPrefix + 'Border'] += 'l';\n }\n if (\n !self.selections[cell.rowIndex + -offsetPoint.y] ||\n cell.columnIndex === schema.length ||\n self.selections[cell.rowIndex + -offsetPoint.y].indexOf(\n cell.columnIndex + 1 + -offsetPoint.x,\n ) === -1\n ) {\n drawArray.push([cell, 'r']);\n cell[propPrefix + 'BorderRight'] = true;\n cell[propPrefix + 'Border'] += 'r';\n }\n }\n }\n function drawCell(rowData, rowOrderIndex, rowIndex) {\n return function drawEach(header, headerIndex, columnOrderIndex) {\n if (header.hidden) {\n return 0;\n }\n var cellStyle = header.style || 'cell',\n cellGridAttributes,\n cell,\n isHeader = /HeaderCell/.test(cellStyle),\n isCorner = /cornerCell/.test(cellStyle),\n isRowHeader = 'rowHeaderCell' === cellStyle,\n isColumnHeader = 'columnHeaderCell' === cellStyle,\n isFilterable =\n self.filterable.rows.includes(rowIndex) &&\n self.filterable.columns.includes(headerIndex),\n wrap = self.style.cellWhiteSpace !== 'nowrap',\n selected =\n self.selections[rowOrderIndex] &&\n self.selections[rowOrderIndex].indexOf(columnOrderIndex) !== -1,\n hovered =\n self.hovers.rowIndex === rowOrderIndex &&\n (self.attributes.hoverMode === 'row' ||\n self.hovers.columnIndex === columnOrderIndex),\n openedFilter =\n self.selectedFilterButton.rowIndex == rowIndex &&\n self.selectedFilterButton.columnIndex == headerIndex,\n active =\n self.activeCell.rowIndex === rowOrderIndex &&\n self.activeCell.columnIndex === columnOrderIndex,\n isColumnHeaderCellCap = cellStyle === 'columnHeaderCellCap',\n rawValue = rowData ? rowData[header.name] : undefined,\n isGrid = header.type === 'canvas-datagrid',\n activeHeader =\n (self.orders.rows[self.activeCell.rowIndex] === rowOrderIndex ||\n self.orders.columns[self.activeCell.columnIndex] ===\n headerIndex) &&\n (columnOrderIndex === -1 || rowOrderIndex === -1)\n ? isRowHeader\n ? 'activeRowHeaderCell'\n : 'activeColumnHeaderCell'\n : false,\n val,\n f = self.formatters[header.type || 'string'],\n orderByArrowSize = 0,\n treeArrowSize = 0,\n cellWidth = self.sizes.columns[headerIndex] || header.width,\n ev = {\n value: rawValue,\n row: rowData,\n header: header,\n };\n if (isColumnHeaderCellCap) {\n cellWidth = w - x;\n }\n // if no data or schema are defined, a width is provided to the stub column\n if (cellWidth === undefined) {\n cellWidth = self.style.cellWidth;\n }\n cellWidth = cellWidth * self.scale;\n if (x + cellWidth + self.style.cellBorderWidth < 0) {\n x += cellWidth + self.style.cellBorderWidth;\n }\n if (active && cellStyle !== 'cornerCell') {\n cellStyle = 'activeCell';\n }\n if (self.visibleRows.indexOf(rowIndex) === -1 && !isHeader) {\n self.visibleRows.push(rowIndex);\n }\n val = self.dispatchEvent('formatcellvalue', ev);\n cx = x;\n cy = y;\n if (cellStyle === 'cornerCell') {\n cx = 0;\n cy = 0;\n } else if (isRowHeader) {\n cx = 0;\n } else if (isHeader) {\n cy = 0;\n }\n cell = {\n type: isGrid ? 'canvas-datagrid-cell' : header.type,\n style: cellStyle,\n nodeType: 'canvas-datagrid-cell',\n x: cx,\n y: cy,\n fontHeight: (self.style[cellStyle + 'FontHeight'] || 0) * self.scale,\n horizontalAlignment: self.style[cellStyle + 'HorizontalAlignment'],\n verticalAlignment: self.style[cellStyle + 'VerticalAlignment'],\n paddingLeft:\n (self.style[cellStyle + 'PaddingLeft'] || 0) * self.scale,\n paddingTop: (self.style[cellStyle + 'PaddingTop'] || 0) * self.scale,\n paddingRight:\n (self.style[cellStyle + 'PaddingRight'] || 0) * self.scale,\n paddingBottom:\n (self.style[cellStyle + 'PaddingBottom'] || 0) * self.scale,\n whiteSpace: self.style.cellWhiteSpace,\n lineHeight: self.style.cellLineHeight,\n lineSpacing: self.style.cellLineSpacing,\n offsetTop: self.canvasOffsetTop + cy,\n offsetLeft: self.canvasOffsetLeft + cx,\n scrollTop: self.scrollBox.scrollTop,\n scrollLeft: self.scrollBox.scrollLeft,\n active: active || activeHeader,\n hovered: hovered,\n selected: selected,\n width: cellWidth,\n height: cellHeight,\n offsetWidth: cellWidth,\n offsetHeight: cellHeight,\n parentNode: self.intf.parentNode,\n offsetParent: self.intf.parentNode,\n data: rowData,\n isCorner: isCorner,\n isHeader: isHeader,\n isColumnHeader: isColumnHeader,\n isColumnHeaderCellCap: isColumnHeaderCellCap,\n isRowHeader: isRowHeader,\n isFilterable: isFilterable,\n openedFilter: openedFilter,\n rowOpen: rowOpen,\n header: header,\n\n columnIndex: columnOrderIndex,\n rowIndex: rowOrderIndex,\n\n viewRowIndex: rowOrderIndex,\n viewColumnIndex: columnOrderIndex,\n\n boundRowIndex: self.getBoundRowIndexFromViewRowIndex(rowOrderIndex),\n boundColumnIndex: self.getBoundColumnIndexFromViewColumnIndex(\n columnOrderIndex,\n ),\n\n sortColumnIndex: headerIndex,\n sortRowIndex: rowIndex,\n\n isGrid: isGrid,\n isNormal: !isGrid && !isCorner && !isHeader,\n gridId: (self.attributes.name || '') + rowIndex + ':' + headerIndex,\n parentGrid: self.intf,\n innerHTML: '',\n activeHeader: activeHeader,\n value:\n isHeader && !isRowHeader ? header.title || header.name : rawValue,\n };\n cell.calculatedLineHeight =\n cell.fontHeight * cell.lineHeight + cell.lineSpacing;\n cell.paddedWidth = cell.width - cell.paddingRight - cell.paddingLeft;\n cell.paddedHeight = cell.height - cell.paddingTop - cell.paddingBottom;\n ev.cell = cell;\n cell.userHeight = cell.isHeader ? self.sizes.rows[-1] : rowHeight;\n cell.userWidth = cell.isHeader\n ? self.sizes.columns.cornerCell\n : self.sizes.columns[headerIndex];\n self.visibleCells.unshift(cell);\n if (self.dispatchEvent('beforerendercell', ev)) {\n return;\n }\n self.ctx.fillStyle = self.style[cellStyle + 'BackgroundColor'];\n self.ctx.strokeStyle = self.style[cellStyle + 'BorderColor'];\n self.ctx.lineWidth = self.style[cellStyle + 'BorderWidth'];\n if (hovered) {\n self.ctx.fillStyle = self.style[cellStyle + 'HoverBackgroundColor'];\n self.ctx.strokeStyle = self.style[cellStyle + 'HoverBorderColor'];\n }\n if (selected) {\n self.ctx.fillStyle =\n self.style[cellStyle + 'SelectedBackgroundColor'];\n self.ctx.strokeStyle = self.style[cellStyle + 'SelectedBorderColor'];\n }\n if (activeHeader) {\n self.ctx.fillStyle = self.style[activeHeader + 'BackgroundColor'];\n }\n self.dispatchEvent('rendercell', ev);\n if (cell.isGrid) {\n if (cell.height !== rowHeight) {\n cell.height = rowHeight || self.style.cellHeightWithChildGrid;\n checkScrollHeight = true;\n }\n cell.width =\n self.sizes.columns[headerIndex] ||\n self.style.cellWidthWithChildGrid;\n }\n if (rowOpen && !cell.isRowHeader) {\n cell.height = self.sizes.rows[rowIndex] || self.style.cellHeight;\n }\n if (!cell.isGrid) {\n fillRect(cx, cy, cell.width, cell.height);\n strokeRect(cx, cy, cell.width, cell.height);\n }\n self.ctx.save();\n radiusRect(cell.x, cell.y, cell.width, cell.height, 0);\n self.ctx.clip();\n self.dispatchEvent('afterrendercell', ev);\n if (cell.height !== cellHeight && !(rowOpen && !cell.isRowHeader)) {\n self.sizes.rows[isHeader ? -1 : rowIndex] = cell.height;\n checkScrollHeight = true;\n }\n if (cell.width !== cellWidth) {\n self.sizes.columns[headerIndex] = cell.width;\n checkScrollHeight = true;\n }\n if (isRowHeader && self.attributes.tree) {\n if (!self.dispatchEvent('rendertreearrow', ev)) {\n treeArrowSize = drawTreeArrow(\n cell,\n self.style[cellStyle + 'PaddingLeft'],\n cy,\n 0,\n );\n }\n }\n if ((self.attributes.showRowNumbers && isRowHeader) || !isRowHeader) {\n if (cell.isGrid && !self.dispatchEvent('beforerendercellgrid', ev)) {\n if (!self.childGrids[cell.gridId]) {\n // HACK: this only allows setting of the child grids styles if data is set _after_\n // this is less than desirable. An interface needs to be made to effect the\n // style of all cell grids. One for individual grids already exists.\n cellGridAttributes = self.cellGridAttributes;\n cellGridAttributes.name = self.attributes.saveAppearance\n ? cell.gridId\n : undefined;\n cellGridAttributes.component = false;\n cellGridAttributes.parentNode = cell;\n cellGridAttributes.data = rawValue;\n ev.cellGridAttributes = cellGridAttributes;\n if (self.dispatchEvent('beforecreatecellgrid', ev)) {\n return;\n }\n self.childGrids[cell.gridId] = self.createGrid(\n cellGridAttributes,\n );\n self.sizes.rows[rowIndex] =\n self.sizes.rows[rowIndex] || self.style.cellGridHeight;\n checkScrollHeight = true;\n }\n cell.grid = self.childGrids[cell.gridId];\n cell.grid.parentNode = cell;\n cell.grid.visible = true;\n cell.grid.draw();\n self.dispatchEvent('rendercellgrid', ev);\n } else if (!cell.isGrid) {\n if (self.childGrids[cell.gridId]) {\n self.childGrids[cell.gridId].parentNode.offsetHeight = 0;\n }\n if (isHeader && self.orderBy === header.name) {\n if (!self.dispatchEvent('renderorderbyarrow', ev)) {\n orderByArrowSize = drawOrderByArrow(\n cx + self.style[cellStyle + 'PaddingLeft'],\n 0,\n );\n }\n }\n self.ctx.fillStyle = self.style[cellStyle + 'Color'];\n if (hovered) {\n self.ctx.fillStyle = self.style[cellStyle + 'HoverColor'];\n }\n if (selected) {\n self.ctx.fillStyle = self.style[cellStyle + 'SelectedColor'];\n }\n if (activeHeader) {\n self.ctx.fillStyle = self.style[activeHeader + 'Color'];\n }\n cell.treeArrowWidth = treeArrowSize;\n cell.orderByArrowWidth = orderByArrowSize;\n // create text ref to see if height needs to expand\n val = val !== undefined ? val : f ? f(ev) : '';\n if (val === undefined && !f) {\n val = '';\n console.warn(\n 'canvas-datagrid: Unknown format ' +\n header.type +\n ' add a cellFormater',\n );\n }\n cell.formattedValue = (val !== undefined && val !== null\n ? val\n : ''\n ).toString();\n if (\n self.columnFilters &&\n self.columnFilters[val] !== undefined &&\n isHeader\n ) {\n cell.formattedValue = self.attributes.filterTextPrefix + val;\n }\n self.ctx.font =\n self.style[cellStyle + 'FontHeight'] * self.scale +\n 'px ' +\n self.style[cellStyle + 'FontName'];\n if (!self.dispatchEvent('formattext', ev)) {\n cell.text = wrapText(cell, ' ');\n }\n if (!self.dispatchEvent('rendertext', ev)) {\n if (cell.innerHTML || header.type === 'html') {\n drawHtml(cell);\n } else {\n drawText(cell);\n }\n\n if (wrap && cell.text && cell.text.height > rowHeight) {\n self.sizes.rows[isHeader ? -1 : rowIndex] = cell.text.height;\n checkScrollHeight = true;\n }\n }\n }\n }\n if (active) {\n aCell = cell;\n }\n createBorderOverlayArray(cell, selectionBorders, 'selection');\n // createBorderOverlayArray calculates data for createHandlesOverlayArray so it must go 2nd\n createHandlesOverlayArray(cell);\n if (self.movingSelection) {\n createBorderOverlayArray(cell, moveBorders, 'move', self.moveOffset);\n }\n self.ctx.restore();\n\n if (isFilterable) {\n drawFilterButton(cell);\n }\n\n // Gaps may occur in row numbers between consecutively rendered rows\n // when we are filtering. We draw attention to this by drawing a thick\n // border overlapping the two consecutive row headers. If sorting, visible\n // row numbers stay the same (i.e. they don't correspond to the underlying\n // data's row number), so we do not show row gaps in that case.\n const isSorting =\n self.orderings.columns && self.orderings.columns.length > 0;\n\n if (\n isRowHeader &&\n self.attributes.showRowNumbers &&\n self.attributes.showRowNumberGaps &&\n isSorting === false\n ) {\n const previousRowNumber = self.getBoundRowIndexFromViewRowIndex(\n rowOrderIndex - 1,\n );\n const hasRowGap =\n previousRowNumber !== undefined &&\n cell.boundRowIndex > 0 &&\n cell.boundRowIndex - previousRowNumber > 1;\n\n if (hasRowGap) {\n const barHeight = self.style.rowHeaderCellRowNumberGapHeight;\n const barColor = self.style.rowHeaderCellRowNumberGapColor;\n\n self.ctx.save();\n\n self.ctx.fillStyle = barColor;\n\n fillRect(cell.x, cell.y - barHeight / 2, cell.width, barHeight);\n\n self.ctx.restore();\n }\n }\n\n x += cell.width + (bc ? 0 : self.style.cellBorderWidth);\n return cell.width;\n };\n }\n function drawFilterButton(cell, ev) {\n var posX = cell.x + cell.width - self.style.filterButtonWidth - 1;\n var posY = cell.y + cell.height - self.style.filterButtonHeight - 2;\n if (self.dispatchEvent('beforerenderfilterbutton', ev)) {\n return;\n }\n self.ctx.save();\n self.ctx.strokeStyle = self.style.filterButtonBorderColor;\n self.ctx.fillStyle = self.style.filterButtonBackgroundColor;\n if (cell.openedFilter) {\n self.ctx.fillStyle = self.style.filterButtonActiveBackgroundColor;\n } else if (cell.hovered && self.hovers.onFilterButton) {\n self.ctx.fillStyle = self.style.filterButtonHoverBackgroundColor;\n }\n radiusRect(\n posX,\n posY,\n self.style.filterButtonWidth,\n self.style.filterButtonHeight,\n self.style.filterButtonBorderRadius,\n );\n self.ctx.stroke();\n self.ctx.fill();\n drawFilterButtonArrow(posX, posY);\n self.ctx.clip();\n self.dispatchEvent('afterrenderfilterbutton', ev);\n self.ctx.restore();\n }\n function drawRowHeader(rowData, rowIndex, rowOrderIndex) {\n if (self.attributes.showRowHeaders) {\n x = 0;\n\n // When filtering we'd like to display the actual row numbers,\n // as it is in the unfiltered data, instead of simply the viewed\n // row index + 1. If rowIndex > viewData.length, it's a new row\n // added to the end, and we want to render that new row's number\n const filteredRowNumber =\n self.viewData && rowIndex < self.viewData.length\n ? self.getBoundRowIndexFromViewRowIndex(rowIndex) + 1\n : self.originalData\n ? self.originalData.length + 1\n : rowOrderIndex + 1;\n\n const rowHeaderValue = self.hasActiveFilters()\n ? filteredRowNumber\n : rowIndex + 1;\n\n const rowHeaderCell = { rowHeaderCell: rowHeaderValue };\n const headerDescription = {\n name: 'rowHeaderCell',\n width: self.sizes.columns[-1] || self.style.rowHeaderCellWidth,\n style: 'rowHeaderCell',\n type: 'string',\n data: rowHeaderValue,\n index: -1,\n };\n rowOpen = self.openChildren[rowIndex];\n drawCell(rowHeaderCell, rowOrderIndex, rowIndex)(\n headerDescription,\n -1,\n -1,\n );\n }\n }\n function drawHeaders() {\n var d,\n g = schema.length,\n i,\n o,\n columnHeaderCell,\n header,\n nonFrozenHeaderWidth;\n function drawHeaderColumnRange(start, end) {\n end = Math.min(end, g);\n for (o = start; o < end; o += 1) {\n i = self.orders.columns[o];\n header = schema[i];\n if (!header.hidden) {\n d = {\n title: header.title,\n name: header.name,\n width: header.width || self.style.cellWidth,\n style: 'columnHeaderCell',\n type: 'string',\n index: o,\n order: i,\n };\n columnHeaderCell = {\n columnHeaderCell: header.title || header.name,\n };\n x += drawCell(columnHeaderCell, -1, -1)(d, i, o);\n if (x > self.width + self.scrollBox.scrollLeft) {\n break;\n }\n }\n }\n }\n rowHeaders.forEach(function (rArgs, rhIndex) {\n y = rArgs[3];\n cellHeight = rArgs[4];\n if (rhIndex === self.frozenRow) {\n self.ctx.save();\n radiusRect(\n 0,\n self.lastFrozenRowPixel,\n self.width,\n self.height - self.lastFrozenRowPixel,\n 0,\n );\n self.ctx.clip();\n }\n drawRowHeader(rArgs[0], rArgs[1], rArgs[2]);\n });\n self.ctx.restore();\n if (self.attributes.showColumnHeaders) {\n x =\n -self.scrollBox.scrollLeft +\n self.scrollPixelLeft +\n self.style.columnHeaderCellBorderWidth;\n if (self.attributes.showRowHeaders) {\n x += rowHeaderCellWidth;\n }\n y = 0;\n // cell height might have changed during drawing\n cellHeight = self.getColumnHeaderCellHeight();\n drawHeaderColumnRange(self.scrollIndexLeft, g);\n nonFrozenHeaderWidth = x;\n x = self.style.columnHeaderCellBorderWidth;\n if (self.attributes.showRowHeaders) {\n x += rowHeaderCellWidth;\n }\n drawHeaderColumnRange(0, self.frozenColumn);\n // fill in the space right of the headers\n x = nonFrozenHeaderWidth;\n if (x < w) {\n c = {\n name: '',\n width: self.style.scrollBarWidth,\n style: 'columnHeaderCellCap',\n isColumnHeaderCell: true,\n isColumnHeaderCellCap: true,\n type: 'string',\n index: schema.length,\n };\n drawCell({ endCap: '' }, -1, -1)(c, -1, -1);\n }\n // fill in the space right of the headers\n if (self.attributes.showRowHeaders) {\n cornerCell = { cornerCell: '' };\n x = 0;\n c = {\n name: 'cornerCell',\n width: self.style.rowHeaderCellWidth,\n style: 'cornerCell',\n type: 'string',\n index: -1,\n };\n drawCell(cornerCell, -1, -1)(c, -1, -1);\n }\n }\n }\n function drawRow(rowOrderIndex, rowIndex) {\n var headerIndex,\n treeHeight,\n rowSansTreeHeight,\n columnOrderIndex,\n g = schema.length;\n if (y - cellHeight * 2 > h) {\n return false;\n }\n rowData = viewData[rowOrderIndex];\n rowOpen = self.openChildren[rowOrderIndex];\n rowSansTreeHeight =\n (self.sizes.rows[rowOrderIndex] || self.style.cellHeight) * self.scale;\n treeHeight = (rowOpen ? self.sizes.trees[rowOrderIndex] : 0) * self.scale;\n rowHeight = rowSansTreeHeight + treeHeight;\n if (y < -rowHeight) {\n return false;\n }\n if (self.attributes.showRowHeaders) {\n x += rowHeaderCellWidth;\n }\n cellHeight = rowHeight;\n //draw normal columns\n for (\n columnOrderIndex = self.scrollIndexLeft;\n columnOrderIndex < g;\n columnOrderIndex += 1\n ) {\n headerIndex = self.orders.columns[columnOrderIndex];\n x += drawCell(rowData, rowOrderIndex, rowIndex)(\n schema[headerIndex],\n headerIndex,\n columnOrderIndex,\n );\n if (x > self.width) {\n self.scrollIndexRight = columnOrderIndex;\n self.scrollPixelRight = x;\n break;\n }\n }\n //draw frozen columns\n x = 0;\n if (self.attributes.showRowHeaders) {\n x += rowHeaderCellWidth;\n }\n for (\n columnOrderIndex = 0;\n columnOrderIndex < self.frozenColumn;\n columnOrderIndex += 1\n ) {\n headerIndex = self.orders.columns[columnOrderIndex];\n x += drawCell(rowData, rowOrderIndex, rowIndex)(\n schema[headerIndex],\n headerIndex,\n columnOrderIndex,\n );\n if (x > self.width) {\n break;\n }\n }\n self.lastFrozenColumnPixel = x;\n // cell height might have changed during drawing\n cellHeight = rowHeight;\n x =\n -self.scrollBox.scrollLeft +\n self.scrollPixelLeft +\n self.style.cellBorderWidth;\n // don't draw a tree for the new row\n treeGrid = self.childGrids[rowOrderIndex];\n if (rowOrderIndex !== viewData.length && rowOpen) {\n treeGrid.visible = true;\n treeGrid.parentNode = {\n offsetTop: y + rowSansTreeHeight + self.canvasOffsetTop,\n offsetLeft: rowHeaderCellWidth - 1 + self.canvasOffsetLeft,\n offsetHeight: treeHeight,\n offsetWidth:\n self.width - rowHeaderCellWidth - self.style.scrollBarWidth - 1,\n offsetParent: self.intf.parentNode,\n parentNode: self.intf.parentNode,\n style: self.style,\n nodeType: 'canvas-datagrid-tree',\n scrollTop: self.scrollBox.scrollTop,\n scrollLeft: self.scrollBox.scrollLeft,\n rowIndex: rowOrderIndex,\n };\n self.visibleCells.unshift({\n rowIndex: rowOrderIndex,\n columnIndex: 0,\n y: treeGrid.parentNode.offsetTop,\n x: treeGrid.parentNode.offsetLeft,\n height: treeGrid.height,\n width: treeGrid.width,\n style: 'tree-grid',\n type: treeGrid.parentNode.nodeType,\n });\n treeGrid.draw();\n } else if (treeGrid) {\n treeGrid.parentNode.offsetHeight = 0;\n delete self.sizes.trees[rowOrderIndex];\n }\n rowHeaders.push([rowData, rowOrderIndex, rowIndex, y, rowHeight]);\n self.visibleRowHeights[rowOrderIndex] = rowHeight;\n y += cellHeight + (bc ? 0 : self.style.cellBorderWidth);\n return true;\n }\n function initDraw() {\n self.visibleRows = [];\n schema = self.getSchema();\n self.visibleCells = [];\n self.canvasOffsetTop = self.isChildGrid ? self.parentNode.offsetTop : 0.5;\n self.canvasOffsetLeft = self.isChildGrid\n ? self.parentNode.offsetLeft\n : -0.5;\n h = self.height;\n w = self.width;\n }\n function drawBackground() {\n radiusRect(0, 0, w, h, 0);\n self.ctx.clip();\n self.ctx.fillStyle = self.style.gridBackgroundColor;\n fillRect(0, 0, w, h);\n }\n function drawFrozenRows() {\n var rowOrderIndex,\n ln = Math.min(viewData.length, self.frozenRow);\n x =\n -self.scrollBox.scrollLeft +\n self.scrollPixelLeft +\n self.style.cellBorderWidth;\n y = columnHeaderCellHeight;\n for (rowIndex = 0; rowIndex < ln; rowIndex += 1) {\n rowOrderIndex = self.orders.rows[rowIndex];\n if (!drawRow(rowOrderIndex, rowIndex)) {\n break;\n }\n }\n if (self.attributes.allowFreezingRows) {\n // HACK great, another stupid magic number.\n // Background will appear as a 0.5px artifact behind the row freeze bar without this hack\n y +=\n self.style.frozenMarkerBorderWidth +\n self.style.frozenMarkerWidth -\n 0.4999999999;\n }\n self.lastFrozenRowPixel = y;\n }\n function drawRows() {\n self.ctx.save();\n if (self.frozenRow > 0) {\n radiusRect(\n 0,\n self.lastFrozenRowPixel,\n self.width,\n self.height - self.lastFrozenRowPixel,\n 0,\n );\n self.ctx.clip();\n }\n var columnOrderIndex,\n rowOrderIndex,\n headerIndex,\n g = schema.length;\n x =\n -self.scrollBox.scrollLeft +\n self.scrollPixelLeft +\n self.style.cellBorderWidth;\n if (!self.attributes.snapToRow) {\n y +=\n -self.scrollBox.scrollTop +\n self.scrollPixelTop +\n self.style.cellBorderWidth;\n }\n for (\n rowIndex = self.frozenRow + self.scrollIndexTop;\n rowIndex < l;\n rowIndex += 1\n ) {\n rowOrderIndex = self.orders.rows[rowIndex];\n self.scrollIndexBottom = rowIndex;\n self.scrollPixelBottom = y;\n if (!drawRow(rowOrderIndex, rowIndex)) {\n break;\n }\n }\n if (self.attributes.showNewRow) {\n if (self.attributes.showRowHeaders) {\n x += rowHeaderCellWidth;\n }\n rowHeight = cellHeight = self.style.cellHeight;\n rowOpen = false;\n for (\n columnOrderIndex = self.scrollIndexLeft;\n columnOrderIndex < g;\n columnOrderIndex += 1\n ) {\n headerIndex = self.orders.columns[columnOrderIndex];\n x += drawCell(self.newRow, viewData.length, viewData.length)(\n schema[headerIndex],\n headerIndex,\n columnOrderIndex,\n );\n if (x > self.width + self.scrollBox.scrollLeft) {\n break;\n }\n }\n rowHeaders.push([\n self.newRow,\n viewData.length,\n viewData.length,\n y,\n rowHeight,\n ]);\n }\n self.ctx.restore();\n }\n function drawMoveMarkers() {\n if (!self.movingSelection) {\n return;\n }\n self.ctx.lineWidth = self.style.moveOverlayBorderWidth;\n self.ctx.strokeStyle = self.style.moveOverlayBorderColor;\n self.ctx.setLineDash(self.style.moveOverlayBorderSegments);\n moveBorders.forEach(function (c) {\n addBorderLine(c[0], c[1]);\n });\n self.ctx.setLineDash([]);\n }\n function drawReorderMarkers() {\n if (!self.reorderObject) {\n return;\n }\n var b = {\n height: self.reorderObject.height,\n width: self.reorderObject.width,\n x: self.reorderObject.x + self.reorderObject.dragOffset.x,\n y: self.reorderObject.y + self.reorderObject.dragOffset.y,\n },\n m = {\n width: w,\n height: h,\n x: 0,\n y: 0,\n };\n self.ctx.fillStyle = self.style.reorderMarkerBackgroundColor;\n self.ctx.lineWidth = self.style.reorderMarkerBorderWidth;\n self.ctx.strokeStyle = self.style.reorderMarkerBorderColor;\n if (self.dragMode === 'row-reorder') {\n for (var k = 0; k < self.selections.length; k++) {\n if (!self.selections[k] || k == self.reorderObject.rowIndex) continue;\n b.height += self.getRowHeight(k);\n }\n b.width = w;\n b.x = 0;\n m.width = w;\n m.height = self.currentCell.height;\n m.y = self.currentCell.y;\n fillRect(b.x, b.y, b.width, b.height);\n strokeRect(b.x, b.y, b.width, b.height);\n self.ctx.lineWidth = self.style.reorderMarkerIndexBorderWidth;\n self.ctx.strokeStyle = self.style.reorderMarkerIndexBorderColor;\n if (\n self.currentCell.rowIndex !== self.reorderObject.rowIndex &&\n self.currentCell.rowIndex > -1 &&\n self.currentCell.rowIndex < l\n ) {\n addBorderLine(\n m,\n self.reorderTarget.sortRowIndex > self.reorderObject.sortRowIndex\n ? 'b'\n : 't',\n );\n }\n } else if (self.dragMode === 'column-reorder' && self.reorderObject) {\n var selectedColumns = self.selections[0];\n for (var k = 1; k < selectedColumns.length; k++) {\n b.width += self.getColumnWidth(\n self.orders.columns[selectedColumns[k]],\n );\n }\n b.height = h;\n b.y = 0;\n m.height = h;\n m.width = self.currentCell.width;\n m.y = 0;\n m.x = self.currentCell.x;\n fillRect(b.x, b.y, b.width, b.height);\n strokeRect(b.x, b.y, b.width, b.height);\n self.ctx.lineWidth = self.style.reorderMarkerIndexBorderWidth;\n self.ctx.strokeStyle = self.style.reorderMarkerIndexBorderColor;\n if (\n self.currentCell.sortColumnIndex !==\n self.reorderObject.sortColumnIndex &&\n self.currentCell.sortColumnIndex > -1 &&\n self.currentCell.sortColumnIndex < schema.length\n ) {\n addBorderLine(\n m,\n self.reorderTarget.columnIndex > self.reorderObject.columnIndex\n ? 'r'\n : 'l',\n );\n }\n }\n }\n function drawBorder() {\n self.ctx.lineWidth = self.style.gridBorderWidth;\n self.ctx.strokeStyle = self.style.gridBorderColor;\n strokeRect(0, 0, self.width, self.height);\n }\n function drawSelectionBorders() {\n self.ctx.lineWidth = self.style.selectionOverlayBorderWidth;\n self.ctx.strokeStyle = self.style.selectionOverlayBorderColor;\n function dsb(c) {\n addBorderLine(c[0], c[1]);\n }\n selectionBorders\n .filter(function (c) {\n return (\n c[0].rowIndex < self.frozenRow &&\n c[0].columnIndex < self.frozenColumn\n );\n })\n .forEach(dsb);\n self.ctx.save();\n clipFrozenArea(0);\n selectionBorders\n .filter(function (c) {\n return (\n c[0].rowIndex >= self.frozenRow &&\n c[0].columnIndex >= self.frozenColumn\n );\n })\n .forEach(dsb);\n self.ctx.restore();\n self.ctx.save();\n clipFrozenArea(1);\n selectionBorders\n .filter(function (c) {\n return (\n c[0].rowIndex >= self.frozenRow &&\n c[0].columnIndex < self.frozenColumn\n );\n })\n .forEach(dsb);\n self.ctx.restore();\n self.ctx.save();\n clipFrozenArea(2);\n selectionBorders\n .filter(function (c) {\n return (\n c[0].rowIndex < self.frozenRow &&\n c[0].columnIndex >= self.frozenColumn\n );\n })\n .forEach(dsb);\n self.ctx.restore();\n }\n function drawSelectionHandles() {\n if (self.mobile || self.attributes.allowMovingSelection) {\n self.ctx.lineWidth = self.style.selectionHandleBorderWidth;\n self.ctx.strokeStyle = self.style.selectionHandleBorderColor;\n self.ctx.fillStyle = self.style.selectionHandleColor;\n selectionHandles.forEach(function (c) {\n addselectionHandle(c[0], c[1]);\n var az = self.attributes.touchSelectHandleZone / 2,\n ax =\n c[0].x + (c[1] === 'tl' || c[1] === 'bl' ? 0 : c[0].width) - az,\n ay =\n c[0].y + (c[1] === 'bl' || c[1] === 'br' ? c[0].height : 0) - az;\n self.visibleCells.unshift({\n x: ax,\n y: ay,\n height: self.style.selectionHandleSize + az,\n width: self.style.selectionHandleSize + az,\n style: 'selection-handle-' + c[1],\n });\n });\n }\n }\n function drawActiveCell() {\n if (!aCell) {\n return;\n }\n self.ctx.save();\n var cl =\n self.activeCell.columnIndex + 1 > self.frozenColumn ||\n self.activeCell.rowIndex + 1 > self.frozenRow,\n acx = cl ? self.lastFrozenColumnPixel : 0,\n acy = cl ? self.lastFrozenRowPixel : 0,\n acw = cl ? self.width - self.lastFrozenColumnPixel : self.width,\n ach = cl ? self.height - self.lastFrozenRowPixel : self.height;\n radiusRect(acx, acy, acw, ach, 0);\n self.ctx.clip();\n if (self.attributes.selectionMode === 'row') {\n if (self.activeCell && self.activeCell.rowIndex === aCell.rowIndex) {\n self.ctx.lineWidth = self.style.activeCellOverlayBorderWidth;\n self.ctx.strokeStyle = self.style.activeCellOverlayBorderColor;\n strokeRect(\n 1,\n aCell.y,\n self.getHeaderWidth() + rowHeaderCellWidth,\n self.visibleRowHeights[aCell.rowIndex],\n );\n }\n } else {\n self.ctx.lineWidth = self.style.activeCellOverlayBorderWidth;\n self.ctx.strokeStyle = self.style.activeCellOverlayBorderColor;\n strokeRect(aCell.x, aCell.y, aCell.width, aCell.height);\n }\n self.ctx.restore();\n }\n function drawFrozenMarkers() {\n var my = self.lastFrozenRowPixel - self.style.frozenMarkerWidth,\n mx = self.lastFrozenColumnPixel - self.style.frozenMarkerBorderWidth,\n xHover =\n self.currentCell && self.currentCell.style === 'frozen-row-marker',\n yHover =\n self.currentCell && self.currentCell.style === 'frozen-column-marker';\n self.ctx.lineWidth = self.style.frozenMarkerBorderWidth;\n if (self.attributes.allowFreezingColumns) {\n self.ctx.fillStyle = yHover\n ? self.style.frozenMarkerHoverColor\n : self.style.frozenMarkerColor;\n self.ctx.strokeStyle = yHover\n ? self.style.frozenMarkerHoverBorderColor\n : self.style.frozenMarkerBorderColor;\n fillRect(mx, 0, self.style.frozenMarkerWidth, self.height);\n strokeRect(mx, 0, self.style.frozenMarkerWidth, self.height);\n self.visibleCells.unshift({\n x: mx,\n y: 0,\n height: self.height,\n width:\n self.style.frozenMarkerWidth + self.style.frozenMarkerBorderWidth,\n style: 'frozen-column-marker',\n });\n }\n if (self.attributes.allowFreezingRows) {\n self.ctx.fillStyle = xHover\n ? self.style.frozenMarkerHoverColor\n : self.style.frozenMarkerColor;\n self.ctx.strokeStyle = xHover\n ? self.style.frozenMarkerHoverBorderColor\n : self.style.frozenMarkerBorderColor;\n fillRect(0, my, self.width, self.style.frozenMarkerWidth);\n strokeRect(0, my, self.width, self.style.frozenMarkerWidth);\n self.visibleCells.unshift({\n x: 0,\n y: my,\n height:\n self.style.frozenMarkerWidth + self.style.frozenMarkerBorderWidth,\n width: self.width,\n style: 'frozen-row-marker',\n });\n }\n if (self.freezeMarkerPosition) {\n self.ctx.fillStyle = self.style.frozenMarkerActiveColor;\n self.ctx.strokeStyle = self.style.frozenMarkerActiveBorderColor;\n if (self.dragMode === 'frozen-column-marker') {\n fillRect(\n self.freezeMarkerPosition.x,\n 0,\n self.style.frozenMarkerWidth,\n self.height,\n );\n strokeRect(\n self.freezeMarkerPosition.x,\n 0,\n self.style.frozenMarkerWidth,\n self.height,\n );\n } else {\n fillRect(\n 0,\n self.freezeMarkerPosition.y,\n self.width,\n self.style.frozenMarkerWidth,\n );\n strokeRect(\n 0,\n self.freezeMarkerPosition.y,\n self.width,\n self.style.frozenMarkerWidth,\n );\n }\n }\n }\n function drawPerfLines() {\n if (!self.attributes.showPerformance) {\n return;\n }\n var pw = 250,\n px =\n self.width -\n pw -\n self.style.scrollBarWidth -\n self.style.scrollBarBorderWidth * 2,\n py = columnHeaderCellHeight,\n ph = 100;\n if (scrollDebugCounters.length === 0) {\n scrollDebugCounters = fillArray(0, perfWindowSize, 1, function () {\n return [0, 0];\n });\n }\n if (touchPPSCounters.length === 0) {\n touchPPSCounters = fillArray(0, perfWindowSize, 1, function () {\n return [0, 0];\n });\n }\n if (entityCount.length === 0) {\n entityCount = fillArray(0, perfWindowSize, 1, 0);\n }\n self.ctx.lineWidth = 0.5;\n function dpl(name, perfArr, arrIndex, max, color, useAbs, rowIndex) {\n var v;\n drawPerfLine(pw, ph, px, py, perfArr, arrIndex, max, color, useAbs);\n self.ctx.fillStyle = color;\n fillRect(3 + px, py + 9 + rowIndex * 11, 8, 8);\n self.ctx.fillStyle = self.style.debugPerfChartTextColor;\n v = arrIndex !== undefined ? perfArr[0][arrIndex] : perfArr[0];\n fillText(\n name + ' ' + (isNaN(v) ? 0 : v).toFixed(3),\n 14 + px,\n py + 16 + rowIndex * 11,\n );\n }\n self.ctx.textAlign = 'left';\n self.ctx.font = self.style.debugFont;\n self.ctx.fillStyle = self.style.debugPerfChartBackground;\n fillRect(px, py, pw, ph);\n [\n [\n 'Scroll Height',\n scrollDebugCounters,\n 0,\n self.scrollBox.scrollHeight,\n self.style.debugScrollHeightColor,\n false,\n ],\n [\n 'Scroll Width',\n scrollDebugCounters,\n 1,\n self.scrollBox.scrollWidth,\n self.style.debugScrollWidthColor,\n false,\n ],\n [\n 'Performance',\n perfCounters,\n undefined,\n 200,\n self.style.debugPerformanceColor,\n false,\n ],\n [\n 'Entities',\n entityCount,\n undefined,\n 1500,\n self.style.debugEntitiesColor,\n false,\n ],\n [\n 'TouchPPSX',\n touchPPSCounters,\n 0,\n 1000,\n self.style.debugTouchPPSXColor,\n true,\n ],\n [\n 'TouchPPSY',\n touchPPSCounters,\n 1,\n 1000,\n self.style.debugTouchPPSYColor,\n true,\n ],\n ].forEach(function (i, index) {\n i.push(index);\n dpl.apply(null, i);\n });\n self.ctx.fillStyle = self.style.debugPerfChartBackground;\n entityCount.pop();\n entityCount.unshift(self.visibleCells.length);\n scrollDebugCounters.pop();\n scrollDebugCounters.unshift([\n self.scrollBox.scrollTop,\n self.scrollBox.scrollLeft,\n ]);\n touchPPSCounters.pop();\n touchPPSCounters.unshift([self.yPPS, self.xPPS]);\n }\n function drawDebug() {\n self.ctx.save();\n var d;\n if (self.attributes.showPerformance || self.attributes.debug) {\n if (perfCounters.length === 0) {\n perfCounters = fillArray(0, perfWindowSize, 1, 0);\n }\n perfCounters.pop();\n perfCounters.unshift(performance.now() - p);\n }\n if (!self.attributes.debug) {\n self.ctx.restore();\n return;\n }\n self.ctx.font = self.style.debugFont;\n d = {};\n d.perf = (\n perfCounters.reduce(function (a, b) {\n return a + b;\n }, 0) / Math.min(drawCount, perfCounters.length)\n ).toFixed(1);\n d.perfDelta = perfCounters[0].toFixed(1);\n d.frozenColumnsWidth = getFrozenColumnsWidth();\n d.htmlImages = Object.keys(self.htmlImageCache).length;\n d.reorderObject =\n 'x: ' +\n (self.reorderObject || { columnIndex: 0 }).columnIndex +\n ', y: ' +\n (self.reorderObject || { rowIndex: 0 }).rowIndex;\n d.reorderTarget =\n 'x: ' +\n (self.reorderTarget || { columnIndex: 0 }).columnIndex +\n ', y: ' +\n (self.reorderTarget || { rowIndex: 0 }).rowIndex;\n d.scale = self.scale;\n d.startScale = self.startScale;\n d.scaleDelta = self.scaleDelta;\n d.zoomDeltaStart = self.zoomDeltaStart;\n d.touchLength = self.touchLength;\n d.touches =\n 'y0: ' +\n (self.touchPosition || { y: 0 }).y +\n ' y1: ' +\n (self.touchPosition1 || { y: 0 }).y;\n d.scrollBox = self.scrollBox.toString();\n d.scrollIndex =\n 'x: ' + self.scrollIndexLeft + ', y: ' + self.scrollIndexTop;\n d.scrollPixel =\n 'x: ' + self.scrollPixelLeft + ', y: ' + self.scrollPixelTop;\n d.canvasOffset =\n 'x: ' + self.canvasOffsetLeft + ', y: ' + self.canvasOffsetTop;\n d.touchDelta = 'x: ' + self.touchDelta.x + ', y: ' + self.touchDelta.y;\n d.touchAnimateTo =\n 'x: ' + self.touchAnimateTo.x + ', y: ' + self.touchAnimateTo.y;\n d.scrollAnimation =\n 'x: ' + self.scrollAnimation.x + ', y: ' + self.scrollAnimation.y;\n d.touchPPS = 'x: ' + self.xPPS + ', y: ' + self.yPPS;\n d.touchPPST = 'x: ' + self.xPPST + ', y: ' + self.yPPST;\n d.touchDuration = self.touchDuration;\n d.pointerLockPosition = self.pointerLockPosition\n ? self.pointerLockPosition.x + ', ' + self.pointerLockPosition.y\n : '';\n d.size = 'w: ' + self.width + ', h: ' + self.height;\n d.mouse = 'x: ' + self.mouse.x + ', y: ' + self.mouse.y;\n d.touch = !self.touchStart\n ? ''\n : 'x: ' + self.touchStart.x + ', y: ' + self.touchStart.y;\n d.entities = self.visibleCells.length;\n d.hasFocus = self.hasFocus;\n d.dragMode = self.dragMode;\n if (self.currentCell) {\n d.columnIndex = self.currentCell.columnIndex;\n d.rowIndex = self.currentCell.rowIndex;\n d.sortColumnIndex = self.currentCell.sortColumnIndex;\n d.sortRowIndex = self.currentCell.sortRowIndex;\n d.context = self.currentCell.context;\n d.dragContext = self.currentCell.dragContext;\n d.style = self.currentCell.style;\n d.type = self.currentCell.type;\n }\n self.ctx.textAlign = 'right';\n self.ctx.fillStyle = self.style.debugBackgroundColor;\n fillRect(0, 0, self.width, self.height);\n Object.keys(d).forEach(function (key, index) {\n var m = key + ': ' + d[key],\n lh = 14;\n self.ctx.fillStyle = self.style.debugColor;\n fillText(\n m,\n w - 20,\n (self.attributes.showPerformance ? 140 : 24) + index * lh,\n );\n });\n self.ctx.restore();\n }\n self.ctx.save();\n initDraw();\n drawBackground();\n drawFrozenRows();\n drawRows();\n drawActiveCell();\n drawHeaders();\n drawFrozenMarkers();\n drawSelectionHandles();\n drawReorderMarkers();\n drawMoveMarkers();\n drawBorder();\n drawSelectionBorders();\n drawScrollBars();\n if (checkScrollHeight) {\n self.resize(true);\n }\n drawDebug();\n drawPerfLines();\n if (self.dispatchEvent('afterdraw', {})) {\n return;\n }\n self.ctx.restore();\n };\n}\n","/*jslint browser: true, unparam: true, todo: true, plusplus: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nimport isPrintableKeyEvent from 'is-printable-key-event';\nimport { isSupportedHtml, parseData } from './util';\n\nexport default function (self) {\n var wheeling;\n self.stopPropagation = function (e) {\n e.stopPropagation();\n };\n /**\n * Adds an event listener to the given event.\n * @memberof canvasDatagrid\n * @name addEventListener\n * @method\n * @param {string} ev The name of the event to subscribe to.\n * @param {function} fn The event procedure to execute when the event is raised.\n */\n self.addEventListener = function (ev, fn) {\n self.events[ev] = self.events[ev] || [];\n self.events[ev].unshift(fn);\n };\n /**\n * Removes the given listener function from the given event. Must be an actual reference to the function that was bound.\n * @memberof canvasDatagrid\n * @name removeEventListener\n * @method\n * @param {string} ev The name of the event to unsubscribe from.\n * @param {function} fn The event procedure to execute when the event is raised.\n */\n self.removeEventListener = function (ev, fn) {\n (self.events[ev] || []).forEach(function removeEachListener(sfn, idx) {\n if (fn === sfn) {\n self.events[ev].splice(idx, 1);\n }\n });\n };\n /**\n * Fires the given event, passing an event object to the event subscribers.\n * @memberof canvasDatagrid\n * @name dispatchEvent\n * @method\n * @param {number} ev The name of the event to dispatch.\n * @param {number} e The event object.\n */\n self.dispatchEvent = function (ev, e) {\n e = ev.type ? ev : e || {};\n ev = ev.type || ev;\n var defaultPrevented;\n function preventDefault() {\n defaultPrevented = true;\n }\n if (!self.events[ev]) {\n return;\n }\n self.events[ev].forEach(function dispatchEachEvent(fn) {\n e.ctx = self.ctx;\n e.preventDefault = preventDefault;\n fn.apply(self.intf, [e]);\n });\n return defaultPrevented;\n };\n self.getRatio = function () {\n return Math.min(\n self.attributes.maxPixelRatio,\n (window.devicePixelRatio || 1) /\n (self.ctx.webkitBackingStorePixelRatio ||\n self.ctx.mozBackingStorePixelRatio ||\n self.ctx.msBackingStorePixelRatio ||\n self.ctx.oBackingStorePixelRatio ||\n self.ctx.backingStorePixelRatio ||\n 1),\n );\n };\n self.resize = function (drawAfterResize) {\n if (!self.canvas) {\n return;\n }\n var x,\n v = {\n x: 0,\n y: 0,\n height: 0,\n width: 0,\n style: 'vertical-scroll-bar',\n },\n n = {\n x: 0,\n y: 0,\n height: 0,\n width: 0,\n style: 'horizontal-scroll-bar',\n },\n vb = {\n x: 0,\n y: 0,\n height: 0,\n width: 0,\n style: 'vertical-scroll-box',\n },\n nb = {\n x: 0,\n y: 0,\n height: 0,\n width: 0,\n style: 'horizontal-scroll-box',\n },\n co = {\n x: 0,\n y: 0,\n height: 0,\n width: 0,\n isCorner: true,\n isScrollBoxCorner: true,\n style: 'scroll-box-corner',\n },\n m = self.style.scrollBarBoxMargin * 2,\n b = self.style.scrollBarBorderWidth * 2,\n d = self.style.scrollBarBoxMargin * 0.5,\n sbw = self.style.scrollBarWidth + self.style.scrollBarBorderWidth * 2,\n ratio = self.getRatio(),\n bm = self.style.gridBorderCollapse === 'collapse' ? 1 : 2,\n cellBorder = self.style.cellBorderWidth * bm,\n columnHeaderCellBorder = self.style.columnHeaderCellBorderWidth * bm,\n dataHeight = 0,\n dataWidth = 0,\n dims,\n l = (self.viewData || []).length,\n columnHeaderCellHeight = self.getColumnHeaderCellHeight(),\n rowHeaderCellWidth = self.getRowHeaderCellWidth(),\n ch = self.style.cellHeight,\n s = self.getSchema();\n // sets actual DOM canvas element\n function checkScrollBoxVisibility() {\n self.scrollBox.horizontalBarVisible =\n (self.style.width !== 'auto' &&\n dataWidth > self.scrollBox.width &&\n self.style.overflowX !== 'hidden') ||\n self.style.overflowX === 'scroll';\n self.scrollBox.horizontalBoxVisible = dataWidth > self.scrollBox.width;\n self.scrollBox.verticalBarVisible =\n (self.style.height !== 'auto' &&\n dataHeight > self.scrollBox.height &&\n self.style.overflowY !== 'hidden') ||\n self.style.overflowY === 'scroll';\n self.scrollBox.verticalBoxVisible = dataHeight > self.scrollBox.height;\n }\n function setScrollBoxSize() {\n self.scrollBox.width = self.width - rowHeaderCellWidth;\n self.scrollBox.height = self.height - columnHeaderCellHeight;\n }\n function setCanvasSize() {\n if (self.isChildGrid) {\n return;\n }\n dims = {\n // HACK +1 ? maybe it's a magic cell border? Required to line up properly in auto height mode.\n height: columnHeaderCellHeight + dataHeight + cellBorder + 1,\n width: dataWidth + rowHeaderCellWidth + cellBorder,\n };\n ['width', 'height'].forEach(function (dim) {\n //TODO: support inherit\n if (\n ['auto', undefined].indexOf(self.style[dim]) !== -1 &&\n ['auto', undefined].indexOf(self.appliedInlineStyles[dim]) !== -1\n ) {\n self.parentNodeStyle[dim] = dims[dim] + 'px';\n } else if (\n ['auto', undefined].indexOf(self.style[dim]) == -1 &&\n ['auto', undefined].indexOf(self.appliedInlineStyles[dim]) == -1\n ) {\n self.parentNodeStyle[dim] = self.style[dim];\n if (self.isComponent) {\n self.canvas.style[dim] = self.style[dim];\n }\n }\n });\n }\n self.scrollCache.x = [];\n self.scrollCache.y = [];\n for (x = 0; x < l; x += 1) {\n self.scrollCache.y[x] = dataHeight;\n dataHeight +=\n ((self.sizes.rows[x] || ch) + (self.sizes.trees[x] || 0)) * self.scale +\n // HACK? if an expanded tree row is frozen it is necessary to add the tree row's height a second time.\n (self.frozenRow > x ? self.sizes.trees[x] || 0 : 0);\n }\n if (l > 1) {\n self.scrollCache.y[x] = dataHeight;\n }\n dataWidth =\n s.reduce(function reduceSchema(accumulator, column, columnIndex) {\n // intentional redefintion of column. This causes scrollCache to be in the correct order\n column = s[self.orders.columns[columnIndex]];\n if (column.hidden) {\n self.scrollCache.x[columnIndex] = accumulator;\n return accumulator;\n }\n var va =\n accumulator + self.getColumnWidth(self.orders.columns[columnIndex]);\n self.scrollCache.x[columnIndex] = va;\n return va;\n }, 0) || 0;\n if (self.attributes.showNewRow) {\n dataHeight += ch;\n }\n if (self.attributes.snapToRow) {\n dataHeight += self.style.cellHeight;\n }\n setCanvasSize();\n if (self.isChildGrid) {\n self.width = self.parentNode.offsetWidth;\n self.height = self.parentNode.offsetHeight;\n } else if (\n self.height !== self.canvas.offsetHeight ||\n self.width !== self.canvas.offsetWidth\n ) {\n self.height = self.canvas.offsetHeight;\n self.width = self.canvas.offsetWidth;\n self.canvasOffsetLeft = self.args.canvasOffsetLeft || 0;\n self.canvasOffsetTop = self.args.canvasOffsetTop || 0;\n }\n /// calculate scroll bar dimensions\n // non-controversial\n self.scrollBox.top = columnHeaderCellHeight + columnHeaderCellBorder;\n self.scrollBox.left = rowHeaderCellWidth;\n // width and height of scroll box\n setScrollBoxSize();\n // is the data larger than the scroll box\n checkScrollBoxVisibility();\n // if the scroll box is visible, make room for it by expanding the size of the element\n // if the other dimension is set to auto\n if (self.scrollBox.horizontalBarVisible) {\n if (self.style.height === 'auto' && !self.isChildGrid) {\n self.height += sbw;\n }\n dataHeight += sbw;\n setCanvasSize();\n setScrollBoxSize();\n checkScrollBoxVisibility();\n }\n if (self.scrollBox.verticalBarVisible) {\n if (self.style.width === 'auto' && !self.isChildGrid) {\n self.width += sbw;\n }\n dataWidth += sbw;\n setCanvasSize();\n setScrollBoxSize();\n checkScrollBoxVisibility();\n }\n // set again after bar visibility checks\n setScrollBoxSize();\n self.scrollBox.scrollWidth = dataWidth - self.scrollBox.width;\n self.scrollBox.scrollHeight = dataHeight - self.scrollBox.height;\n if (self.frozenColumn > 0) {\n self.scrollBox.widthBoxRatio =\n (self.scrollBox.width - self.scrollCache.x[self.frozenColumn - 1]) /\n dataWidth;\n } else {\n self.scrollBox.widthBoxRatio = self.scrollBox.width / dataWidth;\n }\n self.scrollBox.scrollBoxWidth =\n self.scrollBox.width * self.scrollBox.widthBoxRatio -\n self.style.scrollBarWidth -\n b -\n d;\n // TODO: This heightBoxRatio number is terribly wrong.\n // They should be a result of the size of the grid/canvas?\n // it being off causes the scroll bar to \"slide\" under\n // the dragged mouse.\n // https://github.com/TonyGermaneri/canvas-datagrid/issues/97\n self.scrollBox.heightBoxRatio =\n (self.scrollBox.height -\n columnHeaderCellHeight -\n self.scrollCache.y[self.frozenRow]) /\n dataHeight;\n self.scrollBox.scrollBoxHeight =\n self.scrollBox.height * self.scrollBox.heightBoxRatio -\n self.style.scrollBarWidth -\n b -\n d;\n self.scrollBox.scrollBoxWidth = Math.max(\n self.scrollBox.scrollBoxWidth,\n self.style.scrollBarBoxMinSize,\n );\n self.scrollBox.scrollBoxHeight = Math.max(\n self.scrollBox.scrollBoxHeight,\n self.style.scrollBarBoxMinSize,\n );\n // horizontal\n n.x += rowHeaderCellWidth;\n n.y += self.height - self.style.scrollBarWidth - d;\n n.width =\n self.width - self.style.scrollBarWidth - rowHeaderCellWidth - d - m;\n n.height = self.style.scrollBarWidth + self.style.scrollBarBorderWidth + d;\n // horizontal box\n nb.y = n.y + self.style.scrollBarBoxMargin;\n nb.width = self.scrollBox.scrollBoxWidth;\n nb.height = self.style.scrollBarBoxWidth;\n // vertical\n v.x +=\n self.width -\n self.style.scrollBarWidth -\n self.style.scrollBarBorderWidth -\n d;\n v.y += columnHeaderCellHeight + self.scrollCache.y[self.frozenRow];\n v.width = self.style.scrollBarWidth + self.style.scrollBarBorderWidth + d;\n v.height =\n self.height - columnHeaderCellHeight - self.style.scrollBarWidth - d - m;\n // vertical box\n vb.x = v.x + self.style.scrollBarBoxMargin;\n vb.y += self.scrollCache.y[self.frozenRow];\n vb.width = self.style.scrollBarBoxWidth;\n vb.height = self.scrollBox.scrollBoxHeight;\n // corner\n co.x = n.x + n.width + m;\n co.y = v.y + v.height + m;\n co.width = self.style.scrollBarWidth + self.style.scrollBarBorderWidth;\n co.height = self.style.scrollBarWidth + self.style.scrollBarBorderWidth;\n self.scrollBox.entities = {\n horizontalBar: n,\n horizontalBox: nb,\n verticalBar: v,\n verticalBox: vb,\n corner: co,\n };\n self.scrollBox.bar = {\n v: v,\n h: n,\n };\n self.scrollBox.box = {\n v: vb,\n h: nb,\n };\n /// calculate page and dom elements\n self.page = Math.max(\n 1,\n self.visibleRows.length - 3 - self.attributes.pageUpDownOverlap,\n );\n // set canvas drawing related items\n if (!self.isChildGrid) {\n self.canvas.width = self.width * ratio;\n self.canvas.height = self.height * ratio;\n self.ctx.scale(ratio, ratio);\n }\n // resize any open dom elements (input/textarea)\n self.resizeEditInput();\n self.scroll(true);\n if (drawAfterResize) {\n self.draw(true);\n }\n self.dispatchEvent('resize', {});\n return true;\n };\n self.scroll = function (dontDraw) {\n var s = self.getSchema(),\n l = (self.viewData || []).length,\n ch = self.style.cellHeight;\n // go too far in leaps, then get focused\n self.scrollIndexTop = Math.floor(\n l * (self.scrollBox.scrollTop / self.scrollBox.scrollHeight) - 100,\n );\n self.scrollIndexTop = Math.max(self.scrollIndexTop, 0);\n self.scrollPixelTop = self.scrollCache.y[self.scrollIndexTop];\n // sometimes the grid is rendered but the height is zero\n if (self.scrollBox.scrollHeight === 0) {\n self.scrollIndexTop = 0;\n }\n self.scrollPixelTop = 0;\n self.scrollIndexLeft = self.frozenColumn;\n self.scrollPixelLeft = 0;\n while (\n self.scrollPixelTop < self.scrollBox.scrollTop &&\n self.scrollIndexTop < self.viewData.length\n ) {\n // start on index +1 since index 0 was used in \"go too far\" section above\n self.scrollIndexTop += 1;\n self.scrollPixelTop = self.scrollCache.y[self.scrollIndexTop];\n }\n while (\n self.scrollPixelLeft < self.scrollBox.scrollLeft + 1 &&\n self.scrollIndexLeft < s.length\n ) {\n self.scrollPixelLeft = self.scrollCache.x[self.scrollIndexLeft];\n self.scrollIndexLeft += 1;\n }\n if (s.length > 0) {\n self.scrollIndexLeft = Math.max(self.scrollIndexLeft - 1, 0);\n self.scrollPixelLeft -= self.getColumnWidth(\n self.orders.columns[self.scrollIndexLeft],\n );\n }\n if ((self.viewData || []).length > 0) {\n self.scrollIndexTop = Math.max(self.scrollIndexTop - 1, 0);\n self.scrollPixelTop = Math.max(\n self.scrollPixelTop -\n (self.viewData[self.scrollIndexTop]\n ? (self.sizes.rows[self.scrollIndexTop] || ch) +\n (self.sizes.trees[self.scrollIndexTop] || 0)\n : ch) *\n self.scale,\n 0,\n );\n }\n self.ellipsisCache = {};\n if (!dontDraw) {\n self.draw(true);\n }\n //TODO: figure out why this has to be delayed for child grids\n //BUG: wheeling event on 3rd level hierarchy fails to move input box\n requestAnimationFrame(self.resizeEditInput);\n self.dispatchEvent('scroll', {\n top: self.scrollBox.scrollTop,\n left: self.scrollBox.scrollLeft,\n });\n };\n self.mousemove = function (e, overridePos) {\n if (self.contextMenu || self.input) {\n return;\n }\n self.mouse = overridePos || self.getLayerPos(e);\n var ctrl =\n (e.ctrlKey || e.metaKey || self.attributes.persistantSelectionMode) &&\n !self.attributes.singleSelectionMode,\n i,\n s = self.getSchema(),\n dragBounds,\n sBounds,\n x = self.mouse.x,\n y = self.mouse.y,\n cell = self.getCellAt(x, y),\n delta,\n ev = { NativeEvent: e, cell: cell, x: x, y: y },\n previousCell = self.currentCell;\n clearTimeout(self.scrollTimer);\n if (!self.isInGrid({ x: x, y: y })) {\n self.hasFocus = false;\n }\n if (self.dispatchEvent('mousemove', ev)) {\n return;\n }\n if (cell && self.currentCell) {\n self.rowBoundaryCrossed = self.currentCell.rowIndex !== cell.rowIndex;\n self.columnBoundaryCrossed =\n self.currentCell.columnIndex !== cell.columnIndex;\n self.cellBoundaryCrossed =\n self.rowBoundaryCrossed || self.columnBoundaryCrossed;\n ['row', 'column', 'cell'].forEach(function (prefix) {\n if (self[prefix + 'BoundaryCrossed']) {\n ev.cell = previousCell;\n self.dispatchEvent(prefix + 'mouseout', ev);\n ev.cell = cell;\n self.dispatchEvent(prefix + 'mouseover', ev);\n }\n });\n }\n self.currentCell = cell;\n\n self.hovers = {};\n if (!self.draggingItem && cell) {\n self.dragItem = cell;\n self.dragMode = cell.dragContext;\n self.cursor = cell.context;\n if (cell.context === 'cell') {\n self.cursor = 'default';\n self.hovers = {\n rowIndex: cell.rowIndex,\n columnIndex: cell.columnIndex,\n onFilterButton: false,\n };\n if (\n cell.isFilterable &&\n x > cell.x + cell.width - self.style.filterButtonWidth &&\n x < cell.x + cell.width &&\n y > cell.y + cell.height - self.style.filterButtonHeight &&\n y < cell.y + cell.height\n ) {\n self.hovers.onFilterButton = true;\n self.draw();\n }\n }\n if (self.selecting || self.reorderObject) {\n delta = {\n x: Math.abs(self.dragStart.x - x),\n y: Math.abs(self.dragStart.y - y),\n };\n if (self.dragStartObject.columnIndex !== -1 && e.shiftKey) {\n self.dragStartObject = {\n rowIndex: self.activeCell.rowIndex,\n columnIndex: self.activeCell.columnIndex,\n };\n }\n dragBounds = {\n top: Math.min(self.dragStartObject.rowIndex, cell.rowIndex),\n left: Math.min(self.dragStartObject.columnIndex, cell.columnIndex),\n bottom: Math.max(self.dragStartObject.rowIndex, cell.rowIndex),\n right: Math.max(self.dragStartObject.columnIndex, cell.columnIndex),\n };\n if (self.dragStartObject.columnIndex === -1) {\n sBounds = self.getSelectionBounds();\n dragBounds.left = -1;\n dragBounds.right = s.length - 1;\n dragBounds.top = Math.min(sBounds.top, cell.rowIndex);\n dragBounds.bottom = Math.max(sBounds.bottom, cell.rowIndex);\n }\n if (\n self.dragStartObject.rowIndex !== cell.rowIndex ||\n self.dragStartObject.columnIndex !== cell.columnIndex\n ) {\n self.ignoreNextClick = true;\n }\n if (\n self.cellBoundaryCrossed ||\n (delta.x === 0 && delta.y === 0) ||\n self.attributes.selectionMode === 'row'\n ) {\n if (\n (self.attributes.selectionMode === 'row' ||\n self.dragStartObject.columnIndex === -1) &&\n self.rowBoundaryCrossed\n ) {\n self.selectRow(cell.rowIndex, ctrl, null, true);\n } else if (self.attributes.selectionMode !== 'row') {\n if (cell.hovered && self.hovers.onFilterButton) {\n if (cell.openedFilter) {\n cell.openedFilter = false;\n self.selectedFilterButton = {\n columnIndex: -1,\n rowIndex: -1,\n };\n } else {\n self.selectedFilterButton.rowIndex = cell.rowIndex;\n self.selectedFilterButton.columnIndex = cell.columnIndex;\n self.contextmenuEvent(e, {\n x: cell.x + cell.width - self.style.filterButtonWidth,\n y: cell.y + cell.height,\n rect: { left: 0, top: 0 },\n });\n }\n self.draw();\n return;\n } else {\n self.selectedFilterButton = {\n columnIndex: -1,\n rowIndex: -1,\n };\n if (self.hovers.onFilterButton) return;\n if (!self.dragAddToSelection && cell.rowIndex !== undefined) {\n if (\n self.selections[cell.rowIndex] &&\n self.selections[cell.rowIndex].indexOf(cell.columnIndex) !==\n -1\n ) {\n self.selections[cell.rowIndex].splice(\n self.selections[cell.rowIndex].indexOf(cell.columnIndex),\n 1,\n );\n }\n } else {\n self.selections[cell.rowIndex] =\n self.selections[cell.rowIndex] || [];\n if (\n self.selections[cell.rowIndex].indexOf(cell.columnIndex) ===\n -1\n ) {\n self.selections[cell.rowIndex].push(cell.columnIndex);\n var event = {\n selections: self.selections,\n selectedData: self.getSelectedData(),\n selectedCells: self.getSelectedCells(),\n selectionBounds: self.getSelectionBounds(),\n };\n self.dispatchEvent('selectionchanged', event);\n }\n }\n }\n }\n }\n if (\n (!self.selectionBounds ||\n dragBounds.top !== self.selectionBounds.top ||\n dragBounds.left !== self.selectionBounds.left ||\n dragBounds.bottom !== self.selectionBounds.bottom ||\n dragBounds.right !== self.selectionBounds.right) &&\n !ctrl\n ) {\n if (!(cell.hovered && self.hovers.onFilterButton)) {\n self.selections = [];\n }\n if (dragBounds.top === -1) {\n dragBounds.top = 0;\n }\n sBounds = dragBounds;\n if (self.attributes.selectionMode === 'row') {\n for (i = sBounds.top; i <= sBounds.bottom; i += 1) {\n self.selectRow(i, true, null, true);\n }\n } else {\n self.selectArea(sBounds, true);\n if (sBounds.left == -1 && sBounds.top !== sBounds.bottom)\n self.isMultiRowsSelected = true;\n }\n }\n\n if (self.attributes.autoScrollOnMousemove) {\n var movedVertically = delta.y > self.attributes.autoScrollMargin;\n var movedHorizontally = delta.x > self.attributes.autoScrollMargin;\n\n if (movedVertically && !movedHorizontally)\n self.autoScrollZone(e, -1, y, ctrl);\n else if (movedHorizontally && !movedVertically)\n self.autoScrollZone(e, x, -1, ctrl);\n else if (movedHorizontally && movedVertically)\n self.autoScrollZone(e, x, y, ctrl);\n } else {\n self.autoScrollZone(e, x, y, ctrl);\n }\n }\n }\n self.cellBoundaryCrossed = false;\n self.rowBoundaryCrossed = false;\n self.columnBoundaryCrossed = false;\n self.draw(true);\n };\n self.click = function (e, overridePos) {\n var i,\n startingBounds = JSON.stringify(self.getSelectionBounds()),\n ctrl =\n (e.ctrlKey || e.metaKey || self.attributes.persistantSelectionMode) &&\n !self.attributes.singleSelectionMode,\n pos = overridePos || self.getLayerPos(e);\n self.currentCell = self.getCellAt(pos.x, pos.y);\n if (self.currentCell.grid !== undefined) {\n return;\n }\n function checkSelectionChange() {\n var ev,\n sb = self.getSelectionBounds();\n\n if (startingBounds === JSON.stringify(sb)) {\n return;\n }\n ev = {\n selections: self.selections,\n selectionBounds: self.getSelectionBounds(),\n selectedCells: self.getSelectedCells(),\n };\n Object.defineProperty(ev, 'selectedData', {\n get: function () {\n return self.getSelectedData();\n },\n });\n self.dispatchEvent('selectionchanged', ev);\n }\n if (self.input) {\n self.endEdit();\n }\n if (self.ignoreNextClick) {\n self.ignoreNextClick = false;\n return;\n }\n i = self.currentCell;\n if (\n self.dispatchEvent('click', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n if (!self.hasFocus) {\n return;\n }\n if (\n ['rowHeaderCell', 'columnHeaderCell'].indexOf(self.currentCell.style) ===\n -1 &&\n !ctrl\n ) {\n if (!self.hovers.onFilterButton) {\n self.setActiveCell(i.columnIndex, i.rowIndex);\n }\n }\n if (self.currentCell.context === 'cell') {\n if (self.currentCell.style === 'cornerCell') {\n self.selectAll();\n self.draw();\n checkSelectionChange();\n return;\n }\n if (self.currentCell.style === 'columnHeaderCell') {\n if (self.attributes.columnHeaderClickBehavior === 'sort') {\n if (self.orderBy === i.header.name) {\n self.orderDirection =\n self.orderDirection === 'asc' ? 'desc' : 'asc';\n } else {\n self.orderDirection = 'asc';\n }\n self.order(i.header.name, self.orderDirection);\n checkSelectionChange();\n return;\n }\n }\n self.selections[i.rowIndex] = self.selections[i.rowIndex] || [];\n if (\n self.attributes.selectionMode === 'row' ||\n self.currentCell.style === 'rowHeaderCell'\n ) {\n if (\n self.currentCell.style === 'rowHeaderCell' &&\n self.attributes.tree &&\n pos.x > 0 &&\n pos.x - self.currentCell.x <\n self.style.treeArrowWidth +\n self.style.treeArrowMarginLeft +\n self.style.treeArrowMarginRight +\n self.style.treeArrowClickRadius &&\n pos.y - self.currentCell.y <\n self.style.treeArrowHeight +\n self.style.treeArrowMarginTop +\n self.style.treeArrowClickRadius &&\n pos.y > 0\n ) {\n self.toggleTree(i.rowIndex);\n return;\n }\n }\n if (e.shiftKey && !ctrl) {\n self.selectionBounds = self.getSelectionBounds();\n self.selectArea(undefined, false);\n }\n }\n checkSelectionChange();\n self.draw(true);\n };\n self.dragResizeColumn = function (e) {\n var pos, x, y;\n pos = self.getLayerPos(e);\n x = self.resizingStartingWidth + pos.x - self.dragStart.x;\n y = self.resizingStartingHeight + pos.y - self.dragStart.y;\n if (x < self.style.minColumnWidth) {\n x = self.style.minColumnWidth;\n }\n if (y < self.style.minRowHeight) {\n y = self.style.minRowHeight;\n }\n if (\n self.dispatchEvent('resizecolumn', {\n x: x,\n y: y,\n draggingItem: self.draggingItem,\n })\n ) {\n return false;\n }\n if (\n self.scrollBox.scrollLeft >\n self.scrollBox.scrollWidth - self.attributes.resizeScrollZone &&\n self.dragMode === 'ew-resize'\n ) {\n self.resize(true);\n self.scrollBox.scrollLeft += x;\n }\n if (self.dragMode === 'ew-resize') {\n self.sizes.columns[\n self.draggingItem.header.style === 'rowHeaderCell'\n ? 'cornerCell'\n : self.draggingItem.sortColumnIndex\n ] = x;\n if (\n ['rowHeaderCell', 'cornerCell'].indexOf(\n self.draggingItem.header.style,\n ) !== -1\n ) {\n self.resize(true);\n }\n self.resizeChildGrids();\n return;\n }\n if (self.dragMode === 'ns-resize') {\n if (self.draggingItem.rowOpen) {\n self.sizes.trees[self.draggingItem.rowIndex] = y;\n } else if (self.attributes.globalRowResize) {\n self.style.cellHeight = y;\n } else {\n self.sizes.rows[self.draggingItem.rowIndex] = y;\n }\n self.dispatchEvent('resizerow', { row: y });\n self.resizeChildGrids();\n return;\n }\n self.ellipsisCache = {};\n };\n self.stopDragResize = function () {\n self.resize();\n document.body.removeEventListener(\n 'mousemove',\n self.dragResizeColumn,\n false,\n );\n document.body.removeEventListener('mouseup', self.stopDragResize, false);\n self.setStorageData();\n self.draw(true);\n self.ignoreNextClick = true;\n };\n self.scrollGrid = function (e) {\n var pos = self.getLayerPos(e);\n if (\n self.attributes.scrollPointerLock &&\n self.pointerLockPosition &&\n ['horizontal-scroll-box', 'vertical-scroll-box'].indexOf(\n self.scrollStartMode,\n ) !== -1\n ) {\n self.pointerLockPosition.x += e.movementX;\n self.pointerLockPosition.y += e.movementY;\n self.pointerLockPosition.x = Math.min(\n self.width - self.style.scrollBarWidth,\n Math.max(0, self.pointerLockPosition.x),\n );\n self.pointerLockPosition.y = Math.min(\n self.height - self.style.scrollBarWidth,\n Math.max(0, self.pointerLockPosition.y),\n );\n pos = self.pointerLockPosition;\n }\n self.scrollMode = self.getCellAt(pos.x, pos.y).context;\n if (\n self.scrollMode === 'horizontal-scroll-box' &&\n self.scrollStartMode !== 'horizontal-scroll-box'\n ) {\n self.scrollStartMode = 'horizontal-scroll-box';\n self.dragStart = pos;\n self.scrollStart.left = self.scrollBox.scrollLeft;\n clearTimeout(self.scrollTimer);\n return;\n }\n if (\n self.scrollMode === 'vertical-scroll-box' &&\n self.scrollStartMode !== 'vertical-scroll-box'\n ) {\n self.scrollStartMode = 'vertical-scroll-box';\n self.dragStart = pos;\n self.scrollStart.top = self.scrollBox.scrollTop;\n clearTimeout(self.scrollTimer);\n return;\n }\n if (\n self.scrollStartMode === 'vertical-scroll-box' &&\n self.scrollMode !== 'vertical-scroll-box'\n ) {\n self.scrollMode = 'vertical-scroll-box';\n }\n if (\n self.scrollStartMode === 'horizontal-scroll-box' &&\n self.scrollMode !== 'horizontal-scroll-box'\n ) {\n self.scrollMode = 'horizontal-scroll-box';\n }\n clearTimeout(self.scrollTimer);\n if (self.scrollModes.indexOf(self.scrollMode) === -1) {\n return;\n }\n if (self.scrollMode === 'vertical-scroll-box') {\n self.scrollBox.scrollTop =\n self.scrollStart.top +\n (pos.y - self.dragStart.y) / self.scrollBox.heightBoxRatio;\n } else if (self.scrollMode === 'vertical-scroll-top') {\n self.scrollBox.scrollTop -= self.page * self.style.cellHeight;\n self.scrollTimer = setTimeout(\n self.scrollGrid,\n self.attributes.scrollRepeatRate,\n e,\n );\n } else if (self.scrollMode === 'vertical-scroll-bottom') {\n self.scrollBox.scrollTop += self.page * self.style.cellHeight;\n self.scrollTimer = setTimeout(\n self.scrollGrid,\n self.attributes.scrollRepeatRate,\n e,\n );\n }\n if (self.scrollMode === 'horizontal-scroll-box') {\n self.scrollBox.scrollLeft =\n self.scrollStart.left +\n (pos.x - self.dragStart.x) / self.scrollBox.widthBoxRatio;\n } else if (self.scrollMode === 'horizontal-scroll-right') {\n self.scrollBox.scrollLeft += self.attributes.selectionScrollIncrement;\n self.scrollTimer = setTimeout(\n self.scrollGrid,\n self.attributes.scrollRepeatRate,\n e,\n );\n } else if (self.scrollMode === 'horizontal-scroll-left') {\n self.scrollBox.scrollLeft -= self.attributes.selectionScrollIncrement;\n self.scrollTimer = setTimeout(\n self.scrollGrid,\n self.attributes.scrollRepeatRate,\n e,\n );\n }\n };\n self.stopScrollGrid = function () {\n clearTimeout(self.scrollTimer);\n if (document.exitPointerLock) {\n document.exitPointerLock();\n }\n document.removeEventListener('mousemove', self.scrollGrid, false);\n };\n self.dragReorder = function (e) {\n var pos,\n x,\n y,\n columReorder = self.dragMode === 'column-reorder',\n rowReorder = self.dragMode === 'row-reorder';\n pos = self.getLayerPos(e);\n x = pos.x - self.dragStart.x;\n y = pos.y - self.dragStart.y;\n if (!self.attributes.allowColumnReordering && columReorder) {\n return;\n }\n if (!self.attributes.allowRowReordering && rowReorder) {\n return;\n }\n if ((e.ctrlKey || e.metaKey || e.shiftKey) && self.reorderObject) {\n if (\n self.dragMode === 'column-reorder' &&\n !self.isMultiColumnsSelected(self.draggingItem.header.index)\n ) {\n self.selectColumn(self.draggingItem.header.index, false, false);\n }\n }\n if (\n self.dispatchEvent('reordering', {\n NativeEvent: e,\n source: self.dragStartObject,\n target: self.currentCell,\n dragMode: self.dragMode,\n })\n ) {\n return;\n }\n if (\n Math.abs(x) > self.attributes.reorderDeadZone ||\n Math.abs(y) > self.attributes.reorderDeadZone\n ) {\n self.reorderObject = self.draggingItem;\n if (self.isMultiRowsSelected)\n self.reorderObject = self.getVisibleCellByIndex(\n -1,\n self.activeCell.rowIndex,\n );\n self.reorderTarget = self.currentCell;\n self.reorderObject.dragOffset = {\n x: x,\n y: y,\n };\n self.autoScrollZone(\n e,\n columReorder ? pos.x : -1,\n rowReorder ? pos.y : -1,\n false,\n );\n }\n };\n self.stopDragReorder = function (e) {\n var oIndex,\n tIndex,\n odata = [],\n cr = {\n 'row-reorder': self.orders.rows,\n 'column-reorder': self.orders.columns,\n },\n i = {\n 'row-reorder': 'rowIndex',\n 'column-reorder': 'sortColumnIndex',\n }[self.dragMode];\n document.body.removeEventListener('mousemove', self.dragReorder, false);\n document.body.removeEventListener('mouseup', self.stopDragReorder, false);\n if (\n self.reorderObject &&\n self.reorderTarget &&\n ((self.dragMode === 'column-reorder' &&\n self.reorderTarget.sortColumnIndex > -1 &&\n self.reorderTarget.sortColumnIndex < self.getSchema().length) ||\n (self.dragMode === 'row-reorder' &&\n self.reorderTarget.rowIndex > -1 &&\n self.reorderTarget.rowIndex < self.viewData.length)) &&\n self.reorderObject[i] !== self.reorderTarget[i] &&\n !self.dispatchEvent('reorder', {\n NativeEvent: e,\n source: self.reorderObject,\n target: self.reorderTarget,\n dragMode: self.dragMode,\n })\n ) {\n self.ignoreNextClick = true;\n oIndex = cr[self.dragMode].indexOf(self.reorderObject[i]);\n tIndex = cr[self.dragMode].indexOf(self.reorderTarget[i]);\n if (self.dragMode === 'column-reorder') {\n var sortColumnIndices = [];\n var seletedColumnIndices = [];\n if (self.selections[0]) {\n self.selections[0].forEach(function (value) {\n sortColumnIndices.push(self.orders.columns[value]);\n });\n }\n var deleteCount = sortColumnIndices.length;\n cr[self.dragMode].splice(oIndex, deleteCount);\n if (tIndex > oIndex) tIndex = tIndex - (deleteCount - 1);\n for (var i = 0; i < sortColumnIndices.length; i++) {\n seletedColumnIndices.push(tIndex + i);\n cr[self.dragMode].splice(tIndex + i, 0, sortColumnIndices[i]);\n }\n self.orders.columns = cr[self.dragMode];\n self.viewData.forEach(function (row, rowIndex) {\n self.selections[rowIndex] = seletedColumnIndices;\n });\n } else {\n var selectedRows = [];\n self.selections.forEach(function (row, rowIndex) {\n if (row) {\n selectedRows.push(row);\n odata.push(self.viewData[rowIndex]);\n }\n });\n self.viewData.splice(oIndex, odata.length);\n self.selections = [];\n if (tIndex > oIndex) tIndex = tIndex - (odata.length - 1);\n self.activeCell.rowIndex = tIndex;\n for (var i = 0; i < odata.length; i++) {\n self.viewData.splice(tIndex + i, 0, odata[i]);\n self.selections[tIndex + i] = selectedRows[i];\n }\n }\n self.resize();\n self.setStorageData();\n }\n self.reorderObject = undefined;\n self.reorderTarget = undefined;\n self.draw(true);\n };\n self.dragMove = function (e) {\n if (\n self.dispatchEvent('moving', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n var pos = self.getLayerPos(e);\n self.moveOffset = {\n x: self.currentCell.columnIndex - self.dragStartObject.columnIndex,\n y: self.currentCell.rowIndex - self.dragStartObject.rowIndex,\n };\n if (\n Math.abs(pos.x) > self.attributes.reorderDeadZone ||\n Math.abs(pos.y) > self.attributes.reorderDeadZone\n ) {\n setTimeout(function () {\n self.autoScrollZone(e, pos.x, pos.y, false);\n }, 1);\n }\n };\n self.stopDragMove = function (e) {\n document.body.removeEventListener('mousemove', self.dragMove, false);\n document.body.removeEventListener('mouseup', self.stopDragMove, false);\n var b = self.getSelectionBounds();\n if (\n self.dispatchEvent('endmove', { NativeEvent: e, cell: self.currentCell })\n ) {\n self.movingSelection = undefined;\n self.moveOffset = undefined;\n self.draw(true);\n return;\n }\n if (self.moveOffset) {\n self.moveTo(\n self.movingSelection,\n b.left + self.moveOffset.x,\n b.top + self.moveOffset.y,\n );\n self.moveSelection(self.moveOffset.x, self.moveOffset.y);\n }\n self.movingSelection = undefined;\n self.moveOffset = undefined;\n self.draw(true);\n };\n self.freezeMove = function (e) {\n if (\n self.dispatchEvent('freezemoving', {\n NativeEvent: e,\n cell: self.currentCell,\n })\n ) {\n return;\n }\n var pos = self.getLayerPos(e),\n bm = self.style.gridBorderCollapse === 'collapse' ? 1 : 2,\n columnHeaderCellBorder = self.style.columnHeaderCellBorderWidth * bm,\n columnHeaderCellHeight = self.getColumnHeaderCellHeight(),\n rowHeaderCellWidth = self.getRowHeaderCellWidth();\n\n self.ignoreNextClick = true;\n self.freezeMarkerPosition = pos;\n if (\n self.currentCell &&\n self.currentCell.rowIndex !== undefined &&\n self.dragMode === 'frozen-row-marker'\n ) {\n self.scrollBox.scrollTop = 0;\n self.frozenRow = self.currentCell.rowIndex + 1;\n self.scrollBox.bar.v.y =\n columnHeaderCellHeight +\n columnHeaderCellBorder +\n self.scrollCache.y[self.frozenRow];\n self.scrollBox.box.v.y =\n columnHeaderCellHeight +\n columnHeaderCellBorder +\n self.scrollCache.y[self.frozenRow];\n var dataHeight = self.scrollCache.y[self.scrollCache.y.length - 1];\n self.scrollBox.heightBoxRatio =\n (self.scrollBox.height -\n columnHeaderCellHeight -\n self.scrollCache.y[self.frozenRow]) /\n dataHeight;\n self.scrollBox.scrollBoxHeight =\n self.scrollBox.height * self.scrollBox.heightBoxRatio -\n self.style.scrollBarWidth;\n self.scrollBox.scrollBoxHeight = Math.max(\n self.scrollBox.scrollBoxHeight,\n self.style.scrollBarBoxMinSize,\n );\n self.scrollBox.box.v.height = self.scrollBox.scrollBoxHeight;\n }\n if (\n self.currentCell &&\n self.currentCell.columnIndex !== undefined &&\n self.dragMode === 'frozen-column-marker'\n ) {\n self.scrollBox.scrollLeft = 0;\n self.frozenColumn = self.currentCell.columnIndex + 1;\n self.scrollBox.bar.h.x =\n rowHeaderCellWidth + self.scrollCache.x[self.frozenColumn - 1];\n self.scrollBox.box.h.x =\n rowHeaderCellWidth + self.scrollCache.x[self.frozenColumn - 1];\n var dataWidth = self.scrollCache.x[self.scrollCache.x.length - 1];\n self.scrollBox.widthBoxRatio =\n (self.scrollBox.width - self.scrollCache.x[self.frozenColumn - 1]) /\n dataWidth;\n self.scrollBox.scrollBoxWidth =\n self.scrollBox.width * self.scrollBox.widthBoxRatio -\n self.style.scrollBarWidth;\n self.scrollBox.scrollBoxWidth = Math.max(\n self.scrollBox.scrollBoxWidth,\n self.style.scrollBarBoxMinSize,\n );\n self.scrollBox.box.h.width = self.scrollBox.scrollBoxWidth;\n }\n if (\n Math.abs(pos.x) > self.attributes.reorderDeadZone ||\n Math.abs(pos.y) > self.attributes.reorderDeadZone\n ) {\n setTimeout(function () {\n self.autoScrollZone(e, pos.x, pos.y, false);\n }, 1);\n }\n };\n self.stopFreezeMove = function (e) {\n document.body.removeEventListener('mousemove', self.freezeMove, false);\n document.body.removeEventListener('mouseup', self.stopFreezeMove, false);\n self.freezeMarkerPosition = undefined;\n if (\n self.dispatchEvent('endfreezemove', {\n NativeEvent: e,\n cell: self.currentCell,\n })\n ) {\n self.frozenRow = self.startFreezeMove.x;\n self.frozenColumn = self.startFreezeMove.y;\n self.draw(true);\n return;\n }\n self.draw(true);\n };\n self.mousedown = function (e, overridePos) {\n self.lastMouseDownTarget = e.target;\n if (\n self.dispatchEvent('mousedown', {\n NativeEvent: e,\n cell: self.currentCell,\n })\n ) {\n return;\n }\n if (!self.hasFocus) {\n return;\n }\n if (e.button === 2 || self.input) {\n return;\n }\n var ctrl = e.ctrlKey || e.metaKey,\n move = /-move/.test(self.dragMode),\n freeze = /frozen-row-marker|frozen-column-marker/.test(self.dragMode),\n resize = /-resize/.test(self.dragMode);\n self.dragStart = overridePos || self.getLayerPos(e);\n self.scrollStart = {\n left: self.scrollBox.scrollLeft,\n top: self.scrollBox.scrollTop,\n };\n self.dragStartObject = self.getCellAt(self.dragStart.x, self.dragStart.y);\n self.dragAddToSelection = !self.dragStartObject.selected;\n if (\n !ctrl &&\n !e.shiftKey &&\n !/(vertical|horizontal)-scroll-(bar|box)/.test(\n self.dragStartObject.context,\n ) &&\n self.currentCell &&\n !self.currentCell.isColumnHeader &&\n !move &&\n !freeze &&\n !resize\n ) {\n if (\n !(self.dragMode == 'row-reorder' && self.isMultiRowsSelected) &&\n !(self.currentCell.hovered && self.hovers.onFilterButton)\n ) {\n self.selections = [];\n }\n }\n if (self.dragStartObject.isGrid) {\n return;\n }\n if (self.scrollModes.indexOf(self.dragStartObject.context) !== -1) {\n self.scrollMode = self.dragStartObject.context;\n self.scrollStartMode = self.dragStartObject.context;\n self.scrollGrid(e);\n if (\n self.attributes.scrollPointerLock &&\n ['horizontal-scroll-box', 'vertical-scroll-box'].indexOf(\n self.scrollStartMode,\n ) !== -1\n ) {\n self.pointerLockPosition = {\n x: self.dragStart.x,\n y: self.dragStart.y,\n };\n self.canvas.requestPointerLock();\n }\n document.addEventListener('mousemove', self.scrollGrid, false);\n document.addEventListener('mouseup', self.stopScrollGrid, false);\n self.ignoreNextClick = true;\n return;\n }\n if (self.dragMode === 'cell') {\n self.selecting = true;\n if (\n (self.attributes.selectionMode === 'row' ||\n self.dragStartObject.columnIndex === -1) &&\n self.dragStartObject.rowIndex > -1\n ) {\n self.selectRow(self.dragStartObject.rowIndex, ctrl, null);\n } else if (self.attributes.selectionMode !== 'row') {\n self.mousemove(e);\n }\n return;\n }\n if (move) {\n self.draggingItem = self.dragItem;\n self.movingSelection = self.selections.concat([]);\n self.dragging = self.dragStartObject;\n if (\n self.dispatchEvent('beginmove', {\n NativeEvent: e,\n cell: self.currentCell,\n })\n ) {\n return;\n }\n document.body.addEventListener('mousemove', self.dragMove, false);\n document.body.addEventListener('mouseup', self.stopDragMove, false);\n return self.mousemove(e);\n }\n if (freeze) {\n self.draggingItem = self.dragItem;\n self.startFreezeMove = {\n x: self.frozenRow,\n y: self.frozenColumn,\n };\n if (self.dispatchEvent('beginfreezemove', { NativeEvent: e })) {\n return;\n }\n document.body.addEventListener('mousemove', self.freezeMove, false);\n document.body.addEventListener('mouseup', self.stopFreezeMove, false);\n return self.mousemove(e);\n }\n if (resize) {\n self.draggingItem = self.dragItem;\n if (self.draggingItem.rowOpen) {\n self.resizingStartingHeight =\n self.sizes.trees[self.draggingItem.rowIndex];\n } else {\n self.resizingStartingHeight =\n self.sizes.rows[self.draggingItem.rowIndex] || self.style.cellHeight;\n }\n self.resizingStartingWidth =\n self.sizes.columns[\n self.draggingItem.header.style === 'rowHeaderCell'\n ? 'cornerCell'\n : self.draggingItem.sortColumnIndex\n ] || self.draggingItem.width;\n document.body.addEventListener('mousemove', self.dragResizeColumn, false);\n document.body.addEventListener('mouseup', self.stopDragResize, false);\n return;\n }\n if (['row-reorder', 'column-reorder'].indexOf(self.dragMode) !== -1) {\n self.draggingItem = self.dragStartObject;\n if (\n self.dragMode === 'column-reorder' &&\n !self.isMultiColumnsSelected(self.currentCell.header.index)\n ) {\n self.selectColumn(self.currentCell.header.index, ctrl, e.shiftKey);\n } else if (self.dragMode === 'row-reorder' && !self.isMultiRowsSelected) {\n self.selectRow(self.dragStartObject.rowIndex, ctrl, null);\n }\n document.body.addEventListener('mousemove', self.dragReorder, false);\n document.body.addEventListener('mouseup', self.stopDragReorder, false);\n return;\n }\n };\n self.mouseup = function (e) {\n clearTimeout(self.scrollTimer);\n self.cellBoundaryCrossed = true;\n self.rowBoundaryCrossed = true;\n self.columnBoundaryCrossed = true;\n self.selecting = undefined;\n self.draggingItem = undefined;\n self.dragStartObject = undefined;\n if (\n self.dispatchEvent('mouseup', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n if (!self.hasFocus && e.target !== self.canvas) {\n return;\n }\n if (self.currentCell && self.currentCell.grid !== undefined) {\n return;\n }\n if (self.contextMenu || self.input) {\n return;\n }\n if (self.dragStart && self.isInGrid(self.dragStart)) {\n self.controlInput.focus();\n }\n e.preventDefault();\n };\n // gets the horizontal adjacent cells as well as first/last based on column visibility\n self.getAdjacentCells = function () {\n var x,\n i,\n s = self.getSchema(),\n o = {};\n for (x = 0; x < s.length; x += 1) {\n i = self.orders.columns[x];\n if (!s[i].hidden) {\n if (o.first === undefined) {\n o.first = x;\n o.left = x;\n }\n o.last = x;\n if (x > self.activeCell.columnIndex && o.right === undefined) {\n o.right = x;\n }\n if (x < self.activeCell.columnIndex) {\n o.left = x;\n }\n }\n }\n if (o.right === undefined) {\n o.right = o.last;\n }\n return o;\n };\n self.keydown = function (e) {\n var i,\n ev,\n adjacentCells = self.getAdjacentCells(),\n x = Math.max(self.activeCell.columnIndex, 0),\n y = Math.max(self.activeCell.rowIndex, 0),\n ctrl = e.ctrlKey || e.metaKey,\n last = self.viewData.length - 1,\n s = self.getSchema(),\n cols = s.length - 1;\n\n var defaultPrevented = self.dispatchEvent('keydown', {\n NativeEvent: e,\n cell: self.currentCell,\n });\n\n if (defaultPrevented) {\n return;\n }\n\n if (!self.attributes.keepFocusOnMouseOut && !self.hasFocus) {\n return;\n }\n\n // If a user starts typing content, switch to \"Enter\" mode\n if (isPrintableKeyEvent(e) && !ctrl) {\n return self.beginEditAt(x, y, e, true);\n }\n\n if (self.attributes.showNewRow) {\n last += 1;\n }\n\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n\n if (e.key === 'Escape') {\n self.selectNone();\n } else if (ctrl && e.key === 'a') {\n self.selectAll();\n } else if (e.key === 'ArrowDown') {\n y += 1;\n } else if (e.key === 'ArrowUp') {\n y -= 1;\n } else if (\n (e.key === 'ArrowLeft' && !ctrl) ||\n (e.shiftKey && e.key === 'Tab')\n ) {\n x = adjacentCells.left;\n } else if (\n (e.key === 'ArrowRight' && !ctrl) ||\n (!e.shiftKey && e.key === 'Tab')\n ) {\n x = adjacentCells.right;\n } else if (e.key === 'PageUp') {\n y -= self.page;\n e.preventDefault();\n } else if (e.key === 'PageDown') {\n y += self.page;\n e.preventDefault();\n } else if (e.key === 'Home' || (ctrl && e.key === 'ArrowUp')) {\n y = 0;\n } else if (e.key === 'End' || (ctrl && e.key === 'ArrowDown')) {\n y = self.viewData.length - 1;\n } else if (ctrl && e.key === 'ArrowRight') {\n x = adjacentCells.last;\n } else if (ctrl && e.key === 'ArrowLeft') {\n x = adjacentCells.first;\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n return self.beginEditAt(x, y, e);\n }\n if (x < 0 || Number.isNaN(x)) {\n x = adjacentCells.first;\n }\n if (y > last) {\n y = last;\n }\n if (y < 0 || Number.isNaN(y)) {\n y = 0;\n }\n if (x > cols) {\n x = adjacentCells.last;\n }\n\n // TODO - most likely some column order related bugs in key based selection\n // Arrows\n var isArrowKey = [\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowRight',\n 'ArrowDown',\n ].includes(e.key);\n\n // Shrinking and expanding selection using shift and arrow keys\n if (e.shiftKey && isArrowKey) {\n const firstSelectedRowIndex = self.selections.findIndex((el) => !!el);\n const firstSelectedRow = self.selections[firstSelectedRowIndex];\n const firstSelectedColumnIndex = firstSelectedRow[0];\n const lastSelectedColumn = firstSelectedRow[firstSelectedRow.length - 1];\n const yAtTop = y === 0;\n const yAtBottom = y === last;\n const xAtLeft = x === 0;\n const xAtRight = x === cols;\n\n if (e.key === 'ArrowUp') {\n if (y + 1 > firstSelectedRowIndex && !yAtTop) {\n self.selections.pop();\n } else if (y < firstSelectedRowIndex) {\n self.selections[y] = self.selections[y] || [];\n self.selections[y].push(x);\n } else if (yAtTop && self.activeCell.rowIndex !== 0) {\n self.selections.pop();\n }\n }\n\n if (e.key === 'ArrowDown') {\n if (y > firstSelectedRowIndex && y === self.selections.length) {\n self.selections[y] = self.selections[y] || [];\n self.selections[y].push(x);\n } else if (y >= firstSelectedRowIndex && !yAtBottom) {\n delete self.selections[y - 1];\n } else if (yAtBottom && self.activeCell.rowIndex !== last) {\n delete self.selections[y - 1];\n }\n }\n\n for (const selection of self.selections) {\n if (e.key === 'ArrowRight' && selection) {\n if (x > lastSelectedColumn) {\n selection.push(x);\n } else if (x <= lastSelectedColumn && !xAtRight) {\n selection.shift();\n } else if (xAtRight && self.activeCell.columnIndex !== cols) {\n selection.shift();\n }\n }\n\n if (e.key === 'ArrowLeft' && selection) {\n if (x < firstSelectedColumnIndex) {\n selection.unshift(x);\n } else if (x >= firstSelectedColumnIndex && !xAtLeft) {\n selection.pop();\n } else if (xAtLeft && self.activeCell.columnIndex !== 0) {\n selection.pop();\n }\n }\n }\n\n self.selectionBounds = self.getSelectionBounds();\n self.selectArea(undefined, ctrl);\n\n self.draw(true);\n }\n\n if (x !== self.activeCell.columnIndex || y !== self.activeCell.rowIndex) {\n self.scrollIntoView(\n x !== self.activeCell.columnIndex ? x : undefined,\n y !== self.activeCell.rowIndex && !Number.isNaN(y) ? y : undefined,\n );\n\n self.setActiveCell(x, y);\n if (!e.shiftKey && self.attributes.selectionFollowsActiveCell) {\n if (!ctrl) {\n self.selections = [];\n }\n self.selections[y] = self.selections[y] || [];\n self.selections[y].push(x);\n ev = {\n selectedData: self.getSelectedData(),\n selections: self.selections,\n selectionBounds: self.getSelectionBounds(),\n selectedCells: self.getSelectedCells(),\n };\n Object.defineProperty(ev, 'selectedData', {\n get: function () {\n return self.getSelectedData();\n },\n });\n self.dispatchEvent('selectionchanged', ev);\n }\n self.draw(true);\n }\n };\n self.keyup = function (e) {\n if (\n self.dispatchEvent('keyup', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n if (!self.hasFocus) {\n return;\n }\n };\n self.keypress = function (e) {\n if (!self.hasFocus) {\n return;\n }\n if (\n self.dispatchEvent('keypress', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n };\n self.dblclick = function (e) {\n if (\n self.dispatchEvent('dblclick', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n if (!self.hasFocus) {\n return;\n }\n if (\n self.currentCell.context === 'ew-resize' &&\n self.currentCell.style === 'columnHeaderCell'\n ) {\n self.fitColumnToValues(self.currentCell.header.name);\n } else if (\n self.currentCell.context === 'ew-resize' &&\n self.currentCell.style === 'cornerCell'\n ) {\n self.autosize();\n } else if (\n ['cell', 'activeCell'].includes(self.currentCell.style) &&\n !self.hovers.onFilterButton\n ) {\n self.beginEditAt(self.currentCell.columnIndex, self.currentCell.rowIndex);\n }\n };\n self.scrollWheel = function (e) {\n var l,\n t,\n ev = e,\n deltaX = e.deltaX === undefined ? e.NativeEvent.deltaX : e.deltaX,\n deltaY = e.deltaY === undefined ? e.NativeEvent.deltaY : e.deltaY,\n deltaMode =\n e.deltaMode === undefined ? e.NativeEvent.deltaMode : e.deltaMode;\n var e = e.NativeEvent || e;\n if (wheeling) {\n ev.preventDefault(e);\n return;\n }\n if (self.dispatchEvent('wheel', { NativeEvent: e })) {\n return;\n }\n self.touchHaltAnimation = true;\n l = self.scrollBox.scrollLeft;\n t = self.scrollBox.scrollTop;\n if (self.hasFocus) {\n //BUG Issue 42: https://github.com/TonyGermaneri/canvas-datagrid/issues/42\n //https://stackoverflow.com/questions/20110224/what-is-the-height-of-a-line-in-a-wheel-event-deltamode-dom-delta-line\n if (deltaMode === 1) {\n // line mode = 17 pixels per line\n deltaY = deltaY * 17;\n }\n if (\n (self.scrollBox.scrollTop < self.scrollBox.scrollHeight &&\n deltaY > 0) ||\n (self.scrollBox.scrollLeft < self.scrollBox.scrollWidth &&\n deltaX > 0) ||\n (self.scrollBox.scrollTop > 0 && deltaY < 0) ||\n (self.scrollBox.scrollLeft > 0 && deltaX < 0)\n ) {\n ev.preventDefault(e);\n }\n wheeling = setTimeout(function () {\n wheeling = undefined;\n self.scrollBox.scrollTo(deltaX + l, deltaY + t);\n }, 1);\n }\n };\n self.pasteData = function (\n pasteValue,\n mimeType,\n startRowIndex,\n startColIndex,\n ) {\n if (mimeType === 'text/html' && !isSupportedHtml(pasteValue)) {\n console.warn(\n 'Unrecognized HTML format. HTML must be a simple table, e.g.: <table><tr><td>data</td></tr></table>.',\n );\n console.warn(\n 'Data with the mime type text/html not in this format will not be imported as row data.',\n );\n\n return;\n }\n var schema = self.getSchema();\n var rows = parseData(pasteValue, mimeType);\n\n // selected cell. This mimics Excel's paste functionality, and works\n // as a poor-man's fill-down.\n if (rows.length === 1 && rows[0].length === 1) {\n var cellData = rows[0][0].value.map((item) => item.value).join();\n\n self.forEachSelectedCell(function (data, rowIndex, colName) {\n data[rowIndex][colName] = cellData;\n });\n } else {\n var selections = [];\n for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n // Rows may have been moved by user, so get the actual row index\n // (instead of the row index at which the row is rendered):\n var realRowIndex = self.orders.rows[startRowIndex + rowIndex];\n var cells = rows[rowIndex];\n\n var existingRowData = self.viewData[realRowIndex];\n var newRowData = Object.assign({}, existingRowData);\n\n selections[realRowIndex] = [];\n\n for (var colIndex = 0; colIndex < cells.length; colIndex++) {\n var column = schema[startColIndex + colIndex];\n\n if (!column) {\n console.warn('Paste data exceeded grid bounds. Skipping.');\n continue;\n }\n\n var columnName = column.name;\n var cellData = cells[colIndex].value\n .map((item) => item.value)\n .join('');\n\n if (cellData === undefined || cellData === null) {\n newRowData[columnName] = existingRowData[columnName];\n continue;\n }\n\n selections[realRowIndex].push(startColIndex + colIndex);\n\n newRowData[columnName] = cellData;\n }\n\n self.originalData[self.boundRowIndexMap.get(realRowIndex)] = newRowData;\n // Update view date here to avoid a full refresh of `viewData`.\n // To stay in line with Excel and Google Sheet behaviour,\n // don't perform a full refresh (and filter/sort results)\n // as this would make any pasted values disappear and/or suddenly change position.\n self.viewData[realRowIndex] = newRowData;\n }\n self.selections = selections;\n }\n\n // selections is a sparse array, so we condense:\n var affectedCells = [];\n\n self.selections.forEach(function (row, rowIndex) {\n if (rowIndex === undefined) return;\n\n row.forEach(function (columnIndex) {\n affectedCells.push([\n rowIndex,\n columnIndex,\n self.getBoundRowIndexFromViewRowIndex(rowIndex),\n self.getBoundColumnIndexFromViewColumnIndex(columnIndex),\n ]);\n });\n });\n\n self.dispatchEvent('afterpaste', {\n cells: affectedCells,\n });\n\n return rows.length;\n };\n self.getNextVisibleColumnIndex = function (visibleColumnIndex) {\n var x,\n s = self.getVisibleSchema();\n for (x = 0; x < s.length; x += 1) {\n if (s[x].columnIndex === visibleColumnIndex) {\n return s[x + 1].columnIndex;\n }\n }\n return -1;\n };\n self.getVisibleColumnIndexOf = function (columnIndex) {\n var x,\n s = self.getVisibleSchema();\n for (x = 0; x < s.length; x += 1) {\n if (s[x].columnIndex === columnIndex) {\n return x;\n }\n }\n return -1;\n };\n self.paste = function (event) {\n if (!self.attributes.editable) {\n return;\n }\n\n var defaultPrevented = self.dispatchEvent('beforepaste', {\n NativeEvent: event,\n });\n\n if (defaultPrevented) {\n return;\n }\n\n var clipboardItems = new Map(\n Array.from(event.clipboardData.items).map((item) => [item.type, item]),\n );\n\n // Supported MIME types, in order of preference:\n var supportedMimeTypes = ['text/html', 'text/csv', 'text/plain'];\n\n // The clipboard will often contain the same data in multiple formats,\n // which can be used depending on the context in which it's pasted. Here\n // we'll prefere more structured (HTML/CSV) over less structured, when\n // available, so we try to find those first:\n var pasteableItems = supportedMimeTypes\n .map((mimeType) => clipboardItems.get(mimeType))\n .filter((item) => !!item); // filter out not-found MIME types (= undefined)\n\n if (pasteableItems.length === 0) {\n console.warn(\n 'Cannot find supported clipboard data type. Supported types are:',\n supportedMimeTypes.join(', '),\n );\n return;\n }\n\n var itemToPaste = pasteableItems[0];\n\n let startCell = [];\n for (\n let rowIndex = 0, len = self.selections.length;\n rowIndex < len;\n rowIndex++\n ) {\n const row = self.selections[rowIndex];\n if (row) {\n if (row[0] === undefined) return;\n startCell = [rowIndex, row[0] < 0 ? row[1] : row[0]];\n break;\n }\n }\n\n // itemToPaste is cleared once accessed (getData or getAsString),\n // so we need to store the type here, before reading its value:\n var pasteType = itemToPaste.type;\n\n itemToPaste.getAsString(function (pasteValue) {\n self.pasteData(pasteValue, pasteType, startCell[0], startCell[1]);\n\n self.draw();\n });\n };\n self.cut = function (e) {\n self.copy(e);\n const schema = self.getSchema();\n\n var affectedCells = [];\n for (const [rowIndex, row] of self.selections.entries()) {\n if (!row) continue;\n\n const boundRowIndex = self.getBoundRowIndexFromViewRowIndex(rowIndex);\n\n for (const columnIndex of row) {\n const boundColumnIndex = self.getBoundColumnIndexFromViewColumnIndex(\n columnIndex,\n );\n const colName = schema[boundColumnIndex].name;\n\n self.viewData[rowIndex][colName] = '';\n\n affectedCells.push([\n rowIndex,\n columnIndex,\n boundRowIndex,\n boundColumnIndex,\n ]);\n }\n }\n\n if (self.dispatchEvent('cut', { NativeEvent: e, cells: affectedCells })) {\n return;\n }\n };\n self.copy = function (e) {\n if (self.dispatchEvent('copy', { NativeEvent: e })) {\n return;\n }\n if (!self.hasFocus || !e.clipboardData) {\n return;\n }\n var t = '',\n d = '',\n textRows = [],\n sData = self.getSelectedData(),\n s = self.getSchema(),\n sSorted = [],\n firstRowKeys,\n isNeat = true; // Selected like [[0, 1], [0, 1]] of [[0, 3]] is neat; Selected like [[0, 1], [1, 2]] is untidy\n function htmlSafe(v) {\n if (typeof v === 'number') return v;\n return v.replace(/</g, '<').replace(/>/g, '>');\n }\n s.forEach(function (column, columnIndex) {\n sSorted.push(s[self.orders.columns[columnIndex]]);\n });\n if (sData.length > 0) {\n sData.forEach((row) => {\n if (!row) return;\n var rowKeys = Object.keys(row);\n var textRow = [];\n if (!firstRowKeys) firstRowKeys = Object.keys(row);\n if (isNeat && rowKeys.length !== firstRowKeys.length) isNeat = false;\n sSorted.forEach(function (column, columnIndex) {\n if (rowKeys.indexOf(String(column.name)) < 0) {\n if (firstRowKeys.indexOf(String(column.name)) < 0) {\n return;\n } else if (isNeat) {\n isNeat = false;\n }\n }\n textRow.push(row[column.name] || '');\n });\n textRows.push(textRow);\n });\n if (isNeat) {\n t = textRows.map((row) => row.join('\\t')).join('\\n');\n /**\n * The html content copied by Excel has not header\n */\n d += '<table>';\n d += textRows\n .map(\n (row) =>\n '<tr>' +\n row.map((value) => '<td>' + htmlSafe(value) + '</td>').join('') +\n '</tr>',\n )\n .join('');\n d += '</table>';\n } else {\n t = textRows.map((row) => row.join('')).join('');\n d = t;\n }\n if (t) {\n e.clipboardData.setData('text/html', d);\n e.clipboardData.setData('text/plain', t);\n e.clipboardData.setData('text/csv', t);\n e.clipboardData.setData('application/json', JSON.stringify(sData));\n }\n e.preventDefault();\n }\n };\n return;\n}\n","'use strict';\n\nconst isSupportedHtml = function (pasteValue) {\n // We need to match new lines in the HTML, .* won't match new line characters.\n // `s` regex modifier can't be used with `ecmaVersion === 2017`.\n // As a workaround using [\\s\\S]*. Fix when we upgrade `ecmaVersion`.\n const genericDiv = /(?:^(<meta[^>]*>)?[\\s\\S]*<div[^>]*>)/;\n const genericSpan = /(?:^(<meta[^>]*>)?[\\s\\S]*<span[^>]*>)/;\n const genericTable = /(?:^(<meta[^>]*>)?[\\s\\S]*<table[^>]*>)/; // Matches Google Sheets format clipboard data format too.\n const excelTable = /(?:<!--StartFragment-->[\\s\\S]*<tr[^>]*>)/;\n const excelTableRow = /(?:<!--StartFragment-->[\\s\\S]*<td[^>]*>)/;\n\n return [\n genericDiv,\n genericTable,\n genericSpan,\n excelTable,\n excelTableRow,\n ].some((expression) => expression.test(pasteValue));\n};\n\n// Explanation of nodeType here: https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst IGNORE_NODETYPES = [8, 3]; // '#text' and '#comment'\n\nconst isHtmlTable = function (pasteValue) {\n return /(?:<table[^>]*>)|(?:<tr[^]*>)/.test(pasteValue);\n};\n\nconst sanitizeElementData = function (element) {\n // It is not entirely clear if this check on nodeType is required.\n let elementData = element.nodeType === 1 ? element.innerText : element.data;\n\n return String(elementData).replace(/\\s+/g, ' ').trim();\n};\n\nconst parseHtmlText = function (data) {\n const doc = new DOMParser().parseFromString(data, 'text/html');\n const element = doc.querySelector('div') || doc.querySelector('span');\n const elementData = sanitizeElementData(element);\n\n return elementData\n .split('\\n')\n .map((item) => item.split('\\t').map((value) => ({ value: [{ value }] })));\n};\n\nconst parseHtmlTable = function (data) {\n const doc = new DOMParser().parseFromString(data, 'text/html');\n const trs = doc.querySelectorAll('table tr');\n const rows = [];\n\n for (const tr of trs) {\n const row = [];\n\n for (const childNode of tr.childNodes) {\n if (IGNORE_NODETYPES.includes(childNode.nodeType)) continue;\n\n const col = { value: [] };\n const value = sanitizeElementData(childNode);\n\n if (value) col.value.push({ value });\n\n row.push(col);\n }\n\n rows.push(row);\n }\n\n return rows;\n};\n\nconst parseText = function (data) {\n return data\n .split('\\n')\n .map((item) => item.split('\\t').map((value) => ({ value: [{ value }] })));\n};\n\nconst parseData = function (data, mimeType) {\n if (mimeType === 'text/html' && isHtmlTable(data)) {\n return parseHtmlTable(data);\n } else if (mimeType === 'text/html') {\n return parseHtmlText(data);\n }\n\n // Default data format is string, so split on new line,\n // and then enclose in an array (a row with one cell):\n return parseText(data);\n};\n\nexport {\n isSupportedHtml,\n sanitizeElementData,\n parseData,\n parseHtmlTable,\n parseHtmlText,\n parseText,\n};\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals HTMLElement: false, Reflect: false, define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nexport default function (self, ctor) {\n self.scale = 1;\n self.orders = {\n rows: [],\n columns: [],\n };\n self.appliedInlineStyles = {};\n self.cellGridAttributes = {};\n self.treeGridAttributes = {};\n self.visibleRowHeights = [];\n self.hasFocus = false;\n self.activeCell = {\n columnIndex: 0,\n rowIndex: 0,\n };\n self.innerHTML = '';\n self.storageName = 'canvasDataGrid';\n self.invalidSearchExpClass = 'canvas-datagrid-invalid-search-regExp';\n self.localStyleLibraryStorageKey = 'canvas-datagrid-user-style-library';\n self.dataType = 'application/x-canvas-datagrid';\n self.orderBy = null;\n self.orderDirection = 'asc';\n self.orderings = {\n columns: [],\n add: function (orderBy, orderDirection, sortFunction) {\n self.orderings.columns = self.orderings.columns.filter(function (col) {\n return col.orderBy !== orderBy;\n });\n self.orderings.columns.push({\n orderBy: orderBy,\n orderDirection: orderDirection,\n sortFunction: sortFunction,\n });\n },\n sort: function () {\n console.warn(\n 'grid.orderings.sort has been deprecated. Please use grid.refresh().',\n );\n\n self.orderings.columns.forEach(function (col) {\n self.viewData.sort(col.sortFunction(col.orderBy, col.orderDirection));\n });\n },\n };\n self.columnFilters = {};\n self.filters = {};\n self.frozenRow = 0;\n self.frozenColumn = 0;\n self.ellipsisCache = {};\n self.scrollCache = { x: [], y: [] };\n self.scrollBox = {};\n self.visibleRows = [];\n self.visibleCells = [];\n self.sizes = {\n rows: {},\n columns: {},\n trees: {},\n };\n self.selections = [];\n self.filterable = {\n rows: [],\n columns: [],\n };\n self.selectedFilterButton = {\n columnIndex: -1,\n rowIndex: -1,\n };\n self.hovers = {};\n self.attributes = {};\n self.style = {};\n self.formatters = {};\n self.sorters = {};\n self.parsers = {};\n self.schemaHashes = {};\n self.events = {};\n self.changes = [];\n self.scrollIndexTop = 0;\n self.scrollPixelTop = 0;\n self.scrollIndexLeft = 0;\n self.scrollPixelLeft = 0;\n self.childGrids = {};\n self.openChildren = {};\n self.scrollModes = [\n 'vertical-scroll-box',\n 'vertical-scroll-top',\n 'vertical-scroll-bottom',\n 'horizontal-scroll-box',\n 'horizontal-scroll-right',\n 'horizontal-scroll-left',\n ];\n self.componentL1Events = {};\n self.eventNames = [\n 'afterdraw',\n 'afterrendercell',\n 'afterrenderfilterbutton',\n 'attributechanged',\n 'beforebeginedit',\n 'beforecreatecellgrid',\n 'beforedraw',\n 'beforeendedit',\n 'beforerendercell',\n 'beforerendercellgrid',\n 'beforerenderfilterbutton',\n 'beginedit',\n 'cellmouseout',\n 'cellmouseover',\n 'click',\n 'collapsetree',\n 'contextmenu',\n 'copy',\n 'datachanged',\n 'dblclick',\n 'endedit',\n 'expandtree',\n 'formatcellvalue',\n 'keydown',\n 'keypress',\n 'keyup',\n 'mousedown',\n 'mousemove',\n 'mouseup',\n 'newrow',\n 'ordercolumn',\n 'rendercell',\n 'rendercellgrid',\n 'renderorderbyarrow',\n 'rendertext',\n 'rendertreearrow',\n 'reorder',\n 'reordering',\n 'resize',\n 'resizecolumn',\n 'resizerow',\n 'schemachanged',\n 'scroll',\n 'selectionchanged',\n 'stylechanged',\n 'touchcancel',\n 'touchend',\n 'touchmove',\n 'touchstart',\n 'wheel',\n ];\n self.mouse = { x: 0, y: 0 };\n self.getSelectedData = function (expandToRow) {\n const selectedData = [];\n const schema = self.getSchema();\n const viewDataLength = self.viewData.length;\n\n if (viewDataLength === 0) {\n return [];\n }\n\n // self.selections is a sparse array, so `viewRowIndex` here\n // will equal the row index as where it's rendered,\n // not as where it is in the original data array.\n self.selections.forEach(function (row, viewRowIndex) {\n if (!row) {\n return;\n }\n\n if (viewRowIndex === viewDataLength) {\n return;\n }\n\n if (row.length === 0) {\n selectedData[viewRowIndex] = null;\n return;\n }\n\n selectedData[viewRowIndex] = {};\n\n row.forEach(function (col) {\n if (col === -1 || !schema[col]) {\n return;\n }\n\n const orderedIndex = self.orders.columns[col];\n\n if (!expandToRow && schema[orderedIndex].hidden) {\n return;\n }\n\n if (self.viewData[viewRowIndex]) {\n selectedData[viewRowIndex][schema[orderedIndex].name] =\n self.viewData[viewRowIndex][schema[orderedIndex].name];\n }\n });\n });\n\n return selectedData;\n };\n self.getSelectedCells = function (expandToRow) {\n const selectedCells = [];\n const schema = self.getSchema();\n const viewDataLength = self.viewData.length;\n\n if (viewDataLength === 0) {\n return [];\n }\n\n for (const [viewRowIndex, row] of self.selections.entries()) {\n if (!row || row.length === 0) continue;\n\n for (const [, viewColumnIndex] of row.entries()) {\n if (viewColumnIndex === -1 || !schema[viewColumnIndex]) {\n continue;\n }\n\n const boundColumnIndex = self.getBoundColumnIndexFromViewColumnIndex(\n viewColumnIndex,\n );\n\n if (!expandToRow && schema[boundColumnIndex].hidden) {\n continue;\n }\n\n if (self.viewData[viewRowIndex]) {\n const header = schema[boundColumnIndex];\n const value = self.viewData[viewRowIndex][header.name];\n const boundRowIndex = self.getBoundRowIndexFromViewRowIndex(\n viewRowIndex,\n );\n\n const cell = {\n value,\n header,\n boundRowIndex,\n boundColumnIndex,\n viewRowIndex,\n viewColumnIndex,\n };\n\n selectedCells.push(cell);\n }\n }\n }\n\n return selectedCells;\n };\n self.getBoundRowIndexFromViewRowIndex = function (viewRowIndex) {\n if (self.boundRowIndexMap && self.boundRowIndexMap.has(viewRowIndex)) {\n return self.boundRowIndexMap.get(viewRowIndex);\n }\n\n return undefined;\n };\n self.getBoundColumnIndexFromViewColumnIndex = function (viewColumnIndex) {\n return self.orders.columns[viewColumnIndex];\n };\n self.getColumnHeaderCellHeight = function () {\n if (!self.attributes.showColumnHeaders) {\n return 0;\n }\n return (\n (self.sizes.rows[-1] || self.style.columnHeaderCellHeight) * self.scale\n );\n };\n self.getRowHeaderCellWidth = function () {\n if (!self.attributes.showRowHeaders) {\n return 0;\n }\n return (\n (self.sizes.columns[-1] || self.style.rowHeaderCellWidth) * self.scale\n );\n };\n self.setStorageData = function () {\n if (!self.attributes.saveAppearance || !self.attributes.name) {\n return;\n }\n var visibility = {};\n self.getSchema().forEach(function (column) {\n visibility[column.name] = !column.hidden;\n });\n localStorage.setItem(\n self.storageName + '-' + self.attributes.name,\n JSON.stringify({\n sizes: {\n rows: self.sizes.rows,\n columns: self.sizes.columns,\n },\n orders: {\n rows: self.orders.rows,\n columns: self.orders.columns,\n },\n orderBy: self.orderBy,\n orderDirection: self.orderDirection,\n visibility: visibility,\n }),\n );\n };\n self.getSchema = function () {\n return self.schema || self.tempSchema || [];\n };\n function fillArray(low, high) {\n var i = [],\n x;\n for (x = low; x <= high; x += 1) {\n i[x] = x;\n }\n return i;\n }\n self.createColumnOrders = function () {\n var s = self.getSchema();\n self.orders.columns = fillArray(0, s.length - 1);\n };\n self.createRowOrders = function () {\n self.orders.rows = fillArray(0, self.originalData.length - 1);\n };\n self.getVisibleSchema = function () {\n return self.getSchema().filter(function (col) {\n return !col.hidden;\n });\n };\n self.applyDefaultValue = function (row, header, rowIndex) {\n var d = header.defaultValue || '';\n if (typeof d === 'function') {\n d = d.apply(self.intf, [header, rowIndex]);\n }\n row[header.name] = d;\n };\n self.createNewRowData = function () {\n self.newRow = {};\n\n // The third argument of applyDefaultValue is the row index\n // of the row for which to apply the default value. In this\n // case, we're creating a new row but not yet appending it\n // to self.originalData, so no row index exists\n const newRowIndex = undefined;\n\n self.getSchema().forEach(function forEachHeader(header) {\n self.applyDefaultValue(self.newRow, header, newRowIndex);\n });\n };\n self.getSchemaNameHash = function (key) {\n var n = 0;\n while (self.schemaHashes[key]) {\n n += 1;\n key = key + n;\n }\n return key;\n };\n self.filter = function (type) {\n var f = self.filters[type];\n if (!f && type !== undefined) {\n console.warn(\n 'Cannot find filter for type %s, falling back to substring match.',\n type,\n );\n f = self.filters.string;\n }\n return f;\n };\n self.hasActiveFilters = function () {\n return self.columnFilters && Object.keys(self.columnFilters).length > 0;\n };\n self.getFilteredAndSortedViewData = function (originalData) {\n // We make a copy of originalData here in order be able to\n // filter and sort rows without modifying the original array.\n // Each row is turned into a (row, rowIndex) tuple\n // so that when we apply filters, we can refer back to the\n // row's original row number in originalData. This becomes\n // useful when emitting cell events.\n let newViewData = originalData.map((row, originalRowIndex) => [\n row,\n originalRowIndex,\n ]);\n\n // Apply filtering\n for (const [headerName, filterText] of Object.entries(self.columnFilters)) {\n const header = self.getHeaderByName(headerName);\n\n if (!header) {\n continue;\n }\n\n const currentFilterFunction =\n header.filter || self.filter(header.type || 'string');\n\n newViewData = newViewData.filter(function ([row, originalRowIndex]) {\n if (\n self.attributes.allowFreezingRows &&\n !self.attributes.filterFrozenRows &&\n originalRowIndex < self.frozenRow\n )\n return true;\n\n return currentFilterFunction(row[headerName], filterText);\n });\n }\n\n // Apply sorting\n for (const column of self.orderings.columns) {\n const sortFn = column.sortFunction(column.orderBy, column.orderDirection);\n\n newViewData.sort(([rowA], [rowB, rowIndexB]) => {\n if (\n self.attributes.allowFreezingRows &&\n !self.attributes.sortFrozenRows &&\n rowIndexB < self.frozenRow\n )\n return 0;\n return sortFn(rowA, rowB);\n });\n }\n\n return {\n viewData: newViewData.map(([row]) => row),\n boundRowIndexMap: new Map(\n newViewData.map(([_row, originalRowIndex], viewRowIndex) => [\n viewRowIndex,\n originalRowIndex,\n ]),\n ),\n };\n };\n self.refresh = function () {\n const { viewData, boundRowIndexMap } = self.getFilteredAndSortedViewData(\n self.originalData,\n );\n\n self.viewData = viewData;\n self.boundRowIndexMap = boundRowIndexMap;\n\n self.resize();\n self.draw(true);\n };\n self.getBestGuessDataType = function (columnName, data) {\n var t,\n x,\n l = data.length;\n for (x = 0; x < l; x += 1) {\n if (\n data[x] !== undefined &&\n data[x] !== null &&\n [null, undefined].indexOf(data[x][columnName]) !== -1\n ) {\n t = typeof data[x];\n return t === 'object' ? 'string' : t;\n }\n }\n return 'string';\n };\n self.drawChildGrids = function () {\n Object.keys(self.childGrids).forEach(function (gridKey) {\n self.childGrids[gridKey].draw();\n });\n };\n self.resizeChildGrids = function () {\n Object.keys(self.childGrids).forEach(function (gridKey) {\n self.childGrids[gridKey].resize();\n });\n };\n self.autoScrollZone = function (e, x, y, ctrl) {\n var setTimer,\n rowHeaderCellWidth = self.getRowHeaderCellWidth(),\n columnHeaderCellHeight = self.getColumnHeaderCellHeight();\n if (x !== -1) {\n if (x > self.width - self.attributes.selectionScrollZone) {\n self.scrollBox.scrollLeft += self.attributes.selectionScrollIncrement;\n setTimer = true;\n }\n if (x - self.attributes.selectionScrollZone - rowHeaderCellWidth < 0) {\n self.scrollBox.scrollLeft -= self.attributes.selectionScrollIncrement;\n setTimer = true;\n }\n }\n if (y !== -1) {\n if (y > self.height - self.attributes.selectionScrollZone) {\n self.scrollBox.scrollTop += self.attributes.selectionScrollIncrement;\n setTimer = true;\n }\n if (\n y - self.attributes.selectionScrollZone - columnHeaderCellHeight <\n 0\n ) {\n self.scrollBox.scrollTop -= self.attributes.selectionScrollIncrement;\n setTimer = true;\n }\n }\n if (\n setTimer &&\n !ctrl &&\n self.currentCell &&\n self.currentCell.columnIndex !== -1\n ) {\n self.scrollTimer = setTimeout(\n self.mousemove,\n self.attributes.scrollRepeatRate,\n e,\n );\n }\n };\n self.validateColumn = function (c, s) {\n if (!c.name) {\n throw new Error('A column must contain at least a name.');\n }\n if (\n s.filter(function (i) {\n return i.name === c.name;\n }).length > 0\n ) {\n throw new Error(\n 'A column with the name ' +\n c.name +\n ' already exists and cannot be added again.',\n );\n }\n return true;\n };\n self.setDefaults = function (obj1, obj2, key, def) {\n obj1[key] = obj2[key] === undefined ? def : obj2[key];\n };\n self.setAttributes = function () {\n self.defaults.attributes.forEach(function eachAttribute(i) {\n self.setDefaults(self.attributes, self.args, i[0], i[1]);\n });\n };\n self.setStyle = function () {\n self.defaults.styles.forEach(function eachStyle(i) {\n self.setDefaults(self.style, self.args.style || {}, i[0], i[1]);\n });\n };\n self.autosize = function (colName) {\n self.getVisibleSchema().forEach(function (col, colIndex) {\n if (col.name === colName || colName === undefined) {\n self.sizes.columns[colIndex] = Math.max(\n self.findColumnMaxTextLength(col.name),\n self.style.minColumnWidth,\n );\n }\n });\n self.sizes.columns[-1] = self.findColumnMaxTextLength('cornerCell');\n };\n self.dispose = function () {\n if (!self.isChildGrid && self.canvas && self.canvas.parentNode) {\n self.canvas.parentNode.removeChild(self.canvas);\n }\n if (!self.isChildGrid) {\n document.body.removeChild(self.controlInput);\n }\n self.eventParent.removeEventListener('mouseup', self.mouseup, false);\n self.eventParent.removeEventListener('mousedown', self.mousedown, false);\n self.eventParent.removeEventListener('dblclick', self.dblclick, false);\n self.eventParent.removeEventListener('click', self.click, false);\n self.eventParent.removeEventListener('mousemove', self.mousemove);\n self.eventParent.removeEventListener('wheel', self.scrollWheel, false);\n self.canvas.removeEventListener('contextmenu', self.contextmenu, false);\n self.canvas.removeEventListener('copy', self.copy);\n self.controlInput.removeEventListener('copy', self.copy);\n self.controlInput.removeEventListener('cut', self.cut);\n self.controlInput.removeEventListener('paste', self.paste);\n self.controlInput.removeEventListener('keypress', self.keypress, false);\n self.controlInput.removeEventListener('keyup', self.keyup, false);\n self.controlInput.removeEventListener('keydown', self.keydown, false);\n window.removeEventListener('resize', self.resize);\n if (self.observer && self.observer.disconnect) {\n self.observer.disconnect();\n }\n };\n self.tryLoadStoredSettings = function () {\n var s;\n self.reloadStoredValues();\n if (\n self.storedSettings &&\n typeof self.storedSettings.orders === 'object' &&\n self.storedSettings.orders !== null\n ) {\n if (\n self.storedSettings.orders.rows.length >= (self.viewData || []).length\n ) {\n self.orders.rows = self.storedSettings.orders.rows;\n }\n s = self.getSchema();\n if (self.storedSettings.orders.columns.length === s.length) {\n self.orders.columns = self.storedSettings.orders.columns;\n }\n self.orderBy =\n self.storedSettings.orderBy === undefined\n ? s[0].name\n : self.storedSettings.orderBy;\n self.orderDirection =\n self.storedSettings.orderDirection === undefined\n ? 'asc'\n : self.storedSettings.orderDirection;\n if (\n self.storedSettings.orderBy !== undefined &&\n self.getHeaderByName(self.orderBy) &&\n self.orderDirection\n ) {\n self.order(self.orderBy, self.orderDirection);\n }\n }\n };\n self.getDomRoot = function () {\n return self.shadowRoot ? self.shadowRoot.host : self.parentNode;\n };\n self.getFontName = function (fontStyle) {\n return fontStyle.replace(/\\d+\\.?\\d*px/, '');\n };\n self.getFontHeight = function (fontStyle) {\n return parseFloat(fontStyle, 10);\n };\n self.parseStyleValue = function (key) {\n if (/Font/.test(key)) {\n self.style[key + 'Height'] = self.getFontHeight(self.style[key]);\n self.style[key + 'Name'] = self.getFontName(self.style[key]);\n return;\n }\n // when inheriting styles from already instantiated grids, don't parse already parsed values.\n if (\n key === 'moveOverlayBorderSegments' &&\n typeof self.style[key] === 'string'\n ) {\n self.style[key] = self.style[key].split(',').map(function (i) {\n return parseInt(i, 10);\n });\n }\n };\n self.initProp = function (propName) {\n if (!self.args[propName]) {\n return;\n }\n Object.keys(self.args[propName]).forEach(function (key) {\n self[propName][key] = self.args[propName][key];\n });\n };\n self.getStyleProperty = function (key) {\n if (self.styleKeys.indexOf(key) === -1) {\n return self.parentNodeStyle[key];\n }\n return self.style[key];\n };\n self.setStyleProperty = function (key, value, supressDrawAndEvent) {\n var isDim =\n [\n 'height',\n 'width',\n 'minHeight',\n 'minWidth',\n 'maxHeight',\n 'maxWidth',\n ].indexOf(key) !== -1;\n if (self.styleKeys.indexOf(key) === -1) {\n self.parentNodeStyle[key] = value;\n } else {\n if (/-/.test(key)) {\n key = self.dehyphenateProperty(key);\n }\n self.style[key] = value;\n self.parseStyleValue(key);\n }\n if (isDim) {\n self.resize();\n }\n if (!supressDrawAndEvent) {\n self.draw(true);\n self.dispatchEvent('stylechanged', { name: 'style', value: value });\n }\n };\n self.reloadStoredValues = function () {\n if (self.attributes.name && self.attributes.saveAppearance) {\n try {\n self.storedSettings = localStorage.getItem(\n self.storageName + '-' + self.attributes.name,\n );\n } catch (e) {\n console.warn('Error loading stored values. ' + e.message);\n self.storedSettings = undefined;\n }\n if (self.storedSettings) {\n try {\n self.storedSettings = JSON.parse(self.storedSettings);\n } catch (e) {\n console.warn('could not read settings from localStore', e);\n self.storedSettings = undefined;\n }\n }\n if (self.storedSettings) {\n if (\n typeof self.storedSettings.sizes === 'object' &&\n self.storedSettings.sizes !== null\n ) {\n self.sizes.rows = self.storedSettings.sizes.rows;\n self.sizes.columns = self.storedSettings.sizes.columns;\n ['trees', 'columns', 'rows'].forEach(function (i) {\n if (!self.sizes[i]) {\n self.sizes[i] = {};\n }\n });\n }\n if (typeof self.storedSettings.visibility === 'object') {\n self.getSchema().forEach(function (column) {\n if (\n self.storedSettings.visibility &&\n self.storedSettings.visibility[column.name] !== undefined\n ) {\n column.hidden = !self.storedSettings.visibility[column.name];\n }\n });\n }\n }\n }\n };\n self.init = function () {\n if (self.initialized) {\n return;\n }\n function addStyleKeyIfNoneExists(key) {\n if (self.styleKeys.indexOf(key) === -1) {\n self.styleKeys.push(key);\n }\n }\n var publicStyleKeyIntf = {};\n self.setAttributes();\n self.setStyle();\n self.initScrollBox();\n self.setDom();\n self.nodeType = 'canvas-datagrid';\n self.ie = /Trident/.test(window.navigator.userAgent);\n self.edge = /Edge/.test(window.navigator.userAgent);\n self.webKit = /WebKit/.test(window.navigator.userAgent);\n self.moz = /Gecko/.test(window.navigator.userAgent);\n self.mobile = /Mobile/i.test(window.navigator.userAgent);\n self.blankValues = [undefined, null, ''];\n self.cursorGrab = 'grab';\n self.cursorGrabing = 'grabbing';\n self.cursorGrab = self.webKit ? '-webkit-grab' : self.cursorGrab;\n self.cursorGrabing = self.moz ? '-webkit-grabbing' : self.cursorGrabbing;\n self.pointerLockPosition = { x: 0, y: 0 };\n Object.keys(self.style).forEach(self.parseStyleValue);\n self.intf.moveSelection = self.moveSelection;\n self.intf.moveTo = self.moveTo;\n self.intf.addEventListener = self.addEventListener;\n self.intf.removeEventListener = self.removeEventListener;\n self.intf.dispatchEvent = self.dispatchEvent;\n /**\n * Releases grid resources and removes grid elements.\n * @memberof canvasDatagrid\n * @name dispose\n * @method\n */\n self.intf.dispose = self.dispose;\n /**\n * Appends the grid to another element later. Not implemented.\n * @memberof canvasDatagrid\n * @name appendTo\n * @method\n * @param {number} el The element to append the grid to.\n */\n self.intf.appendTo = self.appendTo;\n self.intf.getVisibleCellByIndex = self.getVisibleCellByIndex;\n self.intf.filters = self.filters;\n self.intf.sorters = self.sorters;\n self.intf.autosize = self.autosize;\n self.intf.beginEditAt = self.beginEditAt;\n self.intf.endEdit = self.endEdit;\n self.intf.setActiveCell = self.setActiveCell;\n self.intf.forEachSelectedCell = self.forEachSelectedCell;\n self.intf.scrollIntoView = self.scrollIntoView;\n self.intf.clearChangeLog = self.clearChangeLog;\n self.intf.gotoCell = self.gotoCell;\n self.intf.gotoRow = self.gotoRow;\n self.intf.addButton = self.addButton;\n self.intf.getHeaderByName = self.getHeaderByName;\n self.intf.findColumnScrollLeft = self.findColumnScrollLeft;\n self.intf.findRowScrollTop = self.findRowScrollTop;\n self.intf.fitColumnToValues = self.fitColumnToValues;\n self.intf.findColumnMaxTextLength = self.findColumnMaxTextLength;\n self.intf.disposeContextMenu = self.disposeContextMenu;\n self.intf.getCellAt = self.getCellAt;\n self.intf.isCellVisible = self.isCellVisible;\n self.intf.isRowVisible = self.isRowVisible;\n self.intf.isColumnVisible = self.isColumnVisible;\n self.intf.order = self.order;\n self.intf.draw = self.draw;\n self.intf.refresh = self.refresh;\n self.intf.isComponent = self.isComponent;\n self.intf.selectArea = self.selectArea;\n self.intf.clipElement = self.clipElement;\n self.intf.getSchemaFromData = self.getSchemaFromData;\n self.intf.setFilter = self.setFilter;\n self.intf.selectRow = self.selectRow;\n self.intf.parentGrid = self.parentGrid;\n self.intf.toggleTree = self.toggleTree;\n self.intf.expandTree = self.expandTree;\n self.intf.collapseTree = self.collapseTree;\n self.intf.canvas = self.canvas;\n self.intf.context = self.ctx;\n self.intf.insertRow = self.insertRow;\n self.intf.deleteRow = self.deleteRow;\n self.intf.addRow = self.addRow;\n self.intf.insertColumn = self.insertColumn;\n self.intf.deleteColumn = self.deleteColumn;\n self.intf.addColumn = self.addColumn;\n self.intf.getClippingRect = self.getClippingRect;\n self.intf.setRowHeight = self.setRowHeight;\n self.intf.setColumnWidth = self.setColumnWidth;\n self.intf.resetColumnWidths = self.resetColumnWidths;\n self.intf.resetRowHeights = self.resetRowHeights;\n self.intf.resize = self.resize;\n self.intf.selectColumn = self.selectColumn;\n self.intf.selectRow = self.selectRow;\n self.intf.selectAll = self.selectAll;\n self.intf.selectNone = self.selectNone;\n self.intf.drawChildGrids = self.drawChildGrids;\n self.intf.assertPxColor = self.assertPxColor;\n self.intf.clearPxColorAssertions = self.clearPxColorAssertions;\n self.intf.integerToAlpha = self.integerToAlpha;\n self.intf.copy = self.copy;\n self.intf.cut = self.cut;\n self.intf.paste = self.paste;\n self.intf.setStyleProperty = self.setStyleProperty;\n Object.defineProperty(self.intf, 'defaults', {\n get: function () {\n return {\n styles: self.defaults.styles.reduce(function (a, i) {\n a[i[0]] = i[1];\n return a;\n }, {}),\n attributes: self.defaults.attributes.reduce(function (a, i) {\n a[i[0]] = i[1];\n return a;\n }, {}),\n };\n },\n });\n self.styleKeys = Object.keys(self.intf.defaults.styles);\n self.styleKeys\n .map(function (i) {\n return self.hyphenateProperty(i, false);\n })\n .forEach(addStyleKeyIfNoneExists);\n self.styleKeys\n .map(function (i) {\n return self.hyphenateProperty(i, true);\n })\n .forEach(addStyleKeyIfNoneExists);\n self.DOMStyles = window.getComputedStyle(document.body, null);\n self.styleKeys.concat(Object.keys(self.DOMStyles)).forEach(function (key) {\n // unless this line is here, Object.keys() will not work on <instance>.style\n publicStyleKeyIntf[key] = undefined;\n Object.defineProperty(publicStyleKeyIntf, key, {\n get: function () {\n return self.getStyleProperty(key);\n },\n set: function (value) {\n if (self.initialized) {\n self.appliedInlineStyles[key] = value;\n }\n self.setStyleProperty(key, value);\n },\n });\n });\n Object.defineProperty(self.intf, 'shadowRoot', {\n get: function () {\n return self.shadowRoot;\n },\n });\n Object.defineProperty(self.intf, 'activeCell', {\n get: function () {\n return self.activeCell;\n },\n });\n Object.defineProperty(self.intf, 'hasFocus', {\n get: function () {\n return self.hasFocus;\n },\n });\n Object.defineProperty(self.intf, 'hasActiveFilters', {\n get: function () {\n return self.hasActiveFilters();\n },\n });\n Object.defineProperty(self.intf, 'style', {\n get: function () {\n return publicStyleKeyIntf;\n },\n set: function (valueObject) {\n Object.keys(valueObject).forEach(function (key) {\n self.setStyleProperty(key, valueObject[key], true);\n });\n self.draw(true);\n self.dispatchEvent('stylechanged', {\n name: 'style',\n value: valueObject,\n });\n },\n });\n Object.defineProperty(self.intf, 'attributes', { value: {} });\n Object.keys(self.attributes).forEach(function (key) {\n Object.defineProperty(self.intf.attributes, key, {\n get: function () {\n return self.attributes[key];\n },\n set: function (value) {\n self.attributes[key] = value;\n if (key === 'name') {\n self.tryLoadStoredSettings();\n }\n self.draw(true);\n self.dispatchEvent('attributechanged', {\n name: key,\n value: value[key],\n });\n },\n });\n });\n self.filters.string = function (value, filterFor) {\n if (filterFor === self.attributes.blanksText) {\n return self.blankValues.includes(\n value == null ? value : String(value).trim(),\n );\n }\n\n value = String(value);\n var filterRegExp,\n regEnd = /\\/(i|g|m)*$/,\n pattern = regEnd.exec(filterFor),\n flags = pattern ? pattern[0].substring(1) : '',\n flagLength = flags.length;\n self.invalidFilterRegEx = undefined;\n if (filterFor.substring(0, 1) === '/' && pattern) {\n try {\n filterRegExp = new RegExp(\n filterFor.substring(1, filterFor.length - (flagLength + 1)),\n flags,\n );\n } catch (e) {\n self.invalidFilterRegEx = e;\n return;\n }\n return filterRegExp.test(value);\n }\n return value.toString\n ? value\n .toString()\n .toLocaleUpperCase()\n .indexOf(filterFor.toLocaleUpperCase()) !== -1\n : false;\n };\n self.filters.number = function (value, filterFor) {\n if (filterFor === self.attributes.blanksText) {\n return self.blankValues.includes(\n value == null ? value : String(value).trim(),\n );\n }\n\n if (!filterFor) {\n return true;\n }\n return value === filterFor;\n };\n ['formatters', 'filters', 'sorters'].forEach(self.initProp);\n self.applyComponentStyle(false, self.intf);\n self.reloadStoredValues();\n if (self.args.data) {\n self.intf.data = self.args.data;\n }\n if (self.intf.innerText || self.intf.textContent) {\n if (self.intf.dataType === 'application/x-canvas-datagrid') {\n self.intf.dataType = 'application/json+x-canvas-datagrid';\n }\n self.intf.data = self.intf.innerText || self.intf.textContent;\n }\n if (self.args.schema) {\n self.intf.schema = self.args.schema;\n }\n if (self.isChildGrid || !self.isComponent) {\n requestAnimationFrame(function () {\n self.resize(true);\n });\n } else {\n self.resize(true);\n }\n self.initialized = true;\n return self;\n };\n /**\n * Removes focus from the grid.\n * @memberof canvasDatagrid\n * @name blur\n * @method\n */\n self.intf.blur = function (e) {\n self.hasFocus = false;\n };\n /**\n * Focuses on the grid.\n * @memberof canvasDatagrid\n * @name focus\n * @method\n */\n self.intf.focus = function () {\n self.hasFocus = true;\n self.controlInput.focus();\n };\n if (self.shadowRoot || self.isChildGrid) {\n Object.defineProperty(self.intf, 'height', {\n get: function () {\n if (self.shadowRoot) {\n return self.shadowRoot.height;\n }\n return self.parentNode.height;\n },\n set: function (value) {\n if (self.shadowRoot) {\n self.shadowRoot.height = value;\n } else {\n self.parentNode.height = value;\n }\n self.resize(true);\n },\n });\n Object.defineProperty(self.intf, 'width', {\n get: function () {\n if (self.shadowRoot) {\n return self.shadowRoot.width;\n }\n return self.parentNode.width;\n },\n set: function (value) {\n if (self.shadowRoot) {\n self.shadowRoot.width = value;\n } else {\n self.parentNode.width = value;\n }\n self.resize(true);\n },\n });\n Object.defineProperty(self.intf, 'parentNode', {\n get: function () {\n return self.parentNode;\n },\n set: function (value) {\n if (!self.isChildGrid) {\n throw new TypeError(\n 'Cannot set property parentNode which has only a getter',\n );\n }\n self.parentNode = value;\n },\n });\n }\n Object.defineProperty(self.intf, 'visibleRowHeights', {\n get: function () {\n return self.visibleRowHeights;\n },\n });\n Object.defineProperty(self.intf, 'openChildren', {\n get: function () {\n return self.openChildren;\n },\n });\n Object.defineProperty(self.intf, 'childGrids', {\n get: function () {\n return Object.keys(self.childGrids).map(function (gridId) {\n return self.childGrids[gridId];\n });\n },\n });\n Object.defineProperty(self.intf, 'isChildGrid', {\n get: function () {\n return self.isChildGrid;\n },\n });\n Object.defineProperty(self, 'cursor', {\n get: function () {\n return self.parentNodeStyle.cursor;\n },\n set: function (value) {\n if (value === 'cell') {\n value = 'default';\n }\n if (self.currentCursor !== value) {\n self.parentNodeStyle.cursor = value;\n self.currentCursor = value;\n }\n },\n });\n Object.defineProperty(self.intf, 'orderDirection', {\n get: function () {\n return self.orderDirection;\n },\n set: function (value) {\n if (value !== 'desc') {\n value = 'asc';\n }\n self.orderDirection = value;\n self.order(self.orderBy, self.orderDirection);\n },\n });\n Object.defineProperty(self.intf, 'orderBy', {\n get: function () {\n return self.orderBy;\n },\n set: function (value) {\n if (\n self.getSchema().find(function (col) {\n return col.name === value;\n }) === undefined\n ) {\n throw new Error('Cannot sort by unknown column name.');\n }\n self.orderBy = value;\n self.order(self.orderBy, self.orderDirection);\n },\n });\n if (self.isComponent) {\n Object.defineProperty(self.intf, 'offsetHeight', {\n get: function () {\n return self.canvas.offsetHeight;\n },\n });\n Object.defineProperty(self.intf, 'offsetWidth', {\n get: function () {\n return self.canvas.offsetWidth;\n },\n });\n }\n Object.defineProperty(self.intf, 'scrollHeight', {\n get: function () {\n return self.scrollBox.scrollHeight;\n },\n });\n Object.defineProperty(self.intf, 'scrollWidth', {\n get: function () {\n return self.scrollBox.scrollWidth;\n },\n });\n Object.defineProperty(self.intf, 'scrollTop', {\n get: function () {\n return self.scrollBox.scrollTop;\n },\n set: function (value) {\n self.scrollBox.scrollTop = value;\n },\n });\n Object.defineProperty(self.intf, 'scrollLeft', {\n get: function () {\n return self.scrollBox.scrollLeft;\n },\n set: function (value) {\n self.scrollBox.scrollLeft = value;\n },\n });\n Object.defineProperty(self.intf, 'sizes', {\n get: function () {\n return self.sizes;\n },\n });\n Object.defineProperty(self.intf, 'parentDOMNode', {\n get: function () {\n return self.parentDOMNode;\n },\n });\n Object.defineProperty(self.intf, 'input', {\n get: function () {\n return self.input;\n },\n });\n Object.defineProperty(self.intf, 'controlInput', {\n get: function () {\n return self.controlInput;\n },\n });\n Object.defineProperty(self.intf, 'currentCell', {\n get: function () {\n return self.currentCell;\n },\n });\n Object.defineProperty(self.intf, 'visibleCells', {\n get: function () {\n return self.visibleCells;\n },\n });\n Object.defineProperty(self.intf, 'visibleRows', {\n get: function () {\n return self.visibleRows;\n },\n });\n Object.defineProperty(self.intf, 'selections', {\n get: function () {\n return self.selections;\n },\n });\n Object.defineProperty(self.intf, 'dragMode', {\n get: function () {\n return self.dragMode;\n },\n });\n Object.defineProperty(self.intf, 'changes', {\n get: function () {\n return self.changes;\n },\n });\n self.intf.formatters = self.formatters;\n Object.defineProperty(self.intf, 'dataType', {\n get: function () {\n return self.dataType;\n },\n set: function (value) {\n if (!self.parsers[value]) {\n throw new Error('No parser for MIME type ' + value);\n }\n self.dataType = value;\n },\n });\n self.eventNames.forEach(function (eventName) {\n Object.defineProperty(self.intf, 'on' + eventName, {\n get: function () {\n return self.componentL1Events[eventName];\n },\n set: function (value) {\n self.events[eventName] = [];\n self.componentL1Events[eventName] = value;\n if (!value) {\n return;\n }\n self.addEventListener(eventName, value);\n },\n });\n });\n Object.defineProperty(self.intf, 'frozenRow', {\n get: function () {\n return self.frozenRow;\n },\n set: function (val) {\n if (isNaN(val)) {\n throw new TypeError('Expected value for frozenRow to be a number.');\n }\n if (self.visibleRows.length < val) {\n throw new RangeError(\n 'Cannot set a value larger than the number of visible rows.',\n );\n }\n self.frozenRow = val;\n },\n });\n Object.defineProperty(self.intf, 'frozenColumn', {\n get: function () {\n return self.frozenColumn;\n },\n set: function (val) {\n if (isNaN(val)) {\n throw new TypeError('Expected value for frozenRow to be a number.');\n }\n if (self.getVisibleSchema().length < val) {\n throw new RangeError(\n 'Cannot set a value larger than the number of visible columns.',\n );\n }\n self.frozenColumn = val;\n },\n });\n Object.defineProperty(self.intf, 'scrollIndexRect', {\n get: function () {\n return {\n top: self.scrollIndexTop,\n right: self.scrollIndexRight,\n bottom: self.scrollIndexBottom,\n left: self.scrollIndexLeft,\n };\n },\n });\n Object.defineProperty(self.intf, 'scrollPixelRect', {\n get: function () {\n return {\n top: self.scrollPixelTop,\n right: self.scrollPixelRight,\n bottom: self.scrollPixelBottom,\n left: self.scrollPixelLeft,\n };\n },\n });\n Object.defineProperty(self.intf, 'rowOrder', {\n get: function () {\n return self.orders.rows;\n },\n set: function (val) {\n if (!Array.isArray(val)) {\n throw new TypeError('Value must be an array.');\n }\n if (!self.originalData || val.length < self.originalData.length) {\n throw new RangeError(\n 'Array length must be equal to or greater than number of rows.',\n );\n }\n self.orders.rows = val;\n },\n });\n Object.defineProperty(self.intf, 'columnOrder', {\n get: function () {\n return self.orders.columns;\n },\n set: function (val) {\n if (!Array.isArray(val)) {\n throw new TypeError('Value must be an array.');\n }\n if (val.length < self.getSchema().length) {\n throw new RangeError(\n 'Array length must be equal to or greater than number of columns.',\n );\n }\n self.orders.columns = val;\n },\n });\n Object.defineProperty(self.intf, 'selectionBounds', {\n get: function () {\n return self.getSelectionBounds();\n },\n });\n Object.defineProperty(self.intf, 'selectedRows', {\n get: function () {\n return self.getSelectedData(true);\n },\n });\n Object.defineProperty(self.intf, 'selectedCells', {\n get: function () {\n return self.getSelectedData();\n },\n });\n Object.defineProperty(self.intf, 'visibleSchema', {\n get: function () {\n return self.getVisibleSchema().map(function eachDataRow(col) {\n return col;\n });\n },\n });\n Object.defineProperty(self.intf, 'treeGridAttributes', {\n get: function () {\n return self.treeGridAttributes;\n },\n set: function setTreeGridAttributes(value) {\n self.treeGridAttributes = value;\n },\n });\n Object.defineProperty(self.intf, 'cellGridAttributes', {\n get: function () {\n return self.cellGridAttributes;\n },\n set: function setCellGridAttributes(value) {\n self.cellGridAttributes = value;\n },\n });\n Object.defineProperty(self.intf, 'ctx', {\n get: function () {\n return self.ctx;\n },\n });\n Object.defineProperty(self.intf, 'schema', {\n get: function schemaGetter() {\n return self.getSchema();\n },\n set: function schemaSetter(value) {\n if (value === undefined) {\n // Issue #89 - allow schema to be set to initialized state\n self.schema = undefined;\n self.tempSchema = undefined;\n self.dispatchEvent('schemachanged', { schema: undefined });\n return;\n }\n if (!Array.isArray(value) || typeof value[0] !== 'object') {\n throw new Error('Schema must be an array of objects.');\n }\n if (value[0].name === undefined) {\n throw new Error(\n 'Expected schema to contain an object with at least a name property.',\n );\n }\n self.schema = value.map(function eachSchemaColumn(column, index) {\n column.width = column.width || self.style.cellWidth;\n column.filter = column.filter || self.filter(column.type);\n column.type = column.type || 'string';\n column.index = index;\n column.columnIndex = index;\n column.rowIndex = -1;\n return column;\n });\n self.tempSchema = undefined;\n self.createNewRowData();\n self.createColumnOrders();\n self.tryLoadStoredSettings();\n if (\n self.storedSettings &&\n typeof self.storedSettings.visibility === 'object'\n ) {\n self.schema.forEach(function hideEachSchemaColumn(column, index) {\n if (\n self.storedSettings &&\n self.storedSettings.visibility[column.name] !== undefined\n ) {\n column.hidden = !self.storedSettings.visibility[column.name];\n }\n });\n }\n self.resize(true);\n self.dispatchEvent('schemachanged', { schema: self.schema });\n },\n });\n /**\n * Gets an array of currently registered MIME types.\n * @memberof canvasDatagrid\n * @name getDataTypes\n * @method\n */\n self.intf.getTypes = function () {\n return Object.keys(self.parsers);\n };\n self.parseInnerHtml = function (data) {\n if (!data || /^ +$/.test(data)) {\n return [];\n }\n try {\n data = JSON.parse(data);\n } catch (e) {\n console.warn(\n Error(\n 'Cannot parse application/json+x-canvas-datagrid formated data. ' +\n e.message +\n ' \\nNote: canvas-datagrid.innerHTML is for string data only. ' +\n 'Use the canvas-datagrid.data property to set object data.',\n ),\n );\n }\n return data;\n };\n self.parsers['application/json+x-canvas-datagrid'] = function (\n data,\n callback,\n ) {\n self.parsers['application/x-canvas-datagrid'](\n self.parseInnerHtml(data),\n function (data, schema) {\n return callback(data, schema);\n },\n );\n };\n self.parsers['application/x-canvas-datagrid'] = function (data, callback) {\n return callback(data);\n };\n self.intf.parsers = self.parsers;\n // send to dataType ETL function to extract from input data\n // and transform into native [{}, {}] format\n self.etl = function (data, callback) {\n if (!self.intf.parsers[self.dataType]) {\n throw new Error('Unsupported data type.');\n }\n self.intf.parsers[self.dataType](data, function (data, schema) {\n // set the unfiltered/sorted data array\n self.originalData = data;\n self.viewData = Array.from(self.originalData);\n\n if (Array.isArray(schema)) {\n self.schema = schema;\n }\n // Issue #89 - allow schema to be auto-created every time data is set\n if (self.attributes.autoGenerateSchema) {\n self.schema = self.getSchemaFromData(data);\n }\n if (!self.schema) {\n self.tempSchema = self.getSchemaFromData(data);\n }\n if (self.getSchema()) {\n self.createColumnOrders();\n }\n // apply filter, sort, etc to incoming dataset, set viewData:\n self.refresh();\n // empty data was set\n if (!self.schema && (self.originalData || []).length === 0) {\n self.tempSchema = [{ name: '' }];\n }\n self.fitColumnToValues('cornerCell', true);\n if (\n (self.tempSchema && !self.schema) ||\n self.attributes.autoGenerateSchema\n ) {\n self.createColumnOrders();\n self.dispatchEvent('schemachanged', { schema: self.tempSchema });\n }\n callback();\n });\n };\n Object.defineProperty(self.intf, 'viewData', {\n get: function () {\n return self.viewData;\n },\n });\n Object.defineProperty(self.intf, 'boundData', {\n get: function () {\n return self.originalData;\n },\n });\n Object.defineProperty(self.intf, 'data', {\n get: function dataGetter() {\n return self.originalData;\n },\n set: function dataSetter(value) {\n self.etl(value, function () {\n self.changes = [];\n self.createNewRowData();\n if (\n self.attributes.autoResizeColumns &&\n self.originalData.length > 0 &&\n self.storedSettings === undefined\n ) {\n self.autosize();\n }\n // set the header column to fit the numbers in it\n self.fitColumnToValues('cornerCell', true);\n self.createRowOrders();\n self.tryLoadStoredSettings();\n self.dispatchEvent('datachanged', { data: self.originalData });\n self.resize(true);\n });\n },\n });\n self.initScrollBox = function () {\n var sHeight = 0,\n sWidth = 0,\n scrollTop = 0,\n scrollLeft = 0,\n scrollHeight = 0,\n scrollWidth = 0,\n scrollBoxHeight = 20,\n scrollBoxWidth = 20;\n function setScrollTop(value, preventScrollEvent) {\n if (isNaN(value)) {\n throw new Error('ScrollTop value must be a number');\n }\n if (value < 0) {\n value = 0;\n }\n if (value > scrollHeight) {\n value = scrollHeight;\n }\n if (scrollHeight < 0) {\n value = 0;\n }\n scrollTop = value;\n if (!preventScrollEvent) {\n self.scroll();\n }\n if (self.button) {\n self.moveButtonPos();\n }\n }\n function setScrollLeft(value, preventScrollEvent) {\n if (isNaN(value)) {\n throw new Error('ScrollLeft value must be a number');\n }\n if (value < 0) {\n value = 0;\n }\n if (value > scrollWidth) {\n value = scrollWidth;\n }\n if (scrollWidth < 0) {\n value = 0;\n }\n scrollLeft = value;\n if (!preventScrollEvent) {\n self.scroll();\n }\n if (self.button) {\n self.moveButtonPos();\n }\n }\n self.scrollBox.toString = function () {\n return (\n '{\"width\": ' +\n scrollWidth.toFixed(2) +\n ', \"height\": ' +\n scrollHeight.toFixed(2) +\n ', \"left\": ' +\n scrollLeft.toFixed(2) +\n ', \"top\": ' +\n scrollTop.toFixed(2) +\n ', \"widthRatio\": ' +\n self.scrollBox.widthBoxRatio.toFixed(5) +\n ', \"heightRatio\": ' +\n self.scrollBox.heightBoxRatio.toFixed(5) +\n '}'\n );\n };\n self.scrollBox.scrollTo = function (x, y, supressDrawEvent) {\n setScrollLeft(x, true);\n setScrollTop(y, supressDrawEvent);\n };\n Object.defineProperty(self.scrollBox, 'scrollBoxHeight', {\n get: function () {\n return scrollBoxHeight;\n },\n set: function (value) {\n scrollBoxHeight = value;\n },\n });\n Object.defineProperty(self.scrollBox, 'scrollBoxWidth', {\n get: function () {\n return scrollBoxWidth;\n },\n set: function (value) {\n scrollBoxWidth = value;\n },\n });\n Object.defineProperty(self.scrollBox, 'height', {\n get: function () {\n return sHeight;\n },\n set: function (value) {\n sHeight = value;\n },\n });\n Object.defineProperty(self.scrollBox, 'width', {\n get: function () {\n return sWidth;\n },\n set: function (value) {\n sWidth = value;\n },\n });\n Object.defineProperty(self.scrollBox, 'scrollTop', {\n get: function () {\n return scrollTop;\n },\n set: setScrollTop,\n });\n Object.defineProperty(self.scrollBox, 'scrollLeft', {\n get: function () {\n return scrollLeft;\n },\n set: setScrollLeft,\n });\n Object.defineProperty(self.scrollBox, 'scrollHeight', {\n get: function () {\n return scrollHeight;\n },\n set: function (value) {\n if (scrollTop > value) {\n scrollTop = Math.max(value, 0);\n }\n scrollHeight = value;\n },\n });\n Object.defineProperty(self.scrollBox, 'scrollWidth', {\n get: function () {\n return scrollWidth;\n },\n set: function (value) {\n if (scrollLeft > value) {\n scrollLeft = Math.max(value, 0);\n }\n scrollWidth = value;\n },\n });\n };\n return;\n}\n","/*jslint browser: true, unparam: true, todo: true, evil: true*/\n/*globals Reflect: false, HTMLElement: true, define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nimport component from './component';\nimport defaults from './defaults';\nimport draw from './draw';\nimport events from './events';\nimport touch from './touch';\nimport intf from './intf';\nimport contextMenu from './contextMenu';\nimport button from './button';\nimport dom from './dom';\nimport publicMethods from './publicMethods';\n\nvar webComponent = component();\n\nvar modules = [\n defaults,\n draw,\n events,\n touch,\n intf,\n contextMenu,\n button,\n dom,\n publicMethods,\n];\n\nfunction Grid(args) {\n args = args || {};\n var self = {};\n self.isComponent = args.component === undefined;\n self.isChildGrid =\n args.parentNode &&\n /canvas-datagrid-(cell|tree)/.test(args.parentNode.nodeType);\n if (self.isChildGrid) {\n self.intf = {};\n } else {\n self.intf = self.isComponent\n ? eval('Reflect.construct(HTMLElement, [], new.target)')\n : document.createElement('canvas');\n }\n self.args = args;\n self.intf.args = args;\n self.applyComponentStyle = webComponent.applyComponentStyle;\n self.hyphenateProperty = webComponent.hyphenateProperty;\n self.dehyphenateProperty = webComponent.dehyphenateProperty;\n self.createGrid = function grid(args) {\n args.component = false;\n return new Grid(args);\n };\n\n modules.forEach(function (module) {\n module(self);\n });\n\n if (self.isChildGrid) {\n self.shadowRoot = args.parentNode.shadowRoot;\n self.parentNode = args.parentNode;\n } else {\n self.shadowRoot = self.intf.attachShadow({ mode: 'open' });\n self.parentNode = self.shadowRoot;\n }\n self.init();\n return self.intf;\n}\nif (window.HTMLElement) {\n Grid.prototype = Object.create(window.HTMLElement.prototype);\n}\n// export web component\nif (window.customElements) {\n Grid.observedAttributes = webComponent.getObservableAttributes();\n Grid.prototype.disconnectedCallback = webComponent.disconnectedCallback;\n Grid.prototype.attributeChangedCallback =\n webComponent.attributeChangedCallback;\n Grid.prototype.connectedCallback = webComponent.connectedCallback;\n Grid.prototype.adoptedCallback = webComponent.adoptedCallback;\n window.customElements.define('canvas-datagrid', Grid);\n}\n\n// export global\nif (\n window &&\n !window.canvasDatagrid &&\n !window.require &&\n // Present to exclude global declarations from ES Module bundles\n !window.EXCLUDE_GLOBAL\n) {\n window.canvasDatagrid = function (args) {\n return new Grid(args);\n };\n}\n\n// export amd loader\nexport default function canvasDatagrid(args) {\n args = args || {};\n var i,\n tKeys = [\n 'style',\n 'formatters',\n 'sorters',\n 'filters',\n 'treeGridAttributes',\n 'cellGridAttributes',\n 'data',\n 'schema',\n ];\n if (window.customElements) {\n i = document.createElement('canvas-datagrid');\n Object.keys(args).forEach(function (argKey) {\n // set data and parentNode after everything else\n if (argKey === 'data') {\n return;\n }\n if (argKey === 'parentNode') {\n return;\n }\n // top level keys in args\n if (tKeys.indexOf(argKey) !== -1) {\n tKeys.forEach(function (tKey) {\n if (args[tKey] === undefined || tKey !== argKey) {\n return;\n }\n if (['formatters', 'sorters', 'filters'].indexOf(argKey) !== -1) {\n if (typeof args[tKey] === 'object' && args[tKey] !== null) {\n Object.keys(args[tKey]).forEach(function (sKey) {\n i[tKey][sKey] = args[tKey][sKey];\n });\n }\n } else {\n i[tKey] = args[tKey];\n }\n });\n return;\n }\n // all others are attribute level keys\n i.attributes[argKey] = args[argKey];\n });\n if (args.data) {\n i.data = args.data;\n }\n // add to the dom very last to avoid redraws\n if (args.parentNode) {\n args.parentNode.appendChild(i);\n }\n return i;\n }\n args.component = false;\n i = new Grid(args);\n if (args.parentNode && args.parentNode.appendChild) {\n args.parentNode.appendChild(i);\n }\n return i;\n}\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nexport default function (self) {\n /**\n * Converts a integer into a letter A - ZZZZZ...\n * @memberof canvasDatagrid\n * @name integerToAlpha\n * @method\n * @param {column} n The number to convert.\n */\n self.integerToAlpha = function (n) {\n var ordA = 'a'.charCodeAt(0),\n ordZ = 'z'.charCodeAt(0),\n len = ordZ - ordA + 1,\n s = '';\n while (n >= 0) {\n s = String.fromCharCode((n % len) + ordA) + s;\n n = Math.floor(n / len) - 1;\n }\n return s;\n };\n /**\n * Inserts a new column before the specified index into the schema.\n * @tutorial schema\n * @memberof canvasDatagrid\n * @name insertColumn\n * @method\n * @param {column} c The column to insert into the schema.\n * @param {number} index The index of the column to insert before.\n */\n self.insertColumn = function (c, index) {\n var s = self.getSchema();\n if (s.length < index) {\n throw new Error('Index is beyond the length of the schema.');\n }\n self.validateColumn(c, s);\n s.splice(index, 0, c);\n\n self.originalData.forEach(function (row, rowIndex) {\n self.applyDefaultValue(row, c, rowIndex);\n });\n self.intf.schema = s;\n\n self.refresh();\n };\n /**\n * Deletes a column from the schema at the specified index.\n * @memberof canvasDatagrid\n * @name deleteColumn\n * @tutorial schema\n * @method\n * @param {number} index The index of the column to delete.\n */\n self.deleteColumn = function (index) {\n var schema = self.getSchema();\n\n // remove data matching this column name from data\n self.originalData.forEach(function (row) {\n delete row[schema[index].name];\n });\n\n schema.splice(index, 1);\n self.intf.schema = schema;\n\n self.refresh();\n };\n /**\n * Adds a new column into the schema.\n * @tutorial schema\n * @memberof canvasDatagrid\n * @name addColumn\n * @method\n * @param {column} c The column to add to the schema.\n */\n self.addColumn = function (c) {\n var s = self.getSchema();\n self.validateColumn(c, s);\n s.push(c);\n self.originalData.forEach(function (row, rowIndex) {\n self.applyDefaultValue(row, c, rowIndex);\n });\n self.intf.schema = s;\n\n self.refresh();\n };\n /**\n * Deletes a row from the dataset at the specified index.\n * @memberof canvasDatagrid\n * @name deleteRow\n * @method\n * @param {number} index The index of the row to delete.\n */\n self.deleteRow = function (index) {\n self.originalData.splice(index, 1);\n self.setFilter();\n self.resize(true);\n };\n /**\n * Inserts a new row into the dataset before the specified index.\n * @memberof canvasDatagrid\n * @name insertRow\n * @method\n * @param {object} d data.\n * @param {number} index The index of the row to insert before.\n */\n self.insertRow = function (d, index) {\n if (self.originalData.length < index) {\n throw new Error('Index is beyond the length of the dataset.');\n }\n self.originalData.splice(index, 0, d);\n self.getSchema().forEach(function (c) {\n if (d[c.name] === undefined) {\n self.applyDefaultValue(self.originalData[index], c, index);\n }\n });\n\n // setFilter calls .refresh(), so we need not call it again:\n self.setFilter();\n\n self.resize(true);\n };\n /**\n * Adds a new row into the dataset.\n * @memberof canvasDatagrid\n * @name addRow\n * @method\n * @param {object} d data.\n */\n self.addRow = function (d) {\n self.originalData.push(d);\n self.getSchema().forEach(function (c) {\n if (d[c.name] === undefined) {\n self.applyDefaultValue(\n self.originalData[self.originalData.length - 1],\n c,\n self.originalData.length - 1,\n );\n }\n });\n\n // setFilter calls .refresh(), so we need not call it again:\n self.setFilter();\n\n self.resize(true);\n };\n /**\n * Sets the height of a given row by index number.\n * @memberof canvasDatagrid\n * @name setRowHeight\n * @method\n * @param {number} rowIndex The index of the row to set.\n * @param {number} height Height to set the row to.\n */\n self.setRowHeight = function (rowIndex, height) {\n self.sizes.rows[rowIndex] = height;\n self.draw(true);\n };\n /**\n * Sets the width of a given column by index number.\n * @memberof canvasDatagrid\n * @name setColumnWidth\n * @method\n * @param {number} colIndex The index of the column to set.\n * @param {number} width Width to set the column to.\n */\n self.setColumnWidth = function (colIndex, width) {\n self.sizes.columns[colIndex] = width;\n self.draw(true);\n };\n /**\n * Removes any changes to the width of the columns due to user or api interaction, setting them back to the schema or style default.\n * @memberof canvasDatagrid\n * @name resetColumnWidths\n * @tutorial schema\n * @method\n */\n self.resetColumnWidths = function () {\n self.sizes.columns = {};\n self.draw(true);\n };\n /**\n * Removes any changes to the height of the rows due to user or api interaction, setting them back to the schema or style default.\n * @memberof canvasDatagrid\n * @name resetRowHeights\n * @tutorial schema\n * @method\n */\n self.resetRowHeights = function () {\n self.sizes.rows = {};\n self.draw(true);\n };\n /**\n * Sets the value of the filter.\n * @memberof canvasDatagrid\n * @name setFilter\n * @method\n * @param {string} column Name of the column to filter.\n * @param {string} value The value to filter for.\n */\n self.setFilter = function (column, value) {\n if (column === undefined && value === undefined) {\n self.columnFilters = {};\n } else if (column && (value === '' || value === undefined)) {\n delete self.columnFilters[column];\n } else {\n self.columnFilters[column] = value;\n if (self.attributes.showFilterInCell) {\n self.filterable.rows.push(0);\n self.orders.columns.forEach(function (value, index) {\n self.filterable.columns.push(index);\n });\n }\n }\n if (!Object.keys(self.columnFilters).length) {\n self.filterable = {\n rows: [],\n columns: [],\n };\n }\n self.refresh();\n };\n /**\n * Returns the number of pixels to scroll down to line up with row rowIndex.\n * @memberof canvasDatagrid\n * @name findRowScrollTop\n * @method\n * @param {number} rowIndex The row index of the row to scroll find.\n */\n self.findRowScrollTop = function (rowIndex) {\n if (self.scrollCache.y[rowIndex] === undefined) {\n throw new RangeError(\n `Row index ${rowIndex} out of range: ${self.scrollCache.y.length}.`,\n );\n }\n return self.scrollCache.y[rowIndex];\n };\n /**\n * Returns the number of pixels to scroll to the left to line up with column columnIndex.\n * @memberof canvasDatagrid\n * @name findColumnScrollLeft\n * @method\n * @param {number} columnIndex The column index of the column to find.\n */\n self.findColumnScrollLeft = function (columnIndex) {\n var i = Math.max(columnIndex - 1, 0);\n if (self.scrollCache.x[i] === undefined) {\n throw new Error('Column index out of range.');\n }\n return (\n self.scrollCache.x[i] -\n self.getColumnWidth(self.orders.columns[columnIndex])\n );\n };\n /**\n * Scrolls to the cell at columnIndex x, and rowIndex y. If you define both rowIndex and columnIndex additional calculations can be made to center the cell using the target cell's height and width. Defining only one rowIndex or only columnIndex will result in simpler calculations.\n * @memberof canvasDatagrid\n * @name gotoCell\n * @method\n * @param {number} x The column index of the cell to scroll to.\n * @param {number} y The row index of the cell to scroll to.\n * @param {number} [offsetX=0] Percentage offset the cell should be from the left edge (not including headers). The default is 0, meaning the cell will appear at the left edge. Valid values are 0 through 1. 1 = Left, 0 = Right, 0.5 = Center.\n * @param {number} [offsetY=0] Percentage offset the cell should be from the top edge (not including headers). The default is 0, meaning the cell will appear at the top edge. Valid values are 0 through 1. 1 = Bottom, 0 = Top, 0.5 = Center.\n */\n self.gotoCell = function (x, y, offsetX, offsetY) {\n var targetX = x === undefined ? undefined : self.findColumnScrollLeft(x),\n targetY = y === undefined ? undefined : self.findRowScrollTop(y),\n cell,\n sbw =\n self.scrollBox.width -\n (self.scrollBox.verticalBarVisible ? self.style.scrollBarWidth : 0),\n sbh =\n self.scrollBox.height -\n (self.scrollBox.horizontalBarVisible ? self.style.scrollBarWidth : 0);\n offsetX = offsetX === undefined ? 0 : offsetX;\n offsetY = offsetY === undefined ? 0 : offsetY;\n targetX -= sbw * offsetX;\n targetY -= sbh * offsetY;\n if (x !== undefined && y !== undefined) {\n self.scrollBox.scrollTo(targetX, targetY);\n requestAnimationFrame(function () {\n cell = self.getVisibleCellByIndex(x, y);\n // HACK: just don't offset if the target cell cannot be seen\n // TODO: offset does not work on very small grids, not sure why\n if (!cell) {\n return;\n }\n targetX += cell.width * offsetX;\n targetY += cell.height * offsetY;\n self.scrollBox.scrollTo(targetX, targetY);\n });\n } else if (x !== undefined) {\n self.scrollBox.scrollLeft = targetX;\n } else if (y !== undefined) {\n self.scrollBox.scrollTop = targetY;\n }\n };\n /**\n * Scrolls the row y.\n * @memberof canvasDatagrid\n * @name gotoRow\n * @method\n * @param {number} y The row index of the cell to scroll to.\n */\n self.gotoRow = function (y) {\n self.gotoCell(0, y);\n };\n /**\n * Add a button into the cell.\n * @memberof canvasDatagrid\n * @name addButton\n * @method\n * @param {number} columnIndex The column index of the cell to to add a button.\n * @param {number} rowIndex The row index of the cell to to add a button.\n * @param {object} offset Offset how far go away from cell.\n * @param {object} items a list of items to add into button menu.\n * @param {string} imgSrc icon path to add into button.\n */\n self.addButton = function (columnIndex, rowIndex, offset, items, imgSrc) {\n var cells = self.visibleCells.filter(function (c) {\n return c.sortColumnIndex === columnIndex && c.sortRowIndex === rowIndex;\n });\n\n self.attachButton(\n {\n top: cells[0].y + cells[0].height + offset.y,\n left: cells[0].x + cells[0].width + offset.x,\n },\n items,\n imgSrc,\n );\n };\n /**\n * Scrolls the cell at cell x, row y into view if it is not already.\n * @memberof canvasDatagrid\n * @name scrollIntoView\n * @method\n * @param {number} x The column index of the cell to scroll into view.\n * @param {number} y The row index of the cell to scroll into view.\n * @param {number} [offsetX=0] Percentage offset the cell should be from the left edge (not including headers). The default is 0, meaning the cell will appear at the left edge. Valid values are 0 through 1. 1 = Left, 0 = Right, 0.5 = Center.\n * @param {number} [offsetY=0] Percentage offset the cell should be from the top edge (not including headers). The default is 0, meaning the cell will appear at the top edge. Valid values are 0 through 1. 1 = Bottom, 0 = Top, 0.5 = Center.\n */\n self.scrollIntoView = function (x, y, offsetX, offsetY) {\n if (\n self.visibleCells.filter(function (cell) {\n return (\n (cell.rowIndex === y || y === undefined) &&\n (cell.columnIndex === x || x === undefined) &&\n cell.x > 0 &&\n cell.y > 0 &&\n cell.x + cell.width < self.width &&\n cell.y + cell.height < self.height\n );\n }).length === 0\n ) {\n self.gotoCell(x, y, offsetX, offsetY);\n }\n };\n /**\n * Sets the active cell. Requires redrawing.\n * @memberof canvasDatagrid\n * @name setActiveCell\n * @method\n * @param {number} x The column index of the cell to set active.\n * @param {number} y The row index of the cell to set active.\n */\n self.setActiveCell = function (x, y) {\n if (x < 0) {\n x = 0;\n }\n if (y < 0) {\n y = 0;\n }\n self.activeCell = {\n rowIndex: y,\n columnIndex: x,\n };\n };\n /**\n * Removes the selection.\n * @memberof canvasDatagrid\n * @name selectNone\n * @param {boolean} dontDraw Suppress the draw method after the selection change.\n * @method\n */\n self.selectNone = function (dontDraw) {\n self.selections = [];\n self.dispatchEvent('selectionchanged', {\n selectedData: self.getSelectedData(),\n selections: self.selections,\n selectionBounds: self.selectionBounds,\n selectedCells: self.getSelectedCells(),\n });\n if (dontDraw) {\n return;\n }\n self.draw();\n };\n /**\n * Selects every visible cell.\n * @memberof canvasDatagrid\n * @name selectAll\n * @param {boolean} dontDraw Suppress the draw method after the selection change.\n * @method\n */\n self.selectAll = function (dontDraw) {\n self.selectArea({\n top: 0,\n left: -1,\n right: self.getSchema().length - 1,\n bottom: self.viewData.length - 1,\n });\n if (dontDraw) {\n return;\n }\n self.draw();\n };\n /**\n * Returns true if indices of columns next to the selected columnIndex is selected on every row.\n * @memberof canvasDatagrid\n * @name isMultiColumnsSelected\n * @method\n * @param {number} columnIndex The column index to check.\n */\n self.isMultiColumnsSelected = function (columnIndex) {\n var multiColIsSelected = true;\n self.viewData.forEach(function (row, rowIndex) {\n var columnIndices = self.selections[rowIndex];\n if (\n !columnIndices ||\n columnIndices.length <= 1 ||\n columnIndices.indexOf(columnIndex) === -1\n ) {\n multiColIsSelected = false;\n } else if (columnIndices.length > 1) {\n if (columnIndices[0] != columnIndex) multiColIsSelected = false;\n else {\n for (var i = 0; i < columnIndices.length - 1; i++) {\n if (columnIndices[i] + 1 != columnIndices[i + 1]) {\n multiColIsSelected = false;\n break;\n }\n }\n }\n }\n });\n return multiColIsSelected;\n };\n /**\n * Returns true if the selected columnIndex is selected on every row.\n * @memberof canvasDatagrid\n * @name isColumnSelected\n * @method\n * @param {number} columnIndex The column index to check.\n */\n self.isColumnSelected = function (columnIndex) {\n var colIsSelected = true;\n self.viewData.forEach(function (row, rowIndex) {\n if (\n !self.selections[rowIndex] ||\n self.selections[rowIndex].indexOf(columnIndex) === -1\n ) {\n colIsSelected = false;\n }\n });\n return colIsSelected;\n };\n /**\n * Runs the defined method on each selected cell.\n * @memberof canvasDatagrid\n * @name forEachSelectedCell\n * @method\n * @param {number} fn The function to execute. The signature of the function is: (data, rowIndex, columnName).\n * @param {number} expandToRow When true the data in the array is expanded to the entire row.\n */\n self.forEachSelectedCell = function (fn, expandToRow) {\n var d = [],\n s = expandToRow ? self.getSchema() : self.getVisibleSchema(),\n l = self.viewData.length;\n self.selections.forEach(function (row, index) {\n if (index === l) {\n return;\n }\n if (row.length === 0) {\n d[index] = null;\n return;\n }\n d[index] = {};\n row.forEach(function (col) {\n if (col === -1 || !s[col]) {\n return;\n }\n fn(self.viewData, index, s[col].name);\n });\n });\n };\n /**\n * Selects a column.\n * @memberof canvasDatagrid\n * @name selectColumn\n * @method\n * @param {number} columnIndex The column index to select.\n * @param {boolean} toggleSelectMode When true, behaves as if you were holding control/command when you clicked the column.\n * @param {boolean} shift When true, behaves as if you were holding shift when you clicked the column.\n * @param {boolean} supressSelectionchangedEvent When true, prevents the selectionchanged event from firing.\n */\n self.selectColumn = function (columnIndex, ctrl, shift, supressEvent) {\n var s, e, x;\n function addCol(i) {\n self.viewData.forEach(function (row, rowIndex) {\n self.selections[rowIndex] = self.selections[rowIndex] || [];\n if (self.selections[rowIndex].indexOf(i) === -1) {\n self.selections[rowIndex].push(i);\n }\n });\n }\n function removeCol(i) {\n self.viewData.forEach(function (row, rowIndex) {\n self.selections[rowIndex] = self.selections[rowIndex] || [];\n if (self.selections[rowIndex].indexOf(i) !== -1) {\n self.selections[rowIndex].splice(\n self.selections[rowIndex].indexOf(i),\n 1,\n );\n }\n });\n }\n if (shift) {\n if (!self.activeCell) {\n return;\n }\n s = Math.min(self.activeCell.columnIndex, columnIndex);\n e = Math.max(self.activeCell.columnIndex, columnIndex);\n for (x = s; e > x; x += 1) {\n addCol(x);\n }\n }\n if (!ctrl && !shift) {\n self.selections = [];\n self.activeCell.columnIndex = columnIndex;\n self.activeCell.rowIndex = self.scrollIndexTop;\n }\n if (ctrl && self.isColumnSelected(columnIndex)) {\n removeCol(columnIndex);\n } else {\n addCol(columnIndex);\n }\n if (supressEvent) {\n return;\n }\n self.dispatchEvent('selectionchanged', {\n selectedData: self.getSelectedData(),\n selections: self.selections,\n selectionBounds: self.getSelectionBounds(),\n selectedCells: self.getSelectedCells(),\n });\n };\n /**\n * Selects a row.\n * @memberof canvasDatagrid\n * @name selectRow\n * @method\n * @param {number} rowIndex The row index to select.\n * @param {boolean} ctrl When true, behaves as if you were holding control/command when you clicked the row.\n * @param {boolean} shift When true, behaves as if you were holding shift when you clicked the row.\n * @param {boolean} supressSelectionchangedEvent When true, prevents the selectionchanged event from firing.\n */\n self.selectRow = function (rowIndex, ctrl, shift, supressEvent) {\n var x,\n st,\n en,\n s = self.getVisibleSchema();\n self.isMultiRowsSelected = false;\n function de() {\n if (supressEvent) {\n return;\n }\n self.dispatchEvent('selectionchanged', {\n selectedData: self.getSelectedData(),\n selections: self.selections,\n selectionBounds: self.selectionBounds,\n selectedCells: self.getSelectedCells(),\n });\n }\n function addRow(ri) {\n self.selections[ri] = [];\n self.selections[ri].push(-1);\n s.forEach(function (col, index) {\n self.selections[ri].push(self.orders.columns.indexOf(col.index));\n });\n }\n if (self.dragAddToSelection === false || self.dragObject === undefined) {\n if (\n self.selections[rowIndex] &&\n self.selections[rowIndex].length - 1 === s.length\n ) {\n if (ctrl) {\n self.selections[rowIndex] = [];\n de();\n return;\n }\n }\n }\n if (self.dragAddToSelection === true || self.dragObject === undefined) {\n if (shift && self.dragObject === undefined) {\n if (!self.activeCell) {\n return;\n }\n st = Math.min(self.activeCell.rowIndex, rowIndex);\n en = Math.max(self.activeCell.rowIndex, rowIndex);\n for (x = st; en >= x; x += 1) {\n addRow(x);\n }\n } else {\n addRow(rowIndex);\n }\n }\n de();\n };\n /**\n * Collapse a tree grid by row index.\n * @memberof canvasDatagrid\n * @name collapseTree\n * @method\n * @param {number} index The index of the row to collapse.\n */\n self.collapseTree = function (rowIndex) {\n self.dispatchEvent('collapsetree', {\n childGrid: self.childGrids[rowIndex],\n data: self.viewData[rowIndex],\n rowIndex: rowIndex,\n });\n self.openChildren[rowIndex].blur();\n self.openChildren[rowIndex].dispose();\n delete self.openChildren[rowIndex];\n delete self.sizes.trees[rowIndex];\n delete self.childGrids[rowIndex];\n self.dispatchEvent('resizerow', {\n cellHeight: self.style.cellHeight,\n });\n self.resize(true);\n self.draw(true);\n };\n /**\n * Expands a tree grid by row index.\n * @memberof canvasDatagrid\n * @name expandTree\n * @method\n * @param {number} index The index of the row to expand.\n */\n self.expandTree = function (rowIndex) {\n var trArgs = self.args.treeGridAttributes || {},\n columnHeaderCellHeight = self.getColumnHeaderCellHeight(),\n rowHeaderCellWidth =\n self.sizes.columns.cornerCell || self.style.rowHeaderCellWidth,\n h = self.sizes.trees[rowIndex] || self.style.treeGridHeight,\n treeGrid;\n if (!self.childGrids[rowIndex]) {\n trArgs.debug = self.attributes.debug;\n trArgs.name = self.attributes.saveAppearance\n ? self.attributes.name + 'tree' + rowIndex\n : undefined;\n trArgs.style = trArgs.style || self.style;\n trArgs.parentNode = {\n parentGrid: self.intf,\n nodeType: 'canvas-datagrid-tree',\n offsetHeight: h,\n offsetWidth: self.width - rowHeaderCellWidth,\n header: { width: self.width - rowHeaderCellWidth },\n offsetLeft: rowHeaderCellWidth,\n offsetTop: columnHeaderCellHeight,\n offsetParent: self.intf.parentNode,\n parentNode: self.intf.parentNode,\n style: 'tree',\n data: self.viewData[rowIndex],\n };\n treeGrid = self.createGrid(trArgs);\n self.childGrids[rowIndex] = treeGrid;\n }\n treeGrid = self.childGrids[rowIndex];\n treeGrid.visible = true;\n self.dispatchEvent('expandtree', {\n treeGrid: treeGrid,\n data: self.viewData[rowIndex],\n rowIndex: rowIndex,\n });\n self.openChildren[rowIndex] = treeGrid;\n self.sizes.trees[rowIndex] = h;\n self.dispatchEvent('resizerow', { height: self.style.cellHeight });\n self.resize(true);\n };\n /**\n * Toggles tree grid open and close by row index.\n * @memberof canvasDatagrid\n * @name toggleTree\n * @method\n * @param {number} index The index of the row to toggle.\n */\n self.toggleTree = function (rowIndex) {\n var i = self.openChildren[rowIndex];\n if (i) {\n return self.collapseTree(rowIndex);\n }\n self.expandTree(rowIndex);\n };\n /**\n * Returns a header from the schema by name.\n * @memberof canvasDatagrid\n * @name getHeaderByName\n * @tutorial schema\n * @method\n * @returns {header} header with the selected name, or undefined.\n * @param {string} name The name of the column to resize.\n */\n self.getHeaderByName = function (name) {\n var x,\n i = self.getSchema();\n for (x = 0; x < i.length; x += 1) {\n if (i[x].name === name) {\n return i[x];\n }\n }\n };\n /**\n * Resizes a column to fit the longest value in the column. Call without a value to resize all columns.\n * Warning, can be slow on very large record sets (1m records ~3-5 seconds on an i7).\n * @memberof canvasDatagrid\n * @name fitColumnToValues\n * @method\n * @param {string} name The name of the column to resize.\n */\n self.fitColumnToValues = function (name, internal) {\n if (!self.canvas) {\n return;\n }\n self.sizes.columns[\n name === 'cornerCell' ? -1 : self.getHeaderByName(name).index\n ] = Math.max(self.findColumnMaxTextLength(name), self.style.minColumnWidth);\n if (!internal) {\n self.resize();\n self.draw(true);\n }\n };\n /**\n * Checks if a cell is currently visible.\n * @memberof canvasDatagrid\n * @name isCellVisible\n * @overload\n * @method\n * @returns {boolean} when true, the cell is visible, when false the cell is not currently drawn.\n * @param {number} columnIndex The column index of the cell to check.\n * @param {number} rowIndex The row index of the cell to check.\n */\n self.isCellVisible = function (cell, rowIndex) {\n // overload\n if (rowIndex !== undefined) {\n return (\n self.visibleCells.filter(function (c) {\n return c.columnIndex === cell && c.rowIndex === rowIndex;\n }).length > 0\n );\n }\n var x,\n l = self.visibleCells.length;\n for (x = 0; x < l; x += 1) {\n if (\n cell.x === self.visibleCells[x].x &&\n cell.y === self.visibleCells[x].y\n ) {\n return true;\n }\n }\n return false;\n };\n /**\n * Sets the order of the data.\n * @memberof canvasDatagrid\n * @name order\n * @method\n * @param {number} columnName Name of the column to be sorted.\n * @param {string} direction `asc` for ascending or `desc` for descending.\n * @param {function} [sortFunction] When defined, override the default sorting method defined in the column's schema and use this one.\n * @param {bool} [dontSetStorageData] Don't store this setting for future use.\n */\n self.order = function (\n columnName,\n direction,\n sortFunction,\n dontSetStorageData,\n ) {\n var f,\n c = self.getSchema().filter(function (col) {\n return col.name === columnName;\n });\n if (\n self.dispatchEvent('beforesortcolumn', {\n name: columnName,\n direction: direction,\n })\n ) {\n return;\n }\n self.orderBy = columnName;\n self.orderDirection = direction;\n if (!self.viewData || self.viewData.length === 0) {\n return;\n }\n if (c.length === 0) {\n throw new Error('Cannot sort. No such column name');\n }\n f = sortFunction || c[0].sorter || self.sorters[c[0].type];\n if (!f && c[0].type !== undefined) {\n console.warn(\n 'Cannot sort type \"%s\" falling back to string sort.',\n c[0].type,\n );\n }\n self.orderings.add(\n columnName,\n direction,\n typeof f === 'function' ? f : self.sorters.string,\n );\n self.refresh();\n self.dispatchEvent('sortcolumn', {\n name: columnName,\n direction: direction,\n });\n\n if (dontSetStorageData) {\n return;\n }\n self.setStorageData();\n };\n self.isInGrid = function (e) {\n if (e.x < 0 || e.x > self.width || e.y < 0 || e.y > self.height) {\n return false;\n }\n return true;\n };\n /**\n * Moves the current selection relative to the its current position. Note: this method does not move the selected data, just the selection itself.\n * @memberof canvasDatagrid\n * @name moveSelection\n * @method\n * @param {number} offsetX The number of columns to offset the selection.\n * @param {number} offsetY The number of rows to offset the selection.\n */\n self.moveSelection = function (offsetX, offsetY) {\n var sel = [];\n self.selections.forEach(function (row, rowIndex) {\n sel[rowIndex + offsetY] = [];\n row.forEach(function (colIndex) {\n sel[rowIndex + offsetY].push(colIndex + offsetX);\n });\n });\n self.selections = sel;\n };\n /**\n * Moves data in the provided selection to another position in the grid. Moving data off the edge of the schema (columns/x) will truncate data.\n * @memberof canvasDatagrid\n * @name moveTo\n * @method\n * @param {array} sel 2D array representing selected rows and columns. `canvasDatagrid.selections` is in this format and can be used here.\n * @param {number} x The column index to start inserting the selection at.\n * @param {number} y The row index to start inserting the selection at.\n */\n self.moveTo = function (sel, x, y) {\n var selectedData = self.getSelectedData(),\n visibleSchema = self.getVisibleSchema(),\n selectionLength = sel.length,\n xi,\n maxRowLength = -Infinity,\n minXi = Infinity,\n yi = y - 1;\n\n sel.forEach(function (row, rowIndex) {\n if (rowIndex === selectionLength) {\n return;\n }\n if (row.length === 0) {\n return;\n }\n minXi = Math.min(self.getVisibleColumnIndexOf(x), minXi);\n maxRowLength = Math.max(maxRowLength, row.length);\n row.forEach(function (colIndex) {\n // intentional redef of colIndex\n colIndex = self.getVisibleColumnIndexOf(colIndex);\n if (!visibleSchema[colIndex]) {\n return;\n }\n // TODO:\n if (!self.data[rowIndex]) {\n self.data[rowIndex] = {};\n }\n // TODO:\n self.data[rowIndex][visibleSchema[colIndex].name] = null;\n });\n });\n\n sel.forEach(function (row, index) {\n var lastSourceIndex;\n yi += 1;\n xi = self.getVisibleColumnIndexOf(x);\n row.forEach(function (colIndex, cidx) {\n colIndex = self.getVisibleColumnIndexOf(colIndex);\n if (cidx > 0) {\n // this confusing bit of nonsense figures out\n // if the selection has skipped cells\n xi += colIndex - lastSourceIndex;\n }\n lastSourceIndex = colIndex;\n if (\n colIndex === -1 ||\n !visibleSchema[xi] ||\n !visibleSchema[colIndex] ||\n // TODO:\n self.data.length - 1 < yi ||\n yi < 0\n ) {\n return;\n }\n // TODO:\n if (!self.data[yi]) {\n self.data[yi] = {};\n }\n // TODO:\n self.data[yi][visibleSchema[xi].name] =\n selectedData[index][visibleSchema[colIndex].name];\n });\n });\n };\n /**\n * Checks if a given column is visible.\n * @memberof canvasDatagrid\n * @name isColumnVisible\n * @method\n * @returns {boolean} When true, the column is visible.\n * @param {number} columnIndex Column index.\n */\n self.isColumnVisible = function (columnIndex) {\n return (\n self.visibleCells.filter(function (c) {\n return c.columnIndex === columnIndex;\n }).length > 0\n );\n };\n /**\n * Checks if a given row is visible.\n * @memberof canvasDatagrid\n * @name isRowVisible\n * @method\n * @returns {boolean} When true, the row is visible.\n * @param {number} rowIndex Row index.\n */\n self.isRowVisible = function (rowIndex) {\n return (\n self.visibleCells.filter(function (c) {\n return c.rowIndex === rowIndex;\n }).length > 0\n );\n };\n /**\n * Gets the cell at columnIndex and rowIndex.\n * @memberof canvasDatagrid\n * @name getVisibleCellByIndex\n * @method\n * @returns {cell} cell at the selected location.\n * @param {number} x Column index.\n * @param {number} y Row index.\n */\n self.getVisibleCellByIndex = function (x, y) {\n return self.visibleCells.filter(function (c) {\n return c.columnIndex === x && c.rowIndex === y;\n })[0];\n };\n /**\n * Gets the cell at grid pixel coordinate x and y. Author's note. This function ties drawing and events together. This is a very complex function and is core to the component.\n * @memberof canvasDatagrid\n * @name getCellAt\n * @method\n * @returns {cell} cell at the selected location.\n * @param {number} x Number of pixels from the left.\n * @param {number} y Number of pixels from the top.\n */\n self.getCellAt = function (x, y, useTouchScrollZones) {\n function getBorder(entitiy) {\n if (\n entitiy.x + entitiy.width - self.attributes.borderResizeZone * 0.4 <\n x &&\n entitiy.x + entitiy.width + self.attributes.borderResizeZone * 0.6 > x\n ) {\n return 'r';\n }\n if (\n entitiy.x - self.attributes.borderResizeZone * 0.4 < x &&\n entitiy.x + self.attributes.borderResizeZone * 0.6 > x\n ) {\n return 'l';\n }\n if (\n entitiy.y + entitiy.height - self.attributes.borderResizeZone * 0.4 <\n y &&\n entitiy.y + entitiy.height + self.attributes.borderResizeZone * 0.6 > y\n ) {\n return 'b';\n }\n if (\n entitiy.y - self.attributes.borderResizeZone * 0.4 < y &&\n entitiy.y + self.attributes.borderResizeZone * 0.6 > y\n ) {\n return 't';\n }\n }\n if (!self.visibleCells) {\n return;\n }\n var border,\n tsz = useTouchScrollZones ? self.attributes.touchScrollZone : 0,\n moveMode = self.attributes.borderDragBehavior === 'move',\n i,\n l = self.visibleCells.length,\n moveBorder,\n xBorderBehavior = moveMode ? self.cursorGrab : 'ew-resize',\n yBorderBehavior = moveMode ? self.cursorGrab : 'ns-resize',\n cell,\n entitiy;\n if (!self.visibleCells || !self.visibleCells.length) {\n return;\n }\n self.hasFocus = true;\n if (!(y < self.height && y > 0 && x < self.width && x > 0)) {\n self.hasFocus = false;\n return {\n dragContext: 'inherit',\n context: 'inherit',\n };\n }\n for (i = 0; i < l; i += 1) {\n cell = self.visibleCells[i];\n // interactive dimensions of the cell. used for touch \"over size\" zones\n entitiy = {\n x: cell.x,\n y: cell.y,\n height: cell.height,\n width: cell.width,\n };\n if (\n useTouchScrollZones &&\n /(vertical|horizontal)-scroll-/.test(cell.style)\n ) {\n entitiy.x -= tsz;\n entitiy.y -= tsz;\n entitiy.height += tsz;\n entitiy.width += tsz;\n }\n if (\n entitiy.x - self.style.cellBorderWidth < x &&\n entitiy.x + entitiy.width + self.style.cellBorderWidth > x &&\n entitiy.y - self.style.cellBorderWidth < y &&\n entitiy.y + entitiy.height + self.style.cellBorderWidth > y\n ) {\n if (/frozen-row-marker/.test(cell.style)) {\n cell.dragContext = cell.style;\n cell.context = 'row-resize';\n return cell;\n }\n if (/frozen-column-marker/.test(cell.style)) {\n cell.dragContext = cell.style;\n cell.context = 'col-resize';\n return cell;\n }\n if (/selection-handle-/.test(cell.style)) {\n cell.dragContext = cell.style;\n cell.context = 'crosshair';\n return cell;\n }\n if (/vertical-scroll-(bar|box)/.test(cell.style)) {\n cell.dragContext = 'vertical-scroll-box';\n cell.context = 'vertical-scroll-box';\n cell.isScrollBar = true;\n cell.isVerticalScrollBar = true;\n if (y > self.scrollBox.box.v.y + self.scrollBox.scrollBoxHeight) {\n cell.dragContext = 'vertical-scroll-bottom';\n cell.context = 'vertical-scroll-bottom';\n } else if (y < self.scrollBox.box.v.y) {\n cell.dragContext = 'vertical-scroll-top';\n cell.context = 'vertical-scroll-top';\n }\n self.cursor = 'default';\n return cell;\n }\n if (/horizontal-scroll-(bar|box)/.test(cell.style)) {\n cell.dragContext = 'horizontal-scroll-box';\n cell.context = 'horizontal-scroll-box';\n cell.isScrollBar = true;\n cell.isHorizontalScrollBar = true;\n if (x > self.scrollBox.box.h.x + self.scrollBox.scrollBoxWidth) {\n cell.dragContext = 'horizontal-scroll-right';\n cell.context = 'horizontal-scroll-right';\n } else if (x < self.scrollBox.box.h.x) {\n cell.dragContext = 'horizontal-scroll-left';\n cell.context = 'horizontal-scroll-left';\n }\n self.cursor = 'default';\n return cell;\n }\n border = getBorder(entitiy);\n // check if the border of this cell is the border of the selection and if so show move cursor in move mode\n moveBorder =\n moveMode &&\n cell.selectionBorder &&\n cell.selectionBorder.indexOf(border) !== -1;\n if (\n ['l', 'r'].indexOf(border) !== -1 &&\n (self.attributes.allowColumnResize || moveBorder) &&\n ((self.attributes.allowColumnResizeFromCell && cell.isNormal) ||\n !cell.isNormal ||\n moveBorder) &&\n ((self.attributes.allowRowHeaderResize &&\n (cell.isRowHeader || cell.isCorner)) ||\n !(cell.isRowHeader && cell.isCorner))\n ) {\n if (\n (cell.isColumnHeader ||\n cell.isCorner ||\n (self.attributes.allowColumnResizeFromCell && cell.isNormal)) &&\n border === 'r'\n ) {\n cell.context = 'ew-resize';\n cell.dragContext = 'ew-resize';\n return cell;\n }\n if (!(cell.isColumnHeader || cell.isCorner) && moveBorder) {\n cell.context = xBorderBehavior;\n cell.dragContext = border + '-move';\n return cell;\n }\n }\n if (\n ['t', 'b'].indexOf(border) !== -1 &&\n cell.rowIndex > -1 &&\n (self.attributes.allowRowResize || moveBorder) &&\n ((self.attributes.allowRowResizeFromCell && cell.isNormal) ||\n !cell.isNormal ||\n moveBorder) &&\n !cell.isColumnHeader\n ) {\n if (\n (cell.isRowHeader ||\n cell.isCorner ||\n (self.attributes.allowRowResizeFromCell && cell.isNormal)) &&\n border === 'b'\n ) {\n cell.context = 'ns-resize';\n cell.dragContext = 'ns-resize';\n return cell;\n }\n if (!(cell.isRowHeader || cell.isCorner) && moveBorder) {\n cell.context = yBorderBehavior;\n cell.dragContext = border + '-move';\n return cell;\n }\n }\n if (cell.style === 'columnHeaderCell') {\n cell.context = 'cell';\n cell.dragContext = 'column-reorder';\n return cell;\n }\n if (cell.style === 'rowHeaderCell') {\n if (\n self.attributes.rowGrabZoneSize +\n (cell.y - self.style.cellBorderWidth) <\n y ||\n !self.attributes.allowRowReordering\n ) {\n cell.dragContext = 'cell';\n cell.context = 'cell';\n } else {\n cell.context = self.cursorGrab;\n cell.dragContext = 'row-reorder';\n }\n return cell;\n }\n if (cell.isGrid) {\n self.hasFocus = false;\n cell.dragContext = 'cell-grid';\n cell.context = 'cell-grid';\n return cell;\n }\n if (cell.style === 'tree-grid') {\n self.hasFocus = false;\n cell.dragContext = 'tree';\n cell.context = 'tree';\n return cell;\n }\n cell.dragContext = 'cell';\n cell.context = 'cell';\n return cell;\n }\n }\n self.hasFocus = true;\n self.cursor = 'default';\n return {\n dragContext: 'background',\n context: 'background',\n style: 'background',\n isBackground: true,\n };\n };\n /**\n * Gets the bounds of current selection.\n * @returns {rect} selection.\n * @memberof canvasDatagrid\n * @name getSelectionBounds\n * @method\n */\n self.getSelectionBounds = function () {\n var low = { x: Infinity, y: Infinity },\n high = { x: -Infinity, y: -Infinity };\n self.selections.forEach(function (row, rowIndex) {\n var maxCol, minCol;\n low.y = rowIndex < low.y ? rowIndex : low.y;\n high.y = rowIndex > high.y ? rowIndex : high.y;\n maxCol = Math.max.apply(null, row);\n minCol = Math.min.apply(null, row);\n low.x = minCol < low.x ? minCol : low.x;\n high.x = maxCol > high.x ? maxCol : high.x;\n });\n return {\n top: low.y,\n left: low.x,\n bottom: high.y,\n right: high.x,\n };\n };\n /**\n * Returns an auto generated schema based on data structure.\n * @memberof canvasDatagrid\n * @name getSchemaFromData\n * @method\n * @tutorial schema\n * @returns {schema} schema A schema based on the first item in the data array.\n */\n self.getSchemaFromData = function (d) {\n d = d || self.originalData;\n return Object.keys(d[0] || { ' ': '' }).map(function mapEachSchemaColumn(\n key,\n index,\n ) {\n var type = self.getBestGuessDataType(key, d),\n i = {\n name: key,\n title: isNaN(parseInt(key, 10))\n ? key\n : self.integerToAlpha(key).toUpperCase(),\n index: index,\n columnIndex: index,\n type: type,\n filter: self.filter(type),\n };\n if (\n self.storedSettings &&\n self.storedSettings.visibility &&\n self.storedSettings.visibility[i.name] !== undefined\n ) {\n i.hidden = !self.storedSettings.visibility[i.name];\n }\n return i;\n });\n };\n /**\n * Clears the change log grid.changes that keeps track of changes to the data set.\n * This does not undo changes or alter data it is simply a convince array to keep\n * track of changes made to the data since last this method was called.\n * @memberof canvasDatagrid\n * @name clearChangeLog\n * @method\n */\n self.clearChangeLog = function () {\n self.changes = [];\n };\n /**\n * Selects an area of the grid.\n * @memberof canvasDatagrid\n * @name selectArea\n * @method\n * @param {rect} bounds A rect object representing the selected values.\n */\n self.selectArea = function (bounds, ctrl) {\n self.selectionBounds = bounds || self.selectionBounds;\n var ev,\n x,\n y,\n s = self.getSchema();\n if (!ctrl) {\n self.selections = [];\n }\n if (\n self.selectionBounds.top < -1 ||\n self.selectionBounds.bottom > self.viewData.length ||\n self.selectionBounds.left < -1 ||\n self.selectionBounds.right > s.length\n ) {\n throw new Error('Impossible selection area');\n }\n for (\n x = self.selectionBounds.top;\n x <= self.selectionBounds.bottom;\n x += 1\n ) {\n self.selections[x] = [];\n for (\n y = self.selectionBounds.left;\n y <= self.selectionBounds.right;\n y += 1\n ) {\n if (self.selections[x].indexOf(y) === -1) {\n self.selections[x].push(y);\n }\n }\n }\n ev = {\n selections: self.selections,\n selectionBounds: self.selectionBounds,\n selectedCells: self.getSelectedCells(),\n };\n Object.defineProperty(ev, 'selectedData', {\n get: function () {\n return self.getSelectedData();\n },\n });\n self.dispatchEvent('selectionchanged', ev);\n };\n /**\n * Returns the maximum text width for a given column by column name.\n * @memberof canvasDatagrid\n * @name findColumnMaxTextLength\n * @method\n * @returns {number} The number of pixels wide the maximum width value in the selected column.\n * @param {string} name The name of the column to calculate the value's width of.\n */\n self.findColumnMaxTextLength = function (name) {\n var m = -Infinity;\n if (name === 'cornerCell') {\n self.ctx.font = self.style.rowHeaderCellFont;\n return (\n self.ctx.measureText(\n (\n self.viewData.length + (self.attributes.showNewRow ? 1 : 0)\n ).toString(),\n ).width +\n self.style.autosizePadding +\n self.style.autosizeHeaderCellPadding +\n self.style.rowHeaderCellPaddingRight +\n self.style.rowHeaderCellPaddingLeft +\n (self.attributes.tree\n ? self.style.treeArrowWidth +\n self.style.treeArrowMarginLeft +\n self.style.treeArrowMarginRight\n : 0)\n );\n }\n var formatter = null;\n self.getSchema().forEach(function (col) {\n if (col.name !== name) {\n return;\n }\n self.ctx.font = self.style.columnHeaderCellFont;\n var t =\n self.ctx.measureText(col.title || col.name).width +\n self.style.headerCellPaddingRight +\n self.style.headerCellPaddingLeft;\n m = t > m ? t : m;\n formatter = self.formatters[col.type];\n });\n self.viewData.forEach(function (row) {\n var text = row[name];\n if (formatter) {\n text = formatter({ cell: { value: text } });\n }\n self.ctx.font = self.style.cellFont;\n var t =\n self.ctx.measureText(text).width +\n self.style.cellPaddingRight +\n self.style.cellPaddingLeft +\n self.style.cellAutoResizePadding;\n m = t > m ? t : m;\n });\n return m;\n };\n /**\n * Gets the total width of all header columns.\n * @memberof canvasDatagrid\n * @name getHeaderWidth\n * @method\n */\n self.getHeaderWidth = function () {\n return self.getVisibleSchema().reduce(function (total, header) {\n return total + parseInt(header.width || self.style.cellWidth, 10);\n }, 0);\n };\n /**\n * Gets the height of a row by index.\n * @memberof canvasDatagrid\n * @name getRowHeight\n * @method\n * @param {number} rowIndex The row index to lookup.\n */\n self.getRowHeight = function (rowIndex) {\n return (self.sizes.rows[rowIndex] || self.style.cellHeight) * self.scale;\n };\n /**\n * Gets the width of a column by index.\n * @memberof canvasDatagrid\n * @name getColumnWidth\n * @method\n * @param {number} columnIndex The column index to lookup.\n */\n self.getColumnWidth = function (columnIndex) {\n return (\n (self.sizes.columns[columnIndex] ||\n self.getSchema()[columnIndex].width ||\n self.style.cellWidth) * self.scale\n );\n };\n self.formatters.string = function cellFormatterString(e) {\n return e.cell.value !== undefined ? e.cell.value : '';\n };\n self.formatters.rowHeaderCell = self.formatters.string;\n self.formatters.headerCell = self.formatters.string;\n self.formatters.number = self.formatters.string;\n self.formatters.int = self.formatters.string;\n self.formatters.html = self.formatters.string;\n self.sorters.string = function (columnName, direction) {\n var asc = direction === 'asc';\n return function (a, b) {\n const aValue = a[columnName] || '';\n const bValue = b[columnName] || '';\n if (asc) {\n if (!aValue.localeCompare) {\n return 1;\n }\n return aValue.localeCompare(bValue);\n }\n if (!bValue.localeCompare) {\n return 1;\n }\n return bValue.localeCompare(aValue);\n };\n };\n self.sorters.number = function (columnName, direction) {\n var asc = direction === 'asc';\n return function (a, b) {\n if (asc) {\n return a[columnName] - b[columnName];\n }\n return b[columnName] - a[columnName];\n };\n };\n self.sorters.date = function (columnName, direction) {\n var asc = direction === 'asc';\n return function (a, b) {\n if (asc) {\n return (\n new Date(a[columnName]).getTime() - new Date(b[columnName]).getTime()\n );\n }\n return (\n new Date(b[columnName]).getTime() - new Date(a[columnName]).getTime()\n );\n };\n };\n}\n","/*jslint browser: true, unparam: true, todo: true, plusplus: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nexport default function (self) {\n var touchTimerMs = 50,\n debounceTouchMove,\n touchMoving,\n touchScrollTimeout;\n self.scrollAnimation = {};\n self.touchDelta = {};\n self.touchAnimateTo = {};\n self.animationFrames = 0;\n self.getTouchPos = function (e, touchIndex) {\n var t = touchIndex ? e.touches[touchIndex] : e.touches[0],\n rect = self.canvas.getBoundingClientRect(),\n pos;\n if (!t) {\n return;\n }\n pos = {\n x: t.clientX - rect.left,\n y: t.clientY - rect.top,\n };\n if (self.isChildGrid) {\n pos.x -= self.canvasOffsetLeft;\n pos.y -= self.canvasOffsetTop;\n }\n return {\n x: pos.x,\n y: pos.y,\n rect: rect,\n };\n };\n // shamelessly stolen from from https://gist.github.com/gre/1650294\n self.easingFunctions = {\n linear: function (t) {\n return t;\n },\n easeInQuad: function (t) {\n return t * t;\n },\n easeOutQuad: function (t) {\n return t * (2 - t);\n },\n easeInOutQuad: function (t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n },\n easeInCubic: function (t) {\n return t * t * t;\n },\n easeOutCubic: function (t) {\n return --t * t * t + 1;\n },\n easeInOutCubic: function (t) {\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n },\n easeInQuart: function (t) {\n return t * t * t * t;\n },\n easeOutQuart: function (t) {\n return 1 - --t * t * t * t;\n },\n easeInOutQuart: function (t) {\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\n },\n easeInQuint: function (t) {\n return t * t * t * t * t;\n },\n easeOutQuint: function (t) {\n return 1 + --t * t * t * t * t;\n },\n easeInOutQuint: function (t) {\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\n },\n };\n self.easing = function (t, b, c, d) {\n return (\n c * self.easingFunctions[self.attributes.touchEasingMethod](t / d) + b\n );\n };\n self.calculatePPSTimed = function () {\n self.xPPST = -(\n (self.touchDelta.x - self.touchSigmaTimed.x) /\n (self.touchDelta.t - self.touchSigmaTimed.t)\n );\n self.yPPST = -(\n (self.touchDelta.y - self.touchSigmaTimed.y) /\n (self.touchDelta.t - self.touchSigmaTimed.t)\n );\n self.touchSigmaTimed = {\n x: self.touchDelta.x,\n y: self.touchDelta.y,\n t: performance.now(),\n };\n };\n self.calculatePPS = function () {\n self.xPPS = -(\n (self.touchDelta.x - self.touchSigma.x) /\n (self.touchDelta.t - self.touchSigma.t)\n );\n self.yPPS = -(\n (self.touchDelta.y - self.touchSigma.y) /\n (self.touchDelta.t - self.touchSigma.t)\n );\n self.touchSigma = {\n x: self.touchDelta.x,\n y: self.touchDelta.y,\n t: performance.now(),\n };\n };\n self.touchEndAnimation = function () {\n if (!self.canvas || !self.scrollBox.scrollTo) {\n return requestAnimationFrame(self.touchEndAnimation);\n }\n var n = performance.now(),\n d = self.attributes.touchReleaseAnimationDurationMs,\n t;\n t = n - self.touchDelta.t;\n self.animationFrames += 1;\n self.scrollAnimation.x = self.easing(\n t,\n self.touchDelta.scrollLeft,\n self.touchAnimateTo.x,\n d,\n );\n self.scrollAnimation.y = self.easing(\n t,\n self.touchDelta.scrollTop,\n self.touchAnimateTo.y,\n d,\n );\n if (\n t > d ||\n (self.scrollAnimation.y === self.scrollBox.scrollTop &&\n self.scrollAnimation.x === self.scrollBox.scrollLeft) ||\n self.stopAnimation\n ) {\n return;\n }\n self.scrollBox.scrollTo(self.scrollAnimation.x, self.scrollAnimation.y);\n requestAnimationFrame(self.touchEndAnimation);\n };\n self.touchEditCell = function (cell) {\n self.beginEditAt(cell.columnIndex, cell.rowIndex);\n };\n self.touchstart = function (e) {\n if (e.changedTouches[0]) {\n self.touchStart = self.getTouchPos(e);\n self.startingCell = self.getCellAt(\n self.touchStart.x,\n self.touchStart.y,\n true,\n );\n }\n if (\n self.dispatchEvent('touchstart', {\n NativeEvent: e,\n cell: self.startingCell,\n })\n ) {\n return;\n }\n self.disposeContextMenu();\n clearInterval(self.calculatePPSTimer);\n clearTimeout(self.touchContextTimeout);\n self.touchStartEvent = e;\n self.stopAnimation = true;\n self.animationFrames = 0;\n self.stopPropagation(e);\n if (e.touches.length === 1 && e.changedTouches[0] && !self.zoomAltered) {\n self.touchLength = 1;\n self.touchStart = self.touchStart || self.touchStart1;\n self.touchScrollStart = {\n x: self.scrollBox.scrollLeft,\n y: self.scrollBox.scrollTop,\n t: performance.now(),\n };\n self.touchDelta = {\n x: 0,\n y: 0,\n scrollLeft: self.scrollBox.scrollLeft,\n scrollTop: self.scrollBox.scrollTop,\n t: self.touchScrollStart.t,\n };\n self.touchSigma = {\n x: self.touchDelta.x,\n y: self.touchDelta.y,\n t: self.touchDelta.t,\n };\n self.touchSigmaTimed = {\n x: self.touchDelta.x,\n y: self.touchDelta.y,\n t: self.touchDelta.t,\n };\n self.touchContextTimeout = setTimeout(function () {\n self.contextmenuEvent(e, self.touchStart);\n }, self.attributes.touchContextMenuTimeMs);\n self.calculatePPSTimer = setInterval(\n self.calculatePPSTimed,\n touchTimerMs,\n );\n if (\n self.startingCell &&\n (self.startingCell.isGrid ||\n ['tree', 'inherit'].indexOf(self.startingCell.context) !== -1)\n ) {\n self.hasFocus = false;\n return;\n }\n self.hasFocus = true;\n if (self.startingCell.isHeader) {\n if (self.startingCell.isRowHeader) {\n self.selectArea({\n top: self.startingCell.rowIndex,\n bottom: self.startingCell.rowIndex,\n left: 0,\n right: self.getVisibleSchema().length - 1,\n });\n self.draw(true);\n } else if (self.startingCell.isColumnHeader) {\n if (self.attributes.columnHeaderClickBehavior === 'sort') {\n if (self.orderBy === self.startingCell.header.name) {\n self.orderDirection =\n self.orderDirection === 'asc' ? 'desc' : 'asc';\n } else {\n self.orderDirection = 'asc';\n }\n self.order(self.startingCell.header.name, self.orderDirection);\n }\n if (self.attributes.columnHeaderClickBehavior === 'select') {\n self.selectArea({\n top: 0,\n bottom: self.viewData.length - 1,\n left: self.startingCell.columnIndex,\n right: self.startingCell.columnIndex,\n });\n self.draw(true);\n }\n }\n self.touchEndEvents(e);\n return;\n }\n }\n if (self.zoomAltered) {\n return;\n }\n document.body.addEventListener('touchmove', self.touchmove, {\n passive: false,\n });\n document.body.addEventListener('touchend', self.touchend, false);\n document.body.addEventListener('touchcancel', self.touchcancel, false);\n self.draw(true);\n };\n self.touchSelect = function (cell, handleType) {\n if (cell.rowIndex === undefined || cell.columnIndex === undefined) {\n return;\n }\n self.touchSelecting = true;\n var bounds = self.getSelectionBounds();\n if (\n handleType === 'selection-handle-bl' &&\n cell.rowIndex >= bounds.top &&\n cell.columnIndex <= bounds.right\n ) {\n bounds.bottom = cell.rowIndex;\n bounds.left = cell.columnIndex;\n } else if (\n handleType === 'selection-handle-tl' &&\n cell.rowIndex <= bounds.bottom &&\n cell.columnIndex <= bounds.right\n ) {\n bounds.top = cell.rowIndex;\n bounds.left = cell.columnIndex;\n } else if (\n handleType === 'selection-handle-tr' &&\n cell.rowIndex <= bounds.bottom &&\n cell.columnIndex >= bounds.left\n ) {\n bounds.top = cell.rowIndex;\n bounds.right = cell.columnIndex;\n } else if (\n handleType === 'selection-handle-br' &&\n cell.rowIndex >= bounds.top &&\n cell.columnIndex >= bounds.left\n ) {\n bounds.bottom = cell.rowIndex;\n bounds.right = cell.columnIndex;\n }\n if (self.attributes.selectionMode === 'row' || cell.rowIndex === -1) {\n bounds.left = 0;\n bounds.right = self.getSchema().length - 1;\n } else {\n bounds.left = Math.max(0, bounds.left);\n }\n self.selectArea(bounds);\n self.draw(true);\n };\n function touchMove(e) {\n var ch, rw, rScrollZone, lScrollZone, bScrollZone, tScrollZone, sbw, t1, t2;\n if (self.dispatchEvent('beforetouchmove', { NativeEvent: e })) {\n return;\n }\n clearTimeout(touchScrollTimeout);\n if (e.changedTouches[0]) {\n self.touchPosition = self.getTouchPos(e);\n }\n if (e.changedTouches[1]) {\n self.touchPosition1 = self.getTouchPos(e, 1);\n }\n if (\n Math.abs(self.touchDelta.x) + Math.abs(self.touchDelta.y) >\n self.attributes.touchDeadZone\n ) {\n clearTimeout(self.touchContextTimeout);\n }\n if (e.touches.length === 2 && self.touchPosition && self.touchPosition1) {\n t1 = self.touchPosition.y;\n t2 = self.touchPosition1.y;\n if (!self.zoomDeltaStart) {\n self.zoomDeltaStart = Math.abs(t1 - t2);\n self.startScale = self.scale;\n }\n self.touchLength = 2;\n self.scaleDelta = self.zoomDeltaStart - Math.abs(t1 - t2);\n self.scale =\n self.startScale -\n self.scaleDelta * self.attributes.touchZoomSensitivity;\n self.scale = Math.min(\n Math.max(self.scale, self.attributes.touchZoomMin),\n self.attributes.touchZoomMax,\n );\n self.zoomAltered = true;\n self.resize(true);\n self.resizeChildGrids();\n return;\n }\n if (self.zoomAltered) {\n return;\n }\n self.touchLength = 1;\n self.touchPosition = self.touchPosition || self.touchPosition1;\n ch = self.getColumnHeaderCellHeight();\n rw = self.getRowHeaderCellWidth();\n rScrollZone =\n self.width - self.style.scrollBarWidth - self.touchPosition.x <\n self.attributes.selectionScrollZone;\n lScrollZone =\n self.touchPosition.x - rw < self.attributes.selectionScrollZone;\n bScrollZone =\n self.height - self.style.scrollBarWidth - self.touchPosition.y <\n self.attributes.selectionScrollZone;\n tScrollZone =\n self.touchPosition.y - ch < self.attributes.selectionScrollZone;\n sbw = self.style.scrollBarWidth;\n function touchScroll() {\n var x = self.scrollBox.scrollLeft,\n y = self.scrollBox.scrollTop;\n x += rScrollZone ? self.attributes.selectionScrollIncrement : 0;\n y += bScrollZone ? self.attributes.selectionScrollIncrement : 0;\n y -= tScrollZone ? self.attributes.selectionScrollIncrement : 0;\n x -= lScrollZone ? self.attributes.selectionScrollIncrement : 0;\n self.scrollBox.scrollTo(x, y);\n touchScrollTimeout = setTimeout(\n touchScroll,\n self.attributes.scrollRepeatRate,\n );\n }\n e.stopPropagation();\n self.touchDelta = {\n x: self.touchPosition.x - self.touchStart.x,\n y: self.touchPosition.y - self.touchStart.y,\n scrollLeft: self.scrollBox.scrollLeft,\n scrollTop: self.scrollBox.scrollTop,\n t: performance.now(),\n };\n self.currentCell = self.getCellAt(\n self.touchPosition.x,\n self.touchPosition.y,\n );\n self.dispatchEvent('touchmove', { NativeEvent: e, cell: self.currentCell });\n self.calculatePPS();\n self.touchDuration = performance.now() - self.touchScrollStart.t;\n self.stopAnimation = true;\n self.animationFrames = 0;\n if (\n self.touchSelecting &&\n (rScrollZone || lScrollZone || tScrollZone || bScrollZone)\n ) {\n touchScroll();\n }\n if (/vertical-scroll-/.test(self.startingCell.style)) {\n self.scrollBox.scrollTop =\n self.scrollBox.scrollHeight *\n ((self.touchPosition.y - ch - sbw) /\n (self.scrollBox.height - sbw - ch));\n return;\n }\n if (/horizontal-scroll-/.test(self.startingCell.style)) {\n self.scrollBox.scrollLeft =\n self.scrollBox.scrollWidth *\n ((self.touchPosition.x - rw - sbw) / (self.scrollBox.width - sbw - rw));\n return;\n }\n if (/selection-handle-/.test(self.startingCell.style)) {\n self.touchSelect(self.currentCell, self.startingCell.style);\n return;\n }\n self.scrollBox.scrollTo(\n self.touchScrollStart.x - self.touchDelta.x,\n self.touchScrollStart.y - self.touchDelta.y,\n );\n }\n self.touchmove = function (e) {\n if (touchMoving) {\n return;\n }\n requestAnimationFrame(function () {\n touchMoving = true;\n touchMove(e);\n touchMoving = false;\n });\n };\n self.touchEndEvents = function (e) {\n self.zoomDeltaStart = undefined;\n self.touchSelecting = false;\n clearInterval(self.touchScrollTimeout);\n clearInterval(self.touchContextTimeout);\n clearInterval(self.calculatePPSTimer);\n e.stopPropagation();\n document.body.removeEventListener('touchmove', self.touchmove, {\n passive: false,\n });\n document.body.removeEventListener('touchend', self.touchend, false);\n document.body.removeEventListener('touchcancel', self.touchcancel, false);\n };\n self.touchend = function (e) {\n if (\n self.dispatchEvent('touchend', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n self.zoomDeltaStart = undefined;\n if (e.changedTouches[0]) {\n self.touchPosition = undefined;\n }\n if (e.changedTouches[1]) {\n self.touchPosition1 = undefined;\n }\n if (self.zoomAltered) {\n if (e.touches.length === 0) {\n self.zoomAltered = false;\n }\n return;\n }\n var dz =\n Math.abs(self.touchDelta.x) + Math.abs(self.touchDelta.y) <\n self.attributes.touchDeadZone;\n if (isNaN(self.xPPS)) {\n self.xPPS = 0;\n }\n if (isNaN(self.yPPS)) {\n self.yPPS = 0;\n }\n if (isNaN(self.xPPST)) {\n self.xPPST = 0;\n }\n if (isNaN(self.yPPST)) {\n self.yPPST = 0;\n }\n self.touchAnimateTo.x =\n self.xPPS * self.attributes.touchReleaseAcceleration;\n self.touchAnimateTo.y =\n self.yPPS * self.attributes.touchReleaseAcceleration;\n self.calculatePPSTimed();\n if (\n !dz &&\n self.animationFrames === 0 &&\n (Math.abs(self.xPPST) > self.attributes.scrollAnimationPPSThreshold ||\n Math.abs(self.yPPST) > self.attributes.scrollAnimationPPSThreshold) &&\n !/-scroll-/.test(self.startingCell.style) &&\n !dz\n ) {\n self.stopAnimation = false;\n self.touchEndAnimation();\n }\n self.touchEndEvents(e);\n };\n self.touchcancel = function (e) {\n if (\n self.dispatchEvent('touchcancel', {\n NativeEvent: e,\n cell: self.currentCell,\n })\n ) {\n return;\n }\n self.touchEndEvents(e);\n };\n}\n","module.exports=function(e){var o={};function a(t){if(o[t])return o[t].exports;var r=o[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}return a.m=e,a.c=o,a.d=function(e,o,t){a.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:t})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,o){if(1&o&&(e=a(e)),8&o)return e;if(4&o&&\"object\"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,\"default\",{enumerable:!0,value:e}),2&o&&\"string\"!=typeof e)for(var r in e)a.d(t,r,function(o){return e[o]}.bind(null,r));return t},a.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(o,\"a\",o),o},a.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},a.p=\"\",a(a.s=0)}([function(e,o,a){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0});var t=a(1),r=Object.keys(t.default).reduce((function(e,o){return e.concat(t.default[o])}),[]);o.default=function(e){return-1===r.indexOf(e.key)}},function(e,o,a){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0});o.default={modifier:[\"Alt\",\"AltGraph\",\"CapsLock\",\"Control\",\"Fn\",\"FnLock\",\"Meta\",\"NumLock\",\"ScrollLock\",\"Shift\",\"Symbol\",\"SymbolLock\"],legacyModifier:[\"Hyper\",\"Super\"],whiteSpace:[\"Enter\",\"Tab\"],navigation:[\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\",\"ArrowUp\",\"End\",\"Home\",\"PageDown\",\"PageUp\"],editing:[\"Backspace\",\"Clear\",\"Copy\",\"CrSel\",\"Cut\",\"Delete\",\"EraseEof\",\"ExSel\",\"Insert\",\"Paste\",\"Redo\",\"Undo\"],ui:[\"Accept\",\"Again\",\"Attn\",\"Cancel\",\"ContextMenu\",\"Escape\",\"Execute\",\"Find\",\"Help\",\"Pause\",\"Play\",\"Props\",\"Select\",\"ZoomIn\",\"ZoomOut\"],device:[\"BrightnessDown\",\"BrightnessUp\",\"Eject\",\"LogOff\",\"Power\",\"PowerOff\",\"PrintScreen\",\"Hibernate\",\"Standby\",\"WakeUp\"],imeCompositionKeys:[\"AllCandidates\",\"Alphanumeric\",\"CodeInput\",\"Compose\",\"Convert\",\"Dead\",\"FinalMode\",\"GroupFirst\",\"GroupLast\",\"GroupNext\",\"GroupPrevious\",\"ModeChange\",\"NextCandidate\",\"NonConvert\",\"PreviousCandidate\",\"Process\",\"SingleCandidate\"],koreanSpecific:[\"HangulMode\",\"HanjaMode\",\"JunjaMode\"],japaneseSpecific:[\"Eisu\",\"Hankaku\",\"Hiragana\",\"HiraganaKatakana\",\"KanaMode\",\"KanjiMode\",\"Katakana\",\"Romaji\",\"Zenkaku\",\"ZenkakuHankaku\"],commonFunction:[\"F1\",\"F2\",\"F3\",\"F4\",\"F5\",\"F6\",\"F7\",\"F8\",\"F9\",\"F10\",\"F11\",\"F12\",\"Soft1\",\"Soft2\",\"Soft3\",\"Soft4\"],multimedia:[\"ChannelDown\",\"ChannelUp\",\"Close\",\"MailForward\",\"MailReply\",\"MailSend\",\"MediaClose\",\"MediaFastForward\",\"MediaPause\",\"MediaPlay\",\"MediaPlayPause\",\"MediaRecord\",\"MediaRewind\",\"MediaStop\",\"MediaTrackNext\",\"MediaTrackPrevious\",\"New\",\"Open\",\"Print\",\"Save\",\"SpellCheck\"],multimediaNumpad:[\"Key11\",\"Key12\"],audio:[\"AudioBalanceLeft\",\"AudioBalanceRight\",\"AudioBassBoostDown\",\"AudioBassBoostToggle\",\"AudioBassBoostUp\",\"AudioFaderFront\",\"AudioFaderRear\",\"AudioSurroundModeNext\",\"AudioTrebleDown\",\"AudioTrebleUp\",\"AudioVolumeDown\",\"AudioVolumeUp\",\"AudioVolumeMute\",\"MicrophoneToggle\",\"MicrophoneVolumeDown\",\"MicrophoneVolumeUp\",\"MicrophoneVolumeMute\"],speech:[\"SpeechCorrectionList\",\"SpeechInputToggle\"],application:[\"LaunchApplication1\",\"LaunchApplication2\",\"LaunchCalendar\",\"LaunchContacts\",\"LaunchMail\",\"LaunchMediaPlayer\",\"LaunchMusicPlayer\",\"LaunchPhone\",\"LaunchScreenSaver\",\"LaunchSpreadsheet\",\"LaunchWebBrowser\",\"LaunchWebCam\",\"LaunchWordProcessor\"],browser:[\"BrowserBack\",\"BrowserFavorites\",\"BrowserForward\",\"BrowserHome\",\"BrowserRefresh\",\"BrowserSearch\",\"BrowserStop\"],mobilePhone:[\"AppSwitch\",\"Call\",\"Camera\",\"CameraFocus\",\"EndCall\",\"GoBack\",\"GoHome\",\"HeadsetHook\",\"LastNumberRedial\",\"Notification\",\"MannerMode\",\"VoiceDial\"],tv:[\"TV\",\"TV3DMode\",\"TVAntennaCable\",\"TVAudioDescription\",\"TVAudioDescriptionMixDown\",\"TVAudioDescriptionMixUp\",\"TVContentsMenu\",\"TVDataService\",\"TVInput\",\"TVInputComponent1\",\"TVInputComponent2\",\"TVInputComposite1\",\"TVInputComposite2\",\"TVInputHDMI1\",\"TVInputHDMI2\",\"TVInputHDMI3\",\"TVInputHDMI4\",\"TVInputVGA1\",\"TVMediaContext\",\"TVNetwork\",\"TVNumberEntry\",\"TVPower\",\"TVRadioService\",\"TVSatellite\",\"TVSatelliteBS\",\"TVSatelliteCS\",\"TVSatelliteToggle\",\"TVTerrestrialAnalog\",\"TVTerrestrialDigital\",\"TVTimer\"],mediaControls:[\"AVRInput\",\"AVRPower\",\"ColorF0Red\",\"ColorF1Green\",\"ColorF2Yellow\",\"ColorF3Blue\",\"ColorF4Grey\",\"ColorF5Brown\",\"ClosedCaptionToggle\",\"Dimmer\",\"DisplaySwap\",\"DVR\",\"Exit\",\"FavoriteClear0\",\"FavoriteClear1\",\"FavoriteClear2\",\"FavoriteClear3\",\"FavoriteRecall0\",\"FavoriteRecall1\",\"FavoriteRecall2\",\"FavoriteRecall3\",\"FavoriteStore0\",\"FavoriteStore1\",\"FavoriteStore2\",\"FavoriteStore3\",\"Guide\",\"GuideNextDay\",\"GuidePreviousDay\",\"Info\",\"InstantReplay\",\"Link\",\"ListProgram\",\"LiveContent\",\"Lock\",\"MediaApps\",\"MediaAudioTrack\",\"MediaLast\",\"MediaSkipBackward\",\"MediaSkipForward\",\"MediaStepBackward\",\"MediaStepForward\",\"MediaTopMenu\",\"NavigateIn\",\"NavigateNext\",\"NavigateOut\",\"NavigatePrevious\",\"NextFavoriteChannel\",\"NextUserProfile\",\"OnDemand\",\"Pairing\",\"PinPDown\",\"PinPMove\",\"PinPToggle\",\"PinPUp\",\"PlaySpeedDown\",\"PlaySpeedReset\",\"PlaySpeedUp\",\"RandomToggle\",\"RcLowBattery\",\"RecordSpeedNext\",\"RfBypass\",\"ScanChannelsToggle\",\"ScreenModeNext\",\"Settings\",\"SplitScreenToggle\",\"STBInput\",\"STBPower\",\"Subtitle\",\"Teletext\",\"VideoModeNext\",\"Wink\",\"ZoomToggle\"]}}]).default;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(\"./lib/main.js\");\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack://canvasDatagrid/webpack/universalModuleDefinition","webpack://canvasDatagrid/./lib/button.js","webpack://canvasDatagrid/./lib/component.js","webpack://canvasDatagrid/./lib/contextMenu.js","webpack://canvasDatagrid/./lib/defaults.js","webpack://canvasDatagrid/./lib/dom.js","webpack://canvasDatagrid/./lib/draw.js","webpack://canvasDatagrid/./lib/events/index.js","webpack://canvasDatagrid/./lib/events/util.js","webpack://canvasDatagrid/./lib/intf.js","webpack://canvasDatagrid/./lib/main.js","webpack://canvasDatagrid/./lib/publicMethods.js","webpack://canvasDatagrid/./lib/touch.js","webpack://canvasDatagrid/./node_modules/is-printable-key-event/dist/index.js","webpack://canvasDatagrid/webpack/bootstrap","webpack://canvasDatagrid/webpack/runtime/compat get default export","webpack://canvasDatagrid/webpack/runtime/define property getters","webpack://canvasDatagrid/webpack/runtime/hasOwnProperty shorthand","webpack://canvasDatagrid/webpack/runtime/make namespace object","webpack://canvasDatagrid/webpack/startup"],"names":["self","zIndexTop","applyButtonMenuItemStyle","buttonMenuItemContainer","createInlineStyle","mobile","addEventListener","applyButtonStyle","button","buttonMenu","createButton","pos","items","imgSrc","wrapper","document","createElement","buttonArrow","buttonIcon","intf","Array","isArray","Error","init","loc","s","scrollOffset","canvas","undefined","style","buttonZIndex","x","left","y","top","height","position","zIndex","scrollBox","scrollLeft","scrollTop","innerHTML","buttonArrowDownHTML","img","setAttribute","maxWidth","appendChild","body","toggleButtonMenu","dispose","parentNode","removeChild","createDisposeEvent","requestAnimationFrame","disposeButtonMenu","offsetHeight","createButtonMenu","selectedIndex","rect","createItems","addItem","item","menuItemContainer","addContent","content","title","click","ev","apply","disposeButton","clickIndex","idx","dispatchEvent","Event","getBoundingClientRect","bottom","window","innerHeight","buttonMenuWindowMargin","right","innerWidth","Object","defineProperty","get","set","value","isNaN","isFinite","length","forEach","index","removeEventListener","e","keyCode","moveButtonPos","attachButton","typeMap","component","dehyphenateProperty","hyphenateProperty","prop","replace","p","nextLetterCap","prototype","call","char","toUpperCase","cust","toLowerCase","getDefaultItem","base","i","r","defaults","filter","applyComponentStyle","supressChangeAndDrawEvents","isComponent","cStyle","getComputedStyle","tagName","defs","computedStyle","styles","def","val","getPropertyValue","setStyleProperty","resize","data","strData","JSON","parse","schema","strSchema","number","strNum","n","parseInt","strBool","test","string","str","getObservableAttributes","attrs","attributes","attr","push","disconnectedCallback","connected","connectedCallback","parentDOMNode","observe","adoptedCallback","attributeChangedCallback","attrName","oldVal","newVal","tfn","dataType","name","Function","observer","MutationObserver","mutations","checkInnerHTML","checkStyle","mutation","attributeName","target","nodeName","addedNodes","type","characterData","childList","subtree","querySelectorAll","el","hoverScrollTimeout","autoCompleteContext","applyContextItemStyle","contextItemContainer","createContextMenu","parentContextMenu","container","upArrow","downArrow","children","childMenuArrow","removeChildContext","relatedTarget","contextMenu","contains","splice","indexOf","contextAddCallback","getAttribute","cPos","childContextMenuMarginLeft","offsetWidth","childContextMenuMarginTop","createChildContext","childContextMenuArrowHTML","checkArrowVisibility","scrollHeight","fade","element","opacity","timer","setInterval","clearInterval","display","animationDurationHideContextMenu","unfade","animationDurationShowContextMenu","startHoverScroll","t","a","contextHoverScrollAmount","setTimeout","contextHoverScrollRateMs","endHoverScroll","clearTimeout","contextMenuZIndex","color","contextMenuArrowColor","textAlign","inputDropdown","maxHeight","autocompleteBottomMargin","minWidth","width","hasFocus","deltaY","deltaX","contextMenuArrowUpHTML","contextMenuArrowDownHTML","contextMenuWindowMargin","parentGrid","c","createFilterContextMenuItems","filterContainer","filterLabel","filterAutoCompleteButton","filterInput","cell","header","iRect","checkRegExpErrorState","background","contextFilterInputBackground","contextFilterInputColor","invalidFilterRegEx","contextFilterInvalidRegExpBackground","contextFilterInvalidRegExpColor","fillAutoComplete","count","blanksItem","viewData","row","cellValue","String","trim","blankValues","includes","blanksText","maxAutoCompleteItems","formatters","stopPropagation","disposeAutocomplete","keys","concat","map","key","createAutoCompleteContext","autoCompleteItems","onclick","disposeContextMenu","preventDefault","setFilter","en","columnFilters","filterOptionText","contextFilterButtonHTML","cf","h","getHeaderByName","removeFilterOptionText","removeFilterClick","controlInput","focus","addDefaultContextMenuItem","isNormalCell","isBackground","isColumnHeaderCellCap","isScrollBar","isCorner","isRowHeader","showFilter","showCopy","selections","reduce","copyText","execCommand","showPaste","clipBoardData","pasteText","paste","columnIndex","rowIndex","draw","showColumnSelector","columnSelectorText","d","getSchema","column","toggleColumnVisibility","hidden","setStorageData","columnSelectorHiddenText","columnSelectorVisibleText","hideColumnText","saveAppearance","showClearSettingsOption","sizes","rows","columns","clearSettingsOptionText","createRowOrders","createColumnOrders","storedSettings","columnWidth","cellWidth","cellHeight","allowSorting","showOrderByOption","showOrderByOptionTextAsc","order","showOrderByOptionTextDesc","event","mousedown","mouseup","contextmenuEvent","overridePos","contextPosition","getLayerPos","NativeEvent","getCellAt","isGrid","contextMenuMarginLeft","canvasOffsetLeft","contextMenuMarginTop","canvasOffsetTop","mobileContextMenuMargin","filterButtonMenuOffsetTop","getClippingRect","ele","boundingRect","eleRect","clipRect","w","parentRect","Infinity","columnHeaderCellHeight","getColumnHeaderCellHeight","rowHeaderCellWidth","getRowHeaderCellWidth","offsetTop","scrollBarWidth","offsetLeft","clipElement","clip","scrollingElement","nodeType","resizeEditInput","input","editCell","bm","gridBorderCollapse","borderWidth","cellBorderWidth","getVisibleCellByIndex","mobileEditInputHeight","cellPaddingLeft","ignoreScrollOffset","offsetParent","clientX","clientY","isChildGrid","endEdit","abort","abortEdit","newValue","oldValue","changes","originalData","boundRowIndex","defaultValue","aborted","addRow","createNewRowData","beginEditAt","inEnterMode","editable","adjacentCells","enumItems","enu","option","valueInEnum","scrollIntoView","setActiveCell","getAdjacentCells","multiLine","editCellZIndex","fontSize","editCellFontSize","scale","cellValueIsEmpty","shouldClearCellValue","nx","ny","altKey","nextRowIndex","shiftKey","Math","max","min","last","first","className","css","padding","buttonPadding","borderStyle","borderColor","buttonBorderColor","cursor","buttonBackgroundColor","userSelect","buttonHoverBackgroundColor","buttonActiveBorderColor","buttonActiveBackgroundColor","verticalAlign","buttonArrowColor","lineHeight","fontWeight","fontFamily","contextMenuFontFamily","contextMenuFontSize","margin","contextMenuItemMargin","borderRadius","contextMenuItemBorderRadius","contextMenuHoverBackground","contextMenuHoverColor","contextMenuLabelMargin","contextMenuLabelDisplay","contextMenuLabelMinWidth","contextMenuLabelMaxWidth","contextMenuBackground","contextMenuColor","border","contextMenuBorder","contextMenuPadding","contextMenuBorderRadius","contextMenuOpacity","overflow","whiteSpace","contextMenuCursor","marginLeft","contextFilterInputBorder","contextFilterInputBorderRadius","contextFilterInputFontFamily","contextFilterInputFontSize","contextFilterButtonBorder","contextFilterButtonBorderRadius","contextMenuFilterButtonFontFamily","contextMenuFilterButtonFontSize","cssFloat","childContextMenuArrowColor","contextMenuChildArrowFontSize","boxSizing","outline","mobileEditFontFamily","mobileEditFontSize","editCellBorder","editCellColor","editCellBackgroundColor","appearance","webkitAppearance","mozAppearance","editCellPaddingLeft","editCellFontFamily","boxShadow","editCellBoxShadow","contextMenuFilterInvalidExpresion","appendTo","setDom","ctx","context","eventParent","onblur","blur","parentIsCanvas","getContext","textBaseline","parentNodeStyle","touchstart","dblclick","mousemove","scrollWheel","copy","cut","keypress","keyup","keydown","perfCounters","cachedImagesDrawn","drawCount","perfWindowSize","entityCount","hiddenFrozenColumnCount","scrollDebugCounters","touchPPSCounters","htmlImageCache","fillArray","low","high","step","drawPerfLine","perfArr","arrIndex","useAbs","beginPath","moveTo","cx","cy","abs","lineTo","strokeStyle","stroke","drawOnAllImagesLoaded","loaded","html","complete","drawHtml","v","formattedValue","cacheKey","toString","round","drawImage","Image","onload","src","btoa","drawOrderByArrow","mt","columnHeaderOrderByArrowMarginTop","ml","columnHeaderOrderByArrowMarginLeft","mr","columnHeaderOrderByArrowMarginRight","aw","columnHeaderOrderByArrowWidth","ah","columnHeaderOrderByArrowHeight","fillStyle","columnHeaderOrderByArrowColor","columnHeaderOrderByArrowBorderColor","orderDirection","fill","drawTreeArrow","treeArrowMarginTop","treeArrowMarginRight","treeArrowMarginLeft","treeArrowWidth","treeArrowHeight","treeArrowColor","treeArrowBorderColor","openChildren","drawFilterButtonArrow","filterButtonHeight","filterButtonArrowHeight","filterButtonWidth","filterButtonArrowWidth","filterButtonArrowColor","filterButtonArrowBorderColor","radiusRect","radius","b","quadraticCurveTo","fillRect","strokeRect","fillText","text","fillCircle","arc","PI","strokeCircle","clipFrozenArea","mode","lastFrozenColumnPixel","lastFrozenRowPixel","fillHandle","selectionHandleType","strokeHandle","addselectionHandle","hw","selectionHandleSize","tr","br","tl","bl","addBorderLine","l","addEllipsis","ellipsisCache","measureText","wrapText","splitChar","lines","calculatedLineHeight","word","words","split","textHeight","out","wrap","cellWhiteSpace","autoResize","autoResizeRows","elWidth","et","ellipsisText","elClipLength","plWidth","clippedVal","ogWordWidth","previousLine","line","cHeight","paddedHeight","curSplitChar","measure","paddedWidth","arr","originText","stepLength","direction","substr","drawText","ll","fontHeight","vPos","hPos","paddingLeft","orderByArrowWidth","horizontalAlignment","paddingRight","verticalAlignment","paddingBottom","lineSpacing","debug","active","font","debugFont","debugColor","stringify","pw","idx_ord","sortColumnIndex","getFrozenColumnsWidth","frozenColumn","getColumnWidth","internal","visible","checkScrollHeight","rowHeaderCell","treeGrid","rowOpen","rowHeight","cornerCell","rowData","aCell","bc","selectionBorders","moveBorders","selectionHandles","rowHeaders","u","currentCell","performance","now","visibleRowHeights","orders","drawScrollBars","drawCorner","entities","m","scrollBarBoxMargin","scrollBarBorderColor","lineWidth","scrollBarBorderWidth","horizontalBox","scrollCache","horizontalBar","scrollBoxWidth","scrollWidth","verticalBox","frozenRow","verticalBar","scrollBoxHeight","horizontalBarVisible","scrollBarBackgroundColor","scrollBarBoxColor","horizontalBoxVisible","scrollBarActiveColor","scrollBarBoxBorderRadius","visibleCells","unshift","verticalBarVisible","verticalBoxVisible","scrollBarCornerBorderColor","scrollBarCornerBackgroundColor","corner","createHandlesOverlayArray","allowMovingSelection","selectionBorderTop","selectionBorderRight","selectionHandle","selectionBorderLeft","selectionBorderBottom","selectionHandleBehavior","createBorderOverlayArray","drawArray","propPrefix","offsetPoint","selectionBorder","isHeader","drawCell","rowOrderIndex","drawEach","headerIndex","columnOrderIndex","cellStyle","cellGridAttributes","isColumnHeader","isFilterable","filterable","selected","hovered","hovers","hoverMode","openedFilter","selectedFilterButton","activeCell","rawValue","activeHeader","f","orderByArrowSize","treeArrowSize","visibleRows","paddingTop","cellLineHeight","cellLineSpacing","viewRowIndex","viewColumnIndex","getBoundRowIndexFromViewRowIndex","boundColumnIndex","getBoundColumnIndexFromViewColumnIndex","sortRowIndex","isNormal","gridId","userHeight","userWidth","cellHeightWithChildGrid","cellWidthWithChildGrid","save","tree","showRowNumbers","childGrids","createGrid","cellGridHeight","grid","orderBy","console","warn","filterTextPrefix","movingSelection","moveOffset","restore","drawFilterButton","isSorting","orderings","showRowNumberGaps","previousRowNumber","hasRowGap","barHeight","rowHeaderCellRowNumberGapHeight","barColor","rowHeaderCellRowNumberGapColor","posX","posY","filterButtonBorderColor","filterButtonBackgroundColor","filterButtonActiveBackgroundColor","onFilterButton","filterButtonHoverBackgroundColor","filterButtonBorderRadius","drawRowHeader","showRowHeaders","filteredRowNumber","rowHeaderValue","hasActiveFilters","headerDescription","drawHeaders","g","o","columnHeaderCell","nonFrozenHeaderWidth","drawHeaderColumnRange","start","end","rArgs","rhIndex","showColumnHeaders","scrollPixelLeft","columnHeaderCellBorderWidth","scrollIndexLeft","isColumnHeaderCell","endCap","drawRow","treeHeight","rowSansTreeHeight","trees","scrollIndexRight","scrollPixelRight","initDraw","drawBackground","gridBackgroundColor","drawFrozenRows","ln","allowFreezingRows","frozenMarkerBorderWidth","frozenMarkerWidth","drawRows","snapToRow","scrollPixelTop","scrollIndexTop","scrollIndexBottom","scrollPixelBottom","showNewRow","newRow","drawMoveMarkers","moveOverlayBorderWidth","moveOverlayBorderColor","setLineDash","moveOverlayBorderSegments","drawReorderMarkers","reorderObject","dragOffset","reorderMarkerBackgroundColor","reorderMarkerBorderWidth","reorderMarkerBorderColor","dragMode","k","getRowHeight","reorderMarkerIndexBorderWidth","reorderMarkerIndexBorderColor","reorderTarget","selectedColumns","drawBorder","gridBorderWidth","gridBorderColor","drawSelectionBorders","selectionOverlayBorderWidth","selectionOverlayBorderColor","dsb","drawSelectionHandles","selectionHandleBorderWidth","selectionHandleBorderColor","selectionHandleColor","az","touchSelectHandleZone","ax","ay","drawActiveCell","cl","acx","acy","acw","ach","selectionMode","activeCellOverlayBorderWidth","activeCellOverlayBorderColor","getHeaderWidth","drawFrozenMarkers","my","mx","xHover","yHover","allowFreezingColumns","frozenMarkerHoverColor","frozenMarkerColor","frozenMarkerHoverBorderColor","frozenMarkerBorderColor","freezeMarkerPosition","frozenMarkerActiveColor","frozenMarkerActiveBorderColor","drawPerfLines","showPerformance","px","py","ph","dpl","debugPerfChartTextColor","toFixed","debugPerfChartBackground","debugScrollHeightColor","debugScrollWidthColor","debugPerformanceColor","debugEntitiesColor","debugTouchPPSXColor","debugTouchPPSYColor","pop","yPPS","xPPS","drawDebug","perf","perfDelta","frozenColumnsWidth","htmlImages","startScale","scaleDelta","zoomDeltaStart","touchLength","touches","touchPosition","touchPosition1","scrollIndex","scrollPixel","canvasOffset","touchDelta","touchAnimateTo","scrollAnimation","touchPPS","touchPPST","xPPST","yPPST","touchDuration","pointerLockPosition","size","mouse","touch","touchStart","dragContext","debugBackgroundColor","lh","wheeling","fn","events","removeEachListener","sfn","defaultPrevented","dispatchEachEvent","getRatio","maxPixelRatio","devicePixelRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","drawAfterResize","vb","nb","co","isScrollBoxCorner","sbw","ratio","cellBorder","columnHeaderCellBorder","dataHeight","dataWidth","dims","ch","checkScrollBoxVisibility","overflowX","overflowY","setScrollBoxSize","setCanvasSize","dim","appliedInlineStyles","reduceSchema","accumulator","va","args","widthBoxRatio","heightBoxRatio","scrollBarBoxMinSize","scrollBarBoxWidth","bar","box","page","pageUpDownOverlap","scroll","dontDraw","floor","ctrl","ctrlKey","metaKey","persistantSelectionMode","singleSelectionMode","dragBounds","sBounds","delta","previousCell","scrollTimer","isInGrid","rowBoundaryCrossed","columnBoundaryCrossed","cellBoundaryCrossed","prefix","draggingItem","dragItem","selecting","dragStart","dragStartObject","getSelectionBounds","ignoreNextClick","selectRow","dragAddToSelection","selectedData","getSelectedData","selectedCells","getSelectedCells","selectionBounds","selectArea","isMultiRowsSelected","autoScrollOnMousemove","movedVertically","autoScrollMargin","movedHorizontally","autoScrollZone","startingBounds","checkSelectionChange","sb","selectAll","columnHeaderClickBehavior","treeArrowClickRadius","toggleTree","dragResizeColumn","resizingStartingWidth","resizingStartingHeight","minColumnWidth","minRowHeight","resizeScrollZone","resizeChildGrids","globalRowResize","stopDragResize","scrollGrid","scrollPointerLock","scrollStartMode","movementX","movementY","scrollMode","scrollStart","scrollModes","scrollRepeatRate","selectionScrollIncrement","stopScrollGrid","exitPointerLock","dragReorder","columReorder","rowReorder","allowColumnReordering","allowRowReordering","isMultiColumnsSelected","selectColumn","source","reorderDeadZone","stopDragReorder","oIndex","tIndex","odata","cr","sortColumnIndices","seletedColumnIndices","deleteCount","selectedRows","dragMove","stopDragMove","moveSelection","freezeMove","stopFreezeMove","startFreezeMove","lastMouseDownTarget","move","freeze","requestPointerLock","dragging","cols","keepFocusOnMouseOut","isPrintableKeyEvent","selectNone","deleteSelectedData","Number","isArrowKey","firstSelectedRowIndex","findIndex","firstSelectedRow","firstSelectedColumnIndex","lastSelectedColumn","yAtTop","yAtBottom","xAtLeft","xAtRight","selection","shift","selectionFollowsActiveCell","fitColumnToValues","autosize","deltaMode","touchHaltAnimation","scrollTo","pasteData","pasteValue","mimeType","startRowIndex","startColIndex","isSupportedHtml","parseData","cellData","join","forEachSelectedCell","colName","realRowIndex","cells","existingRowData","newRowData","assign","colIndex","columnName","boundRowIndexMap","affectedCells","getNextVisibleColumnIndex","visibleColumnIndex","getVisibleSchema","getVisibleColumnIndexOf","clipboardItems","Map","from","clipboardData","supportedMimeTypes","pasteableItems","itemToPaste","startCell","len","pasteType","getAsString","entries","textRows","sData","sSorted","firstRowKeys","isNeat","htmlSafe","rowKeys","textRow","setData","genericDiv","genericSpan","genericTable","excelTable","excelTableRow","some","expression","IGNORE_NODETYPES","isHtmlTable","sanitizeElementData","elementData","innerText","parseHtmlText","doc","DOMParser","parseFromString","querySelector","parseHtmlTable","trs","childNodes","childNode","col","parseText","ctor","treeGridAttributes","storageName","invalidSearchExpClass","localStyleLibraryStorageKey","add","sortFunction","sort","filters","sorters","parsers","schemaHashes","componentL1Events","eventNames","expandToRow","viewDataLength","orderedIndex","clearSelectedCells","has","visibility","localStorage","setItem","tempSchema","applyDefaultValue","newRowIndex","forEachHeader","getSchemaNameHash","getFilteredAndSortedViewData","newViewData","originalRowIndex","headerName","filterText","currentFilterFunction","filterFrozenRows","sortFn","rowA","rowB","rowIndexB","sortFrozenRows","_row","refresh","getBestGuessDataType","drawChildGrids","gridKey","setTimer","selectionScrollZone","validateColumn","setDefaults","obj1","obj2","setAttributes","eachAttribute","setStyle","eachStyle","findColumnMaxTextLength","contextmenu","disconnect","tryLoadStoredSettings","reloadStoredValues","getDomRoot","shadowRoot","host","getFontName","fontStyle","getFontHeight","parseFloat","parseStyleValue","initProp","propName","getStyleProperty","styleKeys","supressDrawAndEvent","isDim","getItem","message","initialized","addStyleKeyIfNoneExists","publicStyleKeyIntf","initScrollBox","ie","navigator","userAgent","edge","webKit","moz","cursorGrab","cursorGrabing","cursorGrabbing","clearChangeLog","gotoCell","gotoRow","addButton","findColumnScrollLeft","findRowScrollTop","isCellVisible","isRowVisible","isColumnVisible","getSchemaFromData","expandTree","collapseTree","insertRow","deleteRow","insertColumn","deleteColumn","addColumn","setRowHeight","setColumnWidth","resetColumnWidths","resetRowHeights","assertPxColor","clearPxColorAssertions","integerToAlpha","DOMStyles","valueObject","filterFor","filterRegExp","regEnd","pattern","exec","flags","substring","flagLength","RegExp","toLocaleUpperCase","textContent","TypeError","currentCursor","find","eventName","RangeError","eachDataRow","setTreeGridAttributes","setCellGridAttributes","schemaGetter","schemaSetter","eachSchemaColumn","hideEachSchemaColumn","getTypes","parseInnerHtml","callback","etl","autoGenerateSchema","dataGetter","dataSetter","autoResizeColumns","sHeight","sWidth","setScrollTop","preventScrollEvent","setScrollLeft","supressDrawEvent","webComponent","modules","dom","publicMethods","Grid","eval","module","attachShadow","HTMLElement","create","customElements","observedAttributes","define","canvasDatagrid","require","EXCLUDE_GLOBAL","tKeys","argKey","tKey","sKey","ordA","charCodeAt","ordZ","fromCharCode","showFilterInCell","offsetX","offsetY","targetX","targetY","sbh","offset","multiColIsSelected","columnIndices","isColumnSelected","colIsSelected","supressEvent","addCol","removeCol","st","de","ri","dragObject","childGrid","trArgs","treeGridHeight","newSize","dontSetStorageData","sorter","sel","visibleSchema","selectionLength","xi","maxRowLength","minXi","yi","lastSourceIndex","cidx","useTouchScrollZones","getBorder","entitiy","borderResizeZone","tsz","touchScrollZone","moveMode","borderDragBehavior","moveBorder","xBorderBehavior","yBorderBehavior","isVerticalScrollBar","isHorizontalScrollBar","allowColumnResize","allowColumnResizeFromCell","allowRowHeaderResize","allowRowResize","allowRowResizeFromCell","rowGrabZoneSize","maxCol","minCol","mapEachSchemaColumn","bounds","rowHeaderCellFont","autosizePadding","autosizeHeaderCellPadding","rowHeaderCellPaddingRight","rowHeaderCellPaddingLeft","formatter","columnHeaderCellFont","headerCellPaddingRight","headerCellPaddingLeft","cellFont","cellPaddingRight","cellAutoResizePadding","total","cellFormatterString","headerCell","asc","aValue","bValue","localeCompare","date","Date","getTime","touchTimerMs","debounceTouchMove","touchMoving","touchScrollTimeout","animationFrames","getTouchPos","touchIndex","easingFunctions","linear","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easing","touchEasingMethod","calculatePPSTimed","touchSigmaTimed","calculatePPS","touchSigma","touchEndAnimation","touchReleaseAnimationDurationMs","stopAnimation","touchEditCell","changedTouches","startingCell","calculatePPSTimer","touchContextTimeout","touchStartEvent","zoomAltered","touchStart1","touchScrollStart","touchContextMenuTimeMs","touchEndEvents","touchmove","passive","touchend","touchcancel","touchSelect","handleType","touchSelecting","touchMove","rw","rScrollZone","lScrollZone","bScrollZone","tScrollZone","t1","t2","touchDeadZone","touchZoomSensitivity","touchZoomMin","touchZoomMax","touchScroll","dz","touchReleaseAcceleration","scrollAnimationPPSThreshold"],"mappings":"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","file":"canvas-datagrid.debug.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"canvasDatagrid\"] = factory();\n\telse\n\t\troot[\"canvasDatagrid\"] = factory();\n})(self, function() {\nreturn ","/*jslint browser: true, unparam: true, todo: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false, Event: false*/\n'use strict';\n\nexport default function (self) {\n let zIndexTop;\n\n function applyButtonMenuItemStyle(buttonMenuItemContainer) {\n self.createInlineStyle(\n buttonMenuItemContainer,\n 'canvas-datagrid-button-menu-item' + (self.mobile ? '-mobile' : ''),\n );\n buttonMenuItemContainer.addEventListener('mouseover', function () {\n self.createInlineStyle(\n buttonMenuItemContainer,\n 'canvas-datagrid-button-menu-item:hover',\n );\n });\n buttonMenuItemContainer.addEventListener('mouseout', function () {\n self.createInlineStyle(\n buttonMenuItemContainer,\n 'canvas-datagrid-button-menu-item',\n );\n });\n }\n\n function applyButtonStyle(button) {\n self.createInlineStyle(button, 'canvas-datagrid-button-wrapper');\n button.addEventListener('mouseover', function () {\n if (!self.buttonMenu) {\n self.createInlineStyle(button, 'canvas-datagrid-button-wrapper:hover');\n }\n });\n button.addEventListener('mouseout', function () {\n if (!self.buttonMenu) {\n self.createInlineStyle(button, 'canvas-datagrid-button-wrapper');\n }\n });\n }\n\n function createButton(pos, items, imgSrc) {\n var wrapper = document.createElement('div'),\n buttonArrow = document.createElement('div'),\n buttonIcon = document.createElement('div'),\n intf = {};\n\n if (!Array.isArray(items)) {\n throw new Error('createButton expects an array.');\n }\n\n function init() {\n var loc = {},\n s = self.scrollOffset(self.canvas);\n\n if (zIndexTop === undefined) {\n zIndexTop = self.style.buttonZIndex;\n }\n\n applyButtonStyle(wrapper);\n self.createInlineStyle(buttonIcon, 'canvas-datagrid-button-icon');\n self.createInlineStyle(buttonArrow, 'canvas-datagrid-button-arrow');\n\n loc.x = pos.left - s.left;\n loc.y = pos.top - s.top;\n loc.height = 0;\n zIndexTop += 1;\n wrapper.style.position = 'absolute';\n wrapper.style.zIndex = zIndexTop;\n wrapper.style.left = loc.x + 'px';\n wrapper.style.top = loc.y + 'px';\n wrapper.left = pos.left + self.scrollBox.scrollLeft;\n wrapper.top = pos.top + self.scrollBox.scrollTop;\n buttonArrow.innerHTML = self.style.buttonArrowDownHTML;\n if (imgSrc) {\n let img = document.createElement('img');\n img.setAttribute('src', imgSrc);\n img.style.maxWidth = '100%';\n img.style.height = '100%';\n buttonIcon.appendChild(img);\n }\n wrapper.appendChild(buttonIcon);\n wrapper.appendChild(buttonArrow);\n document.body.appendChild(wrapper);\n wrapper.addEventListener('click', toggleButtonMenu);\n }\n\n intf.wrapper = wrapper;\n intf.items = items;\n init();\n\n intf.dispose = function () {\n if (wrapper.parentNode) {\n wrapper.parentNode.removeChild(wrapper);\n }\n };\n return intf;\n }\n\n function toggleButtonMenu() {\n function createDisposeEvent() {\n requestAnimationFrame(function () {\n document.addEventListener('click', self.disposeButtonMenu);\n });\n }\n if (self.buttonMenu) {\n self.disposeButtonMenu();\n } else {\n let pos = {\n left: self.button.wrapper.left - self.scrollBox.scrollLeft,\n top:\n self.button.wrapper.top +\n self.button.wrapper.offsetHeight -\n self.scrollBox.scrollTop,\n };\n self.buttonMenu = createButtonMenu(pos, self.button.items);\n self.createInlineStyle(\n self.button.wrapper,\n 'canvas-datagrid-button-wrapper:active',\n );\n createDisposeEvent();\n }\n }\n\n function createButtonMenu(pos, items) {\n var buttonMenu = document.createElement('div'),\n selectedIndex = -1,\n intf = {},\n rect;\n\n function createItems() {\n function addItem(item, menuItemContainer) {\n function addContent(content) {\n if (content === null) {\n return;\n }\n\n if (typeof content === 'object') {\n menuItemContainer.appendChild(content);\n return;\n }\n\n applyButtonMenuItemStyle(menuItemContainer);\n menuItemContainer.innerHTML = content;\n return;\n }\n\n addContent(item.title);\n item.buttonMenuItemContainer = menuItemContainer;\n\n if (item.click) {\n menuItemContainer.addEventListener('click', function (ev) {\n item.click.apply(self, [ev]);\n self.disposeButton();\n });\n }\n }\n\n for (let item of items) {\n var buttonMenuItemContainer = document.createElement('div');\n addItem(item, buttonMenuItemContainer);\n buttonMenu.appendChild(buttonMenuItemContainer);\n }\n }\n\n function clickIndex(idx) {\n items[idx].buttonMenuItemContainer.dispatchEvent(new Event('click'));\n }\n\n function init() {\n var loc = {},\n s = self.scrollOffset(self.canvas);\n\n if (zIndexTop === undefined) {\n zIndexTop = self.style.buttonZIndex;\n }\n\n createItems();\n self.createInlineStyle(\n buttonMenu,\n 'canvas-datagrid-button-menu' + (self.mobile ? '-mobile' : ''),\n );\n\n loc.x = pos.left - s.left;\n loc.y = pos.top - s.top;\n loc.height = 0;\n zIndexTop += 1;\n buttonMenu.style.position = 'absolute';\n buttonMenu.style.zIndex = zIndexTop;\n buttonMenu.style.left = loc.x + 'px';\n buttonMenu.style.top = loc.y + 'px';\n document.body.appendChild(buttonMenu);\n rect = buttonMenu.getBoundingClientRect();\n\n if (rect.bottom > window.innerHeight) {\n loc.y =\n self.button.wrapper.top -\n buttonMenu.offsetHeight -\n self.scrollBox.scrollTop;\n if (loc.y < 0) {\n loc.y = self.style.buttonMenuWindowMargin;\n }\n\n if (\n buttonMenu.offsetHeight >\n window.innerHeight - self.style.buttonMenuWindowMargin\n ) {\n buttonMenu.style.height =\n window.innerHeight - self.style.buttonMenuWindowMargin * 2 + 'px';\n }\n }\n\n if (rect.right > window.innerWidth) {\n loc.x -=\n rect.right - window.innerWidth + self.style.buttonMenuWindowMargin;\n }\n\n if (loc.x < 0) {\n loc.x = self.style.buttonMenuWindowMargin;\n }\n\n if (loc.y < 0) {\n loc.y = self.style.buttonMenuWindowMargin;\n }\n\n buttonMenu.style.left = loc.x + 'px';\n buttonMenu.style.top = loc.y + 'px';\n }\n\n intf.buttonMenu = buttonMenu;\n init();\n intf.clickIndex = clickIndex;\n intf.rect = rect;\n intf.items = items;\n\n intf.dispose = function () {\n if (buttonMenu.parentNode) {\n buttonMenu.parentNode.removeChild(buttonMenu);\n }\n };\n\n Object.defineProperty(intf, 'selectedIndex', {\n get: function get() {\n return selectedIndex;\n },\n set: function set(value) {\n if (typeof value !== 'number' || isNaN(value) || !isFinite(value)) {\n throw new Error('Button menu selected index must be a sane number.');\n }\n\n selectedIndex = value;\n\n if (selectedIndex > items.length - 1) {\n selectedIndex = items.length - 1;\n }\n\n if (selectedIndex < 0) {\n selectedIndex = 0;\n }\n\n items.forEach(function (item, index) {\n if (index === selectedIndex) {\n return self.createInlineStyle(\n item.buttonMenuItemContainer,\n 'canvas-datagrid-button-menu-item:hover',\n );\n }\n\n self.createInlineStyle(\n item.buttonMenuItemContainer,\n 'canvas-datagrid-button-menu-item',\n );\n });\n },\n });\n return intf;\n }\n\n self.disposeButtonMenu = function () {\n if (self.buttonMenu) {\n document.removeEventListener('click', self.disposeButtonMenu);\n self.buttonMenu.dispose();\n self.buttonMenu = undefined;\n self.createInlineStyle(\n self.button.wrapper,\n 'canvas-datagrid-button-wrapper:hover',\n );\n }\n };\n\n self.disposeButton = function (e) {\n if (e && e.keyCode !== 27) return;\n document.removeEventListener('keydown', self.disposeButton);\n zIndexTop = self.style.buttonZIndex;\n self.disposeButtonMenu();\n\n if (self.button) {\n self.button.dispose();\n }\n\n self.button = undefined;\n };\n\n self.moveButtonPos = function () {\n self.button.wrapper.style.left =\n self.button.wrapper.left - self.scrollBox.scrollLeft + 'px';\n self.button.wrapper.style.top =\n self.button.wrapper.top - self.scrollBox.scrollTop + 'px';\n self.disposeButtonMenu();\n };\n\n self.attachButton = function (pos, items, imgSrc) {\n function createDisposeEvent() {\n requestAnimationFrame(function () {\n document.addEventListener('keydown', self.disposeButton);\n });\n }\n\n if (self.button) {\n self.disposeButton();\n }\n\n self.button = createButton(pos, items, imgSrc);\n createDisposeEvent();\n };\n return;\n}\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nimport defaults from './defaults';\n\nexport default function () {\n var typeMap,\n component = {};\n component.dehyphenateProperty = function hyphenateProperty(prop) {\n prop = prop.replace('--cdg-', '');\n var p = '',\n nextLetterCap;\n Array.prototype.forEach.call(prop, function (char) {\n if (nextLetterCap) {\n nextLetterCap = false;\n p += char.toUpperCase();\n return;\n }\n if (char === '-') {\n nextLetterCap = true;\n return;\n }\n p += char;\n });\n return p;\n };\n component.hyphenateProperty = function hyphenateProperty(prop, cust) {\n var p = '';\n Array.prototype.forEach.call(prop, function (char) {\n if (char === char.toUpperCase()) {\n p += '-' + char.toLowerCase();\n return;\n }\n p += char;\n });\n return (cust ? '--cdg-' : '') + p;\n };\n function getDefaultItem(base, item) {\n var i = {},\n r;\n defaults(i);\n r = i.defaults[base].filter(function (i) {\n return (\n i[0].toLowerCase() === item.toLowerCase() ||\n component.hyphenateProperty(i[0]) === item.toLowerCase() ||\n component.hyphenateProperty(i[0], true) === item.toLowerCase()\n );\n })[0];\n return r;\n }\n component.applyComponentStyle = function (supressChangeAndDrawEvents, intf) {\n if (!intf.isComponent) {\n return;\n }\n var cStyle = window.getComputedStyle(\n intf.tagName === 'CANVAS-DATAGRID' ? intf : intf.canvas,\n null,\n ),\n defs = {};\n intf.computedStyle = cStyle;\n defaults(defs);\n defs = defs.defaults.styles;\n defs.forEach(function (def) {\n var val;\n val = cStyle.getPropertyValue(component.hyphenateProperty(def[0], true));\n if (val === '') {\n val = cStyle.getPropertyValue(\n component.hyphenateProperty(def[0], false),\n );\n }\n if (val !== '' && typeof val === 'string') {\n intf.setStyleProperty(\n def[0],\n typeMap[typeof def[1]](\n val.replace(/^\\s+/, '').replace(/\\s+$/, ''),\n def[1],\n ),\n true,\n );\n }\n });\n if (!supressChangeAndDrawEvents && intf.dispatchEvent) {\n requestAnimationFrame(function () {\n intf.resize(true);\n });\n intf.dispatchEvent('stylechanged', intf.style);\n }\n };\n typeMap = {\n data: function (strData) {\n try {\n return JSON.parse(strData);\n } catch (e) {\n throw new Error('Cannot read JSON data in canvas-datagrid data.');\n }\n },\n schema: function (strSchema) {\n try {\n return JSON.parse(strSchema);\n } catch (e) {\n throw new Error(\n 'Cannot read JSON data in canvas-datagrid schema attribute.',\n );\n }\n },\n number: function (strNum, def) {\n var n = parseInt(strNum, 10);\n return isNaN(n) ? def : n;\n },\n boolean: function (strBool) {\n return /true/i.test(strBool);\n },\n string: function (str) {\n return str;\n },\n };\n component.getObservableAttributes = function () {\n var i = {},\n attrs = ['data', 'schema', 'style', 'className', 'name'];\n defaults(i);\n i.defaults.attributes.forEach(function (attr) {\n attrs.push(attr[0].toLowerCase());\n });\n return attrs;\n };\n component.disconnectedCallback = function () {\n this.connected = false;\n };\n component.connectedCallback = function () {\n var intf = this;\n intf.parentDOMNode.innerHTML = '';\n intf.parentDOMNode.appendChild(intf.canvas);\n intf.connected = true;\n component.observe(intf);\n component.applyComponentStyle(true, intf);\n intf.resize(true);\n };\n component.adoptedCallback = function () {\n this.resize();\n };\n component.attributeChangedCallback = function (attrName, oldVal, newVal) {\n var tfn,\n intf = this,\n def;\n if (attrName === 'style') {\n component.applyComponentStyle(false, intf);\n return;\n }\n if (attrName === 'data') {\n if (intf.dataType === 'application/x-canvas-datagrid') {\n intf.dataType = 'application/json+x-canvas-datagrid';\n }\n intf.data = newVal;\n return;\n }\n if (attrName === 'schema') {\n intf.schema = typeMap.schema(newVal);\n return;\n }\n if (attrName === 'name') {\n intf.name = newVal;\n return;\n }\n if (attrName === 'class' || attrName === 'className') {\n return;\n }\n def = getDefaultItem('attributes', attrName);\n if (def) {\n tfn = typeMap[typeof def[1]];\n intf.attributes[def[0]] = tfn(newVal);\n return;\n }\n if (/^on/.test(attrName)) {\n intf.addEventListener('on' + attrName, Function('e', newVal));\n }\n return;\n };\n component.observe = function (intf) {\n var observer;\n if (!window.MutationObserver) {\n return;\n }\n intf.applyComponentStyle = function () {\n component.applyComponentStyle(false, intf);\n intf.resize();\n };\n /**\n * Applies the computed css styles to the grid. In some browsers, changing directives in attached style sheets does not automatically update the styles in this component. It is necessary to call this method to update in these cases.\n * @memberof canvasDatagrid\n * @name applyComponentStyle\n * @method\n */\n observer = new window.MutationObserver(function (mutations) {\n var checkInnerHTML, checkStyle;\n Array.prototype.forEach.call(mutations, function (mutation) {\n if (\n mutation.attributeName === 'class' ||\n mutation.attributeName === 'style'\n ) {\n checkStyle = true;\n return;\n }\n if (mutation.target.nodeName === 'STYLE') {\n checkStyle = true;\n return;\n }\n if (\n mutation.target.parentNode &&\n mutation.target.parentNode.nodeName === 'STYLE'\n ) {\n checkStyle = true;\n return;\n }\n if (\n mutation.target === intf &&\n (mutation.addedNodes.length > 0 || mutation.type === 'characterData')\n ) {\n checkInnerHTML = true;\n }\n });\n if (checkStyle) {\n intf.applyComponentStyle(false, intf);\n }\n if (checkInnerHTML) {\n if (intf.dataType === 'application/x-canvas-datagrid') {\n intf.dataType = 'application/json+x-canvas-datagrid';\n }\n intf.data = intf.innerHTML;\n }\n });\n observer.observe(intf, {\n characterData: true,\n childList: true,\n attributes: true,\n subtree: true,\n });\n Array.prototype.forEach.call(\n document.querySelectorAll('style'),\n function (el) {\n observer.observe(el, {\n characterData: true,\n childList: true,\n attributes: true,\n subtree: true,\n });\n },\n );\n };\n return component;\n}\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false, Event: false*/\n'use strict';\n\nexport default function (self) {\n var zIndexTop, hoverScrollTimeout, autoCompleteContext;\n function applyContextItemStyle(contextItemContainer) {\n self.createInlineStyle(\n contextItemContainer,\n 'canvas-datagrid-context-menu-item' + (self.mobile ? '-mobile' : ''),\n );\n contextItemContainer.addEventListener('mouseover', function () {\n self.createInlineStyle(\n contextItemContainer,\n 'canvas-datagrid-context-menu-item:hover',\n );\n });\n contextItemContainer.addEventListener('mouseout', function () {\n self.createInlineStyle(\n contextItemContainer,\n 'canvas-datagrid-context-menu-item',\n );\n });\n }\n function createContextMenu(ev, pos, items, parentContextMenu) {\n var container = document.createElement('div'),\n upArrow = document.createElement('div'),\n downArrow = document.createElement('div'),\n children = [],\n selectedIndex = -1,\n intf = {},\n rect;\n if (!Array.isArray(items)) {\n throw new Error('createContextMenu expects an array.');\n }\n function createItems() {\n items.forEach(function (item) {\n var contextItemContainer = document.createElement('div'),\n childMenuArrow;\n function removeChildContext(e) {\n if (\n e.relatedTarget === container ||\n item.contextMenu.container === e.relatedTarget ||\n childMenuArrow === e.relatedTarget ||\n contextItemContainer === e.relatedTarget ||\n item.contextMenu.container.contains(e.relatedTarget)\n ) {\n return;\n }\n item.contextMenu.dispose();\n children.splice(children.indexOf(item.contextMenu), 1);\n item.contextMenu = undefined;\n contextItemContainer.removeEventListener(\n 'mouseout',\n removeChildContext,\n );\n container.removeEventListener('mouseout', removeChildContext);\n contextItemContainer.setAttribute('contextOpen', '0');\n contextItemContainer.setAttribute('opening', '0');\n }\n function contextAddCallback(items) {\n // check yet again if the user hasn't moved off\n if (\n contextItemContainer.getAttribute('opening') !== '1' ||\n contextItemContainer.getAttribute('contextOpen') === '1'\n ) {\n return;\n }\n var cPos = contextItemContainer.getBoundingClientRect();\n cPos = {\n left:\n cPos.left +\n self.style.childContextMenuMarginLeft +\n container.offsetWidth,\n top: cPos.top + self.style.childContextMenuMarginTop,\n bottom: cPos.bottom,\n right: cPos.right,\n };\n item.contextMenu = createContextMenu(ev, cPos, items, intf);\n contextItemContainer.setAttribute('contextOpen', '1');\n contextItemContainer.addEventListener('mouseout', removeChildContext);\n container.addEventListener('mouseout', removeChildContext);\n children.push(item.contextMenu);\n }\n function createChildContext() {\n var i;\n if (contextItemContainer.getAttribute('contextOpen') === '1') {\n return;\n }\n contextItemContainer.setAttribute('opening', '1');\n if (typeof item.items === 'function') {\n i = item.items.apply(intf, [\n function (items) {\n contextAddCallback(items);\n },\n ]);\n if (i !== undefined && Array.isArray(i)) {\n contextAddCallback(i);\n }\n return;\n }\n contextAddCallback(item.items);\n }\n function addItem(item) {\n function addContent(content) {\n if (content === null) {\n return;\n }\n if (typeof content === 'function') {\n return addContent(content(ev));\n }\n if (typeof content === 'object') {\n contextItemContainer.appendChild(content);\n return;\n }\n applyContextItemStyle(contextItemContainer);\n contextItemContainer.innerHTML = content;\n return;\n }\n addContent(item.title);\n item.contextItemContainer = contextItemContainer;\n if (\n (item.items && item.items.length > 0) ||\n typeof item.items === 'function'\n ) {\n childMenuArrow = document.createElement('div');\n self.createInlineStyle(\n childMenuArrow,\n 'canvas-datagrid-context-child-arrow',\n );\n childMenuArrow.innerHTML = self.style.childContextMenuArrowHTML;\n contextItemContainer.appendChild(childMenuArrow);\n contextItemContainer.addEventListener(\n 'mouseover',\n createChildContext,\n );\n contextItemContainer.addEventListener('mouseout', function () {\n contextItemContainer.setAttribute('opening', '0');\n });\n }\n if (item.click) {\n contextItemContainer.addEventListener('click', function (ev) {\n item.click.apply(self, [ev]);\n });\n }\n }\n addItem(item);\n container.appendChild(contextItemContainer);\n });\n }\n function clickIndex(idx) {\n items[idx].contextItemContainer.dispatchEvent(new Event('click'));\n }\n function checkArrowVisibility() {\n if (container.scrollTop > 0) {\n self.parentDOMNode.appendChild(upArrow);\n } else if (upArrow.parentNode) {\n upArrow.parentNode.removeChild(upArrow);\n }\n if (\n container.scrollTop >=\n container.scrollHeight - container.offsetHeight &&\n downArrow.parentNode\n ) {\n downArrow.parentNode.removeChild(downArrow);\n } else if (\n container.scrollHeight - container.offsetHeight > 0 &&\n !(\n container.scrollTop >=\n container.scrollHeight - container.offsetHeight\n )\n ) {\n self.parentDOMNode.appendChild(downArrow);\n }\n }\n function fade(element) {\n var opacity = 1;\n var timer = setInterval(function () {\n if (opacity <= 0.1) {\n clearInterval(timer);\n element.style.display = 'none';\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n element.style.opacity = opacity;\n element.style.filter = 'alpha(opacity=' + opacity * 100 + ')';\n opacity -= opacity * 0.1;\n }, self.attributes.animationDurationHideContextMenu * 0.1);\n }\n function unfade(element) {\n var opacity = 0.1;\n element.style.display = 'block';\n var timer = setInterval(function () {\n if (opacity >= 1) {\n clearInterval(timer);\n }\n element.style.opacity = opacity;\n element.style.filter = 'alpha(opacity=' + opacity * 100 + ')';\n opacity += opacity * 0.1;\n }, self.attributes.animationDurationShowContextMenu * 0.1);\n }\n function startHoverScroll(type) {\n return function t() {\n var a = self.attributes.contextHoverScrollAmount;\n if (type === 'up' && container.scrollTop === 0) {\n return;\n }\n if (type === 'down' && container.scrollTop === container.scrollHeight) {\n return;\n }\n container.scrollTop += type === 'up' ? -a : a;\n hoverScrollTimeout = setTimeout(\n t,\n self.attributes.contextHoverScrollRateMs,\n type,\n );\n };\n }\n function endHoverScroll(type) {\n return function () {\n clearTimeout(hoverScrollTimeout);\n };\n }\n function init() {\n var loc = {},\n s = self.scrollOffset(self.canvas);\n if (zIndexTop === undefined) {\n zIndexTop = self.style.contextMenuZIndex;\n }\n createItems();\n self.createInlineStyle(\n container,\n 'canvas-datagrid-context-menu' + (self.mobile ? '-mobile' : ''),\n );\n loc.x = pos.left - s.left;\n loc.y = pos.top - s.top;\n loc.height = 0;\n zIndexTop += 1;\n container.style.opacity = 0;\n container.style.position = 'absolute';\n upArrow.style.color = self.style.contextMenuArrowColor;\n downArrow.style.color = self.style.contextMenuArrowColor;\n [upArrow, downArrow].forEach(function (el) {\n el.style.textAlign = 'center';\n el.style.position = 'absolute';\n el.style.zIndex = zIndexTop + 1;\n });\n container.style.zIndex = zIndexTop;\n if (parentContextMenu && parentContextMenu.inputDropdown) {\n container.style.maxHeight =\n window.innerHeight -\n loc.y -\n self.style.autocompleteBottomMargin +\n 'px';\n container.style.minWidth = pos.width + 'px';\n loc.y += pos.height;\n }\n if (self.mobile) {\n container.style.width = pos.width + 'px';\n }\n container.style.left = loc.x + 'px';\n container.style.top = loc.y + 'px';\n container.addEventListener('scroll', checkArrowVisibility);\n container.addEventListener('wheel', function (e) {\n if (self.hasFocus) {\n container.scrollTop += e.deltaY;\n container.scrollLeft += e.deltaX;\n }\n checkArrowVisibility();\n });\n upArrow.innerHTML = self.style.contextMenuArrowUpHTML;\n downArrow.innerHTML = self.style.contextMenuArrowDownHTML;\n container.appendChild(upArrow);\n document.body.appendChild(downArrow);\n document.body.appendChild(container);\n unfade(container);\n rect = container.getBoundingClientRect();\n // TODO: fix !(parentContextMenu && parentContextMenu.inputDropdown) state (autocomplete)\n if (rect.bottom > window.innerHeight) {\n if (!(parentContextMenu && parentContextMenu.inputDropdown)) {\n loc.y -=\n rect.bottom +\n self.style.contextMenuWindowMargin -\n window.innerHeight;\n }\n if (loc.y < 0) {\n loc.y = self.style.contextMenuWindowMargin;\n }\n if (\n container.offsetHeight >\n window.innerHeight - self.style.contextMenuWindowMargin\n ) {\n container.style.height =\n window.innerHeight - self.style.contextMenuWindowMargin * 2 + 'px';\n }\n }\n if (rect.right > window.innerWidth) {\n loc.x -=\n rect.right - window.innerWidth + self.style.contextMenuWindowMargin;\n }\n if (loc.x < 0) {\n loc.x = self.style.contextMenuWindowMargin;\n }\n if (loc.y < 0) {\n loc.y = self.style.contextMenuWindowMargin;\n }\n container.style.left = loc.x + 'px';\n container.style.top = loc.y + 'px';\n rect = container.getBoundingClientRect();\n upArrow.style.top = rect.top + 'px';\n downArrow.style.top =\n rect.top + rect.height - downArrow.offsetHeight + 'px';\n upArrow.style.left = rect.left + 'px';\n downArrow.style.left = rect.left + 'px';\n downArrow.style.width = container.offsetWidth + 'px';\n upArrow.style.width = container.offsetWidth + 'px';\n downArrow.addEventListener('mouseover', startHoverScroll('down'));\n downArrow.addEventListener('mouseout', endHoverScroll('down'));\n upArrow.addEventListener('mouseover', startHoverScroll('up'));\n upArrow.addEventListener('mouseout', endHoverScroll('up'));\n checkArrowVisibility();\n }\n intf.parentGrid = self.intf;\n intf.parentContextMenu = parentContextMenu;\n intf.container = container;\n init();\n intf.clickIndex = clickIndex;\n intf.rect = rect;\n intf.items = items;\n intf.upArrow = upArrow;\n intf.downArrow = downArrow;\n intf.dispose = function () {\n clearTimeout(hoverScrollTimeout);\n children.forEach(function (c) {\n c.dispose();\n });\n [downArrow, upArrow, container].forEach(function (el) {\n fade(el);\n });\n };\n Object.defineProperty(intf, 'selectedIndex', {\n get: function () {\n return selectedIndex;\n },\n set: function (value) {\n if (typeof value !== 'number' || isNaN(value || !isFinite(value))) {\n throw new Error('Context menu selected index must be a sane number.');\n }\n selectedIndex = value;\n if (selectedIndex > items.length - 1) {\n selectedIndex = items.length - 1;\n }\n if (selectedIndex < 0) {\n selectedIndex = 0;\n }\n items.forEach(function (item, index) {\n if (index === selectedIndex) {\n return self.createInlineStyle(\n item.contextItemContainer,\n 'canvas-datagrid-context-menu-item:hover',\n );\n }\n self.createInlineStyle(\n item.contextItemContainer,\n 'canvas-datagrid-context-menu-item',\n );\n });\n },\n });\n return intf;\n }\n function createFilterContextMenuItems(e) {\n var filterContainer = document.createElement('div'),\n filterLabel = document.createElement('div'),\n filterAutoCompleteButton = document.createElement('button'),\n filterInput = document.createElement('input'),\n n =\n e.cell && e.cell.header\n ? e.cell.header.title || e.cell.header.name\n : '',\n iRect;\n function checkRegExpErrorState() {\n filterInput.style.background = self.style.contextFilterInputBackground;\n filterInput.style.color = self.style.contextFilterInputColor;\n if (self.invalidFilterRegEx) {\n filterInput.style.background =\n self.style.contextFilterInvalidRegExpBackground;\n filterInput.style.color = self.style.contextFilterInvalidRegExpColor;\n }\n }\n function fillAutoComplete() {\n var count = 0;\n var items = {};\n var blanksItem = [];\n\n self.viewData.forEach(function (row) {\n var cellValue =\n row[e.cell.header.name] == null\n ? row[e.cell.header.name]\n : String(row[e.cell.header.name]).trim();\n var value = self.blankValues.includes(cellValue)\n ? self.attributes.blanksText\n : cellValue;\n\n if (items[value] || count > self.attributes.maxAutoCompleteItems) {\n return;\n }\n count += 1;\n items[value] = {\n title: self.formatters[e.cell.header.type || 'string']({\n cell: { value: value },\n }),\n click: function (e) {\n filterInput.value = value;\n e.stopPropagation();\n filterInput.dispatchEvent(new Event('keyup'));\n self.disposeAutocomplete();\n return;\n },\n };\n });\n\n if (Object.keys(items).indexOf(self.attributes.blanksText) !== -1) {\n blanksItem.push(items[self.attributes.blanksText]);\n delete items[self.attributes.blanksText];\n }\n\n return blanksItem.concat(\n Object.keys(items).map(function (key) {\n return items[key];\n }),\n );\n }\n\n function createAutoCompleteContext(ev) {\n if (ev && ['ArrowDown', 'ArrowUp', 'Enter', 'Tab'].includes(ev.key)) {\n return;\n }\n\n var autoCompleteItems = fillAutoComplete();\n\n iRect = filterInput.getBoundingClientRect();\n if (autoCompleteContext) {\n autoCompleteContext.dispose();\n autoCompleteContext = undefined;\n }\n autoCompleteContext = createContextMenu(\n e,\n {\n left: iRect.left,\n top: iRect.top,\n right: iRect.right,\n bottom: iRect.bottom,\n height: iRect.height,\n width: iRect.width,\n },\n autoCompleteItems,\n { inputDropdown: true },\n );\n autoCompleteContext.selectedIndex = 0;\n }\n self.createInlineStyle(filterLabel, 'canvas-datagrid-context-menu-label');\n self.createInlineStyle(\n filterAutoCompleteButton,\n 'canvas-datagrid-context-menu-filter-button',\n );\n self.createInlineStyle(\n filterInput,\n 'canvas-datagrid-context-menu-filter-input',\n );\n checkRegExpErrorState();\n filterInput.onclick = self.disposeAutocomplete;\n filterInput.addEventListener('keydown', function (e) {\n if (e.key === 'ArrowDown') {\n autoCompleteContext.selectedIndex += 1;\n }\n\n if (e.key === 'ArrowUp') {\n autoCompleteContext.selectedIndex -= 1;\n }\n\n if (e.key === 'Enter') {\n autoCompleteContext.clickIndex(autoCompleteContext.selectedIndex);\n self.disposeContextMenu();\n }\n\n if (e.key === 'Tab') {\n autoCompleteContext.clickIndex(autoCompleteContext.selectedIndex);\n e.preventDefault();\n }\n\n if (e.key === 'Escape') {\n self.disposeContextMenu();\n }\n });\n filterInput.addEventListener('keyup', function () {\n self.setFilter(e.cell.header.name, filterInput.value);\n });\n filterInput.addEventListener('keyup', createAutoCompleteContext);\n ['focus', 'blur', 'keydown', 'keyup', 'change'].forEach(function (en) {\n filterInput.addEventListener(en, checkRegExpErrorState);\n });\n filterInput.value = e.cell.header\n ? self.columnFilters[e.cell.header.name] || ''\n : '';\n filterLabel.innerHTML = self.attributes.filterOptionText.replace(/%s/g, n);\n filterAutoCompleteButton.onclick = function () {\n if (autoCompleteContext) {\n return self.disposeAutocomplete();\n }\n createAutoCompleteContext();\n };\n filterAutoCompleteButton.innerHTML = self.style.contextFilterButtonHTML;\n filterContainer.addEventListener('click', function (e) {\n return e.stopPropagation();\n });\n filterContainer.appendChild(filterLabel);\n filterContainer.appendChild(filterInput);\n filterContainer.appendChild(filterAutoCompleteButton);\n e.items.push({\n title: filterContainer,\n });\n if (Object.keys(self.columnFilters).length) {\n Object.keys(self.columnFilters).forEach(function (cf) {\n var h = self.getHeaderByName(cf);\n e.items.push({\n title: self.attributes.removeFilterOptionText.replace(\n /%s/g,\n h.title || h.name,\n ),\n click: function removeFilterClick(e) {\n e.preventDefault();\n self.setFilter(cf, '');\n self.controlInput.focus();\n },\n });\n });\n }\n }\n function addDefaultContextMenuItem(e) {\n var isNormalCell =\n !(\n e.cell.isBackground ||\n e.cell.isColumnHeaderCellCap ||\n e.cell.isScrollBar ||\n e.cell.isCorner ||\n e.cell.isRowHeader\n ) && e.cell.header;\n if (self.attributes.showFilter && isNormalCell) {\n createFilterContextMenuItems(e);\n }\n if (\n self.attributes.showCopy &&\n self.selections.reduce(function (p, r) {\n return p + r.length;\n }, 0) > 0\n ) {\n e.items.push({\n title: self.attributes.copyText,\n click: function () {\n document.execCommand('copy');\n self.disposeContextMenu();\n self.controlInput.focus();\n },\n });\n }\n if (self.attributes.showPaste && self.clipBoardData) {\n e.items.push({\n title: self.attributes.pasteText,\n click: function () {\n self.paste(self.clipBoardData, e.cell.columnIndex, e.cell.rowIndex);\n self.draw();\n },\n });\n }\n if (self.attributes.showColumnSelector) {\n e.items.push({\n title: self.attributes.columnSelectorText,\n items: function () {\n var d = [];\n self.getSchema().forEach(function (column) {\n function toggleColumnVisibility(e) {\n column.hidden = !column.hidden;\n self.dispatchEvent('togglecolumn', {\n column: column,\n hidden: column.hidden,\n });\n e.preventDefault();\n self.stopPropagation(e);\n self.disposeContextMenu();\n self.resize(true);\n self.setStorageData();\n }\n var el = document.createElement('div');\n applyContextItemStyle(el);\n el.addEventListener('touchstart', toggleColumnVisibility);\n el.addEventListener('click', toggleColumnVisibility);\n el.innerHTML =\n (column.hidden\n ? self.attributes.columnSelectorHiddenText\n : self.attributes.columnSelectorVisibleText) +\n (column.title || column.name);\n d.push({\n title: el,\n });\n });\n return d;\n },\n });\n if (e.cell && e.cell.header && e.cell.columnIndex > -1) {\n e.items.push({\n title: self.attributes.hideColumnText.replace(\n /%s/gi,\n e.cell.header.title || e.cell.header.name,\n ),\n click: function (ev) {\n self.getSchema()[e.cell.columnIndex].hidden = true;\n ev.preventDefault();\n self.stopPropagation(ev);\n self.disposeContextMenu();\n self.setStorageData();\n setTimeout(function () {\n self.resize(true);\n }, 10);\n },\n });\n }\n }\n if (\n self.attributes.saveAppearance &&\n self.attributes.showClearSettingsOption &&\n (Object.keys(self.sizes.rows).length > 0 ||\n Object.keys(self.sizes.columns).length > 0)\n ) {\n e.items.push({\n title: self.attributes.clearSettingsOptionText,\n click: function (e) {\n e.preventDefault();\n self.sizes.rows = {};\n self.sizes.columns = {};\n self.createRowOrders();\n self.createColumnOrders();\n self.storedSettings = undefined;\n self.dispatchEvent('resizecolumn', {\n columnWidth: self.style.cellWidth,\n });\n self.dispatchEvent('resizerow', {\n cellHeight: self.style.cellHeight,\n });\n self.setStorageData();\n self.resize(true);\n self.disposeContextMenu();\n self.controlInput.focus();\n },\n });\n }\n if (\n self.attributes.allowSorting &&\n self.attributes.showOrderByOption &&\n isNormalCell\n ) {\n e.items.push({\n title: self.attributes.showOrderByOptionTextAsc.replace(\n '%s',\n e.cell.header.title || e.cell.header.name,\n ),\n click: function (ev) {\n ev.preventDefault();\n self.order(e.cell.header.name, 'asc');\n self.controlInput.focus();\n },\n });\n e.items.push({\n title: self.attributes.showOrderByOptionTextDesc.replace(\n '%s',\n e.cell.header.title || e.cell.header.name,\n ),\n click: function (ev) {\n ev.preventDefault();\n self.order(e.cell.header.name, 'desc');\n self.disposeContextMenu();\n self.controlInput.focus();\n },\n });\n }\n }\n self.disposeAutocomplete = function () {\n if (autoCompleteContext) {\n autoCompleteContext.dispose();\n autoCompleteContext = undefined;\n }\n };\n self.disposeContextMenu = function (event) {\n document.removeEventListener('click', self.disposeContextMenu);\n zIndexTop = self.style.contextMenuZIndex;\n self.disposeAutocomplete();\n if (self.contextMenu) {\n self.contextMenu.dispose();\n }\n self.contextMenu = undefined;\n if (event) {\n self.canvas.focus();\n self.mousedown(event);\n self.mouseup(event);\n }\n };\n self.contextmenuEvent = function (e, overridePos) {\n if (!self.hasFocus && e.target !== self.canvas) {\n return;\n }\n function createDisposeEvent() {\n requestAnimationFrame(function () {\n document.addEventListener('click', self.disposeContextMenu);\n document.removeEventListener('mouseup', createDisposeEvent);\n });\n }\n var contextPosition,\n items = [],\n pos = overridePos || self.getLayerPos(e),\n ev = {\n NativeEvent: e,\n cell: self.getCellAt(pos.x, pos.y),\n items: items,\n };\n if (!ev.cell.isGrid) {\n addDefaultContextMenuItem(ev);\n }\n if (e.type !== 'mousedown' && self.dispatchEvent('contextmenu', ev)) {\n return;\n }\n if (!ev.cell.isGrid) {\n if (self.contextMenu) {\n self.disposeContextMenu();\n }\n contextPosition = {\n left:\n pos.x +\n pos.rect.left +\n self.style.contextMenuMarginLeft +\n self.canvasOffsetLeft,\n top:\n pos.y +\n pos.rect.top +\n self.style.contextMenuMarginTop +\n self.canvasOffsetTop,\n right: ev.cell.width + ev.cell.x + pos.rect.left,\n bottom: ev.cell.height + ev.cell.y + pos.rect.top,\n height: ev.cell.height,\n width: ev.cell.width,\n };\n if (self.mobile) {\n contextPosition.left = self.style.mobileContextMenuMargin + 'px';\n contextPosition.width =\n self.width - self.style.mobileContextMenuMargin * 2 + 'px';\n }\n if (e.type == 'mousedown') {\n contextPosition.top += self.style.filterButtonMenuOffsetTop;\n }\n self.contextMenu = createContextMenu(ev, contextPosition, items);\n if (e.type == 'mousedown') {\n document.addEventListener('mouseup', createDisposeEvent);\n } else {\n createDisposeEvent();\n }\n e.preventDefault();\n }\n };\n return;\n}\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n\n'use strict';\nexport default function (self) {\n self.defaults = {\n attributes: [\n ['allowColumnReordering', true],\n ['allowColumnResize', true],\n ['allowColumnResizeFromCell', false],\n ['allowFreezingRows', false],\n ['allowFreezingColumns', false],\n ['allowMovingSelection', true],\n ['allowRowHeaderResize', true],\n ['allowRowReordering', false],\n ['allowRowResize', true],\n ['allowRowResizeFromCell', false],\n ['allowSorting', true],\n ['animationDurationShowContextMenu', 50],\n ['animationDurationHideContextMenu', 50],\n ['autoGenerateSchema', false],\n ['autoResizeColumns', false],\n ['autoResizeRows', false],\n ['autoScrollOnMousemove', false],\n ['autoScrollMargin', 5],\n ['blanksText', '(Blanks)'],\n ['borderDragBehavior', 'none'],\n ['borderResizeZone', 10],\n ['clearSettingsOptionText', 'Clear saved settings'],\n ['columnHeaderClickBehavior', 'sort'],\n ['columnSelectorHiddenText', ' '],\n ['columnSelectorText', 'Add/Remove columns'],\n ['columnSelectorVisibleText', '\\u2713'],\n ['contextHoverScrollAmount', 2],\n ['contextHoverScrollRateMs', 5],\n ['copyHeadersOnSelectAll', true],\n ['copyText', 'Copy'],\n ['debug', false],\n ['editable', true],\n ['ellipsisText', '...'],\n ['filterOptionText', 'Filter %s'],\n ['filterTextPrefix', '(filtered) '],\n ['filterFrozenRows', true],\n ['globalRowResize', false],\n ['hideColumnText', 'Hide %s'],\n ['hoverMode', 'cell'],\n ['keepFocusOnMouseOut', false],\n ['maxAutoCompleteItems', 200],\n ['multiLine', false],\n ['name', ''],\n ['pageUpDownOverlap', 1],\n ['pasteText', 'Paste'],\n ['persistantSelectionMode', false],\n ['removeFilterOptionText', 'Remove filter on %s'],\n ['reorderDeadZone', 3],\n ['resizeScrollZone', 20],\n ['rowGrabZoneSize', 5],\n ['saveAppearance', true],\n ['scrollAnimationPPSThreshold', 0.75],\n ['scrollPointerLock', false],\n ['scrollRepeatRate', 75],\n ['selectionFollowsActiveCell', false],\n ['selectionHandleBehavior', 'none'],\n ['selectionMode', 'cell'],\n ['selectionScrollIncrement', 20],\n ['selectionScrollZone', 20],\n ['showClearSettingsOption', true],\n ['showColumnHeaders', true],\n ['showColumnSelector', true],\n ['showCopy', false],\n ['showFilter', true],\n ['showFilterInCell', false],\n ['showNewRow', false],\n ['showOrderByOption', true],\n ['showOrderByOptionTextAsc', 'Order by %s ascending'],\n ['showOrderByOptionTextDesc', 'Order by %s descending'],\n ['showPaste', false],\n ['showPerformance', false],\n ['showRowHeaders', true],\n ['showRowNumbers', true],\n ['showRowNumberGaps', true],\n ['singleSelectionMode', false],\n ['snapToRow', false],\n ['sortFrozenRows', true],\n ['touchContextMenuTimeMs', 800],\n ['touchDeadZone', 3],\n ['touchEasingMethod', 'easeOutQuad'],\n ['touchReleaseAcceleration', 1000],\n ['touchReleaseAnimationDurationMs', 2000],\n ['touchScrollZone', 20],\n ['touchSelectHandleZone', 20],\n ['touchZoomSensitivity', 0.005],\n ['touchZoomMin', 0.5],\n ['touchZoomMax', 1.75],\n ['maxPixelRatio', 2],\n ['tree', false],\n ['treeHorizontalScroll', false],\n ],\n styles: [\n ['activeCellBackgroundColor', 'rgba(255, 255, 255, 1)'],\n ['activeCellBorderColor', 'rgba(110, 168, 255, 1)'],\n ['activeCellBorderWidth', 1],\n ['activeCellColor', 'rgba(0, 0, 0, 1)'],\n ['activeCellFont', '16px sans-serif'],\n ['activeCellHoverBackgroundColor', 'rgba(255, 255, 255, 1)'],\n ['activeCellHorizontalAlignment', 'left'],\n ['activeCellHoverColor', 'rgba(0, 0, 0, 1)'],\n ['activeCellOverlayBorderColor', 'rgba(66, 133, 244, 1)'],\n ['activeCellOverlayBorderWidth', 1],\n ['activeCellPaddingBottom', 5],\n ['activeCellPaddingLeft', 5],\n ['activeCellPaddingRight', 5],\n ['activeCellPaddingTop', 5],\n ['activeCellSelectedBackgroundColor', 'rgba(236, 243, 255, 1)'],\n ['activeCellSelectedColor', 'rgba(0, 0, 0, 1)'],\n ['activeCellVerticalAlignment', 'center'],\n ['activeColumnHeaderCellBackgroundColor', 'rgba(225, 225, 225, 1)'],\n ['activeColumnHeaderCellColor', 'rgba(0, 0, 0, 1)'],\n ['activeRowHeaderCellBackgroundColor', 'rgba(225, 225, 225, 1)'],\n ['activeRowHeaderCellColor', 'rgba(0, 0, 0, 1)'],\n ['autocompleteBottomMargin', 60],\n ['autosizeHeaderCellPadding', 8],\n ['autosizePadding', 5],\n ['buttonActiveBackgroundColor', 'rgba(255, 255, 255, 1)'],\n ['buttonActiveBorderColor', 'rgba(110, 168, 255, 1)'],\n ['buttonArrowColor', 'rgba(50, 50, 50, 1)'],\n ['buttonArrowDownHTML', '▼'],\n ['buttonZIndex', 10000],\n ['buttonBackgroundColor', 'rgba(255, 255, 255, 1)'],\n ['buttonBorderColor', 'rgba(172, 172, 172, 1)'],\n ['buttonHoverBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['buttonMenuWindowMargin', 30],\n ['buttonPadding', '3px'],\n ['cellAutoResizePadding', 13],\n ['cellBackgroundColor', 'rgba(255, 255, 255, 1)'],\n ['cellBorderColor', 'rgba(195, 199, 202, 1)'],\n ['cellBorderWidth', 1],\n ['cellColor', 'rgba(0, 0, 0, 1)'],\n ['cellFont', '16px sans-serif'],\n ['cellGridHeight', 250],\n ['cellHeight', 24],\n ['cellHeightWithChildGrid', 150],\n ['cellHorizontalAlignment', 'left'],\n ['cellHoverBackgroundColor', 'rgba(255, 255, 255, 1)'],\n ['cellHoverColor', 'rgba(0, 0, 0, 1)'],\n ['cellPaddingBottom', 5],\n ['cellPaddingLeft', 5],\n ['cellPaddingRight', 5],\n ['cellPaddingTop', 5],\n ['cellSelectedBackgroundColor', 'rgba(236, 243, 255, 1)'],\n ['cellSelectedColor', 'rgba(0, 0, 0, 1)'],\n ['cellVerticalAlignment', 'center'],\n ['cellWidth', 250],\n ['cellWidthWithChildGrid', 250],\n ['cellWhiteSpace', 'nowrap'],\n ['cellLineHeight', 1],\n ['cellLineSpacing', 3],\n ['childContextMenuArrowColor', 'rgba(43, 48, 43, 1)'],\n ['childContextMenuArrowHTML', '►'],\n ['childContextMenuMarginLeft', -11],\n ['childContextMenuMarginTop', -6],\n ['columnHeaderCellBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['columnHeaderCellBorderColor', 'rgba(172, 172, 172, 1)'],\n ['columnHeaderCellBorderWidth', 1],\n ['columnHeaderCellCapBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['columnHeaderCellCapBorderColor', 'rgba(172, 172, 172, 1)'],\n ['columnHeaderCellCapBorderWidth', 1],\n ['columnHeaderCellColor', 'rgba(50, 50, 50, 1)'],\n ['columnHeaderCellFont', '16px sans-serif'],\n ['columnHeaderCellHeight', 25],\n ['columnHeaderCellHorizontalAlignment', 'left'],\n ['columnHeaderCellHoverBackgroundColor', 'rgba(235, 235, 235, 1)'],\n ['columnHeaderCellHoverColor', 'rgba(0, 0, 0, 1)'],\n ['columnHeaderCellPaddingBottom', 5],\n ['columnHeaderCellPaddingLeft', 5],\n ['columnHeaderCellPaddingRight', 5],\n ['columnHeaderCellPaddingTop', 5],\n ['columnHeaderCellVerticalAlignment', 'center'],\n ['columnHeaderOrderByArrowBorderColor', 'rgba(195, 199, 202, 1)'],\n ['columnHeaderOrderByArrowBorderWidth', 1],\n ['columnHeaderOrderByArrowColor', 'rgba(155, 155, 155, 1)'],\n ['columnHeaderOrderByArrowHeight', 8],\n ['columnHeaderOrderByArrowMarginLeft', 0],\n ['columnHeaderOrderByArrowMarginRight', 5],\n ['columnHeaderOrderByArrowMarginTop', 6],\n ['columnHeaderOrderByArrowWidth', 13],\n ['contextFilterButtonBorder', 'solid 1px rgba(158, 163, 169, 1)'],\n ['contextFilterButtonBorderRadius', '3px'],\n ['contextFilterButtonHTML', '▼'],\n ['contextFilterInputBackground', 'rgba(255,255,255,1)'],\n ['contextFilterInputBorder', 'solid 1px rgba(158, 163, 169, 1)'],\n ['contextFilterInputBorderRadius', '0'],\n ['contextFilterInputColor', 'rgba(0,0,0,1)'],\n ['contextFilterInputFontFamily', 'sans-serif'],\n ['contextFilterInputFontSize', '14px'],\n ['contextFilterInvalidRegExpBackground', 'rgba(180, 6, 1, 1)'],\n ['contextFilterInvalidRegExpColor', 'rgba(255, 255, 255, 1)'],\n ['contextMenuArrowColor', 'rgba(43, 48, 43, 1)'],\n ['contextMenuArrowDownHTML', '▼'],\n ['contextMenuArrowUpHTML', '▲'],\n ['contextMenuBackground', 'rgba(240, 240, 240, 1)'],\n ['contextMenuBorder', 'solid 1px rgba(158, 163, 169, 1)'],\n ['contextMenuBorderRadius', '3px'],\n ['contextMenuChildArrowFontSize', '12px'],\n ['contextMenuColor', 'rgba(43, 48, 43, 1)'],\n ['contextMenuCursor', 'default'],\n ['contextMenuFilterButtonFontFamily', 'sans-serif'],\n ['contextMenuFilterButtonFontSize', '10px'],\n ['contextMenuFilterInvalidExpresion', 'rgba(237, 155, 156, 1)'],\n ['contextMenuFontFamily', 'sans-serif'],\n ['contextMenuFontSize', '16px'],\n ['contextMenuHoverBackground', 'rgba(182, 205, 250, 1)'],\n ['contextMenuHoverColor', 'rgba(43, 48, 153, 1)'],\n ['contextMenuItemBorderRadius', '3px'],\n ['contextMenuItemMargin', '2px'],\n ['contextMenuLabelDisplay', 'inline-block'],\n ['contextMenuLabelMargin', '0 3px 0 0'],\n ['contextMenuLabelMaxWidth', '700px'],\n ['contextMenuLabelMinWidth', '75px'],\n ['contextMenuMarginLeft', 3],\n ['contextMenuMarginTop', -3],\n ['contextMenuOpacity', '0.98'],\n ['contextMenuPadding', '2px'],\n ['contextMenuWindowMargin', 30],\n ['contextMenuZIndex', 10000],\n ['cornerCellBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['cornerCellBorderColor', 'rgba(202, 202, 202, 1)'],\n ['debugBackgroundColor', 'rgba(0, 0, 0, .0)'],\n ['debugColor', 'rgba(255, 15, 24, 1)'],\n ['debugEntitiesColor', 'rgba(76, 231, 239, 1.00)'],\n ['debugFont', '11px sans-serif'],\n ['debugPerfChartBackground', 'rgba(29, 25, 26, 1.00)'],\n ['debugPerfChartTextColor', 'rgba(255, 255, 255, 0.8)'],\n ['debugPerformanceColor', 'rgba(252, 255, 37, 1.00)'],\n ['debugScrollHeightColor', 'rgba(248, 33, 103, 1.00)'],\n ['debugScrollWidthColor', 'rgba(66, 255, 27, 1.00)'],\n ['debugTouchPPSXColor', 'rgba(246, 102, 24, 1.00)'],\n ['debugTouchPPSYColor', 'rgba(186, 0, 255, 1.00)'],\n ['display', 'inline-block'],\n ['editCellBackgroundColor', 'white'],\n ['editCellBorder', 'solid 1px rgba(110, 168, 255, 1)'],\n ['editCellBoxShadow', '0 2px 5px rgba(0,0,0,0.4)'],\n ['editCellColor', 'black'],\n ['editCellFontFamily', 'sans-serif'],\n ['editCellFontSize', '16px'],\n ['editCellPaddingLeft', 4],\n ['editCellZIndex', 10000],\n ['filterButtonActiveBackgroundColor', 'rgba(225, 225, 225, 1)'],\n ['filterButtonArrowBorderColor', 'rgba(195, 199, 202, 1)'],\n ['filterButtonArrowBorderWidth', 1],\n ['filterButtonArrowClickRadius', 5],\n ['filterButtonArrowColor', 'rgba(50, 50, 50, 1)'],\n ['filterButtonArrowHeight', 5],\n ['filterButtonArrowWidth', 8],\n ['filterButtonBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['filterButtonBorderColor', 'rgba(172, 172, 172, 1)'],\n ['filterButtonBorderRadius', 3],\n ['filterButtonHeight', 20],\n ['filterButtonHoverBackgroundColor', 'rgba(235, 235, 235, 1)'],\n ['filterButtonMenuOffsetTop', 10],\n ['filterButtonWidth', 20],\n ['frozenMarkerHoverColor', 'rgba(236, 243, 255, 1)'],\n ['frozenMarkerHoverBorderColor', 'rgba(110, 168, 255, 1)'],\n ['frozenMarkerActiveColor', 'rgba(236, 243, 255, 1)'],\n ['frozenMarkerActiveBorderColor', 'rgba(110, 168, 255, 1)'],\n ['frozenMarkerColor', 'rgba(222, 222, 222, 1)'],\n ['frozenMarkerBorderColor', 'rgba(168, 168, 168, 1)'],\n ['frozenMarkerBorderWidth', 1],\n ['frozenMarkerWidth', 2],\n ['gridBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['gridBorderCollapse', 'collapse'],\n ['gridBorderColor', 'rgba(202, 202, 202, 1)'],\n ['gridBorderWidth', 1],\n ['height', 'auto'],\n ['maxHeight', 'inherit'],\n ['maxWidth', 'inherit'],\n ['minColumnWidth', 45],\n ['minHeight', 'inherit'],\n ['minRowHeight', 24],\n ['minWidth', 'inherit'],\n ['mobileContextMenuMargin', 10],\n ['mobileEditInputHeight', 30],\n ['mobileEditFontFamily', 'sans-serif'],\n ['mobileEditFontSize', '16px'],\n ['moveOverlayBorderWidth', 1],\n ['moveOverlayBorderColor', 'rgba(66, 133, 244, 1)'],\n ['moveOverlayBorderSegments', '12, 7'],\n ['name', 'default'],\n ['overflowY', 'auto'],\n ['overflowX', 'auto'],\n ['reorderMarkerBackgroundColor', 'rgba(0, 0, 0, 0.1)'],\n ['reorderMarkerBorderColor', 'rgba(0, 0, 0, 0.2)'],\n ['reorderMarkerBorderWidth', 1.25],\n ['reorderMarkerIndexBorderColor', 'rgba(66, 133, 244, 1)'],\n ['reorderMarkerIndexBorderWidth', 2.75],\n ['rowHeaderCellBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['rowHeaderCellBorderColor', 'rgba(200, 200, 200, 1)'],\n ['rowHeaderCellBorderWidth', 1],\n ['rowHeaderCellColor', 'rgba(50, 50, 50, 1)'],\n ['rowHeaderCellFont', '16px sans-serif'],\n ['rowHeaderCellHeight', 25],\n ['rowHeaderCellHorizontalAlignment', 'left'],\n ['rowHeaderCellHoverBackgroundColor', 'rgba(235, 235, 235, 1)'],\n ['rowHeaderCellHoverColor', 'rgba(0, 0, 0, 1)'],\n ['rowHeaderCellPaddingBottom', 5],\n ['rowHeaderCellPaddingLeft', 5],\n ['rowHeaderCellPaddingRight', 5],\n ['rowHeaderCellPaddingTop', 5],\n ['rowHeaderCellRowNumberGapHeight', 5],\n ['rowHeaderCellRowNumberGapColor', 'rgba(50, 50, 50, 1)'],\n ['rowHeaderCellSelectedBackgroundColor', 'rgba(217, 217, 217, 1)'],\n ['rowHeaderCellSelectedColor', 'rgba(50, 50, 50, 1)'],\n ['rowHeaderCellVerticalAlignment', 'center'],\n ['rowHeaderCellWidth', 57],\n ['scrollBarActiveColor', 'rgba(125, 125, 125, 1)'],\n ['scrollBarBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['scrollBarBorderColor', 'rgba(202, 202, 202, 1)'],\n ['scrollBarBorderWidth', 0.5],\n ['scrollBarBoxBorderRadius', 4.125],\n ['scrollBarBoxColor', 'rgba(192, 192, 192, 1)'],\n ['scrollBarBoxMargin', 2],\n ['scrollBarBoxMinSize', 15],\n ['scrollBarBoxWidth', 8],\n ['scrollBarCornerBackgroundColor', 'rgba(240, 240, 240, 1)'],\n ['scrollBarCornerBorderColor', 'rgba(202, 202, 202, 1)'],\n ['scrollBarWidth', 11],\n ['selectionHandleBorderColor', 'rgba(255, 255, 255, 1)'],\n ['selectionHandleBorderWidth', 1.5],\n ['selectionHandleColor', 'rgba(66, 133, 244, 1)'],\n ['selectionHandleSize', 8],\n ['selectionHandleType', 'square'],\n ['selectionOverlayBorderColor', 'rgba(66, 133, 244, 1)'],\n ['selectionOverlayBorderWidth', 1],\n ['treeArrowBorderColor', 'rgba(195, 199, 202, 1)'],\n ['treeArrowBorderWidth', 1],\n ['treeArrowClickRadius', 5],\n ['treeArrowColor', 'rgba(155, 155, 155, 1)'],\n ['treeArrowHeight', 8],\n ['treeArrowMarginLeft', 0],\n ['treeArrowMarginRight', 5],\n ['treeArrowMarginTop', 6],\n ['treeArrowWidth', 13],\n ['treeGridHeight', 250],\n ['width', 'auto'],\n ],\n };\n}\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nexport default function (self) {\n self.getClippingRect = function (ele) {\n var boundingRect = self.position(self.parentNode),\n eleRect = self.position(ele),\n s = self.scrollOffset(self.canvas),\n clipRect = {\n x: 0,\n y: 0,\n h: 0,\n w: 0,\n },\n parentRect = {\n x: -Infinity,\n y: -Infinity,\n h: Infinity,\n w: Infinity,\n },\n columnHeaderCellHeight = self.getColumnHeaderCellHeight(),\n rowHeaderCellWidth = self.getRowHeaderCellWidth();\n boundingRect.top -= s.top;\n boundingRect.left -= s.left;\n eleRect.top -= s.top;\n eleRect.left -= s.left;\n clipRect.h =\n boundingRect.top +\n boundingRect.height -\n ele.offsetTop -\n self.style.scrollBarWidth;\n clipRect.w =\n boundingRect.left +\n boundingRect.width -\n ele.offsetLeft -\n self.style.scrollBarWidth;\n clipRect.x = boundingRect.left + eleRect.left * -1 + rowHeaderCellWidth;\n clipRect.y = boundingRect.top + eleRect.top * -1 + columnHeaderCellHeight;\n return {\n x: clipRect.x > parentRect.x ? clipRect.x : parentRect.x,\n y: clipRect.y > parentRect.y ? clipRect.y : parentRect.y,\n h: clipRect.h < parentRect.h ? clipRect.h : parentRect.h,\n w: clipRect.w < parentRect.w ? clipRect.w : parentRect.w,\n };\n };\n self.clipElement = function (ele) {\n var clipRect = self.getClippingRect(ele);\n if (clipRect.w < 0) {\n clipRect.w = 0;\n }\n if (clipRect.h < 0) {\n clipRect.h = 0;\n }\n ele.style.clip =\n 'rect(' +\n clipRect.y +\n 'px,' +\n clipRect.w +\n 'px,' +\n clipRect.h +\n 'px,' +\n clipRect.x +\n 'px' +\n ')';\n // INFO https://developer.mozilla.org/en-US/docs/Web/CSS/clip\n // clip has been \"deprecated\" for clipPath. Of course nothing but chrome\n // supports clip path, so we'll keep using clip until someday clipPath becomes\n // more widely support. The code below works correctly, but setting clipPath and clip\n // at the same time has undesirable results.\n // ele.style.clipPath = 'polygon('\n // + clipRect.x + 'px ' + clipRect.y + 'px,'\n // + clipRect.x + 'px ' + clipRect.h + 'px,'\n // + clipRect.w + 'px ' + clipRect.h + 'px,'\n // + clipRect.w + 'px ' + clipRect.y + 'px'\n // + ')';\n };\n self.scrollOffset = function (e) {\n var x = 0,\n y = 0,\n scrollingElement = document.scrollingElement || {\n scrollLeft: 0,\n scrollTop: 0,\n };\n while (\n e.parentNode &&\n e.nodeName !== 'CANVAS-DATAGRID' &&\n e !== self.intf\n ) {\n if (\n e.nodeType !== 'canvas-datagrid-tree' &&\n e.nodeType !== 'canvas-datagrid-cell'\n ) {\n x -= e.scrollLeft;\n y -= e.scrollTop;\n }\n e = e.parentNode;\n }\n return {\n left: x - scrollingElement.scrollLeft,\n top: y - scrollingElement.scrollTop,\n };\n };\n self.resizeEditInput = function () {\n if (self.input && self.input.editCell) {\n var pos = self.canvas.getBoundingClientRect(),\n s = self.scrollOffset(self.intf),\n bm = self.style.gridBorderCollapse === 'collapse' ? 1 : 2,\n borderWidth = self.style.cellBorderWidth * bm,\n cell = self.getVisibleCellByIndex(\n self.input.editCell.columnIndex,\n self.input.editCell.rowIndex,\n ) || { x: -100, y: -100, height: 0, width: 0 };\n if (self.mobile) {\n self.input.style.left = '0';\n self.input.style.top =\n self.height -\n self.style.mobileEditInputHeight -\n borderWidth -\n 1 +\n 'px';\n self.input.style.height = self.style.mobileEditInputHeight + 'px';\n self.input.style.width = self.width - borderWidth - 1 + 'px';\n return;\n }\n self.input.style.left =\n pos.left + cell.x + self.canvasOffsetLeft - s.left + 'px';\n self.input.style.top =\n pos.top +\n cell.y -\n self.style.cellBorderWidth +\n self.canvasOffsetTop -\n s.top +\n 'px';\n self.input.style.height = cell.height - borderWidth + 'px';\n self.input.style.width = cell.width - self.style.cellPaddingLeft + 'px';\n self.clipElement(self.input);\n }\n };\n self.position = function (e, ignoreScrollOffset) {\n var x = 0,\n y = 0,\n s = e,\n h,\n w;\n while (e.offsetParent && e.nodeName !== 'CANVAS-DATAGRID') {\n x += e.offsetLeft;\n y += e.offsetTop;\n h = e.offsetHeight;\n w = e.offsetWidth;\n e = e.offsetParent;\n }\n if (ignoreScrollOffset) {\n return { left: x, top: y, height: h, width: w };\n }\n e = s;\n s = self.scrollOffset(e);\n return { left: x + s.left, top: y + s.top, height: h, width: w };\n };\n self.getLayerPos = function (e) {\n var rect = self.canvas.getBoundingClientRect(),\n pos = {\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n };\n if (self.isChildGrid) {\n pos.x -= self.canvasOffsetLeft;\n pos.y -= self.canvasOffsetTop;\n }\n return {\n x: pos.x,\n y: pos.y,\n rect: rect,\n };\n };\n /**\n * Ends editing, optionally aborting the edit.\n * @memberof canvasDatagrid\n * @name endEdit\n * @method\n * @param {boolean} abort When true, abort the edit.\n */\n self.endEdit = function (abort) {\n var cell = self.input.editCell,\n y = cell.rowIndex;\n function abortEdit() {\n abort = true;\n }\n if (\n self.dispatchEvent('beforeendedit', {\n cell: cell,\n newValue: self.input.value,\n oldValue: cell.value,\n abort: abortEdit,\n input: self.input,\n })\n ) {\n return false;\n }\n if (self.input.value !== cell.value && !abort) {\n self.changes[y] = self.changes[y] || {};\n self.changes[y][cell.header.name] = self.input.value;\n if (!cell.data) {\n self.originalData[cell.boundRowIndex] = {};\n cell.data = self.originalData[cell.boundRowIndex];\n }\n cell.data[cell.header.name] = self.input.value;\n if (y === self.viewData.length) {\n if (\n self.dispatchEvent('newrow', {\n value: self.input.value,\n defaultValue: cell.value,\n aborted: abort,\n cell: cell,\n input: self.input,\n })\n ) {\n return false;\n }\n self.addRow(cell.data);\n self.createNewRowData();\n }\n self.draw(true);\n }\n if (self.input.parentNode) {\n self.input.parentNode.removeChild(self.input);\n }\n self.intf.focus();\n self.dispatchEvent('endedit', {\n cell: cell,\n value: self.input.value,\n aborted: abort,\n input: self.input,\n });\n self.input = undefined;\n return true;\n };\n /**\n * Begins editing at cell x, row y.\n * @memberof canvasDatagrid\n * @name beginEditAt\n * @method\n * @param {number} x The column index of the cell to edit.\n * @param {number} y The row index of the cell to edit.\n * @param {boolean} inEnterMode If true, starting to type in cell will replace the\n * cell's previous value instead of appending, and using the arrow keys will allow\n * the user to navigate to adjacent cells instead of moving the text cursor around\n * (default is false, and means user is in 'edit' mode).\n */\n self.beginEditAt = function (x, y, NativeEvent, inEnterMode = false) {\n if (!self.attributes.editable) {\n return;\n }\n if (self.input) {\n self.endEdit();\n }\n var cell = self.getVisibleCellByIndex(x, y),\n s = self.getSchema(),\n adjacentCells,\n enumItems,\n enu,\n option,\n valueInEnum;\n if (!(cell && cell.header)) {\n return;\n }\n //HACK for IE10, does not like literal enum\n enu = cell.header['enum'];\n if (\n self.dispatchEvent('beforebeginedit', {\n cell: cell,\n NativeEvent: NativeEvent,\n })\n ) {\n return false;\n }\n self.scrollIntoView(x, y);\n self.setActiveCell(x, y);\n adjacentCells = self.getAdjacentCells();\n if (enu) {\n self.input = document.createElement('select');\n } else {\n self.input = document.createElement(\n self.attributes.multiLine ? 'textarea' : 'input',\n );\n }\n cell = self.getVisibleCellByIndex(x, y);\n //HACK on mobile devices sometimes edit can begin without the cell being in view, I don't know how.\n if (!cell) {\n return;\n }\n if (enu) {\n // add enums\n if (typeof enu === 'function') {\n enumItems = enu.apply(self.intf, [{ cell: cell }]);\n } else if (Array.isArray(enu)) {\n enumItems = enu;\n }\n enumItems.forEach(function (e) {\n var i = document.createElement('option'),\n val,\n title;\n if (Array.isArray(e)) {\n val = e[0];\n title = e[1];\n } else {\n val = e;\n title = e;\n }\n if (val === cell.value) {\n valueInEnum = true;\n }\n i.value = val;\n i.innerHTML = title;\n self.input.appendChild(i);\n });\n if (!valueInEnum) {\n option = document.createElement('option');\n option.value = cell.value;\n option.innerHTML = cell.value;\n self.input.appendChild(option);\n }\n self.input.addEventListener('change', function () {\n self.endEdit();\n self.draw(true);\n });\n }\n // if the user has not prevented the default action, append to the body\n if (\n !self.dispatchEvent('appendeditinput', { cell: cell, input: self.input })\n ) {\n document.body.appendChild(self.input);\n }\n self.createInlineStyle(\n self.input,\n self.mobile\n ? 'canvas-datagrid-edit-mobile-input'\n : 'canvas-datagrid-edit-input',\n );\n self.input.style.position = 'absolute';\n self.input.editCell = cell;\n self.resizeEditInput();\n self.input.style.zIndex = self.style.editCellZIndex;\n self.input.style.fontSize =\n parseInt(self.style.editCellFontSize, 10) * self.scale + 'px';\n\n var cellValueIsEmpty = [null, undefined].indexOf(cell.value) !== -1;\n var shouldClearCellValue = cellValueIsEmpty || inEnterMode;\n\n self.input.value = shouldClearCellValue ? '' : cell.value;\n self.input.focus();\n self.input.addEventListener('click', self.stopPropagation);\n self.input.addEventListener('dblclick', self.stopPropagation);\n self.input.addEventListener('mouseup', self.stopPropagation);\n self.input.addEventListener('mousedown', self.stopPropagation);\n self.input.addEventListener('keydown', function (e) {\n var nx = cell.columnIndex,\n ny = cell.rowIndex;\n\n if (e.key === 'Escape') {\n self.endEdit(true); // end edit and abort the value change\n self.draw(true);\n } else if (e.key === 'Enter' && self.attributes.multiLine && e.altKey) {\n self.input.value = self.input.value + '\\n';\n self.input.scrollTop = self.input.scrollHeight;\n } else if (e.key === 'Enter') {\n self.endEdit();\n\n // Move to cell in next or previous row\n var nextRowIndex = e.shiftKey\n ? Math.max(0, ny - 1)\n : Math.min(ny + 1, self.viewData.length - 1);\n\n if (nextRowIndex !== ny) {\n self.scrollIntoView(nx, nextRowIndex);\n self.setActiveCell(nx, nextRowIndex);\n }\n\n self.draw(true);\n } else if (\n ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(e.key) &&\n inEnterMode\n ) {\n switch (e.key) {\n case 'ArrowUp':\n ny = Math.max(0, ny - 1);\n break;\n case 'ArrowDown':\n ny = Math.min(ny + 1, self.viewData.length - 1);\n break;\n case 'ArrowLeft':\n nx = Math.max(nx - 1, 0);\n break;\n case 'ArrowRight':\n nx = adjacentCells.right;\n break;\n }\n\n self.endEdit();\n\n self.scrollIntoView(nx, ny);\n self.setActiveCell(nx, ny);\n\n self.draw(true);\n } else if (e.key === 'Tab') {\n e.preventDefault();\n if (!self.endEdit()) {\n return;\n }\n if (e.shiftKey) {\n nx = adjacentCells.left;\n } else {\n nx = adjacentCells.right;\n }\n if (adjacentCells.left === x && e.shiftKey) {\n nx = adjacentCells.last;\n ny -= 1;\n }\n if (adjacentCells.right === x && !e.shiftKey) {\n nx = adjacentCells.first;\n ny += 1;\n }\n if (ny < 0) {\n ny = self.viewData.length - 1;\n }\n if (ny > self.viewData.length - 1) {\n ny = 0;\n }\n self.scrollIntoView(nx, ny);\n self.beginEditAt(nx, ny, e);\n }\n });\n\n self.dispatchEvent('beginedit', { cell: cell, input: self.input });\n };\n self.createInlineStyle = function (el, className) {\n var css = {\n 'canvas-datagrid-button-wrapper': {\n display: 'inline-block',\n padding: self.style.buttonPadding,\n borderWidth: '1px',\n borderStyle: 'solid',\n borderColor: self.style.buttonBorderColor,\n cursor: 'pointer',\n background: self.style.buttonBackgroundColor,\n userSelect: 'none',\n },\n 'canvas-datagrid-button-wrapper:hover': {\n borderColor: self.style.buttonBorderColor,\n background: self.style.buttonHoverBackgroundColor,\n },\n 'canvas-datagrid-button-wrapper:active': {\n borderColor: self.style.buttonActiveBorderColor,\n background: self.style.buttonActiveBackgroundColor,\n },\n 'canvas-datagrid-button-icon': {\n width: '18px',\n height: '18px',\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n 'canvas-datagrid-button-arrow': {\n display: 'inline-block',\n color: self.style.buttonArrowColor,\n fontSize: '9px',\n },\n 'canvas-datagrid-button-menu-item-mobile': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n color: 'inherit',\n background: 'inherit',\n margin: self.style.contextMenuItemMargin,\n borderRadius: self.style.contextMenuItemBorderRadius,\n verticalAlign: 'middle',\n },\n 'canvas-datagrid-button-menu-item': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n color: 'inherit',\n background: 'inherit',\n margin: self.style.contextMenuItemMargin,\n borderRadius: self.style.contextMenuItemBorderRadius,\n verticalAlign: 'middle',\n },\n 'canvas-datagrid-button-menu-item:hover': {\n background: self.style.contextMenuHoverBackground,\n color: self.style.contextMenuHoverColor,\n },\n 'canvas-datagrid-button-menu-label': {\n margin: self.style.contextMenuLabelMargin,\n display: self.style.contextMenuLabelDisplay,\n minWidth: self.style.contextMenuLabelMinWidth,\n maxWidth: self.style.contextMenuLabelMaxWidth,\n },\n 'canvas-datagrid-button-menu-mobile': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n border: self.style.contextMenuBorder,\n padding: self.style.contextMenuPadding,\n borderRadius: self.style.contextMenuBorderRadius,\n opacity: self.style.contextMenuOpacity,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n 'canvas-datagrid-button-menu': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n border: self.style.contextMenuBorder,\n padding: self.style.contextMenuPadding,\n borderRadius: self.style.contextMenuBorderRadius,\n opacity: self.style.contextMenuOpacity,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n cursor: self.style.contextMenuCursor,\n },\n 'canvas-datagrid-context-menu-filter-input': {\n height: '19px',\n verticalAlign: 'bottom',\n marginLeft: '2px',\n padding: '0',\n background: self.style.contextFilterInputBackground,\n color: self.style.contextFilterInputColor,\n border: self.style.contextFilterInputBorder,\n borderRadius: self.style.contextFilterInputBorderRadius,\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextFilterInputFontFamily,\n fontSize: self.style.contextFilterInputFontSize,\n },\n 'canvas-datagrid-context-menu-filter-button': {\n height: '19px',\n verticalAlign: 'bottom',\n marginLeft: '2px',\n padding: '0',\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n border: self.style.contextFilterButtonBorder,\n borderRadius: self.style.contextFilterButtonBorderRadius,\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFilterButtonFontFamily,\n fontSize: self.style.contextMenuFilterButtonFontSize,\n },\n 'canvas-datagrid-context-child-arrow': {\n cssFloat: 'right',\n color: self.style.childContextMenuArrowColor,\n fontSize: self.style.contextMenuChildArrowFontSize,\n fontFamily: self.style.contextMenuFontFamily,\n verticalAlign: 'middle',\n },\n 'canvas-datagrid-autocomplete': {\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n border: self.style.contextMenuBorder,\n padding: self.style.contextMenuPadding,\n borderRadius: self.style.contextMenuBorderRadius,\n opacity: self.style.contextMenuOpacity,\n position: 'absolute',\n zIndex: 9999,\n overflow: 'hidden',\n },\n 'canvas-datagrid-autocomplete-item': {\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n },\n 'canvas-datagrid-autocomplete-item:hover': {\n background: self.style.contextMenuHoverBackground,\n color: self.style.contextMenuHoverColor,\n },\n 'canvas-datagrid-canvas': {\n position: 'absolute',\n zIndex: '-1',\n },\n 'canvas-datagrid': {\n display: 'block',\n },\n 'canvas-datagrid-control-input': {\n position: 'fixed',\n top: '-5px',\n left: '-5px',\n border: 'none',\n opacity: '0',\n cursor: 'pointer',\n width: '1px',\n height: '1px',\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n },\n 'canvas-datagrid-edit-mobile-input': {\n boxSizing: 'content-box',\n outline: 'none',\n margin: '0',\n padding: '0 0 0 0',\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.mobileEditFontFamily,\n fontSize: self.style.mobileEditFontSize,\n border: self.style.editCellBorder,\n color: self.style.editCellColor,\n background: self.style.editCellBackgroundColor,\n appearance: 'none',\n webkitAppearance: 'none',\n mozAppearance: 'none',\n borderRadius: '0',\n },\n 'canvas-datagrid-edit-input': {\n boxSizing: 'content-box',\n outline: 'none',\n margin: '0',\n padding: '0 0 0 ' + self.style.editCellPaddingLeft + 'px',\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.editCellFontFamily,\n fontSize: self.style.editCellFontSize,\n boxShadow: self.style.editCellBoxShadow,\n border: self.style.editCellBorder,\n color: self.style.editCellColor,\n background: self.style.editCellBackgroundColor,\n appearance: 'none',\n webkitAppearance: 'none',\n mozAppearance: 'none',\n borderRadius: '0',\n },\n 'canvas-datagrid-context-menu-item-mobile': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n color: 'inherit',\n background: 'inherit',\n margin: self.style.contextMenuItemMargin,\n borderRadius: self.style.contextMenuItemBorderRadius,\n verticalAlign: 'middle',\n },\n 'canvas-datagrid-context-menu-item': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n color: 'inherit',\n background: 'inherit',\n margin: self.style.contextMenuItemMargin,\n borderRadius: self.style.contextMenuItemBorderRadius,\n verticalAlign: 'middle',\n },\n 'canvas-datagrid-context-menu-item:hover': {\n background: self.style.contextMenuHoverBackground,\n color: self.style.contextMenuHoverColor,\n },\n 'canvas-datagrid-context-menu-label': {\n margin: self.style.contextMenuLabelMargin,\n display: self.style.contextMenuLabelDisplay,\n minWidth: self.style.contextMenuLabelMinWidth,\n maxWidth: self.style.contextMenuLabelMaxWidth,\n },\n 'canvas-datagrid-context-menu-mobile': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n border: self.style.contextMenuBorder,\n padding: self.style.contextMenuPadding,\n borderRadius: self.style.contextMenuBorderRadius,\n opacity: self.style.contextMenuOpacity,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n },\n 'canvas-datagrid-context-menu': {\n lineHeight: 'normal',\n fontWeight: 'normal',\n fontFamily: self.style.contextMenuFontFamily,\n fontSize: self.style.contextMenuFontSize,\n background: self.style.contextMenuBackground,\n color: self.style.contextMenuColor,\n border: self.style.contextMenuBorder,\n padding: self.style.contextMenuPadding,\n borderRadius: self.style.contextMenuBorderRadius,\n opacity: self.style.contextMenuOpacity,\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n cursor: self.style.contextMenuCursor,\n },\n 'canvas-datagrid-invalid-search-regExp': {\n background: self.style.contextMenuFilterInvalidExpresion,\n },\n };\n if (css[className]) {\n Object.keys(css[className]).map(function (prop) {\n el.style[prop] = css[className][prop];\n });\n }\n return;\n };\n self.appendTo = function (e) {\n self.parentNode = e;\n self.setDom();\n };\n self.setDom = function () {\n if (self.isChildGrid) {\n self.parentGrid = self.parentNode.parentGrid;\n self.ctx = self.parentGrid.context;\n self.canvas = self.parentGrid.canvas;\n self.controlInput = self.parentGrid.controlInput;\n self.eventParent = self.canvas;\n } else {\n self.controlInput = self.controlInput || document.createElement('input');\n self.controlInput.onblur = self.intf.blur;\n self.createInlineStyle(\n self.controlInput,\n 'canvas-datagrid-control-input',\n );\n self.isChildGrid = false;\n self.parentDOMNode = self.parentNode;\n self.parentIsCanvas = /^canvas$/i.test(self.parentDOMNode.tagName);\n if (self.parentIsCanvas) {\n self.canvas = self.parentDOMNode;\n } else {\n self.canvas = document.createElement('canvas');\n self.parentDOMNode.appendChild(self.canvas);\n }\n document.body.appendChild(self.controlInput);\n self.createInlineStyle(self.canvas, 'canvas-datagrid');\n self.ctx = self.canvas.getContext('2d');\n self.ctx.textBaseline = 'alphabetic';\n self.eventParent = self.canvas;\n }\n self.parentNodeStyle = self.canvas.style;\n self.controlInput.setAttribute('readonly', true);\n self.controlInput.addEventListener('blur', function (e) {\n if (e.target !== self.canvas) {\n self.hasFocus = false;\n }\n });\n self.eventParent.addEventListener('scroll', self.resize, false);\n self.eventParent.addEventListener('touchstart', self.touchstart, false);\n self.eventParent.addEventListener('mouseup', self.mouseup, false);\n self.eventParent.addEventListener('mousedown', self.mousedown, false);\n self.eventParent.addEventListener('dblclick', self.dblclick, false);\n self.eventParent.addEventListener('click', self.click, false);\n document.body.addEventListener('mousemove', self.mousemove);\n self[self.isChildGrid ? 'parentGrid' : 'eventParent'].addEventListener(\n 'wheel',\n self.scrollWheel,\n false,\n );\n self.canvas.addEventListener('contextmenu', self.contextmenuEvent, false);\n self.controlInput.addEventListener('copy', self.copy);\n self.controlInput.addEventListener('cut', self.cut);\n self.controlInput.addEventListener('paste', self.paste);\n self.controlInput.addEventListener('keypress', self.keypress, false);\n self.controlInput.addEventListener('keyup', self.keyup, false);\n self.controlInput.addEventListener('keydown', self.keydown, false);\n window.addEventListener('resize', self.resize);\n };\n}\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals XMLSerializer: false, define: true, Blob: false, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nexport default function (self) {\n var perfCounters = [],\n cachedImagesDrawn = false,\n drawCount = 0,\n perfWindowSize = 300,\n entityCount = [],\n hiddenFrozenColumnCount = 0,\n scrollDebugCounters = [],\n touchPPSCounters = [];\n self.htmlImageCache = {};\n // more heavyweight version than fillArray defined in intf.js\n function fillArray(low, high, step, def) {\n step = step || 1;\n var i = [],\n x;\n for (x = low; x <= high; x += step) {\n i[x] = def === undefined ? x : typeof def === 'function' ? def(x) : def;\n }\n return i;\n }\n function drawPerfLine(w, h, x, y, perfArr, arrIndex, max, color, useAbs) {\n var i = w / perfArr.length,\n r = h / max;\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.beginPath();\n self.ctx.moveTo(x, y + h);\n perfArr.forEach(function (n) {\n var val = arrIndex === undefined ? n : n[arrIndex],\n cx,\n cy;\n if (useAbs) {\n val = Math.abs(val);\n }\n cx = x + i;\n cy = y + h - val * r;\n self.ctx.lineTo(cx, cy);\n x += i;\n });\n self.ctx.moveTo(x + w, y + h);\n self.ctx.strokeStyle = color;\n self.ctx.stroke();\n }\n function drawOnAllImagesLoaded() {\n var loaded = true;\n Object.keys(self.htmlImageCache).forEach(function (html) {\n if (!self.htmlImageCache[html].img.complete) {\n loaded = false;\n }\n });\n if (loaded && !cachedImagesDrawn) {\n cachedImagesDrawn = true;\n self.draw();\n }\n }\n function drawHtml(cell) {\n var img,\n v = cell.innerHTML || cell.formattedValue,\n cacheKey =\n v.toString() + cell.rowIndex.toString() + cell.columnIndex.toString(),\n x = Math.round(cell.x + self.canvasOffsetLeft),\n y = Math.round(cell.y + self.canvasOffsetTop);\n if (self.htmlImageCache[cacheKey]) {\n img = self.htmlImageCache[cacheKey].img;\n if (\n self.htmlImageCache[cacheKey].height !== cell.height ||\n self.htmlImageCache[cacheKey].width !== cell.width\n ) {\n // height and width of the cell has changed, invalidate cache\n self.htmlImageCache[cacheKey] = undefined;\n } else {\n if (!img.complete) {\n return;\n }\n return self.ctx.drawImage(img, x, y);\n }\n } else {\n cachedImagesDrawn = false;\n }\n img = new Image(cell.width, cell.height);\n self.htmlImageCache[cacheKey] = {\n img,\n width: cell.width,\n height: cell.height,\n };\n img.onload = function () {\n self.ctx.drawImage(img, x, y);\n drawOnAllImagesLoaded();\n };\n img.src =\n 'data:image/svg+xml;base64,' +\n btoa(\n '<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"' +\n cell.width +\n '\" height=\"' +\n cell.height +\n '\">\\n' +\n '<foreignObject class=\"node\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">\\n' +\n '<body xmlns=\"http://www.w3.org/1999/xhtml\" style=\"margin:0;padding:0;\">\\n' +\n v +\n '\\n' +\n '</body>' +\n '</foreignObject>\\n' +\n '</svg>\\n',\n );\n }\n function drawOrderByArrow(x, y) {\n var mt = self.style.columnHeaderOrderByArrowMarginTop * self.scale,\n ml = self.style.columnHeaderOrderByArrowMarginLeft * self.scale,\n mr = self.style.columnHeaderOrderByArrowMarginRight * self.scale,\n aw = self.style.columnHeaderOrderByArrowWidth * self.scale,\n ah = self.style.columnHeaderOrderByArrowHeight * self.scale;\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.fillStyle = self.style.columnHeaderOrderByArrowColor;\n self.ctx.strokeStyle = self.style.columnHeaderOrderByArrowBorderColor;\n self.ctx.beginPath();\n x = x + ml;\n y = y + mt;\n if (self.orderDirection === 'asc') {\n self.ctx.lineTo(x, y + ah);\n self.ctx.lineTo(x + aw, y + ah);\n self.ctx.lineTo(x + aw * 0.5, y);\n self.ctx.lineTo(x, y + ah);\n } else {\n self.ctx.moveTo(x, y);\n self.ctx.lineTo(x + aw, y);\n self.ctx.lineTo(x + aw * 0.5, y + ah);\n self.ctx.moveTo(x, y);\n }\n self.ctx.stroke();\n self.ctx.fill();\n return ml + aw + mr;\n }\n function drawTreeArrow(cell, x, y) {\n var mt = self.style.treeArrowMarginTop * self.scale,\n mr = self.style.treeArrowMarginRight * self.scale,\n ml = self.style.treeArrowMarginLeft * self.scale,\n aw = self.style.treeArrowWidth * self.scale,\n ah = self.style.treeArrowHeight * self.scale;\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.fillStyle = self.style.treeArrowColor;\n self.ctx.strokeStyle = self.style.treeArrowBorderColor;\n self.ctx.beginPath();\n x = x + ml;\n y = y + mt;\n if (self.openChildren[cell.rowIndex]) {\n self.ctx.moveTo(x, y);\n self.ctx.lineTo(x + aw, y);\n self.ctx.lineTo(x + aw * 0.5, y + ah);\n self.ctx.moveTo(x, y);\n } else {\n self.ctx.lineTo(x, y);\n self.ctx.lineTo(x + ah, y + aw * 0.5);\n self.ctx.lineTo(x, y + aw);\n self.ctx.lineTo(x, y);\n }\n self.ctx.stroke();\n self.ctx.fill();\n return ml + aw + mr;\n }\n function drawFilterButtonArrow(x, y) {\n var mt =\n ((self.style.filterButtonHeight - self.style.filterButtonArrowHeight) /\n 2) *\n self.scale,\n ml =\n ((self.style.filterButtonWidth - self.style.filterButtonArrowWidth) /\n 2) *\n self.scale,\n aw = self.style.filterButtonArrowWidth * self.scale,\n ah = self.style.filterButtonArrowHeight * self.scale;\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.fillStyle = self.style.filterButtonArrowColor;\n self.ctx.strokeStyle = self.style.filterButtonArrowBorderColor;\n self.ctx.beginPath();\n x = x + ml;\n y = y + mt;\n\n self.ctx.moveTo(x, y);\n self.ctx.lineTo(x + aw, y);\n self.ctx.lineTo(x + aw * 0.5, y + ah);\n self.ctx.moveTo(x, y);\n\n self.ctx.stroke();\n self.ctx.fill();\n return ml + aw;\n }\n function radiusRect(x, y, w, h, radius) {\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n var r = x + w,\n b = y + h;\n self.ctx.beginPath();\n self.ctx.moveTo(x + radius, y);\n self.ctx.lineTo(r - radius, y);\n self.ctx.quadraticCurveTo(r, y, r, y + radius);\n self.ctx.lineTo(r, y + h - radius);\n self.ctx.quadraticCurveTo(r, b, r - radius, b);\n self.ctx.lineTo(x + radius, b);\n self.ctx.quadraticCurveTo(x, b, x, b - radius);\n self.ctx.lineTo(x, y + radius);\n self.ctx.quadraticCurveTo(x, y, x + radius, y);\n }\n function fillRect(x, y, w, h) {\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.fillRect(x, y, w, h);\n }\n function strokeRect(x, y, w, h) {\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.strokeRect(x, y, w, h);\n }\n function fillText(text, x, y) {\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.fillText(text, x, y);\n }\n function fillCircle(x, y, r) {\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.beginPath();\n self.ctx.arc(x, y, r, 0, 2 * Math.PI);\n self.ctx.fill();\n }\n function strokeCircle(x, y, r) {\n x += self.canvasOffsetLeft;\n y += self.canvasOffsetTop;\n self.ctx.beginPath();\n self.ctx.arc(x, y, r, 0, 2 * Math.PI);\n self.ctx.stroke();\n }\n function clipFrozenArea(mode) {\n // 0 both, 1 rows, 2 cols\n // self.lastFrozenColumnPixel;\n // self.lastFrozenRowPixel;\n self.ctx.beginPath();\n if (mode === 0) {\n self.ctx.moveTo(self.lastFrozenColumnPixel, self.lastFrozenRowPixel);\n self.ctx.lineTo(self.lastFrozenColumnPixel, self.height);\n self.ctx.lineTo(self.width, self.height);\n self.ctx.lineTo(self.width, self.lastFrozenRowPixel);\n }\n if (mode === 1) {\n self.ctx.moveTo(0, self.lastFrozenRowPixel);\n self.ctx.lineTo(0, self.height);\n self.ctx.lineTo(self.width, self.height);\n self.ctx.lineTo(self.width, self.lastFrozenRowPixel);\n }\n if (mode === 2) {\n self.ctx.moveTo(self.lastFrozenColumnPixel, 0);\n self.ctx.lineTo(self.width, 0);\n self.ctx.lineTo(self.width, self.height);\n self.ctx.lineTo(self.lastFrozenColumnPixel, self.height);\n }\n self.ctx.clip();\n }\n function fillHandle(x, y, r) {\n if (self.style.selectionHandleType === 'circle') {\n return fillCircle(x, y, r * 0.5);\n }\n fillRect(x - r * 0.5, y - r * 0.5, r, r);\n }\n function strokeHandle(x, y, r) {\n if (self.style.selectionHandleType === 'circle') {\n return strokeCircle(x, y, r * 0.5);\n }\n strokeRect(x - r * 0.5, y - r * 0.5, r, r);\n }\n function addselectionHandle(c, pos) {\n var hw = self.style.selectionHandleSize,\n p = {\n tr: function () {\n fillHandle(c.x + c.width, c.y, hw);\n strokeHandle(c.x + c.width, c.y, hw);\n },\n br: function () {\n fillHandle(c.x + c.width, c.y + c.height, hw);\n strokeHandle(c.x + c.width, c.y + c.height, hw);\n },\n tl: function () {\n fillHandle(c.x, c.y, hw);\n strokeHandle(c.x, c.y, hw);\n },\n bl: function () {\n fillHandle(c.x, c.y + c.height, hw);\n strokeHandle(c.x, c.y + c.height, hw);\n },\n };\n p[pos]();\n }\n function addBorderLine(c, pos) {\n self.ctx.beginPath();\n var p = {\n t: function () {\n self.ctx.moveTo(\n c.x + self.canvasOffsetLeft,\n c.y + self.canvasOffsetTop,\n );\n self.ctx.lineTo(\n c.x + self.canvasOffsetLeft + c.width,\n c.y + self.canvasOffsetTop,\n );\n },\n r: function () {\n self.ctx.moveTo(\n c.x + self.canvasOffsetLeft + c.width,\n c.y + self.canvasOffsetTop,\n );\n self.ctx.lineTo(\n c.x + self.canvasOffsetLeft + c.width,\n c.y + self.canvasOffsetTop + c.height,\n );\n },\n b: function () {\n self.ctx.moveTo(\n c.x + self.canvasOffsetLeft,\n c.y + self.canvasOffsetTop + c.height,\n );\n self.ctx.lineTo(\n c.x + self.canvasOffsetLeft + c.width,\n c.y + self.canvasOffsetTop + c.height,\n );\n },\n l: function () {\n self.ctx.moveTo(\n c.x + self.canvasOffsetLeft,\n c.y + self.canvasOffsetTop,\n );\n self.ctx.lineTo(\n c.x + self.canvasOffsetLeft,\n c.y + self.canvasOffsetTop + c.height,\n );\n },\n };\n p[pos]();\n self.ctx.stroke();\n }\n function addEllipsis(text, width) {\n var c,\n w = 0;\n if (self.ellipsisCache[text] && self.ellipsisCache[text][width]) {\n return self.ellipsisCache[text][width];\n }\n //TODO Add ellipsis back when there is a fast way to do it\n w = self.ctx.measureText(text).width;\n self.ellipsisCache[text] = self.ellipsisCache[text] || {};\n c = { value: text, width: w };\n self.ellipsisCache[text][width] = c;\n return c;\n }\n function wrapText(cell, splitChar) {\n if (!cell.formattedValue) {\n return {\n lines: [{ width: 0, value: '' }],\n width: 0,\n height: cell.calculatedLineHeight,\n };\n }\n var max = 0,\n n = '\\n',\n x,\n word,\n words = cell.formattedValue.split(splitChar),\n textHeight = cell.calculatedLineHeight,\n lines = [],\n out = [],\n wrap = self.style.cellWhiteSpace !== 'nowrap',\n autoResize = self.attributes.autoResizeRows && wrap,\n elWidth,\n et = self.attributes.ellipsisText,\n elClipLength,\n plWidth,\n clippedVal,\n ogWordWidth,\n previousLine,\n line = {\n width: 0,\n value: '',\n },\n cHeight = wrap ? cell.paddedHeight : cell.calculatedLineHeight;\n lines.push(line);\n elWidth = self.ctx.measureText(' ' + et).width;\n for (x = 0; x < words.length; x += 1) {\n word = words[x];\n var curSplitChar = word[word.length - 1] === '-' ? '' : splitChar;\n var measure = self.ctx.measureText(word + curSplitChar);\n if (line.width + measure.width + elWidth < cell.paddedWidth) {\n line.value += word + curSplitChar;\n line.width += measure.width;\n continue;\n }\n // if there is a hyphenated word that is too long\n // split it and add the split set to the array\n // then back up and re-read new split set\n // this behavior seems right, it might not be\n if (/\\w-\\w/.test(word) && cell.paddedWidth < measure.width) {\n var arr = word.split('-');\n arr = arr.map((item, index) => {\n return index === arr.length - 1 ? item : item + '-';\n });\n words.splice(x, 1, ...arr);\n x -= 1;\n continue;\n }\n line = {\n width: measure.width,\n value: word + curSplitChar,\n };\n if (x === 0) {\n lines = [];\n lines.push(line);\n }\n textHeight += cell.calculatedLineHeight;\n if (textHeight > cHeight && !autoResize) {\n if (lines.length === 0) {\n break;\n }\n elClipLength = 1;\n previousLine = lines[lines.length - 1];\n if (previousLine.width < cell.paddedWidth && words.length === 1) {\n break;\n }\n clippedVal = previousLine.value + word;\n plWidth = self.ctx.measureText(clippedVal + et).width;\n var originText = clippedVal;\n if (plWidth > cell.paddedWidth) {\n var stepLength = parseInt(clippedVal.length / 2);\n var direction = -1;\n while (stepLength > 0) {\n clippedVal = originText.substr(\n 0,\n stepLength * direction + clippedVal.length,\n );\n plWidth = self.ctx.measureText(clippedVal + et).width;\n direction = plWidth > cell.paddedWidth ? -1 : 1;\n stepLength = parseInt(stepLength / 2);\n }\n }\n clippedVal =\n clippedVal + (originText.length != clippedVal.length ? et : '');\n previousLine.value = clippedVal;\n previousLine.width = plWidth;\n break;\n }\n if (x > 0) {\n lines.push(line);\n }\n }\n return {\n lines: lines,\n width: max,\n height: cell.calculatedLineHeight * lines.length,\n };\n }\n function drawText(cell) {\n var ll = cell.text.lines.length,\n h = cell.fontHeight * cell.lineHeight,\n x,\n line,\n wrap = self.style.cellWhiteSpace !== 'nowrap',\n textHeight = 0;\n for (x = 0; x < cell.text.lines.length; x += 1) {\n line = cell.text.lines[x];\n var vPos =\n Math.max(\n (cell.height -\n (wrap ? cell.text.height : cell.calculatedLineHeight)) *\n 0.5,\n 0,\n ) + h,\n hPos = cell.paddingLeft + cell.treeArrowWidth + cell.orderByArrowWidth;\n if (cell.horizontalAlignment === 'right') {\n hPos = cell.paddingLeft + cell.paddedWidth - line.width;\n } else if (cell.horizontalAlignment === 'center') {\n hPos =\n cell.paddingLeft +\n (cell.paddedWidth + cell.paddingRight) / 2 -\n line.width / 2;\n }\n if (cell.verticalAlignment === 'top') {\n vPos = cell.calculatedLineHeight;\n } else if (cell.verticalAlignment === 'bottom') {\n vPos = cell.height - cell.paddingBottom - cell.text.height;\n }\n line.height = h + cell.lineSpacing;\n line.offsetLeft = hPos;\n line.offsetTop = vPos;\n line.x = cell.x + hPos;\n line.y = cell.y + textHeight + vPos;\n textHeight += line.height;\n fillText(line.value, line.x, line.y);\n }\n if (self.attributes.debug && cell.active) {\n requestAnimationFrame(function () {\n self.ctx.font = self.style.debugFont;\n self.ctx.fillStyle = self.style.debugColor;\n fillText(\n JSON.stringify(\n {\n x: cell.x,\n y: cell.y,\n h: cell.height,\n w: cell.width,\n pw: cell.paddedWidth,\n idx: cell.columnIndex,\n idx_ord: cell.sortColumnIndex,\n },\n null,\n '\\t',\n ),\n cell.x + 14,\n cell.y + 14,\n );\n fillText(\n JSON.stringify(\n cell.text.lines.map(function (l) {\n return { w: l.width, v: l.value.length };\n }),\n null,\n '\\t',\n ),\n cell.x + 14,\n cell.y + 30,\n );\n });\n }\n }\n function getFrozenColumnsWidth() {\n var w = 0,\n s = self.getSchema(),\n x = 0,\n n = Math.min(self.frozenColumn, s.length),\n column;\n hiddenFrozenColumnCount = 0;\n while (x < n) {\n column = s[x];\n if (column.hidden) {\n hiddenFrozenColumnCount += 1;\n } else {\n w += self.getColumnWidth(x);\n }\n x += 1;\n }\n return w;\n }\n /**\n * Redraws the grid. No matter what the change, this is the only method required to refresh everything.\n * @memberof canvasDatagrid\n * @name draw\n * @method\n */\n // r = literal row index\n // rd = row data array\n // i = user order index\n // o = literal data index\n // y = y drawing cursor\n // x = x drawing cursor\n // s = visible schema array\n // cx = current x drawing cursor sub calculation var\n // cy = current y drawing cursor sub calculation var\n // a = static cell (like corner cell)\n // p = perf counter\n // l = data length\n // u = current cell\n // h = current height\n // w = current width\n self.draw = function (internal) {\n if (self.dispatchEvent('beforedraw', {})) {\n return;\n }\n if (!self.isChildGrid && (!self.height || !self.width)) {\n return;\n }\n if (self.isChildGrid && internal) {\n requestAnimationFrame(self.parentGrid.draw);\n return;\n }\n if (self.intf.visible === false) {\n return;\n }\n // initial values\n var checkScrollHeight,\n rowHeaderCell,\n p,\n cx,\n cy,\n treeGrid,\n rowOpen,\n rowHeight,\n cornerCell,\n y,\n x,\n c,\n h,\n w,\n schema,\n rowIndex,\n rowData,\n aCell,\n viewData = self.viewData || [],\n bc = self.style.gridBorderCollapse === 'collapse',\n selectionBorders = [],\n moveBorders = [],\n selectionHandles = [],\n rowHeaders = [],\n l = viewData.length,\n u = self.currentCell || {},\n columnHeaderCellHeight = self.getColumnHeaderCellHeight(),\n rowHeaderCellWidth = self.getRowHeaderCellWidth(),\n cellHeight = self.style.cellHeight;\n drawCount += 1;\n p = performance.now();\n self.visibleRowHeights = [];\n // if data length has changed, there is no way to know\n if (viewData.length > self.orders.rows.length) {\n self.createRowOrders();\n }\n function drawScrollBars() {\n var drawCorner,\n en = self.scrollBox.entities,\n m = self.style.scrollBarBoxMargin * 2;\n self.ctx.strokeStyle = self.style.scrollBarBorderColor;\n self.ctx.lineWidth = self.style.scrollBarBorderWidth;\n if (self.frozenColumn > 0) {\n en.horizontalBox.x =\n rowHeaderCellWidth +\n self.style.scrollBarBoxMargin +\n self.scrollCache.x[self.frozenColumn - 1] +\n (en.horizontalBar.width -\n self.scrollCache.x[self.frozenColumn - 1] -\n self.scrollBox.scrollBoxWidth) *\n (self.scrollBox.scrollLeft / self.scrollBox.scrollWidth);\n } else {\n en.horizontalBox.x =\n rowHeaderCellWidth +\n self.style.scrollBarBoxMargin +\n (en.horizontalBar.width - self.scrollBox.scrollBoxWidth) *\n (self.scrollBox.scrollLeft / self.scrollBox.scrollWidth);\n }\n en.verticalBox.y =\n columnHeaderCellHeight +\n self.style.scrollBarBoxMargin +\n self.scrollCache.y[self.frozenRow] +\n (en.verticalBar.height -\n self.scrollBox.scrollBoxHeight -\n self.scrollCache.y[self.frozenRow]) *\n (self.scrollBox.scrollTop / self.scrollBox.scrollHeight);\n if (self.scrollBox.horizontalBarVisible) {\n self.ctx.fillStyle = self.style.scrollBarBackgroundColor;\n fillRect(\n en.horizontalBar.x,\n en.horizontalBar.y,\n en.horizontalBar.width + m,\n en.horizontalBar.height,\n );\n strokeRect(\n en.horizontalBar.x,\n en.horizontalBar.y,\n en.horizontalBar.width + m,\n en.horizontalBar.height,\n );\n self.ctx.fillStyle = self.style.scrollBarBoxColor;\n if (self.scrollBox.horizontalBoxVisible) {\n if (/horizontal/.test(u.context)) {\n self.ctx.fillStyle = self.style.scrollBarActiveColor;\n }\n radiusRect(\n en.horizontalBox.x,\n en.horizontalBox.y,\n en.horizontalBox.width,\n en.horizontalBox.height,\n self.style.scrollBarBoxBorderRadius,\n );\n self.ctx.stroke();\n self.ctx.fill();\n }\n drawCorner = true;\n self.visibleCells.unshift(en.horizontalBar);\n self.visibleCells.unshift(en.horizontalBox);\n }\n if (self.scrollBox.verticalBarVisible) {\n self.ctx.fillStyle = self.style.scrollBarBackgroundColor;\n fillRect(\n en.verticalBar.x,\n en.verticalBar.y,\n en.verticalBar.width,\n en.verticalBar.height + m,\n );\n strokeRect(\n en.verticalBar.x,\n en.verticalBar.y,\n en.verticalBar.width,\n en.verticalBar.height + m,\n );\n if (self.scrollBox.verticalBoxVisible) {\n self.ctx.fillStyle = self.style.scrollBarBoxColor;\n if (/vertical/.test(u.context)) {\n self.ctx.fillStyle = self.style.scrollBarActiveColor;\n }\n radiusRect(\n en.verticalBox.x,\n en.verticalBox.y,\n en.verticalBox.width,\n en.verticalBox.height,\n self.style.scrollBarBoxBorderRadius,\n );\n self.ctx.stroke();\n self.ctx.fill();\n }\n drawCorner = true;\n self.visibleCells.unshift(en.verticalBar);\n self.visibleCells.unshift(en.verticalBox);\n }\n if (drawCorner) {\n //corner\n self.ctx.strokeStyle = self.style.scrollBarCornerBorderColor;\n self.ctx.fillStyle = self.style.scrollBarCornerBackgroundColor;\n radiusRect(\n en.corner.x,\n en.corner.y,\n en.corner.width,\n en.corner.height,\n 0,\n );\n self.ctx.stroke();\n self.ctx.fill();\n self.visibleCells.unshift(en.corner);\n }\n }\n function createHandlesOverlayArray(cell) {\n if (self.attributes.allowMovingSelection || self.mobile) {\n if (\n cell.selectionBorderTop &&\n cell.selectionBorderRight &&\n self.mobile\n ) {\n selectionHandles.push([cell, 'tr']);\n cell.selectionHandle = 'tr';\n }\n if (\n cell.selectionBorderTop &&\n cell.selectionBorderLeft &&\n self.mobile\n ) {\n selectionHandles.push([cell, 'tl']);\n cell.selectionHandle = 'tl';\n }\n if (\n cell.selectionBorderBottom &&\n cell.selectionBorderLeft &&\n self.mobile\n ) {\n selectionHandles.push([cell, 'bl']);\n cell.selectionHandle = 'bl';\n }\n if (\n cell.selectionBorderBottom &&\n cell.selectionBorderRight &&\n (self.attributes.selectionHandleBehavior !== 'none' || self.mobile)\n ) {\n selectionHandles.push([cell, 'br']);\n cell.selectionHandle = 'br';\n }\n }\n }\n function createBorderOverlayArray(\n cell,\n drawArray,\n propPrefix,\n offsetPoint,\n ) {\n offsetPoint = offsetPoint || { x: 0, y: 0 };\n cell.selectionBorder = '';\n if (\n !cell.isRowHeader &&\n self.selections[cell.rowIndex + -offsetPoint.y] &&\n self.selections[cell.rowIndex + -offsetPoint.y].indexOf(\n cell.columnIndex + -offsetPoint.x,\n ) !== -1\n ) {\n if (\n (!self.selections[cell.rowIndex - 1 + -offsetPoint.y] ||\n self.selections[cell.rowIndex - 1 + -offsetPoint.y].indexOf(\n cell.columnIndex + -offsetPoint.x,\n ) === -1 ||\n cell.rowIndex === 0) &&\n !cell.isHeader\n ) {\n drawArray.push([cell, 't']);\n cell[propPrefix + 'BorderTop'] = true;\n cell[propPrefix + 'Border'] += 't';\n }\n if (\n !self.selections[cell.rowIndex + 1 + -offsetPoint.y] ||\n self.selections[cell.rowIndex + 1 + -offsetPoint.y].indexOf(\n cell.columnIndex + -offsetPoint.x,\n ) === -1\n ) {\n drawArray.push([cell, 'b']);\n cell[propPrefix + 'BorderBottom'] = true;\n cell[propPrefix + 'Border'] += 'b';\n }\n if (\n !self.selections[cell.rowIndex + -offsetPoint.y] ||\n cell.columnIndex === 0 ||\n self.selections[cell.rowIndex + -offsetPoint.y].indexOf(\n cell.columnIndex - 1 + -offsetPoint.x,\n ) === -1\n ) {\n drawArray.push([cell, 'l']);\n cell[propPrefix + 'BorderLeft'] = true;\n cell[propPrefix + 'Border'] += 'l';\n }\n if (\n !self.selections[cell.rowIndex + -offsetPoint.y] ||\n cell.columnIndex === schema.length ||\n self.selections[cell.rowIndex + -offsetPoint.y].indexOf(\n cell.columnIndex + 1 + -offsetPoint.x,\n ) === -1\n ) {\n drawArray.push([cell, 'r']);\n cell[propPrefix + 'BorderRight'] = true;\n cell[propPrefix + 'Border'] += 'r';\n }\n }\n }\n function drawCell(rowData, rowOrderIndex, rowIndex) {\n return function drawEach(header, headerIndex, columnOrderIndex) {\n if (header.hidden) {\n return 0;\n }\n var cellStyle = header.style || 'cell',\n cellGridAttributes,\n cell,\n isHeader = /HeaderCell/.test(cellStyle),\n isCorner = /cornerCell/.test(cellStyle),\n isRowHeader = 'rowHeaderCell' === cellStyle,\n isColumnHeader = 'columnHeaderCell' === cellStyle,\n isFilterable =\n self.filterable.rows.includes(rowIndex) &&\n self.filterable.columns.includes(headerIndex),\n wrap = self.style.cellWhiteSpace !== 'nowrap',\n selected =\n self.selections[rowOrderIndex] &&\n self.selections[rowOrderIndex].indexOf(columnOrderIndex) !== -1,\n hovered =\n self.hovers.rowIndex === rowOrderIndex &&\n (self.attributes.hoverMode === 'row' ||\n self.hovers.columnIndex === columnOrderIndex),\n openedFilter =\n self.selectedFilterButton.rowIndex == rowIndex &&\n self.selectedFilterButton.columnIndex == headerIndex,\n active =\n self.activeCell.rowIndex === rowOrderIndex &&\n self.activeCell.columnIndex === columnOrderIndex,\n isColumnHeaderCellCap = cellStyle === 'columnHeaderCellCap',\n rawValue = rowData ? rowData[header.name] : undefined,\n isGrid = header.type === 'canvas-datagrid',\n activeHeader =\n (self.orders.rows[self.activeCell.rowIndex] === rowOrderIndex ||\n self.orders.columns[self.activeCell.columnIndex] ===\n headerIndex) &&\n (columnOrderIndex === -1 || rowOrderIndex === -1)\n ? isRowHeader\n ? 'activeRowHeaderCell'\n : 'activeColumnHeaderCell'\n : false,\n val,\n f = self.formatters[header.type || 'string'],\n orderByArrowSize = 0,\n treeArrowSize = 0,\n cellWidth = self.sizes.columns[headerIndex] || header.width,\n ev = {\n value: rawValue,\n row: rowData,\n header: header,\n };\n if (isColumnHeaderCellCap) {\n cellWidth = w - x;\n }\n // if no data or schema are defined, a width is provided to the stub column\n if (cellWidth === undefined) {\n cellWidth = self.style.cellWidth;\n }\n cellWidth = cellWidth * self.scale;\n if (x + cellWidth + self.style.cellBorderWidth < 0) {\n x += cellWidth + self.style.cellBorderWidth;\n }\n if (active && cellStyle !== 'cornerCell') {\n cellStyle = 'activeCell';\n }\n if (self.visibleRows.indexOf(rowIndex) === -1 && !isHeader) {\n self.visibleRows.push(rowIndex);\n }\n val = self.dispatchEvent('formatcellvalue', ev);\n cx = x;\n cy = y;\n if (cellStyle === 'cornerCell') {\n cx = 0;\n cy = 0;\n } else if (isRowHeader) {\n cx = 0;\n } else if (isHeader) {\n cy = 0;\n }\n cell = {\n type: isGrid ? 'canvas-datagrid-cell' : header.type,\n style: cellStyle,\n nodeType: 'canvas-datagrid-cell',\n x: cx,\n y: cy,\n fontHeight: (self.style[cellStyle + 'FontHeight'] || 0) * self.scale,\n horizontalAlignment: self.style[cellStyle + 'HorizontalAlignment'],\n verticalAlignment: self.style[cellStyle + 'VerticalAlignment'],\n paddingLeft:\n (self.style[cellStyle + 'PaddingLeft'] || 0) * self.scale,\n paddingTop: (self.style[cellStyle + 'PaddingTop'] || 0) * self.scale,\n paddingRight:\n (self.style[cellStyle + 'PaddingRight'] || 0) * self.scale,\n paddingBottom:\n (self.style[cellStyle + 'PaddingBottom'] || 0) * self.scale,\n whiteSpace: self.style.cellWhiteSpace,\n lineHeight: self.style.cellLineHeight,\n lineSpacing: self.style.cellLineSpacing,\n offsetTop: self.canvasOffsetTop + cy,\n offsetLeft: self.canvasOffsetLeft + cx,\n scrollTop: self.scrollBox.scrollTop,\n scrollLeft: self.scrollBox.scrollLeft,\n active: active || activeHeader,\n hovered: hovered,\n selected: selected,\n width: cellWidth,\n height: cellHeight,\n offsetWidth: cellWidth,\n offsetHeight: cellHeight,\n parentNode: self.intf.parentNode,\n offsetParent: self.intf.parentNode,\n data: rowData,\n isCorner: isCorner,\n isHeader: isHeader,\n isColumnHeader: isColumnHeader,\n isColumnHeaderCellCap: isColumnHeaderCellCap,\n isRowHeader: isRowHeader,\n isFilterable: isFilterable,\n openedFilter: openedFilter,\n rowOpen: rowOpen,\n header: header,\n\n columnIndex: columnOrderIndex,\n rowIndex: rowOrderIndex,\n\n viewRowIndex: rowOrderIndex,\n viewColumnIndex: columnOrderIndex,\n\n boundRowIndex: self.getBoundRowIndexFromViewRowIndex(rowOrderIndex),\n boundColumnIndex: self.getBoundColumnIndexFromViewColumnIndex(\n columnOrderIndex,\n ),\n\n sortColumnIndex: headerIndex,\n sortRowIndex: rowIndex,\n\n isGrid: isGrid,\n isNormal: !isGrid && !isCorner && !isHeader,\n gridId: (self.attributes.name || '') + rowIndex + ':' + headerIndex,\n parentGrid: self.intf,\n innerHTML: '',\n activeHeader: activeHeader,\n value:\n isHeader && !isRowHeader ? header.title || header.name : rawValue,\n };\n cell.calculatedLineHeight =\n cell.fontHeight * cell.lineHeight + cell.lineSpacing;\n cell.paddedWidth = cell.width - cell.paddingRight - cell.paddingLeft;\n cell.paddedHeight = cell.height - cell.paddingTop - cell.paddingBottom;\n ev.cell = cell;\n cell.userHeight = cell.isHeader ? self.sizes.rows[-1] : rowHeight;\n cell.userWidth = cell.isHeader\n ? self.sizes.columns.cornerCell\n : self.sizes.columns[headerIndex];\n self.visibleCells.unshift(cell);\n if (self.dispatchEvent('beforerendercell', ev)) {\n return;\n }\n self.ctx.fillStyle = self.style[cellStyle + 'BackgroundColor'];\n self.ctx.strokeStyle = self.style[cellStyle + 'BorderColor'];\n self.ctx.lineWidth = self.style[cellStyle + 'BorderWidth'];\n if (hovered) {\n self.ctx.fillStyle = self.style[cellStyle + 'HoverBackgroundColor'];\n self.ctx.strokeStyle = self.style[cellStyle + 'HoverBorderColor'];\n }\n if (selected) {\n self.ctx.fillStyle =\n self.style[cellStyle + 'SelectedBackgroundColor'];\n self.ctx.strokeStyle = self.style[cellStyle + 'SelectedBorderColor'];\n }\n if (activeHeader) {\n self.ctx.fillStyle = self.style[activeHeader + 'BackgroundColor'];\n }\n self.dispatchEvent('rendercell', ev);\n if (cell.isGrid) {\n if (cell.height !== rowHeight) {\n cell.height = rowHeight || self.style.cellHeightWithChildGrid;\n checkScrollHeight = true;\n }\n cell.width =\n self.sizes.columns[headerIndex] ||\n self.style.cellWidthWithChildGrid;\n }\n if (rowOpen && !cell.isRowHeader) {\n cell.height = self.sizes.rows[rowIndex] || self.style.cellHeight;\n }\n if (!cell.isGrid) {\n fillRect(cx, cy, cell.width, cell.height);\n strokeRect(cx, cy, cell.width, cell.height);\n }\n self.ctx.save();\n radiusRect(cell.x, cell.y, cell.width, cell.height, 0);\n self.ctx.clip();\n self.dispatchEvent('afterrendercell', ev);\n if (cell.height !== cellHeight && !(rowOpen && !cell.isRowHeader)) {\n self.sizes.rows[isHeader ? -1 : rowIndex] = cell.height;\n checkScrollHeight = true;\n }\n if (cell.width !== cellWidth) {\n self.sizes.columns[headerIndex] = cell.width;\n checkScrollHeight = true;\n }\n if (isRowHeader && self.attributes.tree) {\n if (!self.dispatchEvent('rendertreearrow', ev)) {\n treeArrowSize = drawTreeArrow(\n cell,\n self.style[cellStyle + 'PaddingLeft'],\n cy,\n 0,\n );\n }\n }\n if ((self.attributes.showRowNumbers && isRowHeader) || !isRowHeader) {\n if (cell.isGrid && !self.dispatchEvent('beforerendercellgrid', ev)) {\n if (!self.childGrids[cell.gridId]) {\n // HACK: this only allows setting of the child grids styles if data is set _after_\n // this is less than desirable. An interface needs to be made to effect the\n // style of all cell grids. One for individual grids already exists.\n cellGridAttributes = self.cellGridAttributes;\n cellGridAttributes.name = self.attributes.saveAppearance\n ? cell.gridId\n : undefined;\n cellGridAttributes.component = false;\n cellGridAttributes.parentNode = cell;\n cellGridAttributes.data = rawValue;\n ev.cellGridAttributes = cellGridAttributes;\n if (self.dispatchEvent('beforecreatecellgrid', ev)) {\n return;\n }\n self.childGrids[cell.gridId] = self.createGrid(\n cellGridAttributes,\n );\n self.sizes.rows[rowIndex] =\n self.sizes.rows[rowIndex] || self.style.cellGridHeight;\n checkScrollHeight = true;\n }\n cell.grid = self.childGrids[cell.gridId];\n cell.grid.parentNode = cell;\n cell.grid.visible = true;\n cell.grid.draw();\n self.dispatchEvent('rendercellgrid', ev);\n } else if (!cell.isGrid) {\n if (self.childGrids[cell.gridId]) {\n self.childGrids[cell.gridId].parentNode.offsetHeight = 0;\n }\n if (isHeader && self.orderBy === header.name) {\n if (!self.dispatchEvent('renderorderbyarrow', ev)) {\n orderByArrowSize = drawOrderByArrow(\n cx + self.style[cellStyle + 'PaddingLeft'],\n 0,\n );\n }\n }\n self.ctx.fillStyle = self.style[cellStyle + 'Color'];\n if (hovered) {\n self.ctx.fillStyle = self.style[cellStyle + 'HoverColor'];\n }\n if (selected) {\n self.ctx.fillStyle = self.style[cellStyle + 'SelectedColor'];\n }\n if (activeHeader) {\n self.ctx.fillStyle = self.style[activeHeader + 'Color'];\n }\n cell.treeArrowWidth = treeArrowSize;\n cell.orderByArrowWidth = orderByArrowSize;\n // create text ref to see if height needs to expand\n val = val !== undefined ? val : f ? f(ev) : '';\n if (val === undefined && !f) {\n val = '';\n console.warn(\n 'canvas-datagrid: Unknown format ' +\n header.type +\n ' add a cellFormater',\n );\n }\n cell.formattedValue = (val !== undefined && val !== null\n ? val\n : ''\n ).toString();\n if (\n self.columnFilters &&\n self.columnFilters[val] !== undefined &&\n isHeader\n ) {\n cell.formattedValue = self.attributes.filterTextPrefix + val;\n }\n self.ctx.font =\n self.style[cellStyle + 'FontHeight'] * self.scale +\n 'px ' +\n self.style[cellStyle + 'FontName'];\n if (!self.dispatchEvent('formattext', ev)) {\n cell.text = wrapText(cell, ' ');\n }\n if (!self.dispatchEvent('rendertext', ev)) {\n if (cell.innerHTML || header.type === 'html') {\n drawHtml(cell);\n } else {\n drawText(cell);\n }\n\n if (wrap && cell.text && cell.text.height > rowHeight) {\n self.sizes.rows[isHeader ? -1 : rowIndex] = cell.text.height;\n checkScrollHeight = true;\n }\n }\n }\n }\n if (active) {\n aCell = cell;\n }\n createBorderOverlayArray(cell, selectionBorders, 'selection');\n // createBorderOverlayArray calculates data for createHandlesOverlayArray so it must go 2nd\n createHandlesOverlayArray(cell);\n if (self.movingSelection) {\n createBorderOverlayArray(cell, moveBorders, 'move', self.moveOffset);\n }\n self.ctx.restore();\n\n if (isFilterable) {\n drawFilterButton(cell);\n }\n\n // Gaps may occur in row numbers between consecutively rendered rows\n // when we are filtering. We draw attention to this by drawing a thick\n // border overlapping the two consecutive row headers. If sorting, visible\n // row numbers stay the same (i.e. they don't correspond to the underlying\n // data's row number), so we do not show row gaps in that case.\n const isSorting =\n self.orderings.columns && self.orderings.columns.length > 0;\n\n if (\n isRowHeader &&\n self.attributes.showRowNumbers &&\n self.attributes.showRowNumberGaps &&\n isSorting === false\n ) {\n const previousRowNumber = self.getBoundRowIndexFromViewRowIndex(\n rowOrderIndex - 1,\n );\n const hasRowGap =\n previousRowNumber !== undefined &&\n cell.boundRowIndex > 0 &&\n cell.boundRowIndex - previousRowNumber > 1;\n\n if (hasRowGap) {\n const barHeight = self.style.rowHeaderCellRowNumberGapHeight;\n const barColor = self.style.rowHeaderCellRowNumberGapColor;\n\n self.ctx.save();\n\n self.ctx.fillStyle = barColor;\n\n fillRect(cell.x, cell.y - barHeight / 2, cell.width, barHeight);\n\n self.ctx.restore();\n }\n }\n\n x += cell.width + (bc ? 0 : self.style.cellBorderWidth);\n return cell.width;\n };\n }\n function drawFilterButton(cell, ev) {\n var posX = cell.x + cell.width - self.style.filterButtonWidth - 1;\n var posY = cell.y + cell.height - self.style.filterButtonHeight - 2;\n if (self.dispatchEvent('beforerenderfilterbutton', ev)) {\n return;\n }\n self.ctx.save();\n self.ctx.strokeStyle = self.style.filterButtonBorderColor;\n self.ctx.fillStyle = self.style.filterButtonBackgroundColor;\n if (cell.openedFilter) {\n self.ctx.fillStyle = self.style.filterButtonActiveBackgroundColor;\n } else if (cell.hovered && self.hovers.onFilterButton) {\n self.ctx.fillStyle = self.style.filterButtonHoverBackgroundColor;\n }\n radiusRect(\n posX,\n posY,\n self.style.filterButtonWidth,\n self.style.filterButtonHeight,\n self.style.filterButtonBorderRadius,\n );\n self.ctx.stroke();\n self.ctx.fill();\n drawFilterButtonArrow(posX, posY);\n self.ctx.clip();\n self.dispatchEvent('afterrenderfilterbutton', ev);\n self.ctx.restore();\n }\n function drawRowHeader(rowData, rowIndex, rowOrderIndex) {\n if (self.attributes.showRowHeaders) {\n x = 0;\n\n // When filtering we'd like to display the actual row numbers,\n // as it is in the unfiltered data, instead of simply the viewed\n // row index + 1. If rowIndex > viewData.length, it's a new row\n // added to the end, and we want to render that new row's number\n const filteredRowNumber =\n self.viewData && rowIndex < self.viewData.length\n ? self.getBoundRowIndexFromViewRowIndex(rowIndex) + 1\n : self.originalData\n ? self.originalData.length + 1\n : rowOrderIndex + 1;\n\n const rowHeaderValue = self.hasActiveFilters()\n ? filteredRowNumber\n : rowIndex + 1;\n\n const rowHeaderCell = { rowHeaderCell: rowHeaderValue };\n const headerDescription = {\n name: 'rowHeaderCell',\n width: self.sizes.columns[-1] || self.style.rowHeaderCellWidth,\n style: 'rowHeaderCell',\n type: 'string',\n data: rowHeaderValue,\n index: -1,\n };\n rowOpen = self.openChildren[rowIndex];\n drawCell(rowHeaderCell, rowOrderIndex, rowIndex)(\n headerDescription,\n -1,\n -1,\n );\n }\n }\n function drawHeaders() {\n var d,\n g = schema.length,\n i,\n o,\n columnHeaderCell,\n header,\n nonFrozenHeaderWidth;\n function drawHeaderColumnRange(start, end) {\n end = Math.min(end, g);\n for (o = start; o < end; o += 1) {\n i = self.orders.columns[o];\n header = schema[i];\n if (!header.hidden) {\n d = {\n title: header.title,\n name: header.name,\n width: header.width || self.style.cellWidth,\n style: 'columnHeaderCell',\n type: 'string',\n index: o,\n order: i,\n };\n columnHeaderCell = {\n columnHeaderCell: header.title || header.name,\n };\n x += drawCell(columnHeaderCell, -1, -1)(d, i, o);\n if (x > self.width + self.scrollBox.scrollLeft) {\n break;\n }\n }\n }\n }\n rowHeaders.forEach(function (rArgs, rhIndex) {\n y = rArgs[3];\n cellHeight = rArgs[4];\n if (rhIndex === self.frozenRow) {\n self.ctx.save();\n radiusRect(\n 0,\n self.lastFrozenRowPixel,\n self.width,\n self.height - self.lastFrozenRowPixel,\n 0,\n );\n self.ctx.clip();\n }\n drawRowHeader(rArgs[0], rArgs[1], rArgs[2]);\n });\n self.ctx.restore();\n if (self.attributes.showColumnHeaders) {\n x =\n -self.scrollBox.scrollLeft +\n self.scrollPixelLeft +\n self.style.columnHeaderCellBorderWidth;\n if (self.attributes.showRowHeaders) {\n x += rowHeaderCellWidth;\n }\n y = 0;\n // cell height might have changed during drawing\n cellHeight = self.getColumnHeaderCellHeight();\n drawHeaderColumnRange(self.scrollIndexLeft, g);\n nonFrozenHeaderWidth = x;\n x = self.style.columnHeaderCellBorderWidth;\n if (self.attributes.showRowHeaders) {\n x += rowHeaderCellWidth;\n }\n drawHeaderColumnRange(0, self.frozenColumn);\n // fill in the space right of the headers\n x = nonFrozenHeaderWidth;\n if (x < w) {\n c = {\n name: '',\n width: self.style.scrollBarWidth,\n style: 'columnHeaderCellCap',\n isColumnHeaderCell: true,\n isColumnHeaderCellCap: true,\n type: 'string',\n index: schema.length,\n };\n drawCell({ endCap: '' }, -1, -1)(c, -1, -1);\n }\n // fill in the space right of the headers\n if (self.attributes.showRowHeaders) {\n cornerCell = { cornerCell: '' };\n x = 0;\n c = {\n name: 'cornerCell',\n width: self.style.rowHeaderCellWidth,\n style: 'cornerCell',\n type: 'string',\n index: -1,\n };\n drawCell(cornerCell, -1, -1)(c, -1, -1);\n }\n }\n }\n function drawRow(rowOrderIndex, rowIndex) {\n var headerIndex,\n treeHeight,\n rowSansTreeHeight,\n columnOrderIndex,\n g = schema.length;\n if (y - cellHeight * 2 > h) {\n return false;\n }\n rowData = viewData[rowOrderIndex];\n rowOpen = self.openChildren[rowOrderIndex];\n rowSansTreeHeight =\n (self.sizes.rows[rowOrderIndex] || self.style.cellHeight) * self.scale;\n treeHeight = (rowOpen ? self.sizes.trees[rowOrderIndex] : 0) * self.scale;\n rowHeight = rowSansTreeHeight + treeHeight;\n if (y < -rowHeight) {\n return false;\n }\n if (self.attributes.showRowHeaders) {\n x += rowHeaderCellWidth;\n }\n cellHeight = rowHeight;\n //draw normal columns\n for (\n columnOrderIndex = self.scrollIndexLeft;\n columnOrderIndex < g;\n columnOrderIndex += 1\n ) {\n headerIndex = self.orders.columns[columnOrderIndex];\n x += drawCell(rowData, rowOrderIndex, rowIndex)(\n schema[headerIndex],\n headerIndex,\n columnOrderIndex,\n );\n if (x > self.width) {\n self.scrollIndexRight = columnOrderIndex;\n self.scrollPixelRight = x;\n break;\n }\n }\n //draw frozen columns\n x = 0;\n if (self.attributes.showRowHeaders) {\n x += rowHeaderCellWidth;\n }\n for (\n columnOrderIndex = 0;\n columnOrderIndex < self.frozenColumn;\n columnOrderIndex += 1\n ) {\n headerIndex = self.orders.columns[columnOrderIndex];\n x += drawCell(rowData, rowOrderIndex, rowIndex)(\n schema[headerIndex],\n headerIndex,\n columnOrderIndex,\n );\n if (x > self.width) {\n break;\n }\n }\n self.lastFrozenColumnPixel = x;\n // cell height might have changed during drawing\n cellHeight = rowHeight;\n x =\n -self.scrollBox.scrollLeft +\n self.scrollPixelLeft +\n self.style.cellBorderWidth;\n // don't draw a tree for the new row\n treeGrid = self.childGrids[rowOrderIndex];\n if (rowOrderIndex !== viewData.length && rowOpen) {\n treeGrid.visible = true;\n treeGrid.parentNode = {\n offsetTop: y + rowSansTreeHeight + self.canvasOffsetTop,\n offsetLeft: rowHeaderCellWidth - 1 + self.canvasOffsetLeft,\n offsetHeight: treeHeight,\n offsetWidth:\n self.width - rowHeaderCellWidth - self.style.scrollBarWidth - 1,\n offsetParent: self.intf.parentNode,\n parentNode: self.intf.parentNode,\n style: self.style,\n nodeType: 'canvas-datagrid-tree',\n scrollTop: self.scrollBox.scrollTop,\n scrollLeft: self.scrollBox.scrollLeft,\n rowIndex: rowOrderIndex,\n };\n self.visibleCells.unshift({\n rowIndex: rowOrderIndex,\n columnIndex: 0,\n y: treeGrid.parentNode.offsetTop,\n x: treeGrid.parentNode.offsetLeft,\n height: treeGrid.height,\n width: treeGrid.width,\n style: 'tree-grid',\n type: treeGrid.parentNode.nodeType,\n });\n treeGrid.draw();\n } else if (treeGrid) {\n treeGrid.parentNode.offsetHeight = 0;\n delete self.sizes.trees[rowOrderIndex];\n }\n rowHeaders.push([rowData, rowOrderIndex, rowIndex, y, rowHeight]);\n self.visibleRowHeights[rowOrderIndex] = rowHeight;\n y += cellHeight + (bc ? 0 : self.style.cellBorderWidth);\n return true;\n }\n function initDraw() {\n self.visibleRows = [];\n schema = self.getSchema();\n self.visibleCells = [];\n self.canvasOffsetTop = self.isChildGrid ? self.parentNode.offsetTop : 0.5;\n self.canvasOffsetLeft = self.isChildGrid\n ? self.parentNode.offsetLeft\n : -0.5;\n h = self.height;\n w = self.width;\n }\n function drawBackground() {\n radiusRect(0, 0, w, h, 0);\n self.ctx.clip();\n self.ctx.fillStyle = self.style.gridBackgroundColor;\n fillRect(0, 0, w, h);\n }\n function drawFrozenRows() {\n var rowOrderIndex,\n ln = Math.min(viewData.length, self.frozenRow);\n x =\n -self.scrollBox.scrollLeft +\n self.scrollPixelLeft +\n self.style.cellBorderWidth;\n y = columnHeaderCellHeight;\n for (rowIndex = 0; rowIndex < ln; rowIndex += 1) {\n rowOrderIndex = self.orders.rows[rowIndex];\n if (!drawRow(rowOrderIndex, rowIndex)) {\n break;\n }\n }\n if (self.attributes.allowFreezingRows) {\n // HACK great, another stupid magic number.\n // Background will appear as a 0.5px artifact behind the row freeze bar without this hack\n y +=\n self.style.frozenMarkerBorderWidth +\n self.style.frozenMarkerWidth -\n 0.4999999999;\n }\n self.lastFrozenRowPixel = y;\n }\n function drawRows() {\n self.ctx.save();\n if (self.frozenRow > 0) {\n radiusRect(\n 0,\n self.lastFrozenRowPixel,\n self.width,\n self.height - self.lastFrozenRowPixel,\n 0,\n );\n self.ctx.clip();\n }\n var columnOrderIndex,\n rowOrderIndex,\n headerIndex,\n g = schema.length;\n x =\n -self.scrollBox.scrollLeft +\n self.scrollPixelLeft +\n self.style.cellBorderWidth;\n if (!self.attributes.snapToRow) {\n y +=\n -self.scrollBox.scrollTop +\n self.scrollPixelTop +\n self.style.cellBorderWidth;\n }\n for (\n rowIndex = self.frozenRow + self.scrollIndexTop;\n rowIndex < l;\n rowIndex += 1\n ) {\n rowOrderIndex = self.orders.rows[rowIndex];\n self.scrollIndexBottom = rowIndex;\n self.scrollPixelBottom = y;\n if (!drawRow(rowOrderIndex, rowIndex)) {\n break;\n }\n }\n if (self.attributes.showNewRow) {\n if (self.attributes.showRowHeaders) {\n x += rowHeaderCellWidth;\n }\n rowHeight = cellHeight = self.style.cellHeight;\n rowOpen = false;\n for (\n columnOrderIndex = self.scrollIndexLeft;\n columnOrderIndex < g;\n columnOrderIndex += 1\n ) {\n headerIndex = self.orders.columns[columnOrderIndex];\n x += drawCell(self.newRow, viewData.length, viewData.length)(\n schema[headerIndex],\n headerIndex,\n columnOrderIndex,\n );\n if (x > self.width + self.scrollBox.scrollLeft) {\n break;\n }\n }\n rowHeaders.push([\n self.newRow,\n viewData.length,\n viewData.length,\n y,\n rowHeight,\n ]);\n }\n self.ctx.restore();\n }\n function drawMoveMarkers() {\n if (!self.movingSelection) {\n return;\n }\n self.ctx.lineWidth = self.style.moveOverlayBorderWidth;\n self.ctx.strokeStyle = self.style.moveOverlayBorderColor;\n self.ctx.setLineDash(self.style.moveOverlayBorderSegments);\n moveBorders.forEach(function (c) {\n addBorderLine(c[0], c[1]);\n });\n self.ctx.setLineDash([]);\n }\n function drawReorderMarkers() {\n if (!self.reorderObject) {\n return;\n }\n var b = {\n height: self.reorderObject.height,\n width: self.reorderObject.width,\n x: self.reorderObject.x + self.reorderObject.dragOffset.x,\n y: self.reorderObject.y + self.reorderObject.dragOffset.y,\n },\n m = {\n width: w,\n height: h,\n x: 0,\n y: 0,\n };\n self.ctx.fillStyle = self.style.reorderMarkerBackgroundColor;\n self.ctx.lineWidth = self.style.reorderMarkerBorderWidth;\n self.ctx.strokeStyle = self.style.reorderMarkerBorderColor;\n if (self.dragMode === 'row-reorder') {\n for (var k = 0; k < self.selections.length; k++) {\n if (!self.selections[k] || k == self.reorderObject.rowIndex) continue;\n b.height += self.getRowHeight(k);\n }\n b.width = w;\n b.x = 0;\n m.width = w;\n m.height = self.currentCell.height;\n m.y = self.currentCell.y;\n fillRect(b.x, b.y, b.width, b.height);\n strokeRect(b.x, b.y, b.width, b.height);\n self.ctx.lineWidth = self.style.reorderMarkerIndexBorderWidth;\n self.ctx.strokeStyle = self.style.reorderMarkerIndexBorderColor;\n if (\n self.currentCell.rowIndex !== self.reorderObject.rowIndex &&\n self.currentCell.rowIndex > -1 &&\n self.currentCell.rowIndex < l\n ) {\n addBorderLine(\n m,\n self.reorderTarget.sortRowIndex > self.reorderObject.sortRowIndex\n ? 'b'\n : 't',\n );\n }\n } else if (self.dragMode === 'column-reorder' && self.reorderObject) {\n var selectedColumns = self.selections[0];\n for (var k = 1; k < selectedColumns.length; k++) {\n b.width += self.getColumnWidth(\n self.orders.columns[selectedColumns[k]],\n );\n }\n b.height = h;\n b.y = 0;\n m.height = h;\n m.width = self.currentCell.width;\n m.y = 0;\n m.x = self.currentCell.x;\n fillRect(b.x, b.y, b.width, b.height);\n strokeRect(b.x, b.y, b.width, b.height);\n self.ctx.lineWidth = self.style.reorderMarkerIndexBorderWidth;\n self.ctx.strokeStyle = self.style.reorderMarkerIndexBorderColor;\n if (\n self.currentCell.sortColumnIndex !==\n self.reorderObject.sortColumnIndex &&\n self.currentCell.sortColumnIndex > -1 &&\n self.currentCell.sortColumnIndex < schema.length\n ) {\n addBorderLine(\n m,\n self.reorderTarget.columnIndex > self.reorderObject.columnIndex\n ? 'r'\n : 'l',\n );\n }\n }\n }\n function drawBorder() {\n self.ctx.lineWidth = self.style.gridBorderWidth;\n self.ctx.strokeStyle = self.style.gridBorderColor;\n strokeRect(0, 0, self.width, self.height);\n }\n function drawSelectionBorders() {\n self.ctx.lineWidth = self.style.selectionOverlayBorderWidth;\n self.ctx.strokeStyle = self.style.selectionOverlayBorderColor;\n function dsb(c) {\n addBorderLine(c[0], c[1]);\n }\n selectionBorders\n .filter(function (c) {\n return (\n c[0].rowIndex < self.frozenRow &&\n c[0].columnIndex < self.frozenColumn\n );\n })\n .forEach(dsb);\n self.ctx.save();\n clipFrozenArea(0);\n selectionBorders\n .filter(function (c) {\n return (\n c[0].rowIndex >= self.frozenRow &&\n c[0].columnIndex >= self.frozenColumn\n );\n })\n .forEach(dsb);\n self.ctx.restore();\n self.ctx.save();\n clipFrozenArea(1);\n selectionBorders\n .filter(function (c) {\n return (\n c[0].rowIndex >= self.frozenRow &&\n c[0].columnIndex < self.frozenColumn\n );\n })\n .forEach(dsb);\n self.ctx.restore();\n self.ctx.save();\n clipFrozenArea(2);\n selectionBorders\n .filter(function (c) {\n return (\n c[0].rowIndex < self.frozenRow &&\n c[0].columnIndex >= self.frozenColumn\n );\n })\n .forEach(dsb);\n self.ctx.restore();\n }\n function drawSelectionHandles() {\n if (self.mobile || self.attributes.allowMovingSelection) {\n self.ctx.lineWidth = self.style.selectionHandleBorderWidth;\n self.ctx.strokeStyle = self.style.selectionHandleBorderColor;\n self.ctx.fillStyle = self.style.selectionHandleColor;\n selectionHandles.forEach(function (c) {\n addselectionHandle(c[0], c[1]);\n var az = self.attributes.touchSelectHandleZone / 2,\n ax =\n c[0].x + (c[1] === 'tl' || c[1] === 'bl' ? 0 : c[0].width) - az,\n ay =\n c[0].y + (c[1] === 'bl' || c[1] === 'br' ? c[0].height : 0) - az;\n self.visibleCells.unshift({\n x: ax,\n y: ay,\n height: self.style.selectionHandleSize + az,\n width: self.style.selectionHandleSize + az,\n style: 'selection-handle-' + c[1],\n });\n });\n }\n }\n function drawActiveCell() {\n if (!aCell) {\n return;\n }\n self.ctx.save();\n var cl =\n self.activeCell.columnIndex + 1 > self.frozenColumn ||\n self.activeCell.rowIndex + 1 > self.frozenRow,\n acx = cl ? self.lastFrozenColumnPixel : 0,\n acy = cl ? self.lastFrozenRowPixel : 0,\n acw = cl ? self.width - self.lastFrozenColumnPixel : self.width,\n ach = cl ? self.height - self.lastFrozenRowPixel : self.height;\n radiusRect(acx, acy, acw, ach, 0);\n self.ctx.clip();\n if (self.attributes.selectionMode === 'row') {\n if (self.activeCell && self.activeCell.rowIndex === aCell.rowIndex) {\n self.ctx.lineWidth = self.style.activeCellOverlayBorderWidth;\n self.ctx.strokeStyle = self.style.activeCellOverlayBorderColor;\n strokeRect(\n 1,\n aCell.y,\n self.getHeaderWidth() + rowHeaderCellWidth,\n self.visibleRowHeights[aCell.rowIndex],\n );\n }\n } else {\n self.ctx.lineWidth = self.style.activeCellOverlayBorderWidth;\n self.ctx.strokeStyle = self.style.activeCellOverlayBorderColor;\n strokeRect(aCell.x, aCell.y, aCell.width, aCell.height);\n }\n self.ctx.restore();\n }\n function drawFrozenMarkers() {\n var my = self.lastFrozenRowPixel - self.style.frozenMarkerWidth,\n mx = self.lastFrozenColumnPixel - self.style.frozenMarkerBorderWidth,\n xHover =\n self.currentCell && self.currentCell.style === 'frozen-row-marker',\n yHover =\n self.currentCell && self.currentCell.style === 'frozen-column-marker';\n self.ctx.lineWidth = self.style.frozenMarkerBorderWidth;\n if (self.attributes.allowFreezingColumns) {\n self.ctx.fillStyle = yHover\n ? self.style.frozenMarkerHoverColor\n : self.style.frozenMarkerColor;\n self.ctx.strokeStyle = yHover\n ? self.style.frozenMarkerHoverBorderColor\n : self.style.frozenMarkerBorderColor;\n fillRect(mx, 0, self.style.frozenMarkerWidth, self.height);\n strokeRect(mx, 0, self.style.frozenMarkerWidth, self.height);\n self.visibleCells.unshift({\n x: mx,\n y: 0,\n height: self.height,\n width:\n self.style.frozenMarkerWidth + self.style.frozenMarkerBorderWidth,\n style: 'frozen-column-marker',\n });\n }\n if (self.attributes.allowFreezingRows) {\n self.ctx.fillStyle = xHover\n ? self.style.frozenMarkerHoverColor\n : self.style.frozenMarkerColor;\n self.ctx.strokeStyle = xHover\n ? self.style.frozenMarkerHoverBorderColor\n : self.style.frozenMarkerBorderColor;\n fillRect(0, my, self.width, self.style.frozenMarkerWidth);\n strokeRect(0, my, self.width, self.style.frozenMarkerWidth);\n self.visibleCells.unshift({\n x: 0,\n y: my,\n height:\n self.style.frozenMarkerWidth + self.style.frozenMarkerBorderWidth,\n width: self.width,\n style: 'frozen-row-marker',\n });\n }\n if (self.freezeMarkerPosition) {\n self.ctx.fillStyle = self.style.frozenMarkerActiveColor;\n self.ctx.strokeStyle = self.style.frozenMarkerActiveBorderColor;\n if (self.dragMode === 'frozen-column-marker') {\n fillRect(\n self.freezeMarkerPosition.x,\n 0,\n self.style.frozenMarkerWidth,\n self.height,\n );\n strokeRect(\n self.freezeMarkerPosition.x,\n 0,\n self.style.frozenMarkerWidth,\n self.height,\n );\n } else {\n fillRect(\n 0,\n self.freezeMarkerPosition.y,\n self.width,\n self.style.frozenMarkerWidth,\n );\n strokeRect(\n 0,\n self.freezeMarkerPosition.y,\n self.width,\n self.style.frozenMarkerWidth,\n );\n }\n }\n }\n function drawPerfLines() {\n if (!self.attributes.showPerformance) {\n return;\n }\n var pw = 250,\n px =\n self.width -\n pw -\n self.style.scrollBarWidth -\n self.style.scrollBarBorderWidth * 2,\n py = columnHeaderCellHeight,\n ph = 100;\n if (scrollDebugCounters.length === 0) {\n scrollDebugCounters = fillArray(0, perfWindowSize, 1, function () {\n return [0, 0];\n });\n }\n if (touchPPSCounters.length === 0) {\n touchPPSCounters = fillArray(0, perfWindowSize, 1, function () {\n return [0, 0];\n });\n }\n if (entityCount.length === 0) {\n entityCount = fillArray(0, perfWindowSize, 1, 0);\n }\n self.ctx.lineWidth = 0.5;\n function dpl(name, perfArr, arrIndex, max, color, useAbs, rowIndex) {\n var v;\n drawPerfLine(pw, ph, px, py, perfArr, arrIndex, max, color, useAbs);\n self.ctx.fillStyle = color;\n fillRect(3 + px, py + 9 + rowIndex * 11, 8, 8);\n self.ctx.fillStyle = self.style.debugPerfChartTextColor;\n v = arrIndex !== undefined ? perfArr[0][arrIndex] : perfArr[0];\n fillText(\n name + ' ' + (isNaN(v) ? 0 : v).toFixed(3),\n 14 + px,\n py + 16 + rowIndex * 11,\n );\n }\n self.ctx.textAlign = 'left';\n self.ctx.font = self.style.debugFont;\n self.ctx.fillStyle = self.style.debugPerfChartBackground;\n fillRect(px, py, pw, ph);\n [\n [\n 'Scroll Height',\n scrollDebugCounters,\n 0,\n self.scrollBox.scrollHeight,\n self.style.debugScrollHeightColor,\n false,\n ],\n [\n 'Scroll Width',\n scrollDebugCounters,\n 1,\n self.scrollBox.scrollWidth,\n self.style.debugScrollWidthColor,\n false,\n ],\n [\n 'Performance',\n perfCounters,\n undefined,\n 200,\n self.style.debugPerformanceColor,\n false,\n ],\n [\n 'Entities',\n entityCount,\n undefined,\n 1500,\n self.style.debugEntitiesColor,\n false,\n ],\n [\n 'TouchPPSX',\n touchPPSCounters,\n 0,\n 1000,\n self.style.debugTouchPPSXColor,\n true,\n ],\n [\n 'TouchPPSY',\n touchPPSCounters,\n 1,\n 1000,\n self.style.debugTouchPPSYColor,\n true,\n ],\n ].forEach(function (i, index) {\n i.push(index);\n dpl.apply(null, i);\n });\n self.ctx.fillStyle = self.style.debugPerfChartBackground;\n entityCount.pop();\n entityCount.unshift(self.visibleCells.length);\n scrollDebugCounters.pop();\n scrollDebugCounters.unshift([\n self.scrollBox.scrollTop,\n self.scrollBox.scrollLeft,\n ]);\n touchPPSCounters.pop();\n touchPPSCounters.unshift([self.yPPS, self.xPPS]);\n }\n function drawDebug() {\n self.ctx.save();\n var d;\n if (self.attributes.showPerformance || self.attributes.debug) {\n if (perfCounters.length === 0) {\n perfCounters = fillArray(0, perfWindowSize, 1, 0);\n }\n perfCounters.pop();\n perfCounters.unshift(performance.now() - p);\n }\n if (!self.attributes.debug) {\n self.ctx.restore();\n return;\n }\n self.ctx.font = self.style.debugFont;\n d = {};\n d.perf = (\n perfCounters.reduce(function (a, b) {\n return a + b;\n }, 0) / Math.min(drawCount, perfCounters.length)\n ).toFixed(1);\n d.perfDelta = perfCounters[0].toFixed(1);\n d.frozenColumnsWidth = getFrozenColumnsWidth();\n d.htmlImages = Object.keys(self.htmlImageCache).length;\n d.reorderObject =\n 'x: ' +\n (self.reorderObject || { columnIndex: 0 }).columnIndex +\n ', y: ' +\n (self.reorderObject || { rowIndex: 0 }).rowIndex;\n d.reorderTarget =\n 'x: ' +\n (self.reorderTarget || { columnIndex: 0 }).columnIndex +\n ', y: ' +\n (self.reorderTarget || { rowIndex: 0 }).rowIndex;\n d.scale = self.scale;\n d.startScale = self.startScale;\n d.scaleDelta = self.scaleDelta;\n d.zoomDeltaStart = self.zoomDeltaStart;\n d.touchLength = self.touchLength;\n d.touches =\n 'y0: ' +\n (self.touchPosition || { y: 0 }).y +\n ' y1: ' +\n (self.touchPosition1 || { y: 0 }).y;\n d.scrollBox = self.scrollBox.toString();\n d.scrollIndex =\n 'x: ' + self.scrollIndexLeft + ', y: ' + self.scrollIndexTop;\n d.scrollPixel =\n 'x: ' + self.scrollPixelLeft + ', y: ' + self.scrollPixelTop;\n d.canvasOffset =\n 'x: ' + self.canvasOffsetLeft + ', y: ' + self.canvasOffsetTop;\n d.touchDelta = 'x: ' + self.touchDelta.x + ', y: ' + self.touchDelta.y;\n d.touchAnimateTo =\n 'x: ' + self.touchAnimateTo.x + ', y: ' + self.touchAnimateTo.y;\n d.scrollAnimation =\n 'x: ' + self.scrollAnimation.x + ', y: ' + self.scrollAnimation.y;\n d.touchPPS = 'x: ' + self.xPPS + ', y: ' + self.yPPS;\n d.touchPPST = 'x: ' + self.xPPST + ', y: ' + self.yPPST;\n d.touchDuration = self.touchDuration;\n d.pointerLockPosition = self.pointerLockPosition\n ? self.pointerLockPosition.x + ', ' + self.pointerLockPosition.y\n : '';\n d.size = 'w: ' + self.width + ', h: ' + self.height;\n d.mouse = 'x: ' + self.mouse.x + ', y: ' + self.mouse.y;\n d.touch = !self.touchStart\n ? ''\n : 'x: ' + self.touchStart.x + ', y: ' + self.touchStart.y;\n d.entities = self.visibleCells.length;\n d.hasFocus = self.hasFocus;\n d.dragMode = self.dragMode;\n if (self.currentCell) {\n d.columnIndex = self.currentCell.columnIndex;\n d.rowIndex = self.currentCell.rowIndex;\n d.sortColumnIndex = self.currentCell.sortColumnIndex;\n d.sortRowIndex = self.currentCell.sortRowIndex;\n d.context = self.currentCell.context;\n d.dragContext = self.currentCell.dragContext;\n d.style = self.currentCell.style;\n d.type = self.currentCell.type;\n }\n self.ctx.textAlign = 'right';\n self.ctx.fillStyle = self.style.debugBackgroundColor;\n fillRect(0, 0, self.width, self.height);\n Object.keys(d).forEach(function (key, index) {\n var m = key + ': ' + d[key],\n lh = 14;\n self.ctx.fillStyle = self.style.debugColor;\n fillText(\n m,\n w - 20,\n (self.attributes.showPerformance ? 140 : 24) + index * lh,\n );\n });\n self.ctx.restore();\n }\n self.ctx.save();\n initDraw();\n drawBackground();\n drawFrozenRows();\n drawRows();\n drawActiveCell();\n drawHeaders();\n drawFrozenMarkers();\n drawSelectionHandles();\n drawReorderMarkers();\n drawMoveMarkers();\n drawBorder();\n drawSelectionBorders();\n drawScrollBars();\n if (checkScrollHeight) {\n self.resize(true);\n }\n drawDebug();\n drawPerfLines();\n if (self.dispatchEvent('afterdraw', {})) {\n return;\n }\n self.ctx.restore();\n };\n}\n","/*jslint browser: true, unparam: true, todo: true, plusplus: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nimport isPrintableKeyEvent from 'is-printable-key-event';\nimport { isSupportedHtml, parseData } from './util';\n\nexport default function (self) {\n var wheeling;\n self.stopPropagation = function (e) {\n e.stopPropagation();\n };\n /**\n * Adds an event listener to the given event.\n * @memberof canvasDatagrid\n * @name addEventListener\n * @method\n * @param {string} ev The name of the event to subscribe to.\n * @param {function} fn The event procedure to execute when the event is raised.\n */\n self.addEventListener = function (ev, fn) {\n self.events[ev] = self.events[ev] || [];\n self.events[ev].unshift(fn);\n };\n /**\n * Removes the given listener function from the given event. Must be an actual reference to the function that was bound.\n * @memberof canvasDatagrid\n * @name removeEventListener\n * @method\n * @param {string} ev The name of the event to unsubscribe from.\n * @param {function} fn The event procedure to execute when the event is raised.\n */\n self.removeEventListener = function (ev, fn) {\n (self.events[ev] || []).forEach(function removeEachListener(sfn, idx) {\n if (fn === sfn) {\n self.events[ev].splice(idx, 1);\n }\n });\n };\n /**\n * Fires the given event, passing an event object to the event subscribers.\n * @memberof canvasDatagrid\n * @name dispatchEvent\n * @method\n * @param {number} ev The name of the event to dispatch.\n * @param {number} e The event object.\n */\n self.dispatchEvent = function (ev, e) {\n e = ev.type ? ev : e || {};\n ev = ev.type || ev;\n var defaultPrevented;\n function preventDefault() {\n defaultPrevented = true;\n }\n if (!self.events[ev]) {\n return;\n }\n self.events[ev].forEach(function dispatchEachEvent(fn) {\n e.ctx = self.ctx;\n e.preventDefault = preventDefault;\n fn.apply(self.intf, [e]);\n });\n return defaultPrevented;\n };\n self.getRatio = function () {\n return Math.min(\n self.attributes.maxPixelRatio,\n (window.devicePixelRatio || 1) /\n (self.ctx.webkitBackingStorePixelRatio ||\n self.ctx.mozBackingStorePixelRatio ||\n self.ctx.msBackingStorePixelRatio ||\n self.ctx.oBackingStorePixelRatio ||\n self.ctx.backingStorePixelRatio ||\n 1),\n );\n };\n self.resize = function (drawAfterResize) {\n if (!self.canvas) {\n return;\n }\n var x,\n v = {\n x: 0,\n y: 0,\n height: 0,\n width: 0,\n style: 'vertical-scroll-bar',\n },\n n = {\n x: 0,\n y: 0,\n height: 0,\n width: 0,\n style: 'horizontal-scroll-bar',\n },\n vb = {\n x: 0,\n y: 0,\n height: 0,\n width: 0,\n style: 'vertical-scroll-box',\n },\n nb = {\n x: 0,\n y: 0,\n height: 0,\n width: 0,\n style: 'horizontal-scroll-box',\n },\n co = {\n x: 0,\n y: 0,\n height: 0,\n width: 0,\n isCorner: true,\n isScrollBoxCorner: true,\n style: 'scroll-box-corner',\n },\n m = self.style.scrollBarBoxMargin * 2,\n b = self.style.scrollBarBorderWidth * 2,\n d = self.style.scrollBarBoxMargin * 0.5,\n sbw = self.style.scrollBarWidth + self.style.scrollBarBorderWidth * 2,\n ratio = self.getRatio(),\n bm = self.style.gridBorderCollapse === 'collapse' ? 1 : 2,\n cellBorder = self.style.cellBorderWidth * bm,\n columnHeaderCellBorder = self.style.columnHeaderCellBorderWidth * bm,\n dataHeight = 0,\n dataWidth = 0,\n dims,\n l = (self.viewData || []).length,\n columnHeaderCellHeight = self.getColumnHeaderCellHeight(),\n rowHeaderCellWidth = self.getRowHeaderCellWidth(),\n ch = self.style.cellHeight,\n s = self.getSchema();\n // sets actual DOM canvas element\n function checkScrollBoxVisibility() {\n self.scrollBox.horizontalBarVisible =\n (self.style.width !== 'auto' &&\n dataWidth > self.scrollBox.width &&\n self.style.overflowX !== 'hidden') ||\n self.style.overflowX === 'scroll';\n self.scrollBox.horizontalBoxVisible = dataWidth > self.scrollBox.width;\n self.scrollBox.verticalBarVisible =\n (self.style.height !== 'auto' &&\n dataHeight > self.scrollBox.height &&\n self.style.overflowY !== 'hidden') ||\n self.style.overflowY === 'scroll';\n self.scrollBox.verticalBoxVisible = dataHeight > self.scrollBox.height;\n }\n function setScrollBoxSize() {\n self.scrollBox.width = self.width - rowHeaderCellWidth;\n self.scrollBox.height = self.height - columnHeaderCellHeight;\n }\n function setCanvasSize() {\n if (self.isChildGrid) {\n return;\n }\n dims = {\n // HACK +1 ? maybe it's a magic cell border? Required to line up properly in auto height mode.\n height: columnHeaderCellHeight + dataHeight + cellBorder + 1,\n width: dataWidth + rowHeaderCellWidth + cellBorder,\n };\n ['width', 'height'].forEach(function (dim) {\n //TODO: support inherit\n if (\n ['auto', undefined].indexOf(self.style[dim]) !== -1 &&\n ['auto', undefined].indexOf(self.appliedInlineStyles[dim]) !== -1\n ) {\n self.parentNodeStyle[dim] = dims[dim] + 'px';\n } else if (\n ['auto', undefined].indexOf(self.style[dim]) == -1 &&\n ['auto', undefined].indexOf(self.appliedInlineStyles[dim]) == -1\n ) {\n self.parentNodeStyle[dim] = self.style[dim];\n if (self.isComponent) {\n self.canvas.style[dim] = self.style[dim];\n }\n }\n });\n }\n self.scrollCache.x = [];\n self.scrollCache.y = [];\n for (x = 0; x < l; x += 1) {\n self.scrollCache.y[x] = dataHeight;\n dataHeight +=\n ((self.sizes.rows[x] || ch) + (self.sizes.trees[x] || 0)) * self.scale +\n // HACK? if an expanded tree row is frozen it is necessary to add the tree row's height a second time.\n (self.frozenRow > x ? self.sizes.trees[x] || 0 : 0);\n }\n if (l > 1) {\n self.scrollCache.y[x] = dataHeight;\n }\n dataWidth =\n s.reduce(function reduceSchema(accumulator, column, columnIndex) {\n // intentional redefintion of column. This causes scrollCache to be in the correct order\n column = s[self.orders.columns[columnIndex]];\n if (column.hidden) {\n self.scrollCache.x[columnIndex] = accumulator;\n return accumulator;\n }\n var va =\n accumulator + self.getColumnWidth(self.orders.columns[columnIndex]);\n self.scrollCache.x[columnIndex] = va;\n return va;\n }, 0) || 0;\n if (self.attributes.showNewRow) {\n dataHeight += ch;\n }\n if (self.attributes.snapToRow) {\n dataHeight += self.style.cellHeight;\n }\n setCanvasSize();\n if (self.isChildGrid) {\n self.width = self.parentNode.offsetWidth;\n self.height = self.parentNode.offsetHeight;\n } else if (\n self.height !== self.canvas.offsetHeight ||\n self.width !== self.canvas.offsetWidth\n ) {\n self.height = self.canvas.offsetHeight;\n self.width = self.canvas.offsetWidth;\n self.canvasOffsetLeft = self.args.canvasOffsetLeft || 0;\n self.canvasOffsetTop = self.args.canvasOffsetTop || 0;\n }\n /// calculate scroll bar dimensions\n // non-controversial\n self.scrollBox.top = columnHeaderCellHeight + columnHeaderCellBorder;\n self.scrollBox.left = rowHeaderCellWidth;\n // width and height of scroll box\n setScrollBoxSize();\n // is the data larger than the scroll box\n checkScrollBoxVisibility();\n // if the scroll box is visible, make room for it by expanding the size of the element\n // if the other dimension is set to auto\n if (self.scrollBox.horizontalBarVisible) {\n if (self.style.height === 'auto' && !self.isChildGrid) {\n self.height += sbw;\n }\n dataHeight += sbw;\n setCanvasSize();\n setScrollBoxSize();\n checkScrollBoxVisibility();\n }\n if (self.scrollBox.verticalBarVisible) {\n if (self.style.width === 'auto' && !self.isChildGrid) {\n self.width += sbw;\n }\n dataWidth += sbw;\n setCanvasSize();\n setScrollBoxSize();\n checkScrollBoxVisibility();\n }\n // set again after bar visibility checks\n setScrollBoxSize();\n self.scrollBox.scrollWidth = dataWidth - self.scrollBox.width;\n self.scrollBox.scrollHeight = dataHeight - self.scrollBox.height;\n if (self.frozenColumn > 0) {\n self.scrollBox.widthBoxRatio =\n (self.scrollBox.width - self.scrollCache.x[self.frozenColumn - 1]) /\n dataWidth;\n } else {\n self.scrollBox.widthBoxRatio = self.scrollBox.width / dataWidth;\n }\n self.scrollBox.scrollBoxWidth =\n self.scrollBox.width * self.scrollBox.widthBoxRatio -\n self.style.scrollBarWidth -\n b -\n d;\n // TODO: This heightBoxRatio number is terribly wrong.\n // They should be a result of the size of the grid/canvas?\n // it being off causes the scroll bar to \"slide\" under\n // the dragged mouse.\n // https://github.com/TonyGermaneri/canvas-datagrid/issues/97\n self.scrollBox.heightBoxRatio =\n (self.scrollBox.height -\n columnHeaderCellHeight -\n self.scrollCache.y[self.frozenRow]) /\n dataHeight;\n self.scrollBox.scrollBoxHeight =\n self.scrollBox.height * self.scrollBox.heightBoxRatio -\n self.style.scrollBarWidth -\n b -\n d;\n self.scrollBox.scrollBoxWidth = Math.max(\n self.scrollBox.scrollBoxWidth,\n self.style.scrollBarBoxMinSize,\n );\n self.scrollBox.scrollBoxHeight = Math.max(\n self.scrollBox.scrollBoxHeight,\n self.style.scrollBarBoxMinSize,\n );\n // horizontal\n n.x += rowHeaderCellWidth;\n n.y += self.height - self.style.scrollBarWidth - d;\n n.width =\n self.width - self.style.scrollBarWidth - rowHeaderCellWidth - d - m;\n n.height = self.style.scrollBarWidth + self.style.scrollBarBorderWidth + d;\n // horizontal box\n nb.y = n.y + self.style.scrollBarBoxMargin;\n nb.width = self.scrollBox.scrollBoxWidth;\n nb.height = self.style.scrollBarBoxWidth;\n // vertical\n v.x +=\n self.width -\n self.style.scrollBarWidth -\n self.style.scrollBarBorderWidth -\n d;\n v.y += columnHeaderCellHeight + self.scrollCache.y[self.frozenRow];\n v.width = self.style.scrollBarWidth + self.style.scrollBarBorderWidth + d;\n v.height =\n self.height - columnHeaderCellHeight - self.style.scrollBarWidth - d - m;\n // vertical box\n vb.x = v.x + self.style.scrollBarBoxMargin;\n vb.y += self.scrollCache.y[self.frozenRow];\n vb.width = self.style.scrollBarBoxWidth;\n vb.height = self.scrollBox.scrollBoxHeight;\n // corner\n co.x = n.x + n.width + m;\n co.y = v.y + v.height + m;\n co.width = self.style.scrollBarWidth + self.style.scrollBarBorderWidth;\n co.height = self.style.scrollBarWidth + self.style.scrollBarBorderWidth;\n self.scrollBox.entities = {\n horizontalBar: n,\n horizontalBox: nb,\n verticalBar: v,\n verticalBox: vb,\n corner: co,\n };\n self.scrollBox.bar = {\n v: v,\n h: n,\n };\n self.scrollBox.box = {\n v: vb,\n h: nb,\n };\n /// calculate page and dom elements\n self.page = Math.max(\n 1,\n self.visibleRows.length - 3 - self.attributes.pageUpDownOverlap,\n );\n // set canvas drawing related items\n if (!self.isChildGrid) {\n self.canvas.width = self.width * ratio;\n self.canvas.height = self.height * ratio;\n self.ctx.scale(ratio, ratio);\n }\n // resize any open dom elements (input/textarea)\n self.resizeEditInput();\n self.scroll(true);\n if (drawAfterResize) {\n self.draw(true);\n }\n self.dispatchEvent('resize', {});\n return true;\n };\n self.scroll = function (dontDraw) {\n var s = self.getSchema(),\n l = (self.viewData || []).length,\n ch = self.style.cellHeight;\n // go too far in leaps, then get focused\n self.scrollIndexTop = Math.floor(\n l * (self.scrollBox.scrollTop / self.scrollBox.scrollHeight) - 100,\n );\n self.scrollIndexTop = Math.max(self.scrollIndexTop, 0);\n self.scrollPixelTop = self.scrollCache.y[self.scrollIndexTop];\n // sometimes the grid is rendered but the height is zero\n if (self.scrollBox.scrollHeight === 0) {\n self.scrollIndexTop = 0;\n }\n self.scrollPixelTop = 0;\n self.scrollIndexLeft = self.frozenColumn;\n self.scrollPixelLeft = 0;\n while (\n self.scrollPixelTop < self.scrollBox.scrollTop &&\n self.scrollIndexTop < self.viewData.length\n ) {\n // start on index +1 since index 0 was used in \"go too far\" section above\n self.scrollIndexTop += 1;\n self.scrollPixelTop = self.scrollCache.y[self.scrollIndexTop];\n }\n while (\n self.scrollPixelLeft < self.scrollBox.scrollLeft + 1 &&\n self.scrollIndexLeft < s.length\n ) {\n self.scrollPixelLeft = self.scrollCache.x[self.scrollIndexLeft];\n self.scrollIndexLeft += 1;\n }\n if (s.length > 0) {\n self.scrollIndexLeft = Math.max(self.scrollIndexLeft - 1, 0);\n self.scrollPixelLeft -= self.getColumnWidth(\n self.orders.columns[self.scrollIndexLeft],\n );\n }\n if ((self.viewData || []).length > 0) {\n self.scrollIndexTop = Math.max(self.scrollIndexTop - 1, 0);\n self.scrollPixelTop = Math.max(\n self.scrollPixelTop -\n (self.viewData[self.scrollIndexTop]\n ? (self.sizes.rows[self.scrollIndexTop] || ch) +\n (self.sizes.trees[self.scrollIndexTop] || 0)\n : ch) *\n self.scale,\n 0,\n );\n }\n self.ellipsisCache = {};\n if (!dontDraw) {\n self.draw(true);\n }\n //TODO: figure out why this has to be delayed for child grids\n //BUG: wheeling event on 3rd level hierarchy fails to move input box\n requestAnimationFrame(self.resizeEditInput);\n self.dispatchEvent('scroll', {\n top: self.scrollBox.scrollTop,\n left: self.scrollBox.scrollLeft,\n });\n };\n self.mousemove = function (e, overridePos) {\n if (self.contextMenu || self.input) {\n return;\n }\n self.mouse = overridePos || self.getLayerPos(e);\n var ctrl =\n (e.ctrlKey || e.metaKey || self.attributes.persistantSelectionMode) &&\n !self.attributes.singleSelectionMode,\n i,\n s = self.getSchema(),\n dragBounds,\n sBounds,\n x = self.mouse.x,\n y = self.mouse.y,\n cell = self.getCellAt(x, y),\n delta,\n ev = { NativeEvent: e, cell: cell, x: x, y: y },\n previousCell = self.currentCell;\n clearTimeout(self.scrollTimer);\n if (!self.isInGrid({ x: x, y: y })) {\n self.hasFocus = false;\n }\n if (self.dispatchEvent('mousemove', ev)) {\n return;\n }\n if (cell && self.currentCell) {\n self.rowBoundaryCrossed = self.currentCell.rowIndex !== cell.rowIndex;\n self.columnBoundaryCrossed =\n self.currentCell.columnIndex !== cell.columnIndex;\n self.cellBoundaryCrossed =\n self.rowBoundaryCrossed || self.columnBoundaryCrossed;\n ['row', 'column', 'cell'].forEach(function (prefix) {\n if (self[prefix + 'BoundaryCrossed']) {\n ev.cell = previousCell;\n self.dispatchEvent(prefix + 'mouseout', ev);\n ev.cell = cell;\n self.dispatchEvent(prefix + 'mouseover', ev);\n }\n });\n }\n self.currentCell = cell;\n\n self.hovers = {};\n if (!self.draggingItem && cell) {\n self.dragItem = cell;\n self.dragMode = cell.dragContext;\n self.cursor = cell.context;\n if (cell.context === 'cell') {\n self.cursor = 'default';\n self.hovers = {\n rowIndex: cell.rowIndex,\n columnIndex: cell.columnIndex,\n onFilterButton: false,\n };\n if (\n cell.isFilterable &&\n x >\n cell.x +\n cell.width +\n self.canvasOffsetLeft -\n self.style.filterButtonWidth &&\n x < cell.x + cell.width + self.canvasOffsetLeft &&\n y >\n cell.y +\n cell.height +\n self.canvasOffsetTop -\n self.style.filterButtonHeight &&\n y < cell.y + cell.height + self.canvasOffsetTop\n ) {\n self.hovers.onFilterButton = true;\n self.draw();\n }\n }\n if (self.selecting || self.reorderObject) {\n delta = {\n x: Math.abs(self.dragStart.x - x),\n y: Math.abs(self.dragStart.y - y),\n };\n if (self.dragStartObject.columnIndex !== -1 && e.shiftKey) {\n self.dragStartObject = {\n rowIndex: self.activeCell.rowIndex,\n columnIndex: self.activeCell.columnIndex,\n };\n }\n dragBounds = {\n top: Math.min(self.dragStartObject.rowIndex, cell.rowIndex),\n left: Math.min(self.dragStartObject.columnIndex, cell.columnIndex),\n bottom: Math.max(self.dragStartObject.rowIndex, cell.rowIndex),\n right: Math.max(self.dragStartObject.columnIndex, cell.columnIndex),\n };\n if (self.dragStartObject.columnIndex === -1) {\n sBounds = self.getSelectionBounds();\n dragBounds.left = -1;\n dragBounds.right = s.length - 1;\n dragBounds.top = Math.min(sBounds.top, cell.rowIndex);\n dragBounds.bottom = Math.max(sBounds.bottom, cell.rowIndex);\n }\n if (\n self.dragStartObject.rowIndex !== cell.rowIndex ||\n self.dragStartObject.columnIndex !== cell.columnIndex\n ) {\n self.ignoreNextClick = true;\n }\n if (\n self.cellBoundaryCrossed ||\n (delta.x === 0 && delta.y === 0) ||\n self.attributes.selectionMode === 'row'\n ) {\n if (\n (self.attributes.selectionMode === 'row' ||\n self.dragStartObject.columnIndex === -1) &&\n self.rowBoundaryCrossed\n ) {\n self.selectRow(cell.rowIndex, ctrl, null, true);\n } else if (self.attributes.selectionMode !== 'row') {\n if (cell.hovered && self.hovers.onFilterButton) {\n if (cell.openedFilter) {\n cell.openedFilter = false;\n self.selectedFilterButton = {\n columnIndex: -1,\n rowIndex: -1,\n };\n } else {\n self.selectedFilterButton.rowIndex = cell.rowIndex;\n self.selectedFilterButton.columnIndex = cell.columnIndex;\n self.contextmenuEvent(e, {\n x: cell.x + cell.width - self.style.filterButtonWidth,\n y: cell.y + cell.height,\n rect: { left: 0, top: 0 },\n });\n }\n self.draw();\n return;\n } else {\n self.selectedFilterButton = {\n columnIndex: -1,\n rowIndex: -1,\n };\n if (self.hovers.onFilterButton) return;\n if (!self.dragAddToSelection && cell.rowIndex !== undefined) {\n if (\n self.selections[cell.rowIndex] &&\n self.selections[cell.rowIndex].indexOf(cell.columnIndex) !==\n -1\n ) {\n self.selections[cell.rowIndex].splice(\n self.selections[cell.rowIndex].indexOf(cell.columnIndex),\n 1,\n );\n }\n } else {\n self.selections[cell.rowIndex] =\n self.selections[cell.rowIndex] || [];\n if (\n self.selections[cell.rowIndex].indexOf(cell.columnIndex) ===\n -1\n ) {\n self.selections[cell.rowIndex].push(cell.columnIndex);\n var event = {\n selections: self.selections,\n selectedData: self.getSelectedData(),\n selectedCells: self.getSelectedCells(),\n selectionBounds: self.getSelectionBounds(),\n };\n self.dispatchEvent('selectionchanged', event);\n }\n }\n }\n }\n }\n if (\n (!self.selectionBounds ||\n dragBounds.top !== self.selectionBounds.top ||\n dragBounds.left !== self.selectionBounds.left ||\n dragBounds.bottom !== self.selectionBounds.bottom ||\n dragBounds.right !== self.selectionBounds.right) &&\n !ctrl\n ) {\n if (!(cell.hovered && self.hovers.onFilterButton)) {\n self.selections = [];\n }\n if (dragBounds.top === -1) {\n dragBounds.top = 0;\n }\n sBounds = dragBounds;\n if (self.attributes.selectionMode === 'row') {\n for (i = sBounds.top; i <= sBounds.bottom; i += 1) {\n self.selectRow(i, true, null, true);\n }\n } else {\n self.selectArea(sBounds, true);\n if (sBounds.left == -1 && sBounds.top !== sBounds.bottom)\n self.isMultiRowsSelected = true;\n }\n }\n\n if (self.attributes.autoScrollOnMousemove) {\n var movedVertically = delta.y > self.attributes.autoScrollMargin;\n var movedHorizontally = delta.x > self.attributes.autoScrollMargin;\n\n if (movedVertically && !movedHorizontally)\n self.autoScrollZone(e, -1, y, ctrl);\n else if (movedHorizontally && !movedVertically)\n self.autoScrollZone(e, x, -1, ctrl);\n else if (movedHorizontally && movedVertically)\n self.autoScrollZone(e, x, y, ctrl);\n } else {\n self.autoScrollZone(e, x, y, ctrl);\n }\n }\n }\n self.cellBoundaryCrossed = false;\n self.rowBoundaryCrossed = false;\n self.columnBoundaryCrossed = false;\n self.draw(true);\n };\n self.click = function (e, overridePos) {\n var i,\n startingBounds = JSON.stringify(self.getSelectionBounds()),\n ctrl =\n (e.ctrlKey || e.metaKey || self.attributes.persistantSelectionMode) &&\n !self.attributes.singleSelectionMode,\n pos = overridePos || self.getLayerPos(e);\n self.currentCell = self.getCellAt(pos.x, pos.y);\n if (self.currentCell.grid !== undefined) {\n return;\n }\n function checkSelectionChange() {\n var ev,\n sb = self.getSelectionBounds();\n\n if (startingBounds === JSON.stringify(sb)) {\n return;\n }\n ev = {\n selections: self.selections,\n selectionBounds: self.getSelectionBounds(),\n selectedCells: self.getSelectedCells(),\n };\n Object.defineProperty(ev, 'selectedData', {\n get: function () {\n return self.getSelectedData();\n },\n });\n self.dispatchEvent('selectionchanged', ev);\n }\n if (self.input) {\n self.endEdit();\n }\n if (self.ignoreNextClick) {\n self.ignoreNextClick = false;\n return;\n }\n i = self.currentCell;\n if (\n self.dispatchEvent('click', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n if (!self.hasFocus) {\n return;\n }\n if (\n ['rowHeaderCell', 'columnHeaderCell'].indexOf(self.currentCell.style) ===\n -1 &&\n !ctrl\n ) {\n if (!self.hovers.onFilterButton) {\n self.setActiveCell(i.columnIndex, i.rowIndex);\n }\n }\n if (self.currentCell.context === 'cell') {\n if (self.currentCell.style === 'cornerCell') {\n self.selectAll();\n self.draw();\n checkSelectionChange();\n return;\n }\n if (self.currentCell.style === 'columnHeaderCell') {\n if (self.attributes.columnHeaderClickBehavior === 'sort') {\n if (self.orderBy === i.header.name) {\n self.orderDirection =\n self.orderDirection === 'asc' ? 'desc' : 'asc';\n } else {\n self.orderDirection = 'asc';\n }\n self.order(i.header.name, self.orderDirection);\n checkSelectionChange();\n return;\n }\n }\n self.selections[i.rowIndex] = self.selections[i.rowIndex] || [];\n if (\n self.attributes.selectionMode === 'row' ||\n self.currentCell.style === 'rowHeaderCell'\n ) {\n if (\n self.currentCell.style === 'rowHeaderCell' &&\n self.attributes.tree &&\n pos.x > 0 &&\n pos.x - self.currentCell.x <\n self.style.treeArrowWidth +\n self.style.treeArrowMarginLeft +\n self.style.treeArrowMarginRight +\n self.style.treeArrowClickRadius &&\n pos.y - self.currentCell.y <\n self.style.treeArrowHeight +\n self.style.treeArrowMarginTop +\n self.style.treeArrowClickRadius &&\n pos.y > 0\n ) {\n self.toggleTree(i.rowIndex);\n return;\n }\n }\n if (e.shiftKey && !ctrl) {\n self.selectionBounds = self.getSelectionBounds();\n self.selectArea(undefined, false);\n }\n }\n checkSelectionChange();\n self.draw(true);\n };\n self.dragResizeColumn = function (e) {\n var pos, x, y;\n pos = self.getLayerPos(e);\n x = self.resizingStartingWidth + pos.x - self.dragStart.x;\n y = self.resizingStartingHeight + pos.y - self.dragStart.y;\n if (x < self.style.minColumnWidth) {\n x = self.style.minColumnWidth;\n }\n if (y < self.style.minRowHeight) {\n y = self.style.minRowHeight;\n }\n if (\n self.dispatchEvent('resizecolumn', {\n x: x,\n y: y,\n draggingItem: self.draggingItem,\n })\n ) {\n return false;\n }\n if (\n self.scrollBox.scrollLeft >\n self.scrollBox.scrollWidth - self.attributes.resizeScrollZone &&\n self.dragMode === 'ew-resize'\n ) {\n self.resize(true);\n self.scrollBox.scrollLeft += x;\n }\n if (self.dragMode === 'ew-resize') {\n self.sizes.columns[\n self.draggingItem.header.style === 'rowHeaderCell'\n ? 'cornerCell'\n : self.draggingItem.sortColumnIndex\n ] = x;\n if (\n ['rowHeaderCell', 'cornerCell'].indexOf(\n self.draggingItem.header.style,\n ) !== -1\n ) {\n self.resize(true);\n }\n self.resizeChildGrids();\n return;\n }\n if (self.dragMode === 'ns-resize') {\n if (self.draggingItem.rowOpen) {\n self.sizes.trees[self.draggingItem.rowIndex] = y;\n } else if (self.attributes.globalRowResize) {\n self.style.cellHeight = y;\n } else {\n self.sizes.rows[self.draggingItem.rowIndex] = y;\n }\n self.dispatchEvent('resizerow', { row: y });\n self.resizeChildGrids();\n return;\n }\n self.ellipsisCache = {};\n };\n self.stopDragResize = function () {\n self.resize();\n document.body.removeEventListener(\n 'mousemove',\n self.dragResizeColumn,\n false,\n );\n document.body.removeEventListener('mouseup', self.stopDragResize, false);\n self.setStorageData();\n self.draw(true);\n self.ignoreNextClick = true;\n };\n self.scrollGrid = function (e) {\n var pos = self.getLayerPos(e);\n if (\n self.attributes.scrollPointerLock &&\n self.pointerLockPosition &&\n ['horizontal-scroll-box', 'vertical-scroll-box'].indexOf(\n self.scrollStartMode,\n ) !== -1\n ) {\n self.pointerLockPosition.x += e.movementX;\n self.pointerLockPosition.y += e.movementY;\n self.pointerLockPosition.x = Math.min(\n self.width - self.style.scrollBarWidth,\n Math.max(0, self.pointerLockPosition.x),\n );\n self.pointerLockPosition.y = Math.min(\n self.height - self.style.scrollBarWidth,\n Math.max(0, self.pointerLockPosition.y),\n );\n pos = self.pointerLockPosition;\n }\n self.scrollMode = self.getCellAt(pos.x, pos.y).context;\n if (\n self.scrollMode === 'horizontal-scroll-box' &&\n self.scrollStartMode !== 'horizontal-scroll-box'\n ) {\n self.scrollStartMode = 'horizontal-scroll-box';\n self.dragStart = pos;\n self.scrollStart.left = self.scrollBox.scrollLeft;\n clearTimeout(self.scrollTimer);\n return;\n }\n if (\n self.scrollMode === 'vertical-scroll-box' &&\n self.scrollStartMode !== 'vertical-scroll-box'\n ) {\n self.scrollStartMode = 'vertical-scroll-box';\n self.dragStart = pos;\n self.scrollStart.top = self.scrollBox.scrollTop;\n clearTimeout(self.scrollTimer);\n return;\n }\n if (\n self.scrollStartMode === 'vertical-scroll-box' &&\n self.scrollMode !== 'vertical-scroll-box'\n ) {\n self.scrollMode = 'vertical-scroll-box';\n }\n if (\n self.scrollStartMode === 'horizontal-scroll-box' &&\n self.scrollMode !== 'horizontal-scroll-box'\n ) {\n self.scrollMode = 'horizontal-scroll-box';\n }\n clearTimeout(self.scrollTimer);\n if (self.scrollModes.indexOf(self.scrollMode) === -1) {\n return;\n }\n if (self.scrollMode === 'vertical-scroll-box') {\n self.scrollBox.scrollTop =\n self.scrollStart.top +\n (pos.y - self.dragStart.y) / self.scrollBox.heightBoxRatio;\n } else if (self.scrollMode === 'vertical-scroll-top') {\n self.scrollBox.scrollTop -= self.page * self.style.cellHeight;\n self.scrollTimer = setTimeout(\n self.scrollGrid,\n self.attributes.scrollRepeatRate,\n e,\n );\n } else if (self.scrollMode === 'vertical-scroll-bottom') {\n self.scrollBox.scrollTop += self.page * self.style.cellHeight;\n self.scrollTimer = setTimeout(\n self.scrollGrid,\n self.attributes.scrollRepeatRate,\n e,\n );\n }\n if (self.scrollMode === 'horizontal-scroll-box') {\n self.scrollBox.scrollLeft =\n self.scrollStart.left +\n (pos.x - self.dragStart.x) / self.scrollBox.widthBoxRatio;\n } else if (self.scrollMode === 'horizontal-scroll-right') {\n self.scrollBox.scrollLeft += self.attributes.selectionScrollIncrement;\n self.scrollTimer = setTimeout(\n self.scrollGrid,\n self.attributes.scrollRepeatRate,\n e,\n );\n } else if (self.scrollMode === 'horizontal-scroll-left') {\n self.scrollBox.scrollLeft -= self.attributes.selectionScrollIncrement;\n self.scrollTimer = setTimeout(\n self.scrollGrid,\n self.attributes.scrollRepeatRate,\n e,\n );\n }\n };\n self.stopScrollGrid = function () {\n clearTimeout(self.scrollTimer);\n if (document.exitPointerLock) {\n document.exitPointerLock();\n }\n document.removeEventListener('mousemove', self.scrollGrid, false);\n };\n self.dragReorder = function (e) {\n var pos,\n x,\n y,\n columReorder = self.dragMode === 'column-reorder',\n rowReorder = self.dragMode === 'row-reorder';\n pos = self.getLayerPos(e);\n x = pos.x - self.dragStart.x;\n y = pos.y - self.dragStart.y;\n if (!self.attributes.allowColumnReordering && columReorder) {\n return;\n }\n if (!self.attributes.allowRowReordering && rowReorder) {\n return;\n }\n if ((e.ctrlKey || e.metaKey || e.shiftKey) && self.reorderObject) {\n if (\n self.dragMode === 'column-reorder' &&\n !self.isMultiColumnsSelected(self.draggingItem.header.index)\n ) {\n self.selectColumn(self.draggingItem.header.index, false, false);\n }\n }\n if (\n self.dispatchEvent('reordering', {\n NativeEvent: e,\n source: self.dragStartObject,\n target: self.currentCell,\n dragMode: self.dragMode,\n })\n ) {\n return;\n }\n if (\n Math.abs(x) > self.attributes.reorderDeadZone ||\n Math.abs(y) > self.attributes.reorderDeadZone\n ) {\n self.reorderObject = self.draggingItem;\n if (self.isMultiRowsSelected)\n self.reorderObject = self.getVisibleCellByIndex(\n -1,\n self.activeCell.rowIndex,\n );\n self.reorderTarget = self.currentCell;\n self.reorderObject.dragOffset = {\n x: x,\n y: y,\n };\n self.autoScrollZone(\n e,\n columReorder ? pos.x : -1,\n rowReorder ? pos.y : -1,\n false,\n );\n }\n };\n self.stopDragReorder = function (e) {\n var oIndex,\n tIndex,\n odata = [],\n cr = {\n 'row-reorder': self.orders.rows,\n 'column-reorder': self.orders.columns,\n },\n i = {\n 'row-reorder': 'rowIndex',\n 'column-reorder': 'sortColumnIndex',\n }[self.dragMode];\n document.body.removeEventListener('mousemove', self.dragReorder, false);\n document.body.removeEventListener('mouseup', self.stopDragReorder, false);\n if (\n self.reorderObject &&\n self.reorderTarget &&\n ((self.dragMode === 'column-reorder' &&\n self.reorderTarget.sortColumnIndex > -1 &&\n self.reorderTarget.sortColumnIndex < self.getSchema().length) ||\n (self.dragMode === 'row-reorder' &&\n self.reorderTarget.rowIndex > -1 &&\n self.reorderTarget.rowIndex < self.viewData.length)) &&\n self.reorderObject[i] !== self.reorderTarget[i] &&\n !self.dispatchEvent('reorder', {\n NativeEvent: e,\n source: self.reorderObject,\n target: self.reorderTarget,\n dragMode: self.dragMode,\n })\n ) {\n self.ignoreNextClick = true;\n oIndex = cr[self.dragMode].indexOf(self.reorderObject[i]);\n tIndex = cr[self.dragMode].indexOf(self.reorderTarget[i]);\n if (self.dragMode === 'column-reorder') {\n var sortColumnIndices = [];\n var seletedColumnIndices = [];\n if (self.selections[0]) {\n self.selections[0].forEach(function (value) {\n sortColumnIndices.push(self.orders.columns[value]);\n });\n }\n var deleteCount = sortColumnIndices.length;\n cr[self.dragMode].splice(oIndex, deleteCount);\n if (tIndex > oIndex) tIndex = tIndex - (deleteCount - 1);\n for (var i = 0; i < sortColumnIndices.length; i++) {\n seletedColumnIndices.push(tIndex + i);\n cr[self.dragMode].splice(tIndex + i, 0, sortColumnIndices[i]);\n }\n self.orders.columns = cr[self.dragMode];\n self.viewData.forEach(function (row, rowIndex) {\n self.selections[rowIndex] = seletedColumnIndices;\n });\n } else {\n var selectedRows = [];\n self.selections.forEach(function (row, rowIndex) {\n if (row) {\n selectedRows.push(row);\n odata.push(self.viewData[rowIndex]);\n }\n });\n self.viewData.splice(oIndex, odata.length);\n self.selections = [];\n if (tIndex > oIndex) tIndex = tIndex - (odata.length - 1);\n self.activeCell.rowIndex = tIndex;\n for (var i = 0; i < odata.length; i++) {\n self.viewData.splice(tIndex + i, 0, odata[i]);\n self.selections[tIndex + i] = selectedRows[i];\n }\n }\n self.resize();\n self.setStorageData();\n }\n self.reorderObject = undefined;\n self.reorderTarget = undefined;\n self.draw(true);\n };\n self.dragMove = function (e) {\n if (\n self.dispatchEvent('moving', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n var pos = self.getLayerPos(e);\n self.moveOffset = {\n x: self.currentCell.columnIndex - self.dragStartObject.columnIndex,\n y: self.currentCell.rowIndex - self.dragStartObject.rowIndex,\n };\n if (\n Math.abs(pos.x) > self.attributes.reorderDeadZone ||\n Math.abs(pos.y) > self.attributes.reorderDeadZone\n ) {\n setTimeout(function () {\n self.autoScrollZone(e, pos.x, pos.y, false);\n }, 1);\n }\n };\n self.stopDragMove = function (e) {\n document.body.removeEventListener('mousemove', self.dragMove, false);\n document.body.removeEventListener('mouseup', self.stopDragMove, false);\n var b = self.getSelectionBounds();\n if (\n self.dispatchEvent('endmove', { NativeEvent: e, cell: self.currentCell })\n ) {\n self.movingSelection = undefined;\n self.moveOffset = undefined;\n self.draw(true);\n return;\n }\n if (self.moveOffset) {\n self.moveTo(\n self.movingSelection,\n b.left + self.moveOffset.x,\n b.top + self.moveOffset.y,\n );\n self.moveSelection(self.moveOffset.x, self.moveOffset.y);\n }\n self.movingSelection = undefined;\n self.moveOffset = undefined;\n self.draw(true);\n };\n self.freezeMove = function (e) {\n if (\n self.dispatchEvent('freezemoving', {\n NativeEvent: e,\n cell: self.currentCell,\n })\n ) {\n return;\n }\n var pos = self.getLayerPos(e),\n bm = self.style.gridBorderCollapse === 'collapse' ? 1 : 2,\n columnHeaderCellBorder = self.style.columnHeaderCellBorderWidth * bm,\n columnHeaderCellHeight = self.getColumnHeaderCellHeight(),\n rowHeaderCellWidth = self.getRowHeaderCellWidth();\n\n self.ignoreNextClick = true;\n self.freezeMarkerPosition = pos;\n if (\n self.currentCell &&\n self.currentCell.rowIndex !== undefined &&\n self.dragMode === 'frozen-row-marker'\n ) {\n self.scrollBox.scrollTop = 0;\n self.frozenRow = self.currentCell.rowIndex + 1;\n self.scrollBox.bar.v.y =\n columnHeaderCellHeight +\n columnHeaderCellBorder +\n self.scrollCache.y[self.frozenRow];\n self.scrollBox.box.v.y =\n columnHeaderCellHeight +\n columnHeaderCellBorder +\n self.scrollCache.y[self.frozenRow];\n var dataHeight = self.scrollCache.y[self.scrollCache.y.length - 1];\n self.scrollBox.heightBoxRatio =\n (self.scrollBox.height -\n columnHeaderCellHeight -\n self.scrollCache.y[self.frozenRow]) /\n dataHeight;\n self.scrollBox.scrollBoxHeight =\n self.scrollBox.height * self.scrollBox.heightBoxRatio -\n self.style.scrollBarWidth;\n self.scrollBox.scrollBoxHeight = Math.max(\n self.scrollBox.scrollBoxHeight,\n self.style.scrollBarBoxMinSize,\n );\n self.scrollBox.box.v.height = self.scrollBox.scrollBoxHeight;\n }\n if (\n self.currentCell &&\n self.currentCell.columnIndex !== undefined &&\n self.dragMode === 'frozen-column-marker'\n ) {\n self.scrollBox.scrollLeft = 0;\n self.frozenColumn = self.currentCell.columnIndex + 1;\n self.scrollBox.bar.h.x =\n rowHeaderCellWidth + self.scrollCache.x[self.frozenColumn - 1];\n self.scrollBox.box.h.x =\n rowHeaderCellWidth + self.scrollCache.x[self.frozenColumn - 1];\n var dataWidth = self.scrollCache.x[self.scrollCache.x.length - 1];\n self.scrollBox.widthBoxRatio =\n (self.scrollBox.width - self.scrollCache.x[self.frozenColumn - 1]) /\n dataWidth;\n self.scrollBox.scrollBoxWidth =\n self.scrollBox.width * self.scrollBox.widthBoxRatio -\n self.style.scrollBarWidth;\n self.scrollBox.scrollBoxWidth = Math.max(\n self.scrollBox.scrollBoxWidth,\n self.style.scrollBarBoxMinSize,\n );\n self.scrollBox.box.h.width = self.scrollBox.scrollBoxWidth;\n }\n if (\n Math.abs(pos.x) > self.attributes.reorderDeadZone ||\n Math.abs(pos.y) > self.attributes.reorderDeadZone\n ) {\n setTimeout(function () {\n self.autoScrollZone(e, pos.x, pos.y, false);\n }, 1);\n }\n };\n self.stopFreezeMove = function (e) {\n document.body.removeEventListener('mousemove', self.freezeMove, false);\n document.body.removeEventListener('mouseup', self.stopFreezeMove, false);\n self.freezeMarkerPosition = undefined;\n if (\n self.dispatchEvent('endfreezemove', {\n NativeEvent: e,\n cell: self.currentCell,\n })\n ) {\n self.frozenRow = self.startFreezeMove.x;\n self.frozenColumn = self.startFreezeMove.y;\n self.draw(true);\n return;\n }\n self.draw(true);\n };\n self.mousedown = function (e, overridePos) {\n self.lastMouseDownTarget = e.target;\n if (\n self.dispatchEvent('mousedown', {\n NativeEvent: e,\n cell: self.currentCell,\n })\n ) {\n return;\n }\n if (!self.hasFocus) {\n return;\n }\n if (e.button === 2 || self.input) {\n return;\n }\n var ctrl = e.ctrlKey || e.metaKey,\n move = /-move/.test(self.dragMode),\n freeze = /frozen-row-marker|frozen-column-marker/.test(self.dragMode),\n resize = /-resize/.test(self.dragMode);\n self.dragStart = overridePos || self.getLayerPos(e);\n self.scrollStart = {\n left: self.scrollBox.scrollLeft,\n top: self.scrollBox.scrollTop,\n };\n self.dragStartObject = self.getCellAt(self.dragStart.x, self.dragStart.y);\n self.dragAddToSelection = !self.dragStartObject.selected;\n if (\n !ctrl &&\n !e.shiftKey &&\n !/(vertical|horizontal)-scroll-(bar|box)/.test(\n self.dragStartObject.context,\n ) &&\n self.currentCell &&\n !self.currentCell.isColumnHeader &&\n !move &&\n !freeze &&\n !resize\n ) {\n if (\n !(self.dragMode == 'row-reorder' && self.isMultiRowsSelected) &&\n !(self.currentCell.hovered && self.hovers.onFilterButton)\n ) {\n self.selections = [];\n }\n }\n if (self.dragStartObject.isGrid) {\n return;\n }\n if (self.scrollModes.indexOf(self.dragStartObject.context) !== -1) {\n self.scrollMode = self.dragStartObject.context;\n self.scrollStartMode = self.dragStartObject.context;\n self.scrollGrid(e);\n if (\n self.attributes.scrollPointerLock &&\n ['horizontal-scroll-box', 'vertical-scroll-box'].indexOf(\n self.scrollStartMode,\n ) !== -1\n ) {\n self.pointerLockPosition = {\n x: self.dragStart.x,\n y: self.dragStart.y,\n };\n self.canvas.requestPointerLock();\n }\n document.addEventListener('mousemove', self.scrollGrid, false);\n document.addEventListener('mouseup', self.stopScrollGrid, false);\n self.ignoreNextClick = true;\n return;\n }\n if (self.dragMode === 'cell') {\n self.selecting = true;\n if (\n (self.attributes.selectionMode === 'row' ||\n self.dragStartObject.columnIndex === -1) &&\n self.dragStartObject.rowIndex > -1\n ) {\n self.selectRow(self.dragStartObject.rowIndex, ctrl, null);\n } else if (self.attributes.selectionMode !== 'row') {\n self.mousemove(e);\n }\n return;\n }\n if (move) {\n self.draggingItem = self.dragItem;\n self.movingSelection = self.selections.concat([]);\n self.dragging = self.dragStartObject;\n if (\n self.dispatchEvent('beginmove', {\n NativeEvent: e,\n cell: self.currentCell,\n })\n ) {\n return;\n }\n document.body.addEventListener('mousemove', self.dragMove, false);\n document.body.addEventListener('mouseup', self.stopDragMove, false);\n return self.mousemove(e);\n }\n if (freeze) {\n self.draggingItem = self.dragItem;\n self.startFreezeMove = {\n x: self.frozenRow,\n y: self.frozenColumn,\n };\n if (self.dispatchEvent('beginfreezemove', { NativeEvent: e })) {\n return;\n }\n document.body.addEventListener('mousemove', self.freezeMove, false);\n document.body.addEventListener('mouseup', self.stopFreezeMove, false);\n return self.mousemove(e);\n }\n if (resize) {\n self.draggingItem = self.dragItem;\n if (self.draggingItem.rowOpen) {\n self.resizingStartingHeight =\n self.sizes.trees[self.draggingItem.rowIndex];\n } else {\n self.resizingStartingHeight =\n self.sizes.rows[self.draggingItem.rowIndex] || self.style.cellHeight;\n }\n self.resizingStartingWidth =\n self.sizes.columns[\n self.draggingItem.header.style === 'rowHeaderCell'\n ? 'cornerCell'\n : self.draggingItem.sortColumnIndex\n ] || self.draggingItem.width;\n document.body.addEventListener('mousemove', self.dragResizeColumn, false);\n document.body.addEventListener('mouseup', self.stopDragResize, false);\n return;\n }\n if (['row-reorder', 'column-reorder'].indexOf(self.dragMode) !== -1) {\n self.draggingItem = self.dragStartObject;\n if (\n self.dragMode === 'column-reorder' &&\n !self.isMultiColumnsSelected(self.currentCell.header.index)\n ) {\n self.selectColumn(self.currentCell.header.index, ctrl, e.shiftKey);\n } else if (self.dragMode === 'row-reorder' && !self.isMultiRowsSelected) {\n self.selectRow(self.dragStartObject.rowIndex, ctrl, null);\n }\n document.body.addEventListener('mousemove', self.dragReorder, false);\n document.body.addEventListener('mouseup', self.stopDragReorder, false);\n return;\n }\n };\n self.mouseup = function (e) {\n clearTimeout(self.scrollTimer);\n self.cellBoundaryCrossed = true;\n self.rowBoundaryCrossed = true;\n self.columnBoundaryCrossed = true;\n self.selecting = undefined;\n self.draggingItem = undefined;\n self.dragStartObject = undefined;\n if (\n self.dispatchEvent('mouseup', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n if (!self.hasFocus && e.target !== self.canvas) {\n return;\n }\n if (self.currentCell && self.currentCell.grid !== undefined) {\n return;\n }\n if (self.contextMenu || self.input) {\n return;\n }\n if (self.dragStart && self.isInGrid(self.dragStart)) {\n self.controlInput.focus();\n }\n e.preventDefault();\n };\n // gets the horizontal adjacent cells as well as first/last based on column visibility\n self.getAdjacentCells = function () {\n var x,\n i,\n s = self.getSchema(),\n o = {};\n for (x = 0; x < s.length; x += 1) {\n i = self.orders.columns[x];\n if (!s[i].hidden) {\n if (o.first === undefined) {\n o.first = x;\n o.left = x;\n }\n o.last = x;\n if (x > self.activeCell.columnIndex && o.right === undefined) {\n o.right = x;\n }\n if (x < self.activeCell.columnIndex) {\n o.left = x;\n }\n }\n }\n if (o.right === undefined) {\n o.right = o.last;\n }\n return o;\n };\n self.keydown = function (e) {\n var i,\n ev,\n adjacentCells = self.getAdjacentCells(),\n x = Math.max(self.activeCell.columnIndex, 0),\n y = Math.max(self.activeCell.rowIndex, 0),\n ctrl = e.ctrlKey || e.metaKey,\n last = self.viewData.length - 1,\n s = self.getSchema(),\n cols = s.length - 1;\n\n var defaultPrevented = self.dispatchEvent('keydown', {\n NativeEvent: e,\n cell: self.currentCell,\n });\n\n if (defaultPrevented) {\n return;\n }\n\n if (!self.attributes.keepFocusOnMouseOut && !self.hasFocus) {\n return;\n }\n\n // If a user starts typing content, switch to \"Enter\" mode\n if (isPrintableKeyEvent(e) && !ctrl) {\n return self.beginEditAt(x, y, e, true);\n }\n\n if (self.attributes.showNewRow) {\n last += 1;\n }\n\n if (e.key === 'Tab') {\n e.preventDefault();\n }\n\n if (e.key === 'Escape') {\n self.selectNone();\n } else if (ctrl && e.key === 'a') {\n self.selectAll();\n } else if (['Backspace', 'Delete'].includes(e.key)) {\n self.deleteSelectedData();\n } else if (e.key === 'ArrowDown') {\n y += 1;\n } else if (e.key === 'ArrowUp') {\n y -= 1;\n } else if (\n (e.key === 'ArrowLeft' && !ctrl) ||\n (e.shiftKey && e.key === 'Tab')\n ) {\n x = adjacentCells.left;\n } else if (\n (e.key === 'ArrowRight' && !ctrl) ||\n (!e.shiftKey && e.key === 'Tab')\n ) {\n x = adjacentCells.right;\n } else if (e.key === 'PageUp') {\n y -= self.page;\n e.preventDefault();\n } else if (e.key === 'PageDown') {\n y += self.page;\n e.preventDefault();\n } else if (e.key === 'Home' || (ctrl && e.key === 'ArrowUp')) {\n y = 0;\n } else if (e.key === 'End' || (ctrl && e.key === 'ArrowDown')) {\n y = self.viewData.length - 1;\n } else if (ctrl && e.key === 'ArrowRight') {\n x = adjacentCells.last;\n } else if (ctrl && e.key === 'ArrowLeft') {\n x = adjacentCells.first;\n }\n\n if (e.key === 'Enter') {\n e.preventDefault();\n return self.beginEditAt(x, y, e);\n }\n if (x < 0 || Number.isNaN(x)) {\n x = adjacentCells.first;\n }\n if (y > last) {\n y = last;\n }\n if (y < 0 || Number.isNaN(y)) {\n y = 0;\n }\n if (x > cols) {\n x = adjacentCells.last;\n }\n\n // TODO - most likely some column order related bugs in key based selection\n // Arrows\n var isArrowKey = [\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowRight',\n 'ArrowDown',\n ].includes(e.key);\n\n // Shrinking and expanding selection using shift and arrow keys\n if (e.shiftKey && isArrowKey) {\n const firstSelectedRowIndex = self.selections.findIndex((el) => !!el);\n const firstSelectedRow = self.selections[firstSelectedRowIndex];\n const firstSelectedColumnIndex = firstSelectedRow[0];\n const lastSelectedColumn = firstSelectedRow[firstSelectedRow.length - 1];\n const yAtTop = y === 0;\n const yAtBottom = y === last;\n const xAtLeft = x === 0;\n const xAtRight = x === cols;\n\n if (e.key === 'ArrowUp') {\n if (y + 1 > firstSelectedRowIndex && !yAtTop) {\n self.selections.pop();\n } else if (y < firstSelectedRowIndex) {\n self.selections[y] = self.selections[y] || [];\n self.selections[y].push(x);\n } else if (yAtTop && self.activeCell.rowIndex !== 0) {\n self.selections.pop();\n }\n }\n\n if (e.key === 'ArrowDown') {\n if (y > firstSelectedRowIndex && y === self.selections.length) {\n self.selections[y] = self.selections[y] || [];\n self.selections[y].push(x);\n } else if (y >= firstSelectedRowIndex && !yAtBottom) {\n delete self.selections[y - 1];\n } else if (yAtBottom && self.activeCell.rowIndex !== last) {\n delete self.selections[y - 1];\n }\n }\n\n for (const selection of self.selections) {\n if (e.key === 'ArrowRight' && selection) {\n if (x > lastSelectedColumn) {\n selection.push(x);\n } else if (x <= lastSelectedColumn && !xAtRight) {\n selection.shift();\n } else if (xAtRight && self.activeCell.columnIndex !== cols) {\n selection.shift();\n }\n }\n\n if (e.key === 'ArrowLeft' && selection) {\n if (x < firstSelectedColumnIndex) {\n selection.unshift(x);\n } else if (x >= firstSelectedColumnIndex && !xAtLeft) {\n selection.pop();\n } else if (xAtLeft && self.activeCell.columnIndex !== 0) {\n selection.pop();\n }\n }\n }\n\n self.selectionBounds = self.getSelectionBounds();\n self.selectArea(undefined, ctrl);\n\n self.draw(true);\n }\n\n if (x !== self.activeCell.columnIndex || y !== self.activeCell.rowIndex) {\n self.scrollIntoView(\n x !== self.activeCell.columnIndex ? x : undefined,\n y !== self.activeCell.rowIndex && !Number.isNaN(y) ? y : undefined,\n );\n\n self.setActiveCell(x, y);\n if (!e.shiftKey && self.attributes.selectionFollowsActiveCell) {\n if (!ctrl) {\n self.selections = [];\n }\n self.selections[y] = self.selections[y] || [];\n self.selections[y].push(x);\n ev = {\n selectedData: self.getSelectedData(),\n selections: self.selections,\n selectionBounds: self.getSelectionBounds(),\n selectedCells: self.getSelectedCells(),\n };\n Object.defineProperty(ev, 'selectedData', {\n get: function () {\n return self.getSelectedData();\n },\n });\n self.dispatchEvent('selectionchanged', ev);\n }\n self.draw(true);\n }\n };\n self.keyup = function (e) {\n if (\n self.dispatchEvent('keyup', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n if (!self.hasFocus) {\n return;\n }\n };\n self.keypress = function (e) {\n if (!self.hasFocus) {\n return;\n }\n if (\n self.dispatchEvent('keypress', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n };\n self.dblclick = function (e) {\n if (\n self.dispatchEvent('dblclick', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n if (!self.hasFocus) {\n return;\n }\n if (\n self.currentCell.context === 'ew-resize' &&\n self.currentCell.style === 'columnHeaderCell'\n ) {\n self.fitColumnToValues(self.currentCell.header.name);\n } else if (\n self.currentCell.context === 'ew-resize' &&\n self.currentCell.style === 'cornerCell'\n ) {\n self.autosize();\n } else if (\n ['cell', 'activeCell'].includes(self.currentCell.style) &&\n !self.hovers.onFilterButton\n ) {\n self.beginEditAt(self.currentCell.columnIndex, self.currentCell.rowIndex);\n }\n };\n self.scrollWheel = function (e) {\n var l,\n t,\n ev = e,\n deltaX = e.deltaX === undefined ? e.NativeEvent.deltaX : e.deltaX,\n deltaY = e.deltaY === undefined ? e.NativeEvent.deltaY : e.deltaY,\n deltaMode =\n e.deltaMode === undefined ? e.NativeEvent.deltaMode : e.deltaMode;\n var e = e.NativeEvent || e;\n if (wheeling) {\n ev.preventDefault(e);\n return;\n }\n if (self.dispatchEvent('wheel', { NativeEvent: e })) {\n return;\n }\n self.touchHaltAnimation = true;\n l = self.scrollBox.scrollLeft;\n t = self.scrollBox.scrollTop;\n if (self.hasFocus) {\n //BUG Issue 42: https://github.com/TonyGermaneri/canvas-datagrid/issues/42\n //https://stackoverflow.com/questions/20110224/what-is-the-height-of-a-line-in-a-wheel-event-deltamode-dom-delta-line\n if (deltaMode === 1) {\n // line mode = 17 pixels per line\n deltaY = deltaY * 17;\n }\n if (\n (self.scrollBox.scrollTop < self.scrollBox.scrollHeight &&\n deltaY > 0) ||\n (self.scrollBox.scrollLeft < self.scrollBox.scrollWidth &&\n deltaX > 0) ||\n (self.scrollBox.scrollTop > 0 && deltaY < 0) ||\n (self.scrollBox.scrollLeft > 0 && deltaX < 0)\n ) {\n ev.preventDefault(e);\n }\n wheeling = setTimeout(function () {\n wheeling = undefined;\n self.scrollBox.scrollTo(deltaX + l, deltaY + t);\n }, 1);\n }\n };\n self.pasteData = function (\n pasteValue,\n mimeType,\n startRowIndex,\n startColIndex,\n ) {\n if (mimeType === 'text/html' && !isSupportedHtml(pasteValue)) {\n console.warn(\n 'Unrecognized HTML format. HTML must be a simple table, e.g.: <table><tr><td>data</td></tr></table>.',\n );\n console.warn(\n 'Data with the mime type text/html not in this format will not be imported as row data.',\n );\n\n return;\n }\n var schema = self.getSchema();\n var rows = parseData(pasteValue, mimeType);\n\n // selected cell. This mimics Excel's paste functionality, and works\n // as a poor-man's fill-down.\n if (rows.length === 1 && rows[0].length === 1) {\n var cellData = rows[0][0].value.map((item) => item.value).join();\n\n self.forEachSelectedCell(function (data, rowIndex, colName) {\n data[rowIndex][colName] = cellData;\n });\n } else {\n var selections = [];\n for (var rowIndex = 0; rowIndex < rows.length; rowIndex++) {\n // Rows may have been moved by user, so get the actual row index\n // (instead of the row index at which the row is rendered):\n var realRowIndex = self.orders.rows[startRowIndex + rowIndex];\n var cells = rows[rowIndex];\n\n var existingRowData = self.viewData[realRowIndex];\n var newRowData = Object.assign({}, existingRowData);\n\n selections[realRowIndex] = [];\n\n for (var colIndex = 0; colIndex < cells.length; colIndex++) {\n var column = schema[startColIndex + colIndex];\n\n if (!column) {\n console.warn('Paste data exceeded grid bounds. Skipping.');\n continue;\n }\n\n var columnName = column.name;\n var cellData = cells[colIndex].value\n .map((item) => item.value)\n .join('');\n\n if (cellData === undefined || cellData === null) {\n newRowData[columnName] = existingRowData[columnName];\n continue;\n }\n\n selections[realRowIndex].push(startColIndex + colIndex);\n\n newRowData[columnName] = cellData;\n }\n\n self.originalData[self.boundRowIndexMap.get(realRowIndex)] = newRowData;\n // Update view date here to avoid a full refresh of `viewData`.\n // To stay in line with Excel and Google Sheet behaviour,\n // don't perform a full refresh (and filter/sort results)\n // as this would make any pasted values disappear and/or suddenly change position.\n self.viewData[realRowIndex] = newRowData;\n }\n self.selections = selections;\n }\n\n // selections is a sparse array, so we condense:\n var affectedCells = [];\n\n self.selections.forEach(function (row, rowIndex) {\n if (rowIndex === undefined) return;\n\n row.forEach(function (columnIndex) {\n affectedCells.push([\n rowIndex,\n columnIndex,\n self.getBoundRowIndexFromViewRowIndex(rowIndex),\n self.getBoundColumnIndexFromViewColumnIndex(columnIndex),\n ]);\n });\n });\n\n self.dispatchEvent('afterpaste', {\n cells: affectedCells,\n });\n\n return rows.length;\n };\n self.getNextVisibleColumnIndex = function (visibleColumnIndex) {\n var x,\n s = self.getVisibleSchema();\n for (x = 0; x < s.length; x += 1) {\n if (s[x].columnIndex === visibleColumnIndex) {\n return s[x + 1].columnIndex;\n }\n }\n return -1;\n };\n self.getVisibleColumnIndexOf = function (columnIndex) {\n var x,\n s = self.getVisibleSchema();\n for (x = 0; x < s.length; x += 1) {\n if (s[x].columnIndex === columnIndex) {\n return x;\n }\n }\n return -1;\n };\n self.paste = function (event) {\n if (!self.attributes.editable) {\n return;\n }\n\n var defaultPrevented = self.dispatchEvent('beforepaste', {\n NativeEvent: event,\n });\n\n if (defaultPrevented) {\n return;\n }\n\n var clipboardItems = new Map(\n Array.from(event.clipboardData.items).map((item) => [item.type, item]),\n );\n\n // Supported MIME types, in order of preference:\n var supportedMimeTypes = ['text/html', 'text/csv', 'text/plain'];\n\n // The clipboard will often contain the same data in multiple formats,\n // which can be used depending on the context in which it's pasted. Here\n // we'll prefere more structured (HTML/CSV) over less structured, when\n // available, so we try to find those first:\n var pasteableItems = supportedMimeTypes\n .map((mimeType) => clipboardItems.get(mimeType))\n .filter((item) => !!item); // filter out not-found MIME types (= undefined)\n\n if (pasteableItems.length === 0) {\n console.warn(\n 'Cannot find supported clipboard data type. Supported types are:',\n supportedMimeTypes.join(', '),\n );\n return;\n }\n\n var itemToPaste = pasteableItems[0];\n\n let startCell = [];\n for (\n let rowIndex = 0, len = self.selections.length;\n rowIndex < len;\n rowIndex++\n ) {\n const row = self.selections[rowIndex];\n if (row) {\n if (row[0] === undefined) return;\n startCell = [rowIndex, row[0] < 0 ? row[1] : row[0]];\n break;\n }\n }\n\n // itemToPaste is cleared once accessed (getData or getAsString),\n // so we need to store the type here, before reading its value:\n var pasteType = itemToPaste.type;\n\n itemToPaste.getAsString(function (pasteValue) {\n self.pasteData(pasteValue, pasteType, startCell[0], startCell[1]);\n\n self.draw();\n });\n };\n self.cut = function (e) {\n self.copy(e);\n const schema = self.getSchema();\n\n var affectedCells = [];\n for (const [rowIndex, row] of self.selections.entries()) {\n if (!row) continue;\n\n const boundRowIndex = self.getBoundRowIndexFromViewRowIndex(rowIndex);\n\n for (const columnIndex of row) {\n const boundColumnIndex = self.getBoundColumnIndexFromViewColumnIndex(\n columnIndex,\n );\n const colName = schema[boundColumnIndex].name;\n\n self.viewData[rowIndex][colName] = '';\n\n affectedCells.push([\n rowIndex,\n columnIndex,\n boundRowIndex,\n boundColumnIndex,\n ]);\n }\n }\n\n if (self.dispatchEvent('cut', { NativeEvent: e, cells: affectedCells })) {\n return;\n }\n\n requestAnimationFrame(() => self.draw());\n };\n self.copy = function (e) {\n if (self.dispatchEvent('copy', { NativeEvent: e })) {\n return;\n }\n if (!self.hasFocus || !e.clipboardData) {\n return;\n }\n var t = '',\n d = '',\n textRows = [],\n sData = self.getSelectedData(),\n s = self.getSchema(),\n sSorted = [],\n firstRowKeys,\n isNeat = true; // Selected like [[0, 1], [0, 1]] of [[0, 3]] is neat; Selected like [[0, 1], [1, 2]] is untidy\n function htmlSafe(v) {\n if (typeof v === 'number') return v;\n return v.replace(/</g, '<').replace(/>/g, '>');\n }\n s.forEach(function (column, columnIndex) {\n sSorted.push(s[self.orders.columns[columnIndex]]);\n });\n if (sData.length > 0) {\n sData.forEach((row) => {\n if (!row) return;\n var rowKeys = Object.keys(row);\n var textRow = [];\n if (!firstRowKeys) firstRowKeys = Object.keys(row);\n if (isNeat && rowKeys.length !== firstRowKeys.length) isNeat = false;\n sSorted.forEach(function (column, columnIndex) {\n if (rowKeys.indexOf(String(column.name)) < 0) {\n if (firstRowKeys.indexOf(String(column.name)) < 0) {\n return;\n } else if (isNeat) {\n isNeat = false;\n }\n }\n textRow.push(row[column.name] || '');\n });\n textRows.push(textRow);\n });\n if (isNeat) {\n t = textRows.map((row) => row.join('\\t')).join('\\n');\n /**\n * The html content copied by Excel has not header\n */\n d += '<table>';\n d += textRows\n .map(\n (row) =>\n '<tr>' +\n row.map((value) => '<td>' + htmlSafe(value) + '</td>').join('') +\n '</tr>',\n )\n .join('');\n d += '</table>';\n } else {\n t = textRows.map((row) => row.join('')).join('');\n d = t;\n }\n if (t) {\n e.clipboardData.setData('text/html', d);\n e.clipboardData.setData('text/plain', t);\n e.clipboardData.setData('text/csv', t);\n e.clipboardData.setData('application/json', JSON.stringify(sData));\n }\n e.preventDefault();\n }\n };\n return;\n}\n","'use strict';\n\nconst isSupportedHtml = function (pasteValue) {\n // We need to match new lines in the HTML, .* won't match new line characters.\n // `s` regex modifier can't be used with `ecmaVersion === 2017`.\n // As a workaround using [\\s\\S]*. Fix when we upgrade `ecmaVersion`.\n const genericDiv = /(?:^(<meta[^>]*>)?[\\s\\S]*<div[^>]*>)/;\n const genericSpan = /(?:^(<meta[^>]*>)?[\\s\\S]*<span[^>]*>)/;\n const genericTable = /(?:^(<meta[^>]*>)?[\\s\\S]*<table[^>]*>)/; // Matches Google Sheets format clipboard data format too.\n const excelTable = /(?:<!--StartFragment-->[\\s\\S]*<tr[^>]*>)/;\n const excelTableRow = /(?:<!--StartFragment-->[\\s\\S]*<td[^>]*>)/;\n\n return [\n genericDiv,\n genericTable,\n genericSpan,\n excelTable,\n excelTableRow,\n ].some((expression) => expression.test(pasteValue));\n};\n\n// Explanation of nodeType here: https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\nconst IGNORE_NODETYPES = [8, 3]; // '#text' and '#comment'\n\nconst isHtmlTable = function (pasteValue) {\n return /(?:<table[^>]*>)|(?:<tr[^]*>)/.test(pasteValue);\n};\n\nconst sanitizeElementData = function (element) {\n // It is not entirely clear if this check on nodeType is required.\n let elementData = element.nodeType === 1 ? element.innerText : element.data;\n\n return String(elementData).replace(/\\s+/g, ' ').trim();\n};\n\nconst parseHtmlText = function (data) {\n const doc = new DOMParser().parseFromString(data, 'text/html');\n const element = doc.querySelector('div') || doc.querySelector('span');\n const elementData = sanitizeElementData(element);\n\n return elementData\n .split('\\n')\n .map((item) => item.split('\\t').map((value) => ({ value: [{ value }] })));\n};\n\nconst parseHtmlTable = function (data) {\n const doc = new DOMParser().parseFromString(data, 'text/html');\n const trs = doc.querySelectorAll('table tr');\n const rows = [];\n\n for (const tr of trs) {\n const row = [];\n\n for (const childNode of tr.childNodes) {\n if (IGNORE_NODETYPES.includes(childNode.nodeType)) continue;\n\n const col = { value: [] };\n const value = sanitizeElementData(childNode);\n\n if (value) col.value.push({ value });\n\n row.push(col);\n }\n\n rows.push(row);\n }\n\n return rows;\n};\n\nconst parseText = function (data) {\n return data\n .split('\\n')\n .map((item) => item.split('\\t').map((value) => ({ value: [{ value }] })));\n};\n\nconst parseData = function (data, mimeType) {\n if (mimeType === 'text/html' && isHtmlTable(data)) {\n return parseHtmlTable(data);\n } else if (mimeType === 'text/html') {\n return parseHtmlText(data);\n }\n\n // Default data format is string, so split on new line,\n // and then enclose in an array (a row with one cell):\n return parseText(data);\n};\n\nexport {\n isSupportedHtml,\n sanitizeElementData,\n parseData,\n parseHtmlTable,\n parseHtmlText,\n parseText,\n};\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals HTMLElement: false, Reflect: false, define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nexport default function (self, ctor) {\n self.scale = 1;\n self.orders = {\n rows: [],\n columns: [],\n };\n self.appliedInlineStyles = {};\n self.cellGridAttributes = {};\n self.treeGridAttributes = {};\n self.visibleRowHeights = [];\n self.hasFocus = false;\n self.activeCell = {\n columnIndex: 0,\n rowIndex: 0,\n };\n self.innerHTML = '';\n self.storageName = 'canvasDataGrid';\n self.invalidSearchExpClass = 'canvas-datagrid-invalid-search-regExp';\n self.localStyleLibraryStorageKey = 'canvas-datagrid-user-style-library';\n self.dataType = 'application/x-canvas-datagrid';\n self.orderBy = null;\n self.orderDirection = 'asc';\n self.orderings = {\n columns: [],\n add: function (orderBy, orderDirection, sortFunction) {\n self.orderings.columns = self.orderings.columns.filter(function (col) {\n return col.orderBy !== orderBy;\n });\n self.orderings.columns.push({\n orderBy: orderBy,\n orderDirection: orderDirection,\n sortFunction: sortFunction,\n });\n },\n sort: function () {\n console.warn(\n 'grid.orderings.sort has been deprecated. Please use grid.refresh().',\n );\n\n self.orderings.columns.forEach(function (col) {\n self.viewData.sort(col.sortFunction(col.orderBy, col.orderDirection));\n });\n },\n };\n self.columnFilters = {};\n self.filters = {};\n self.frozenRow = 0;\n self.frozenColumn = 0;\n self.ellipsisCache = {};\n self.scrollCache = { x: [], y: [] };\n self.scrollBox = {};\n self.visibleRows = [];\n self.visibleCells = [];\n self.sizes = {\n rows: {},\n columns: {},\n trees: {},\n };\n self.selections = [];\n self.filterable = {\n rows: [],\n columns: [],\n };\n self.selectedFilterButton = {\n columnIndex: -1,\n rowIndex: -1,\n };\n self.hovers = {};\n self.attributes = {};\n self.style = {};\n self.formatters = {};\n self.sorters = {};\n self.parsers = {};\n self.schemaHashes = {};\n self.events = {};\n self.changes = [];\n self.scrollIndexTop = 0;\n self.scrollPixelTop = 0;\n self.scrollIndexLeft = 0;\n self.scrollPixelLeft = 0;\n self.childGrids = {};\n self.openChildren = {};\n self.scrollModes = [\n 'vertical-scroll-box',\n 'vertical-scroll-top',\n 'vertical-scroll-bottom',\n 'horizontal-scroll-box',\n 'horizontal-scroll-right',\n 'horizontal-scroll-left',\n ];\n self.componentL1Events = {};\n self.eventNames = [\n 'afterdraw',\n 'afterrendercell',\n 'afterrenderfilterbutton',\n 'attributechanged',\n 'beforebeginedit',\n 'beforecreatecellgrid',\n 'beforedraw',\n 'beforeendedit',\n 'beforerendercell',\n 'beforerendercellgrid',\n 'beforerenderfilterbutton',\n 'beginedit',\n 'cellmouseout',\n 'cellmouseover',\n 'click',\n 'collapsetree',\n 'contextmenu',\n 'copy',\n 'datachanged',\n 'dblclick',\n 'endedit',\n 'expandtree',\n 'formatcellvalue',\n 'keydown',\n 'keypress',\n 'keyup',\n 'mousedown',\n 'mousemove',\n 'mouseup',\n 'newrow',\n 'ordercolumn',\n 'rendercell',\n 'rendercellgrid',\n 'renderorderbyarrow',\n 'rendertext',\n 'rendertreearrow',\n 'reorder',\n 'reordering',\n 'resize',\n 'resizecolumn',\n 'resizerow',\n 'schemachanged',\n 'scroll',\n 'selectionchanged',\n 'stylechanged',\n 'touchcancel',\n 'touchend',\n 'touchmove',\n 'touchstart',\n 'wheel',\n ];\n self.mouse = { x: 0, y: 0 };\n self.getSelectedData = function (expandToRow) {\n const selectedData = [];\n const schema = self.getSchema();\n const viewDataLength = self.viewData.length;\n\n if (viewDataLength === 0) {\n return [];\n }\n\n // self.selections is a sparse array, so `viewRowIndex` here\n // will equal the row index as where it's rendered,\n // not as where it is in the original data array.\n self.selections.forEach(function (row, viewRowIndex) {\n if (!row) {\n return;\n }\n\n if (viewRowIndex === viewDataLength) {\n return;\n }\n\n if (row.length === 0) {\n selectedData[viewRowIndex] = null;\n return;\n }\n\n selectedData[viewRowIndex] = {};\n\n row.forEach(function (col) {\n if (col === -1 || !schema[col]) {\n return;\n }\n\n const orderedIndex = self.orders.columns[col];\n\n if (!expandToRow && schema[orderedIndex].hidden) {\n return;\n }\n\n if (self.viewData[viewRowIndex]) {\n selectedData[viewRowIndex][schema[orderedIndex].name] =\n self.viewData[viewRowIndex][schema[orderedIndex].name];\n }\n });\n });\n\n return selectedData;\n };\n self.getSelectedCells = function (expandToRow) {\n const selectedCells = [];\n const schema = self.getSchema();\n const viewDataLength = self.viewData.length;\n\n if (viewDataLength === 0) {\n return [];\n }\n\n for (const [viewRowIndex, row] of self.selections.entries()) {\n if (!row || row.length === 0) continue;\n\n for (const [, viewColumnIndex] of row.entries()) {\n if (viewColumnIndex === -1 || !schema[viewColumnIndex]) {\n continue;\n }\n\n const boundColumnIndex = self.getBoundColumnIndexFromViewColumnIndex(\n viewColumnIndex,\n );\n\n if (!expandToRow && schema[boundColumnIndex].hidden) {\n continue;\n }\n\n if (self.viewData[viewRowIndex]) {\n const header = schema[boundColumnIndex];\n const value = self.viewData[viewRowIndex][header.name];\n const boundRowIndex = self.getBoundRowIndexFromViewRowIndex(\n viewRowIndex,\n );\n\n const cell = {\n value,\n header,\n boundRowIndex,\n boundColumnIndex,\n viewRowIndex,\n viewColumnIndex,\n };\n\n selectedCells.push(cell);\n }\n }\n }\n\n return selectedCells;\n };\n self.clearSelectedCells = function () {\n const schema = self.getSchema();\n const affectedCells = [];\n\n for (const [rowIndex, row] of self.selections.entries()) {\n // If no cells are selected for a particular rowIndex the selections array will contain an empty element for that rowIndex.\n if (!row) continue;\n\n const boundRowIndex = self.getBoundRowIndexFromViewRowIndex(rowIndex);\n\n for (let columnIndex of row) {\n // If the whole row is selected the columnIndex for the rowHeader is -1.\n if (columnIndex < 0) continue;\n\n const boundColumnIndex = self.getBoundColumnIndexFromViewColumnIndex(\n columnIndex,\n );\n const columnName = schema[boundColumnIndex].name;\n\n self.viewData[boundRowIndex][columnName] = null;\n\n affectedCells.push([\n rowIndex,\n columnIndex,\n boundRowIndex,\n boundColumnIndex,\n ]);\n }\n }\n\n return affectedCells;\n };\n self.getBoundRowIndexFromViewRowIndex = function (viewRowIndex) {\n if (self.boundRowIndexMap && self.boundRowIndexMap.has(viewRowIndex)) {\n return self.boundRowIndexMap.get(viewRowIndex);\n }\n\n return undefined;\n };\n self.getBoundColumnIndexFromViewColumnIndex = function (viewColumnIndex) {\n return self.orders.columns[viewColumnIndex];\n };\n self.getColumnHeaderCellHeight = function () {\n if (!self.attributes.showColumnHeaders) {\n return 0;\n }\n return (\n (self.sizes.rows[-1] || self.style.columnHeaderCellHeight) * self.scale\n );\n };\n self.getRowHeaderCellWidth = function () {\n if (!self.attributes.showRowHeaders) {\n return 0;\n }\n return (\n (self.sizes.columns[-1] || self.style.rowHeaderCellWidth) * self.scale\n );\n };\n self.setStorageData = function () {\n if (!self.attributes.saveAppearance || !self.attributes.name) {\n return;\n }\n var visibility = {};\n self.getSchema().forEach(function (column) {\n visibility[column.name] = !column.hidden;\n });\n localStorage.setItem(\n self.storageName + '-' + self.attributes.name,\n JSON.stringify({\n sizes: {\n rows: self.sizes.rows,\n columns: self.sizes.columns,\n },\n orders: {\n rows: self.orders.rows,\n columns: self.orders.columns,\n },\n orderBy: self.orderBy,\n orderDirection: self.orderDirection,\n visibility: visibility,\n }),\n );\n };\n self.getSchema = function () {\n return self.schema || self.tempSchema || [];\n };\n function fillArray(low, high) {\n var i = [],\n x;\n for (x = low; x <= high; x += 1) {\n i[x] = x;\n }\n return i;\n }\n self.createColumnOrders = function () {\n var s = self.getSchema();\n self.orders.columns = fillArray(0, s.length - 1);\n };\n self.createRowOrders = function () {\n self.orders.rows = fillArray(0, self.originalData.length - 1);\n };\n self.getVisibleSchema = function () {\n return self.getSchema().filter(function (col) {\n return !col.hidden;\n });\n };\n self.applyDefaultValue = function (row, header, rowIndex) {\n var d = header.defaultValue || '';\n if (typeof d === 'function') {\n d = d.apply(self.intf, [header, rowIndex]);\n }\n row[header.name] = d;\n };\n self.createNewRowData = function () {\n self.newRow = {};\n\n // The third argument of applyDefaultValue is the row index\n // of the row for which to apply the default value. In this\n // case, we're creating a new row but not yet appending it\n // to self.originalData, so no row index exists\n const newRowIndex = undefined;\n\n self.getSchema().forEach(function forEachHeader(header) {\n self.applyDefaultValue(self.newRow, header, newRowIndex);\n });\n };\n self.getSchemaNameHash = function (key) {\n var n = 0;\n while (self.schemaHashes[key]) {\n n += 1;\n key = key + n;\n }\n return key;\n };\n self.filter = function (type) {\n var f = self.filters[type];\n if (!f && type !== undefined) {\n console.warn(\n 'Cannot find filter for type %s, falling back to substring match.',\n type,\n );\n f = self.filters.string;\n }\n return f;\n };\n self.hasActiveFilters = function () {\n return self.columnFilters && Object.keys(self.columnFilters).length > 0;\n };\n self.getFilteredAndSortedViewData = function (originalData) {\n // We make a copy of originalData here in order be able to\n // filter and sort rows without modifying the original array.\n // Each row is turned into a (row, rowIndex) tuple\n // so that when we apply filters, we can refer back to the\n // row's original row number in originalData. This becomes\n // useful when emitting cell events.\n let newViewData = originalData.map((row, originalRowIndex) => [\n row,\n originalRowIndex,\n ]);\n\n // Apply filtering\n for (const [headerName, filterText] of Object.entries(self.columnFilters)) {\n const header = self.getHeaderByName(headerName);\n\n if (!header) {\n continue;\n }\n\n const currentFilterFunction =\n header.filter || self.filter(header.type || 'string');\n\n newViewData = newViewData.filter(function ([row, originalRowIndex]) {\n if (\n self.attributes.allowFreezingRows &&\n !self.attributes.filterFrozenRows &&\n originalRowIndex < self.frozenRow\n )\n return true;\n\n return currentFilterFunction(row[headerName], filterText);\n });\n }\n\n // Apply sorting\n for (const column of self.orderings.columns) {\n const sortFn = column.sortFunction(column.orderBy, column.orderDirection);\n\n newViewData.sort(([rowA], [rowB, rowIndexB]) => {\n if (\n self.attributes.allowFreezingRows &&\n !self.attributes.sortFrozenRows &&\n rowIndexB < self.frozenRow\n )\n return 0;\n return sortFn(rowA, rowB);\n });\n }\n\n return {\n viewData: newViewData.map(([row]) => row),\n boundRowIndexMap: new Map(\n newViewData.map(([_row, originalRowIndex], viewRowIndex) => [\n viewRowIndex,\n originalRowIndex,\n ]),\n ),\n };\n };\n self.refresh = function () {\n const { viewData, boundRowIndexMap } = self.getFilteredAndSortedViewData(\n self.originalData,\n );\n\n self.viewData = viewData;\n self.boundRowIndexMap = boundRowIndexMap;\n\n self.resize();\n self.draw(true);\n };\n self.getBestGuessDataType = function (columnName, data) {\n var t,\n x,\n l = data.length;\n for (x = 0; x < l; x += 1) {\n if (\n data[x] !== undefined &&\n data[x] !== null &&\n [null, undefined].indexOf(data[x][columnName]) !== -1\n ) {\n t = typeof data[x];\n return t === 'object' ? 'string' : t;\n }\n }\n return 'string';\n };\n self.drawChildGrids = function () {\n Object.keys(self.childGrids).forEach(function (gridKey) {\n self.childGrids[gridKey].draw();\n });\n };\n self.resizeChildGrids = function () {\n Object.keys(self.childGrids).forEach(function (gridKey) {\n self.childGrids[gridKey].resize();\n });\n };\n self.autoScrollZone = function (e, x, y, ctrl) {\n var setTimer,\n rowHeaderCellWidth = self.getRowHeaderCellWidth(),\n columnHeaderCellHeight = self.getColumnHeaderCellHeight();\n if (x !== -1) {\n if (x > self.width - self.attributes.selectionScrollZone) {\n self.scrollBox.scrollLeft += self.attributes.selectionScrollIncrement;\n setTimer = true;\n }\n if (x - self.attributes.selectionScrollZone - rowHeaderCellWidth < 0) {\n self.scrollBox.scrollLeft -= self.attributes.selectionScrollIncrement;\n setTimer = true;\n }\n }\n if (y !== -1) {\n if (y > self.height - self.attributes.selectionScrollZone) {\n self.scrollBox.scrollTop += self.attributes.selectionScrollIncrement;\n setTimer = true;\n }\n if (\n y - self.attributes.selectionScrollZone - columnHeaderCellHeight <\n 0\n ) {\n self.scrollBox.scrollTop -= self.attributes.selectionScrollIncrement;\n setTimer = true;\n }\n }\n if (\n setTimer &&\n !ctrl &&\n self.currentCell &&\n self.currentCell.columnIndex !== -1\n ) {\n self.scrollTimer = setTimeout(\n self.mousemove,\n self.attributes.scrollRepeatRate,\n e,\n );\n }\n };\n self.validateColumn = function (c, s) {\n if (!c.name) {\n throw new Error('A column must contain at least a name.');\n }\n if (\n s.filter(function (i) {\n return i.name === c.name;\n }).length > 0\n ) {\n throw new Error(\n 'A column with the name ' +\n c.name +\n ' already exists and cannot be added again.',\n );\n }\n return true;\n };\n self.setDefaults = function (obj1, obj2, key, def) {\n obj1[key] = obj2[key] === undefined ? def : obj2[key];\n };\n self.setAttributes = function () {\n self.defaults.attributes.forEach(function eachAttribute(i) {\n self.setDefaults(self.attributes, self.args, i[0], i[1]);\n });\n };\n self.setStyle = function () {\n self.defaults.styles.forEach(function eachStyle(i) {\n self.setDefaults(self.style, self.args.style || {}, i[0], i[1]);\n });\n };\n self.autosize = function (colName) {\n self.getVisibleSchema().forEach(function (col, colIndex) {\n if (col.name === colName || colName === undefined) {\n self.sizes.columns[colIndex] = Math.max(\n self.findColumnMaxTextLength(col.name),\n self.style.minColumnWidth,\n );\n }\n });\n self.sizes.columns[-1] = self.findColumnMaxTextLength('cornerCell');\n };\n self.dispose = function () {\n if (!self.isChildGrid && self.canvas && self.canvas.parentNode) {\n self.canvas.parentNode.removeChild(self.canvas);\n }\n if (!self.isChildGrid) {\n document.body.removeChild(self.controlInput);\n }\n self.eventParent.removeEventListener('mouseup', self.mouseup, false);\n self.eventParent.removeEventListener('mousedown', self.mousedown, false);\n self.eventParent.removeEventListener('dblclick', self.dblclick, false);\n self.eventParent.removeEventListener('click', self.click, false);\n self.eventParent.removeEventListener('mousemove', self.mousemove);\n self.eventParent.removeEventListener('wheel', self.scrollWheel, false);\n self.canvas.removeEventListener('contextmenu', self.contextmenu, false);\n self.canvas.removeEventListener('copy', self.copy);\n self.controlInput.removeEventListener('copy', self.copy);\n self.controlInput.removeEventListener('cut', self.cut);\n self.controlInput.removeEventListener('paste', self.paste);\n self.controlInput.removeEventListener('keypress', self.keypress, false);\n self.controlInput.removeEventListener('keyup', self.keyup, false);\n self.controlInput.removeEventListener('keydown', self.keydown, false);\n document.body.removeEventListener('mousemove', self.mousemove);\n window.removeEventListener('resize', self.resize);\n if (self.observer && self.observer.disconnect) {\n self.observer.disconnect();\n }\n };\n self.tryLoadStoredSettings = function () {\n var s;\n self.reloadStoredValues();\n if (\n self.storedSettings &&\n typeof self.storedSettings.orders === 'object' &&\n self.storedSettings.orders !== null\n ) {\n if (\n self.storedSettings.orders.rows.length >= (self.viewData || []).length\n ) {\n self.orders.rows = self.storedSettings.orders.rows;\n }\n s = self.getSchema();\n if (self.storedSettings.orders.columns.length === s.length) {\n self.orders.columns = self.storedSettings.orders.columns;\n }\n self.orderBy =\n self.storedSettings.orderBy === undefined\n ? s[0].name\n : self.storedSettings.orderBy;\n self.orderDirection =\n self.storedSettings.orderDirection === undefined\n ? 'asc'\n : self.storedSettings.orderDirection;\n if (\n self.storedSettings.orderBy !== undefined &&\n self.getHeaderByName(self.orderBy) &&\n self.orderDirection\n ) {\n self.order(self.orderBy, self.orderDirection);\n }\n }\n };\n self.getDomRoot = function () {\n return self.shadowRoot ? self.shadowRoot.host : self.parentNode;\n };\n self.getFontName = function (fontStyle) {\n return fontStyle.replace(/\\d+\\.?\\d*px/, '');\n };\n self.getFontHeight = function (fontStyle) {\n return parseFloat(fontStyle, 10);\n };\n self.parseStyleValue = function (key) {\n if (/Font/.test(key)) {\n self.style[key + 'Height'] = self.getFontHeight(self.style[key]);\n self.style[key + 'Name'] = self.getFontName(self.style[key]);\n return;\n }\n // when inheriting styles from already instantiated grids, don't parse already parsed values.\n if (\n key === 'moveOverlayBorderSegments' &&\n typeof self.style[key] === 'string'\n ) {\n self.style[key] = self.style[key].split(',').map(function (i) {\n return parseInt(i, 10);\n });\n }\n };\n self.initProp = function (propName) {\n if (!self.args[propName]) {\n return;\n }\n Object.keys(self.args[propName]).forEach(function (key) {\n self[propName][key] = self.args[propName][key];\n });\n };\n self.getStyleProperty = function (key) {\n if (self.styleKeys.indexOf(key) === -1) {\n return self.parentNodeStyle[key];\n }\n return self.style[key];\n };\n self.setStyleProperty = function (key, value, supressDrawAndEvent) {\n var isDim =\n [\n 'height',\n 'width',\n 'minHeight',\n 'minWidth',\n 'maxHeight',\n 'maxWidth',\n ].indexOf(key) !== -1;\n if (self.styleKeys.indexOf(key) === -1) {\n self.parentNodeStyle[key] = value;\n } else {\n if (/-/.test(key)) {\n key = self.dehyphenateProperty(key);\n }\n self.style[key] = value;\n self.parseStyleValue(key);\n }\n if (isDim) {\n self.resize();\n }\n if (!supressDrawAndEvent) {\n self.draw(true);\n self.dispatchEvent('stylechanged', { name: 'style', value: value });\n }\n };\n self.reloadStoredValues = function () {\n if (self.attributes.name && self.attributes.saveAppearance) {\n try {\n self.storedSettings = localStorage.getItem(\n self.storageName + '-' + self.attributes.name,\n );\n } catch (e) {\n console.warn('Error loading stored values. ' + e.message);\n self.storedSettings = undefined;\n }\n if (self.storedSettings) {\n try {\n self.storedSettings = JSON.parse(self.storedSettings);\n } catch (e) {\n console.warn('could not read settings from localStore', e);\n self.storedSettings = undefined;\n }\n }\n if (self.storedSettings) {\n if (\n typeof self.storedSettings.sizes === 'object' &&\n self.storedSettings.sizes !== null\n ) {\n self.sizes.rows = self.storedSettings.sizes.rows;\n self.sizes.columns = self.storedSettings.sizes.columns;\n ['trees', 'columns', 'rows'].forEach(function (i) {\n if (!self.sizes[i]) {\n self.sizes[i] = {};\n }\n });\n }\n if (typeof self.storedSettings.visibility === 'object') {\n self.getSchema().forEach(function (column) {\n if (\n self.storedSettings.visibility &&\n self.storedSettings.visibility[column.name] !== undefined\n ) {\n column.hidden = !self.storedSettings.visibility[column.name];\n }\n });\n }\n }\n }\n };\n self.init = function () {\n if (self.initialized) {\n return;\n }\n function addStyleKeyIfNoneExists(key) {\n if (self.styleKeys.indexOf(key) === -1) {\n self.styleKeys.push(key);\n }\n }\n var publicStyleKeyIntf = {};\n self.setAttributes();\n self.setStyle();\n self.initScrollBox();\n self.setDom();\n self.nodeType = 'canvas-datagrid';\n self.ie = /Trident/.test(window.navigator.userAgent);\n self.edge = /Edge/.test(window.navigator.userAgent);\n self.webKit = /WebKit/.test(window.navigator.userAgent);\n self.moz = /Gecko/.test(window.navigator.userAgent);\n self.mobile = /Mobile/i.test(window.navigator.userAgent);\n self.blankValues = [undefined, null, ''];\n self.cursorGrab = 'grab';\n self.cursorGrabing = 'grabbing';\n self.cursorGrab = self.webKit ? '-webkit-grab' : self.cursorGrab;\n self.cursorGrabing = self.moz ? '-webkit-grabbing' : self.cursorGrabbing;\n self.pointerLockPosition = { x: 0, y: 0 };\n Object.keys(self.style).forEach(self.parseStyleValue);\n self.intf.moveSelection = self.moveSelection;\n self.intf.deleteSelectedData = self.deleteSelectedData;\n self.intf.moveTo = self.moveTo;\n self.intf.addEventListener = self.addEventListener;\n self.intf.removeEventListener = self.removeEventListener;\n self.intf.dispatchEvent = self.dispatchEvent;\n /**\n * Releases grid resources and removes grid elements.\n * @memberof canvasDatagrid\n * @name dispose\n * @method\n */\n self.intf.dispose = self.dispose;\n /**\n * Appends the grid to another element later. Not implemented.\n * @memberof canvasDatagrid\n * @name appendTo\n * @method\n * @param {number} el The element to append the grid to.\n */\n self.intf.appendTo = self.appendTo;\n self.intf.getVisibleCellByIndex = self.getVisibleCellByIndex;\n self.intf.filters = self.filters;\n self.intf.sorters = self.sorters;\n self.intf.autosize = self.autosize;\n self.intf.beginEditAt = self.beginEditAt;\n self.intf.endEdit = self.endEdit;\n self.intf.setActiveCell = self.setActiveCell;\n self.intf.forEachSelectedCell = self.forEachSelectedCell;\n self.intf.scrollIntoView = self.scrollIntoView;\n self.intf.clearChangeLog = self.clearChangeLog;\n self.intf.gotoCell = self.gotoCell;\n self.intf.gotoRow = self.gotoRow;\n self.intf.addButton = self.addButton;\n self.intf.getHeaderByName = self.getHeaderByName;\n self.intf.findColumnScrollLeft = self.findColumnScrollLeft;\n self.intf.findRowScrollTop = self.findRowScrollTop;\n self.intf.fitColumnToValues = self.fitColumnToValues;\n self.intf.findColumnMaxTextLength = self.findColumnMaxTextLength;\n self.intf.disposeContextMenu = self.disposeContextMenu;\n self.intf.getCellAt = self.getCellAt;\n self.intf.isCellVisible = self.isCellVisible;\n self.intf.isRowVisible = self.isRowVisible;\n self.intf.isColumnVisible = self.isColumnVisible;\n self.intf.order = self.order;\n self.intf.draw = self.draw;\n self.intf.refresh = self.refresh;\n self.intf.isComponent = self.isComponent;\n self.intf.selectArea = self.selectArea;\n self.intf.clipElement = self.clipElement;\n self.intf.getSchemaFromData = self.getSchemaFromData;\n self.intf.setFilter = self.setFilter;\n self.intf.selectRow = self.selectRow;\n self.intf.parentGrid = self.parentGrid;\n self.intf.toggleTree = self.toggleTree;\n self.intf.expandTree = self.expandTree;\n self.intf.collapseTree = self.collapseTree;\n self.intf.canvas = self.canvas;\n self.intf.context = self.ctx;\n self.intf.insertRow = self.insertRow;\n self.intf.deleteRow = self.deleteRow;\n self.intf.addRow = self.addRow;\n self.intf.insertColumn = self.insertColumn;\n self.intf.deleteColumn = self.deleteColumn;\n self.intf.addColumn = self.addColumn;\n self.intf.getClippingRect = self.getClippingRect;\n self.intf.setRowHeight = self.setRowHeight;\n self.intf.setColumnWidth = self.setColumnWidth;\n self.intf.resetColumnWidths = self.resetColumnWidths;\n self.intf.resetRowHeights = self.resetRowHeights;\n self.intf.resize = self.resize;\n self.intf.selectColumn = self.selectColumn;\n self.intf.selectRow = self.selectRow;\n self.intf.selectAll = self.selectAll;\n self.intf.selectNone = self.selectNone;\n self.intf.drawChildGrids = self.drawChildGrids;\n self.intf.assertPxColor = self.assertPxColor;\n self.intf.clearPxColorAssertions = self.clearPxColorAssertions;\n self.intf.integerToAlpha = self.integerToAlpha;\n self.intf.copy = self.copy;\n self.intf.cut = self.cut;\n self.intf.paste = self.paste;\n self.intf.setStyleProperty = self.setStyleProperty;\n Object.defineProperty(self.intf, 'defaults', {\n get: function () {\n return {\n styles: self.defaults.styles.reduce(function (a, i) {\n a[i[0]] = i[1];\n return a;\n }, {}),\n attributes: self.defaults.attributes.reduce(function (a, i) {\n a[i[0]] = i[1];\n return a;\n }, {}),\n };\n },\n });\n self.styleKeys = Object.keys(self.intf.defaults.styles);\n self.styleKeys\n .map(function (i) {\n return self.hyphenateProperty(i, false);\n })\n .forEach(addStyleKeyIfNoneExists);\n self.styleKeys\n .map(function (i) {\n return self.hyphenateProperty(i, true);\n })\n .forEach(addStyleKeyIfNoneExists);\n self.DOMStyles = window.getComputedStyle(document.body, null);\n self.styleKeys.concat(Object.keys(self.DOMStyles)).forEach(function (key) {\n // unless this line is here, Object.keys() will not work on <instance>.style\n publicStyleKeyIntf[key] = undefined;\n Object.defineProperty(publicStyleKeyIntf, key, {\n get: function () {\n return self.getStyleProperty(key);\n },\n set: function (value) {\n if (self.initialized) {\n self.appliedInlineStyles[key] = value;\n }\n self.setStyleProperty(key, value);\n },\n });\n });\n Object.defineProperty(self.intf, 'shadowRoot', {\n get: function () {\n return self.shadowRoot;\n },\n });\n Object.defineProperty(self.intf, 'activeCell', {\n get: function () {\n return self.activeCell;\n },\n });\n Object.defineProperty(self.intf, 'hasFocus', {\n get: function () {\n return self.hasFocus;\n },\n });\n Object.defineProperty(self.intf, 'hasActiveFilters', {\n get: function () {\n return self.hasActiveFilters();\n },\n });\n Object.defineProperty(self.intf, 'style', {\n get: function () {\n return publicStyleKeyIntf;\n },\n set: function (valueObject) {\n Object.keys(valueObject).forEach(function (key) {\n self.setStyleProperty(key, valueObject[key], true);\n });\n self.draw(true);\n self.dispatchEvent('stylechanged', {\n name: 'style',\n value: valueObject,\n });\n },\n });\n Object.defineProperty(self.intf, 'attributes', { value: {} });\n Object.keys(self.attributes).forEach(function (key) {\n Object.defineProperty(self.intf.attributes, key, {\n get: function () {\n return self.attributes[key];\n },\n set: function (value) {\n self.attributes[key] = value;\n if (key === 'name') {\n self.tryLoadStoredSettings();\n }\n self.draw(true);\n self.dispatchEvent('attributechanged', {\n name: key,\n value: value[key],\n });\n },\n });\n });\n self.filters.string = function (value, filterFor) {\n if (filterFor === self.attributes.blanksText) {\n return self.blankValues.includes(\n value == null ? value : String(value).trim(),\n );\n }\n\n value = String(value);\n var filterRegExp,\n regEnd = /\\/(i|g|m)*$/,\n pattern = regEnd.exec(filterFor),\n flags = pattern ? pattern[0].substring(1) : '',\n flagLength = flags.length;\n self.invalidFilterRegEx = undefined;\n if (filterFor.substring(0, 1) === '/' && pattern) {\n try {\n filterRegExp = new RegExp(\n filterFor.substring(1, filterFor.length - (flagLength + 1)),\n flags,\n );\n } catch (e) {\n self.invalidFilterRegEx = e;\n return;\n }\n return filterRegExp.test(value);\n }\n return value.toString\n ? value\n .toString()\n .toLocaleUpperCase()\n .indexOf(filterFor.toLocaleUpperCase()) !== -1\n : false;\n };\n self.filters.number = function (value, filterFor) {\n if (filterFor === self.attributes.blanksText) {\n return self.blankValues.includes(\n value == null ? value : String(value).trim(),\n );\n }\n\n if (!filterFor) {\n return true;\n }\n return value === filterFor;\n };\n ['formatters', 'filters', 'sorters'].forEach(self.initProp);\n self.applyComponentStyle(false, self.intf);\n self.reloadStoredValues();\n if (self.args.data) {\n self.intf.data = self.args.data;\n }\n if (self.intf.innerText || self.intf.textContent) {\n if (self.intf.dataType === 'application/x-canvas-datagrid') {\n self.intf.dataType = 'application/json+x-canvas-datagrid';\n }\n self.intf.data = self.intf.innerText || self.intf.textContent;\n }\n if (self.args.schema) {\n self.intf.schema = self.args.schema;\n }\n if (self.isChildGrid || !self.isComponent) {\n requestAnimationFrame(function () {\n self.resize(true);\n });\n } else {\n self.resize(true);\n }\n self.initialized = true;\n return self;\n };\n /**\n * Removes focus from the grid.\n * @memberof canvasDatagrid\n * @name blur\n * @method\n */\n self.intf.blur = function (e) {\n self.hasFocus = false;\n };\n /**\n * Focuses on the grid.\n * @memberof canvasDatagrid\n * @name focus\n * @method\n */\n self.intf.focus = function () {\n self.hasFocus = true;\n self.controlInput.focus();\n };\n if (self.shadowRoot || self.isChildGrid) {\n Object.defineProperty(self.intf, 'height', {\n get: function () {\n if (self.shadowRoot) {\n return self.shadowRoot.height;\n }\n return self.parentNode.height;\n },\n set: function (value) {\n if (self.shadowRoot) {\n self.shadowRoot.height = value;\n } else {\n self.parentNode.height = value;\n }\n self.resize(true);\n },\n });\n Object.defineProperty(self.intf, 'width', {\n get: function () {\n if (self.shadowRoot) {\n return self.shadowRoot.width;\n }\n return self.parentNode.width;\n },\n set: function (value) {\n if (self.shadowRoot) {\n self.shadowRoot.width = value;\n } else {\n self.parentNode.width = value;\n }\n self.resize(true);\n },\n });\n Object.defineProperty(self.intf, 'parentNode', {\n get: function () {\n return self.parentNode;\n },\n set: function (value) {\n if (!self.isChildGrid) {\n throw new TypeError(\n 'Cannot set property parentNode which has only a getter',\n );\n }\n self.parentNode = value;\n },\n });\n }\n Object.defineProperty(self.intf, 'visibleRowHeights', {\n get: function () {\n return self.visibleRowHeights;\n },\n });\n Object.defineProperty(self.intf, 'openChildren', {\n get: function () {\n return self.openChildren;\n },\n });\n Object.defineProperty(self.intf, 'childGrids', {\n get: function () {\n return Object.keys(self.childGrids).map(function (gridId) {\n return self.childGrids[gridId];\n });\n },\n });\n Object.defineProperty(self.intf, 'isChildGrid', {\n get: function () {\n return self.isChildGrid;\n },\n });\n Object.defineProperty(self, 'cursor', {\n get: function () {\n return self.parentNodeStyle.cursor;\n },\n set: function (value) {\n if (value === 'cell') {\n value = 'default';\n }\n if (self.currentCursor !== value) {\n self.parentNodeStyle.cursor = value;\n self.currentCursor = value;\n }\n },\n });\n Object.defineProperty(self.intf, 'orderDirection', {\n get: function () {\n return self.orderDirection;\n },\n set: function (value) {\n if (value !== 'desc') {\n value = 'asc';\n }\n self.orderDirection = value;\n self.order(self.orderBy, self.orderDirection);\n },\n });\n Object.defineProperty(self.intf, 'orderBy', {\n get: function () {\n return self.orderBy;\n },\n set: function (value) {\n if (\n self.getSchema().find(function (col) {\n return col.name === value;\n }) === undefined\n ) {\n throw new Error('Cannot sort by unknown column name.');\n }\n self.orderBy = value;\n self.order(self.orderBy, self.orderDirection);\n },\n });\n if (self.isComponent) {\n Object.defineProperty(self.intf, 'offsetHeight', {\n get: function () {\n return self.canvas.offsetHeight;\n },\n });\n Object.defineProperty(self.intf, 'offsetWidth', {\n get: function () {\n return self.canvas.offsetWidth;\n },\n });\n }\n Object.defineProperty(self.intf, 'scrollHeight', {\n get: function () {\n return self.scrollBox.scrollHeight;\n },\n });\n Object.defineProperty(self.intf, 'scrollWidth', {\n get: function () {\n return self.scrollBox.scrollWidth;\n },\n });\n Object.defineProperty(self.intf, 'scrollTop', {\n get: function () {\n return self.scrollBox.scrollTop;\n },\n set: function (value) {\n self.scrollBox.scrollTop = value;\n },\n });\n Object.defineProperty(self.intf, 'scrollLeft', {\n get: function () {\n return self.scrollBox.scrollLeft;\n },\n set: function (value) {\n self.scrollBox.scrollLeft = value;\n },\n });\n Object.defineProperty(self.intf, 'sizes', {\n get: function () {\n return self.sizes;\n },\n });\n Object.defineProperty(self.intf, 'parentDOMNode', {\n get: function () {\n return self.parentDOMNode;\n },\n });\n Object.defineProperty(self.intf, 'input', {\n get: function () {\n return self.input;\n },\n });\n Object.defineProperty(self.intf, 'controlInput', {\n get: function () {\n return self.controlInput;\n },\n });\n Object.defineProperty(self.intf, 'currentCell', {\n get: function () {\n return self.currentCell;\n },\n });\n Object.defineProperty(self.intf, 'visibleCells', {\n get: function () {\n return self.visibleCells;\n },\n });\n Object.defineProperty(self.intf, 'visibleRows', {\n get: function () {\n return self.visibleRows;\n },\n });\n Object.defineProperty(self.intf, 'selections', {\n get: function () {\n return self.selections;\n },\n });\n Object.defineProperty(self.intf, 'dragMode', {\n get: function () {\n return self.dragMode;\n },\n });\n Object.defineProperty(self.intf, 'changes', {\n get: function () {\n return self.changes;\n },\n });\n self.intf.formatters = self.formatters;\n Object.defineProperty(self.intf, 'dataType', {\n get: function () {\n return self.dataType;\n },\n set: function (value) {\n if (!self.parsers[value]) {\n throw new Error('No parser for MIME type ' + value);\n }\n self.dataType = value;\n },\n });\n self.eventNames.forEach(function (eventName) {\n Object.defineProperty(self.intf, 'on' + eventName, {\n get: function () {\n return self.componentL1Events[eventName];\n },\n set: function (value) {\n self.events[eventName] = [];\n self.componentL1Events[eventName] = value;\n if (!value) {\n return;\n }\n self.addEventListener(eventName, value);\n },\n });\n });\n Object.defineProperty(self.intf, 'frozenRow', {\n get: function () {\n return self.frozenRow;\n },\n set: function (val) {\n if (isNaN(val)) {\n throw new TypeError('Expected value for frozenRow to be a number.');\n }\n if (self.visibleRows.length < val) {\n throw new RangeError(\n 'Cannot set a value larger than the number of visible rows.',\n );\n }\n self.frozenRow = val;\n },\n });\n Object.defineProperty(self.intf, 'frozenColumn', {\n get: function () {\n return self.frozenColumn;\n },\n set: function (val) {\n if (isNaN(val)) {\n throw new TypeError('Expected value for frozenRow to be a number.');\n }\n if (self.getVisibleSchema().length < val) {\n throw new RangeError(\n 'Cannot set a value larger than the number of visible columns.',\n );\n }\n self.frozenColumn = val;\n },\n });\n Object.defineProperty(self.intf, 'scrollIndexRect', {\n get: function () {\n return {\n top: self.scrollIndexTop,\n right: self.scrollIndexRight,\n bottom: self.scrollIndexBottom,\n left: self.scrollIndexLeft,\n };\n },\n });\n Object.defineProperty(self.intf, 'scrollPixelRect', {\n get: function () {\n return {\n top: self.scrollPixelTop,\n right: self.scrollPixelRight,\n bottom: self.scrollPixelBottom,\n left: self.scrollPixelLeft,\n };\n },\n });\n Object.defineProperty(self.intf, 'rowOrder', {\n get: function () {\n return self.orders.rows;\n },\n set: function (val) {\n if (!Array.isArray(val)) {\n throw new TypeError('Value must be an array.');\n }\n if (!self.originalData || val.length < self.originalData.length) {\n throw new RangeError(\n 'Array length must be equal to or greater than number of rows.',\n );\n }\n self.orders.rows = val;\n },\n });\n Object.defineProperty(self.intf, 'columnOrder', {\n get: function () {\n return self.orders.columns;\n },\n set: function (val) {\n if (!Array.isArray(val)) {\n throw new TypeError('Value must be an array.');\n }\n if (val.length < self.getSchema().length) {\n throw new RangeError(\n 'Array length must be equal to or greater than number of columns.',\n );\n }\n self.orders.columns = val;\n },\n });\n Object.defineProperty(self.intf, 'selectionBounds', {\n get: function () {\n return self.getSelectionBounds();\n },\n });\n Object.defineProperty(self.intf, 'selectedRows', {\n get: function () {\n return self.getSelectedData(true);\n },\n });\n Object.defineProperty(self.intf, 'selectedCells', {\n get: function () {\n return self.getSelectedData();\n },\n });\n Object.defineProperty(self.intf, 'visibleSchema', {\n get: function () {\n return self.getVisibleSchema().map(function eachDataRow(col) {\n return col;\n });\n },\n });\n Object.defineProperty(self.intf, 'treeGridAttributes', {\n get: function () {\n return self.treeGridAttributes;\n },\n set: function setTreeGridAttributes(value) {\n self.treeGridAttributes = value;\n },\n });\n Object.defineProperty(self.intf, 'cellGridAttributes', {\n get: function () {\n return self.cellGridAttributes;\n },\n set: function setCellGridAttributes(value) {\n self.cellGridAttributes = value;\n },\n });\n Object.defineProperty(self.intf, 'ctx', {\n get: function () {\n return self.ctx;\n },\n });\n Object.defineProperty(self.intf, 'schema', {\n get: function schemaGetter() {\n return self.getSchema();\n },\n set: function schemaSetter(value) {\n if (value === undefined) {\n // Issue #89 - allow schema to be set to initialized state\n self.schema = undefined;\n self.tempSchema = undefined;\n self.dispatchEvent('schemachanged', { schema: undefined });\n return;\n }\n if (!Array.isArray(value) || typeof value[0] !== 'object') {\n throw new Error('Schema must be an array of objects.');\n }\n if (value[0].name === undefined) {\n throw new Error(\n 'Expected schema to contain an object with at least a name property.',\n );\n }\n self.schema = value.map(function eachSchemaColumn(column, index) {\n column.width = column.width || self.style.cellWidth;\n column.filter = column.filter || self.filter(column.type);\n column.type = column.type || 'string';\n column.index = index;\n column.columnIndex = index;\n column.rowIndex = -1;\n return column;\n });\n self.tempSchema = undefined;\n self.createNewRowData();\n self.createColumnOrders();\n self.tryLoadStoredSettings();\n if (\n self.storedSettings &&\n typeof self.storedSettings.visibility === 'object'\n ) {\n self.schema.forEach(function hideEachSchemaColumn(column, index) {\n if (\n self.storedSettings &&\n self.storedSettings.visibility[column.name] !== undefined\n ) {\n column.hidden = !self.storedSettings.visibility[column.name];\n }\n });\n }\n self.resize(true);\n self.dispatchEvent('schemachanged', { schema: self.schema });\n },\n });\n /**\n * Gets an array of currently registered MIME types.\n * @memberof canvasDatagrid\n * @name getDataTypes\n * @method\n */\n self.intf.getTypes = function () {\n return Object.keys(self.parsers);\n };\n self.parseInnerHtml = function (data) {\n if (!data || /^ +$/.test(data)) {\n return [];\n }\n try {\n data = JSON.parse(data);\n } catch (e) {\n console.warn(\n Error(\n 'Cannot parse application/json+x-canvas-datagrid formated data. ' +\n e.message +\n ' \\nNote: canvas-datagrid.innerHTML is for string data only. ' +\n 'Use the canvas-datagrid.data property to set object data.',\n ),\n );\n }\n return data;\n };\n self.parsers['application/json+x-canvas-datagrid'] = function (\n data,\n callback,\n ) {\n self.parsers['application/x-canvas-datagrid'](\n self.parseInnerHtml(data),\n function (data, schema) {\n return callback(data, schema);\n },\n );\n };\n self.parsers['application/x-canvas-datagrid'] = function (data, callback) {\n return callback(data);\n };\n self.intf.parsers = self.parsers;\n // send to dataType ETL function to extract from input data\n // and transform into native [{}, {}] format\n self.etl = function (data, callback) {\n if (!self.intf.parsers[self.dataType]) {\n throw new Error('Unsupported data type.');\n }\n self.intf.parsers[self.dataType](data, function (data, schema) {\n // set the unfiltered/sorted data array\n self.originalData = data;\n self.viewData = Array.from(self.originalData);\n\n if (Array.isArray(schema)) {\n self.schema = schema;\n }\n // Issue #89 - allow schema to be auto-created every time data is set\n if (self.attributes.autoGenerateSchema) {\n self.schema = self.getSchemaFromData(data);\n }\n if (!self.schema) {\n self.tempSchema = self.getSchemaFromData(data);\n }\n if (self.getSchema()) {\n self.createColumnOrders();\n }\n // apply filter, sort, etc to incoming dataset, set viewData:\n self.refresh();\n // empty data was set\n if (!self.schema && (self.originalData || []).length === 0) {\n self.tempSchema = [{ name: '' }];\n }\n self.fitColumnToValues('cornerCell', true);\n if (\n (self.tempSchema && !self.schema) ||\n self.attributes.autoGenerateSchema\n ) {\n self.createColumnOrders();\n self.dispatchEvent('schemachanged', { schema: self.tempSchema });\n }\n callback();\n });\n };\n Object.defineProperty(self.intf, 'viewData', {\n get: function () {\n return self.viewData;\n },\n });\n Object.defineProperty(self.intf, 'boundData', {\n get: function () {\n return self.originalData;\n },\n });\n Object.defineProperty(self.intf, 'data', {\n get: function dataGetter() {\n return self.originalData;\n },\n set: function dataSetter(value) {\n self.etl(value, function () {\n self.changes = [];\n self.createNewRowData();\n if (\n self.attributes.autoResizeColumns &&\n self.originalData.length > 0 &&\n self.storedSettings === undefined\n ) {\n self.autosize();\n }\n // set the header column to fit the numbers in it\n self.fitColumnToValues('cornerCell', true);\n self.createRowOrders();\n self.tryLoadStoredSettings();\n self.dispatchEvent('datachanged', { data: self.originalData });\n self.resize(true);\n });\n },\n });\n self.initScrollBox = function () {\n var sHeight = 0,\n sWidth = 0,\n scrollTop = 0,\n scrollLeft = 0,\n scrollHeight = 0,\n scrollWidth = 0,\n scrollBoxHeight = 20,\n scrollBoxWidth = 20;\n function setScrollTop(value, preventScrollEvent) {\n if (isNaN(value)) {\n throw new Error('ScrollTop value must be a number');\n }\n if (value < 0) {\n value = 0;\n }\n if (value > scrollHeight) {\n value = scrollHeight;\n }\n if (scrollHeight < 0) {\n value = 0;\n }\n scrollTop = value;\n if (!preventScrollEvent) {\n self.scroll();\n }\n if (self.button) {\n self.moveButtonPos();\n }\n }\n function setScrollLeft(value, preventScrollEvent) {\n if (isNaN(value)) {\n throw new Error('ScrollLeft value must be a number');\n }\n if (value < 0) {\n value = 0;\n }\n if (value > scrollWidth) {\n value = scrollWidth;\n }\n if (scrollWidth < 0) {\n value = 0;\n }\n scrollLeft = value;\n if (!preventScrollEvent) {\n self.scroll();\n }\n if (self.button) {\n self.moveButtonPos();\n }\n }\n self.scrollBox.toString = function () {\n return (\n '{\"width\": ' +\n scrollWidth.toFixed(2) +\n ', \"height\": ' +\n scrollHeight.toFixed(2) +\n ', \"left\": ' +\n scrollLeft.toFixed(2) +\n ', \"top\": ' +\n scrollTop.toFixed(2) +\n ', \"widthRatio\": ' +\n self.scrollBox.widthBoxRatio.toFixed(5) +\n ', \"heightRatio\": ' +\n self.scrollBox.heightBoxRatio.toFixed(5) +\n '}'\n );\n };\n self.scrollBox.scrollTo = function (x, y, supressDrawEvent) {\n setScrollLeft(x, true);\n setScrollTop(y, supressDrawEvent);\n };\n Object.defineProperty(self.scrollBox, 'scrollBoxHeight', {\n get: function () {\n return scrollBoxHeight;\n },\n set: function (value) {\n scrollBoxHeight = value;\n },\n });\n Object.defineProperty(self.scrollBox, 'scrollBoxWidth', {\n get: function () {\n return scrollBoxWidth;\n },\n set: function (value) {\n scrollBoxWidth = value;\n },\n });\n Object.defineProperty(self.scrollBox, 'height', {\n get: function () {\n return sHeight;\n },\n set: function (value) {\n sHeight = value;\n },\n });\n Object.defineProperty(self.scrollBox, 'width', {\n get: function () {\n return sWidth;\n },\n set: function (value) {\n sWidth = value;\n },\n });\n Object.defineProperty(self.scrollBox, 'scrollTop', {\n get: function () {\n return scrollTop;\n },\n set: setScrollTop,\n });\n Object.defineProperty(self.scrollBox, 'scrollLeft', {\n get: function () {\n return scrollLeft;\n },\n set: setScrollLeft,\n });\n Object.defineProperty(self.scrollBox, 'scrollHeight', {\n get: function () {\n return scrollHeight;\n },\n set: function (value) {\n if (scrollTop > value) {\n scrollTop = Math.max(value, 0);\n }\n scrollHeight = value;\n },\n });\n Object.defineProperty(self.scrollBox, 'scrollWidth', {\n get: function () {\n return scrollWidth;\n },\n set: function (value) {\n if (scrollLeft > value) {\n scrollLeft = Math.max(value, 0);\n }\n scrollWidth = value;\n },\n });\n };\n return;\n}\n","/*jslint browser: true, unparam: true, todo: true, evil: true*/\n/*globals Reflect: false, HTMLElement: true, define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nimport component from './component';\nimport defaults from './defaults';\nimport draw from './draw';\nimport events from './events';\nimport touch from './touch';\nimport intf from './intf';\nimport contextMenu from './contextMenu';\nimport button from './button';\nimport dom from './dom';\nimport publicMethods from './publicMethods';\n\nvar webComponent = component();\n\nvar modules = [\n defaults,\n draw,\n events,\n touch,\n intf,\n contextMenu,\n button,\n dom,\n publicMethods,\n];\n\nfunction Grid(args) {\n args = args || {};\n var self = {};\n self.isComponent = args.component === undefined;\n self.isChildGrid =\n args.parentNode &&\n /canvas-datagrid-(cell|tree)/.test(args.parentNode.nodeType);\n if (self.isChildGrid) {\n self.intf = {};\n } else {\n self.intf = self.isComponent\n ? eval('Reflect.construct(HTMLElement, [], new.target)')\n : document.createElement('canvas');\n }\n self.args = args;\n self.intf.args = args;\n self.applyComponentStyle = webComponent.applyComponentStyle;\n self.hyphenateProperty = webComponent.hyphenateProperty;\n self.dehyphenateProperty = webComponent.dehyphenateProperty;\n self.createGrid = function grid(args) {\n args.component = false;\n return new Grid(args);\n };\n\n modules.forEach(function (module) {\n module(self);\n });\n\n if (self.isChildGrid) {\n self.shadowRoot = args.parentNode.shadowRoot;\n self.parentNode = args.parentNode;\n } else {\n self.shadowRoot = self.intf.attachShadow({ mode: 'open' });\n self.parentNode = self.shadowRoot;\n }\n self.init();\n return self.intf;\n}\nif (window.HTMLElement) {\n Grid.prototype = Object.create(window.HTMLElement.prototype);\n}\n// export web component\nif (window.customElements) {\n Grid.observedAttributes = webComponent.getObservableAttributes();\n Grid.prototype.disconnectedCallback = webComponent.disconnectedCallback;\n Grid.prototype.attributeChangedCallback =\n webComponent.attributeChangedCallback;\n Grid.prototype.connectedCallback = webComponent.connectedCallback;\n Grid.prototype.adoptedCallback = webComponent.adoptedCallback;\n window.customElements.define('canvas-datagrid', Grid);\n}\n\n// export global\nif (\n window &&\n !window.canvasDatagrid &&\n !window.require &&\n // Present to exclude global declarations from ES Module bundles\n !window.EXCLUDE_GLOBAL\n) {\n window.canvasDatagrid = function (args) {\n return new Grid(args);\n };\n}\n\n// export amd loader\nexport default function canvasDatagrid(args) {\n args = args || {};\n var i,\n tKeys = [\n 'style',\n 'formatters',\n 'sorters',\n 'filters',\n 'treeGridAttributes',\n 'cellGridAttributes',\n 'data',\n 'schema',\n ];\n if (window.customElements) {\n i = document.createElement('canvas-datagrid');\n Object.keys(args).forEach(function (argKey) {\n // set data and parentNode after everything else\n if (argKey === 'data') {\n return;\n }\n if (argKey === 'parentNode') {\n return;\n }\n // top level keys in args\n if (tKeys.indexOf(argKey) !== -1) {\n tKeys.forEach(function (tKey) {\n if (args[tKey] === undefined || tKey !== argKey) {\n return;\n }\n if (['formatters', 'sorters', 'filters'].indexOf(argKey) !== -1) {\n if (typeof args[tKey] === 'object' && args[tKey] !== null) {\n Object.keys(args[tKey]).forEach(function (sKey) {\n i[tKey][sKey] = args[tKey][sKey];\n });\n }\n } else {\n i[tKey] = args[tKey];\n }\n });\n return;\n }\n // all others are attribute level keys\n i.attributes[argKey] = args[argKey];\n });\n if (args.data) {\n i.data = args.data;\n }\n // add to the dom very last to avoid redraws\n if (args.parentNode) {\n args.parentNode.appendChild(i);\n }\n return i;\n }\n args.component = false;\n i = new Grid(args);\n if (args.parentNode && args.parentNode.appendChild) {\n args.parentNode.appendChild(i);\n }\n return i;\n}\n","/*jslint browser: true, unparam: true, todo: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nexport default function (self) {\n /**\n * Converts a integer into a letter A - ZZZZZ...\n * @memberof canvasDatagrid\n * @name integerToAlpha\n * @method\n * @param {column} n The number to convert.\n */\n self.integerToAlpha = function (n) {\n var ordA = 'a'.charCodeAt(0),\n ordZ = 'z'.charCodeAt(0),\n len = ordZ - ordA + 1,\n s = '';\n while (n >= 0) {\n s = String.fromCharCode((n % len) + ordA) + s;\n n = Math.floor(n / len) - 1;\n }\n return s;\n };\n /**\n * Inserts a new column before the specified index into the schema.\n * @tutorial schema\n * @memberof canvasDatagrid\n * @name insertColumn\n * @method\n * @param {column} c The column to insert into the schema.\n * @param {number} index The index of the column to insert before.\n */\n self.insertColumn = function (c, index) {\n var s = self.getSchema();\n if (s.length < index) {\n throw new Error('Index is beyond the length of the schema.');\n }\n self.validateColumn(c, s);\n s.splice(index, 0, c);\n\n self.originalData.forEach(function (row, rowIndex) {\n self.applyDefaultValue(row, c, rowIndex);\n });\n self.intf.schema = s;\n\n self.refresh();\n };\n /**\n * Deletes a column from the schema at the specified index.\n * @memberof canvasDatagrid\n * @name deleteColumn\n * @tutorial schema\n * @method\n * @param {number} index The index of the column to delete.\n */\n self.deleteColumn = function (index) {\n var schema = self.getSchema();\n\n // remove data matching this column name from data\n self.originalData.forEach(function (row) {\n delete row[schema[index].name];\n });\n\n schema.splice(index, 1);\n self.intf.schema = schema;\n\n self.refresh();\n };\n /**\n * Adds a new column into the schema.\n * @tutorial schema\n * @memberof canvasDatagrid\n * @name addColumn\n * @method\n * @param {column} c The column to add to the schema.\n */\n self.addColumn = function (c) {\n var s = self.getSchema();\n self.validateColumn(c, s);\n s.push(c);\n self.originalData.forEach(function (row, rowIndex) {\n self.applyDefaultValue(row, c, rowIndex);\n });\n self.intf.schema = s;\n\n self.refresh();\n };\n /**\n * Deletes a row from the dataset at the specified index.\n * @memberof canvasDatagrid\n * @name deleteRow\n * @method\n * @param {number} index The index of the row to delete.\n */\n self.deleteRow = function (index) {\n self.originalData.splice(index, 1);\n self.setFilter();\n self.resize(true);\n };\n /**\n * Inserts a new row into the dataset before the specified index.\n * @memberof canvasDatagrid\n * @name insertRow\n * @method\n * @param {object} d data.\n * @param {number} index The index of the row to insert before.\n */\n self.insertRow = function (d, index) {\n if (self.originalData.length < index) {\n throw new Error('Index is beyond the length of the dataset.');\n }\n self.originalData.splice(index, 0, d);\n self.getSchema().forEach(function (c) {\n if (d[c.name] === undefined) {\n self.applyDefaultValue(self.originalData[index], c, index);\n }\n });\n\n // setFilter calls .refresh(), so we need not call it again:\n self.setFilter();\n\n self.resize(true);\n };\n /**\n * Adds a new row into the dataset.\n * @memberof canvasDatagrid\n * @name addRow\n * @method\n * @param {object} d data.\n */\n self.addRow = function (d) {\n self.originalData.push(d);\n self.getSchema().forEach(function (c) {\n if (d[c.name] === undefined) {\n self.applyDefaultValue(\n self.originalData[self.originalData.length - 1],\n c,\n self.originalData.length - 1,\n );\n }\n });\n\n // setFilter calls .refresh(), so we need not call it again:\n self.setFilter();\n\n self.resize(true);\n };\n /**\n * Sets the height of a given row by index number.\n * @memberof canvasDatagrid\n * @name setRowHeight\n * @method\n * @param {number} rowIndex The index of the row to set.\n * @param {number} height Height to set the row to.\n */\n self.setRowHeight = function (rowIndex, height) {\n self.sizes.rows[rowIndex] = height;\n self.draw(true);\n };\n /**\n * Sets the width of a given column by index number.\n * @memberof canvasDatagrid\n * @name setColumnWidth\n * @method\n * @param {number} colIndex The index of the column to set.\n * @param {number} width Width to set the column to.\n */\n self.setColumnWidth = function (colIndex, width) {\n self.sizes.columns[colIndex] = width;\n self.draw(true);\n };\n /**\n * Removes any changes to the width of the columns due to user or api interaction, setting them back to the schema or style default.\n * @memberof canvasDatagrid\n * @name resetColumnWidths\n * @tutorial schema\n * @method\n */\n self.resetColumnWidths = function () {\n self.sizes.columns = {};\n self.draw(true);\n };\n /**\n * Removes any changes to the height of the rows due to user or api interaction, setting them back to the schema or style default.\n * @memberof canvasDatagrid\n * @name resetRowHeights\n * @tutorial schema\n * @method\n */\n self.resetRowHeights = function () {\n self.sizes.rows = {};\n self.draw(true);\n };\n /**\n * Sets the value of the filter.\n * @memberof canvasDatagrid\n * @name setFilter\n * @method\n * @param {string} column Name of the column to filter.\n * @param {string} value The value to filter for.\n */\n self.setFilter = function (column, value) {\n if (column === undefined && value === undefined) {\n self.columnFilters = {};\n } else if (column && (value === '' || value === undefined)) {\n delete self.columnFilters[column];\n } else {\n self.columnFilters[column] = value;\n if (self.attributes.showFilterInCell) {\n self.filterable.rows.push(0);\n self.orders.columns.forEach(function (value, index) {\n self.filterable.columns.push(index);\n });\n }\n }\n if (!Object.keys(self.columnFilters).length) {\n self.filterable = {\n rows: [],\n columns: [],\n };\n }\n self.refresh();\n };\n /**\n * Returns the number of pixels to scroll down to line up with row rowIndex.\n * @memberof canvasDatagrid\n * @name findRowScrollTop\n * @method\n * @param {number} rowIndex The row index of the row to scroll find.\n */\n self.findRowScrollTop = function (rowIndex) {\n if (self.scrollCache.y[rowIndex] === undefined) {\n throw new RangeError(\n `Row index ${rowIndex} out of range: ${self.scrollCache.y.length}.`,\n );\n }\n return self.scrollCache.y[rowIndex];\n };\n /**\n * Returns the number of pixels to scroll to the left to line up with column columnIndex.\n * @memberof canvasDatagrid\n * @name findColumnScrollLeft\n * @method\n * @param {number} columnIndex The column index of the column to find.\n */\n self.findColumnScrollLeft = function (columnIndex) {\n var i = Math.max(columnIndex - 1, 0);\n if (self.scrollCache.x[i] === undefined) {\n throw new Error('Column index out of range.');\n }\n return (\n self.scrollCache.x[i] -\n self.getColumnWidth(self.orders.columns[columnIndex])\n );\n };\n /**\n * Scrolls to the cell at columnIndex x, and rowIndex y. If you define both rowIndex and columnIndex additional calculations can be made to center the cell using the target cell's height and width. Defining only one rowIndex or only columnIndex will result in simpler calculations.\n * @memberof canvasDatagrid\n * @name gotoCell\n * @method\n * @param {number} x The column index of the cell to scroll to.\n * @param {number} y The row index of the cell to scroll to.\n * @param {number} [offsetX=0] Percentage offset the cell should be from the left edge (not including headers). The default is 0, meaning the cell will appear at the left edge. Valid values are 0 through 1. 1 = Left, 0 = Right, 0.5 = Center.\n * @param {number} [offsetY=0] Percentage offset the cell should be from the top edge (not including headers). The default is 0, meaning the cell will appear at the top edge. Valid values are 0 through 1. 1 = Bottom, 0 = Top, 0.5 = Center.\n */\n self.gotoCell = function (x, y, offsetX, offsetY) {\n var targetX = x === undefined ? undefined : self.findColumnScrollLeft(x),\n targetY = y === undefined ? undefined : self.findRowScrollTop(y),\n cell,\n sbw =\n self.scrollBox.width -\n (self.scrollBox.verticalBarVisible ? self.style.scrollBarWidth : 0),\n sbh =\n self.scrollBox.height -\n (self.scrollBox.horizontalBarVisible ? self.style.scrollBarWidth : 0);\n offsetX = offsetX === undefined ? 0 : offsetX;\n offsetY = offsetY === undefined ? 0 : offsetY;\n targetX -= sbw * offsetX;\n targetY -= sbh * offsetY;\n if (x !== undefined && y !== undefined) {\n self.scrollBox.scrollTo(targetX, targetY);\n requestAnimationFrame(function () {\n cell = self.getVisibleCellByIndex(x, y);\n // HACK: just don't offset if the target cell cannot be seen\n // TODO: offset does not work on very small grids, not sure why\n if (!cell) {\n return;\n }\n targetX += cell.width * offsetX;\n targetY += cell.height * offsetY;\n self.scrollBox.scrollTo(targetX, targetY);\n });\n } else if (x !== undefined) {\n self.scrollBox.scrollLeft = targetX;\n } else if (y !== undefined) {\n self.scrollBox.scrollTop = targetY;\n }\n };\n /**\n * Scrolls the row y.\n * @memberof canvasDatagrid\n * @name gotoRow\n * @method\n * @param {number} y The row index of the cell to scroll to.\n */\n self.gotoRow = function (y) {\n self.gotoCell(0, y);\n };\n /**\n * Add a button into the cell.\n * @memberof canvasDatagrid\n * @name addButton\n * @method\n * @param {number} columnIndex The column index of the cell to to add a button.\n * @param {number} rowIndex The row index of the cell to to add a button.\n * @param {object} offset Offset how far go away from cell.\n * @param {object} items a list of items to add into button menu.\n * @param {string} imgSrc icon path to add into button.\n */\n self.addButton = function (columnIndex, rowIndex, offset, items, imgSrc) {\n var cells = self.visibleCells.filter(function (c) {\n return c.sortColumnIndex === columnIndex && c.sortRowIndex === rowIndex;\n });\n\n self.attachButton(\n {\n top: cells[0].y + cells[0].height + offset.y,\n left: cells[0].x + cells[0].width + offset.x,\n },\n items,\n imgSrc,\n );\n };\n /**\n * Scrolls the cell at cell x, row y into view if it is not already.\n * @memberof canvasDatagrid\n * @name scrollIntoView\n * @method\n * @param {number} x The column index of the cell to scroll into view.\n * @param {number} y The row index of the cell to scroll into view.\n * @param {number} [offsetX=0] Percentage offset the cell should be from the left edge (not including headers). The default is 0, meaning the cell will appear at the left edge. Valid values are 0 through 1. 1 = Left, 0 = Right, 0.5 = Center.\n * @param {number} [offsetY=0] Percentage offset the cell should be from the top edge (not including headers). The default is 0, meaning the cell will appear at the top edge. Valid values are 0 through 1. 1 = Bottom, 0 = Top, 0.5 = Center.\n */\n self.scrollIntoView = function (x, y, offsetX, offsetY) {\n if (\n self.visibleCells.filter(function (cell) {\n return (\n (cell.rowIndex === y || y === undefined) &&\n (cell.columnIndex === x || x === undefined) &&\n cell.x > 0 &&\n cell.y > 0 &&\n cell.x + cell.width < self.width &&\n cell.y + cell.height < self.height\n );\n }).length === 0\n ) {\n self.gotoCell(x, y, offsetX, offsetY);\n }\n };\n /**\n * Sets the active cell. Requires redrawing.\n * @memberof canvasDatagrid\n * @name setActiveCell\n * @method\n * @param {number} x The column index of the cell to set active.\n * @param {number} y The row index of the cell to set active.\n */\n self.setActiveCell = function (x, y) {\n if (x < 0) {\n x = 0;\n }\n if (y < 0) {\n y = 0;\n }\n self.activeCell = {\n rowIndex: y,\n columnIndex: x,\n };\n };\n /**\n * Removes the selection.\n * @memberof canvasDatagrid\n * @name selectNone\n * @param {boolean} dontDraw Suppress the draw method after the selection change.\n * @method\n */\n self.selectNone = function (dontDraw) {\n self.selections = [];\n self.dispatchEvent('selectionchanged', {\n selectedData: self.getSelectedData(),\n selections: self.selections,\n selectionBounds: self.selectionBounds,\n selectedCells: self.getSelectedCells(),\n });\n if (dontDraw) {\n return;\n }\n self.draw();\n };\n /**\n * Selects every visible cell.\n * @memberof canvasDatagrid\n * @name selectAll\n * @param {boolean} dontDraw Suppress the draw method after the selection change.\n * @method\n */\n self.selectAll = function (dontDraw) {\n self.selectArea({\n top: 0,\n left: -1,\n right: self.getSchema().length - 1,\n bottom: self.viewData.length - 1,\n });\n if (dontDraw) {\n return;\n }\n self.draw();\n };\n /**\n * Returns true if indices of columns next to the selected columnIndex is selected on every row.\n * @memberof canvasDatagrid\n * @name isMultiColumnsSelected\n * @method\n * @param {number} columnIndex The column index to check.\n */\n self.isMultiColumnsSelected = function (columnIndex) {\n var multiColIsSelected = true;\n self.viewData.forEach(function (row, rowIndex) {\n var columnIndices = self.selections[rowIndex];\n if (\n !columnIndices ||\n columnIndices.length <= 1 ||\n columnIndices.indexOf(columnIndex) === -1\n ) {\n multiColIsSelected = false;\n } else if (columnIndices.length > 1) {\n if (columnIndices[0] != columnIndex) multiColIsSelected = false;\n else {\n for (var i = 0; i < columnIndices.length - 1; i++) {\n if (columnIndices[i] + 1 != columnIndices[i + 1]) {\n multiColIsSelected = false;\n break;\n }\n }\n }\n }\n });\n return multiColIsSelected;\n };\n /**\n * Returns true if the selected columnIndex is selected on every row.\n * @memberof canvasDatagrid\n * @name isColumnSelected\n * @method\n * @param {number} columnIndex The column index to check.\n */\n self.isColumnSelected = function (columnIndex) {\n var colIsSelected = true;\n self.viewData.forEach(function (row, rowIndex) {\n if (\n !self.selections[rowIndex] ||\n self.selections[rowIndex].indexOf(columnIndex) === -1\n ) {\n colIsSelected = false;\n }\n });\n return colIsSelected;\n };\n /**\n * Runs the defined method on each selected cell.\n * @memberof canvasDatagrid\n * @name forEachSelectedCell\n * @method\n * @param {number} fn The function to execute. The signature of the function is: (data, rowIndex, columnName).\n * @param {number} expandToRow When true the data in the array is expanded to the entire row.\n */\n self.forEachSelectedCell = function (fn, expandToRow) {\n var d = [],\n s = expandToRow ? self.getSchema() : self.getVisibleSchema(),\n l = self.viewData.length;\n self.selections.forEach(function (row, index) {\n if (index === l) {\n return;\n }\n if (row.length === 0) {\n d[index] = null;\n return;\n }\n d[index] = {};\n row.forEach(function (col) {\n if (col === -1 || !s[col]) {\n return;\n }\n fn(self.viewData, index, s[col].name);\n });\n });\n };\n /**\n * Selects a column.\n * @memberof canvasDatagrid\n * @name selectColumn\n * @method\n * @param {number} columnIndex The column index to select.\n * @param {boolean} toggleSelectMode When true, behaves as if you were holding control/command when you clicked the column.\n * @param {boolean} shift When true, behaves as if you were holding shift when you clicked the column.\n * @param {boolean} supressSelectionchangedEvent When true, prevents the selectionchanged event from firing.\n */\n self.selectColumn = function (columnIndex, ctrl, shift, supressEvent) {\n var s, e, x;\n function addCol(i) {\n self.viewData.forEach(function (row, rowIndex) {\n self.selections[rowIndex] = self.selections[rowIndex] || [];\n if (self.selections[rowIndex].indexOf(i) === -1) {\n self.selections[rowIndex].push(i);\n }\n });\n }\n function removeCol(i) {\n self.viewData.forEach(function (row, rowIndex) {\n self.selections[rowIndex] = self.selections[rowIndex] || [];\n if (self.selections[rowIndex].indexOf(i) !== -1) {\n self.selections[rowIndex].splice(\n self.selections[rowIndex].indexOf(i),\n 1,\n );\n }\n });\n }\n if (shift) {\n if (!self.activeCell) {\n return;\n }\n s = Math.min(self.activeCell.columnIndex, columnIndex);\n e = Math.max(self.activeCell.columnIndex, columnIndex);\n for (x = s; e > x; x += 1) {\n addCol(x);\n }\n }\n if (!ctrl && !shift) {\n self.selections = [];\n self.activeCell.columnIndex = columnIndex;\n self.activeCell.rowIndex = self.scrollIndexTop;\n }\n if (ctrl && self.isColumnSelected(columnIndex)) {\n removeCol(columnIndex);\n } else {\n addCol(columnIndex);\n }\n if (supressEvent) {\n return;\n }\n self.dispatchEvent('selectionchanged', {\n selectedData: self.getSelectedData(),\n selections: self.selections,\n selectionBounds: self.getSelectionBounds(),\n selectedCells: self.getSelectedCells(),\n });\n };\n /**\n * Selects a row.\n * @memberof canvasDatagrid\n * @name selectRow\n * @method\n * @param {number} rowIndex The row index to select.\n * @param {boolean} ctrl When true, behaves as if you were holding control/command when you clicked the row.\n * @param {boolean} shift When true, behaves as if you were holding shift when you clicked the row.\n * @param {boolean} supressSelectionchangedEvent When true, prevents the selectionchanged event from firing.\n */\n self.selectRow = function (rowIndex, ctrl, shift, supressEvent) {\n var x,\n st,\n en,\n s = self.getVisibleSchema();\n self.isMultiRowsSelected = false;\n function de() {\n if (supressEvent) {\n return;\n }\n self.dispatchEvent('selectionchanged', {\n selectedData: self.getSelectedData(),\n selections: self.selections,\n selectionBounds: self.selectionBounds,\n selectedCells: self.getSelectedCells(),\n });\n }\n function addRow(ri) {\n self.selections[ri] = [];\n self.selections[ri].push(-1);\n s.forEach(function (col, index) {\n self.selections[ri].push(self.orders.columns.indexOf(col.index));\n });\n }\n if (self.dragAddToSelection === false || self.dragObject === undefined) {\n if (\n self.selections[rowIndex] &&\n self.selections[rowIndex].length - 1 === s.length\n ) {\n if (ctrl) {\n self.selections[rowIndex] = [];\n de();\n return;\n }\n }\n }\n if (self.dragAddToSelection === true || self.dragObject === undefined) {\n if (shift && self.dragObject === undefined) {\n if (!self.activeCell) {\n return;\n }\n st = Math.min(self.activeCell.rowIndex, rowIndex);\n en = Math.max(self.activeCell.rowIndex, rowIndex);\n for (x = st; en >= x; x += 1) {\n addRow(x);\n }\n } else {\n addRow(rowIndex);\n }\n }\n de();\n };\n /**\n * Collapse a tree grid by row index.\n * @memberof canvasDatagrid\n * @name collapseTree\n * @method\n * @param {number} index The index of the row to collapse.\n */\n self.collapseTree = function (rowIndex) {\n self.dispatchEvent('collapsetree', {\n childGrid: self.childGrids[rowIndex],\n data: self.viewData[rowIndex],\n rowIndex: rowIndex,\n });\n self.openChildren[rowIndex].blur();\n self.openChildren[rowIndex].dispose();\n delete self.openChildren[rowIndex];\n delete self.sizes.trees[rowIndex];\n delete self.childGrids[rowIndex];\n self.dispatchEvent('resizerow', {\n cellHeight: self.style.cellHeight,\n });\n self.resize(true);\n self.draw(true);\n };\n /**\n * Expands a tree grid by row index.\n * @memberof canvasDatagrid\n * @name expandTree\n * @method\n * @param {number} index The index of the row to expand.\n */\n self.expandTree = function (rowIndex) {\n var trArgs = self.args.treeGridAttributes || {},\n columnHeaderCellHeight = self.getColumnHeaderCellHeight(),\n rowHeaderCellWidth =\n self.sizes.columns.cornerCell || self.style.rowHeaderCellWidth,\n h = self.sizes.trees[rowIndex] || self.style.treeGridHeight,\n treeGrid;\n if (!self.childGrids[rowIndex]) {\n trArgs.debug = self.attributes.debug;\n trArgs.name = self.attributes.saveAppearance\n ? self.attributes.name + 'tree' + rowIndex\n : undefined;\n trArgs.style = trArgs.style || self.style;\n trArgs.parentNode = {\n parentGrid: self.intf,\n nodeType: 'canvas-datagrid-tree',\n offsetHeight: h,\n offsetWidth: self.width - rowHeaderCellWidth,\n header: { width: self.width - rowHeaderCellWidth },\n offsetLeft: rowHeaderCellWidth,\n offsetTop: columnHeaderCellHeight,\n offsetParent: self.intf.parentNode,\n parentNode: self.intf.parentNode,\n style: 'tree',\n data: self.viewData[rowIndex],\n };\n treeGrid = self.createGrid(trArgs);\n self.childGrids[rowIndex] = treeGrid;\n }\n treeGrid = self.childGrids[rowIndex];\n treeGrid.visible = true;\n self.dispatchEvent('expandtree', {\n treeGrid: treeGrid,\n data: self.viewData[rowIndex],\n rowIndex: rowIndex,\n });\n self.openChildren[rowIndex] = treeGrid;\n self.sizes.trees[rowIndex] = h;\n self.dispatchEvent('resizerow', { height: self.style.cellHeight });\n self.resize(true);\n };\n /**\n * Toggles tree grid open and close by row index.\n * @memberof canvasDatagrid\n * @name toggleTree\n * @method\n * @param {number} index The index of the row to toggle.\n */\n self.toggleTree = function (rowIndex) {\n var i = self.openChildren[rowIndex];\n if (i) {\n return self.collapseTree(rowIndex);\n }\n self.expandTree(rowIndex);\n };\n /**\n * Returns a header from the schema by name.\n * @memberof canvasDatagrid\n * @name getHeaderByName\n * @tutorial schema\n * @method\n * @returns {header} header with the selected name, or undefined.\n * @param {string} name The name of the column to resize.\n */\n self.getHeaderByName = function (name) {\n var x,\n i = self.getSchema();\n for (x = 0; x < i.length; x += 1) {\n if (i[x].name === name) {\n return i[x];\n }\n }\n };\n /**\n * Resizes a column to fit the longest value in the column. Call without a value to resize all columns.\n * Warning, can be slow on very large record sets (1m records ~3-5 seconds on an i7).\n * @memberof canvasDatagrid\n * @name fitColumnToValues\n * @method\n * @param {string} name The name of the column to resize.\n */\n self.fitColumnToValues = function (name, internal) {\n if (!self.canvas) {\n return;\n }\n\n const columnIndex =\n name === 'cornerCell' ? -1 : self.getHeaderByName(name).index;\n\n const newSize = Math.max(\n self.findColumnMaxTextLength(name),\n self.style.minColumnWidth,\n );\n\n self.sizes.columns[columnIndex] = newSize;\n\n self.dispatchEvent('resizecolumn', {\n x: newSize,\n y: self.resizingStartingHeight,\n draggingItem: self.currentCell,\n });\n\n if (!internal) {\n self.resize();\n self.draw(true);\n }\n };\n /**\n * Checks if a cell is currently visible.\n * @memberof canvasDatagrid\n * @name isCellVisible\n * @overload\n * @method\n * @returns {boolean} when true, the cell is visible, when false the cell is not currently drawn.\n * @param {number} columnIndex The column index of the cell to check.\n * @param {number} rowIndex The row index of the cell to check.\n */\n self.isCellVisible = function (cell, rowIndex) {\n // overload\n if (rowIndex !== undefined) {\n return (\n self.visibleCells.filter(function (c) {\n return c.columnIndex === cell && c.rowIndex === rowIndex;\n }).length > 0\n );\n }\n var x,\n l = self.visibleCells.length;\n for (x = 0; x < l; x += 1) {\n if (\n cell.x === self.visibleCells[x].x &&\n cell.y === self.visibleCells[x].y\n ) {\n return true;\n }\n }\n return false;\n };\n /**\n * Sets the order of the data.\n * @memberof canvasDatagrid\n * @name order\n * @method\n * @param {number} columnName Name of the column to be sorted.\n * @param {string} direction `asc` for ascending or `desc` for descending.\n * @param {function} [sortFunction] When defined, override the default sorting method defined in the column's schema and use this one.\n * @param {bool} [dontSetStorageData] Don't store this setting for future use.\n */\n self.order = function (\n columnName,\n direction,\n sortFunction,\n dontSetStorageData,\n ) {\n var f,\n c = self.getSchema().filter(function (col) {\n return col.name === columnName;\n });\n if (\n self.dispatchEvent('beforesortcolumn', {\n name: columnName,\n direction: direction,\n })\n ) {\n return;\n }\n self.orderBy = columnName;\n self.orderDirection = direction;\n if (!self.viewData || self.viewData.length === 0) {\n return;\n }\n if (c.length === 0) {\n throw new Error('Cannot sort. No such column name');\n }\n f = sortFunction || c[0].sorter || self.sorters[c[0].type];\n if (!f && c[0].type !== undefined) {\n console.warn(\n 'Cannot sort type \"%s\" falling back to string sort.',\n c[0].type,\n );\n }\n self.orderings.add(\n columnName,\n direction,\n typeof f === 'function' ? f : self.sorters.string,\n );\n self.refresh();\n self.dispatchEvent('sortcolumn', {\n name: columnName,\n direction: direction,\n });\n\n if (dontSetStorageData) {\n return;\n }\n self.setStorageData();\n };\n self.isInGrid = function (e) {\n if (e.x < 0 || e.x > self.width || e.y < 0 || e.y > self.height) {\n return false;\n }\n return true;\n };\n /**\n * Moves the current selection relative to the its current position. Note: this method does not move the selected data, just the selection itself.\n * @memberof canvasDatagrid\n * @name moveSelection\n * @method\n * @param {number} offsetX The number of columns to offset the selection.\n * @param {number} offsetY The number of rows to offset the selection.\n */\n self.moveSelection = function (offsetX, offsetY) {\n var sel = [];\n self.selections.forEach(function (row, rowIndex) {\n sel[rowIndex + offsetY] = [];\n row.forEach(function (colIndex) {\n sel[rowIndex + offsetY].push(colIndex + offsetX);\n });\n });\n self.selections = sel;\n };\n /**\n * Deletes currently selected data.\n * @memberof canvasDatagrid\n * @name deleteSelectedData\n * @method\n * @param {boolean} dontDraw Suppress the draw method after the selection change.\n */\n self.deleteSelectedData = function (dontDraw) {\n const affectedCells = self.clearSelectedCells();\n\n self.dispatchEvent('afterdelete', {\n cells: affectedCells,\n });\n\n if (dontDraw) {\n return;\n }\n\n requestAnimationFrame(() => self.draw());\n };\n /**\n * Moves data in the provided selection to another position in the grid. Moving data off the edge of the schema (columns/x) will truncate data.\n * @memberof canvasDatagrid\n * @name moveTo\n * @method\n * @param {array} sel 2D array representing selected rows and columns. `canvasDatagrid.selections` is in this format and can be used here.\n * @param {number} x The column index to start inserting the selection at.\n * @param {number} y The row index to start inserting the selection at.\n */\n self.moveTo = function (sel, x, y) {\n var selectedData = self.getSelectedData(),\n visibleSchema = self.getVisibleSchema(),\n selectionLength = sel.length,\n xi,\n maxRowLength = -Infinity,\n minXi = Infinity,\n yi = y - 1;\n\n sel.forEach(function (row, rowIndex) {\n if (rowIndex === selectionLength) {\n return;\n }\n if (row.length === 0) {\n return;\n }\n minXi = Math.min(self.getVisibleColumnIndexOf(x), minXi);\n maxRowLength = Math.max(maxRowLength, row.length);\n row.forEach(function (colIndex) {\n // intentional redef of colIndex\n colIndex = self.getVisibleColumnIndexOf(colIndex);\n if (!visibleSchema[colIndex]) {\n return;\n }\n // TODO:\n if (!self.data[rowIndex]) {\n self.data[rowIndex] = {};\n }\n // TODO:\n self.data[rowIndex][visibleSchema[colIndex].name] = null;\n });\n });\n\n sel.forEach(function (row, index) {\n var lastSourceIndex;\n yi += 1;\n xi = self.getVisibleColumnIndexOf(x);\n row.forEach(function (colIndex, cidx) {\n colIndex = self.getVisibleColumnIndexOf(colIndex);\n if (cidx > 0) {\n // this confusing bit of nonsense figures out\n // if the selection has skipped cells\n xi += colIndex - lastSourceIndex;\n }\n lastSourceIndex = colIndex;\n if (\n colIndex === -1 ||\n !visibleSchema[xi] ||\n !visibleSchema[colIndex] ||\n // TODO:\n self.data.length - 1 < yi ||\n yi < 0\n ) {\n return;\n }\n // TODO:\n if (!self.data[yi]) {\n self.data[yi] = {};\n }\n // TODO:\n self.data[yi][visibleSchema[xi].name] =\n selectedData[index][visibleSchema[colIndex].name];\n });\n });\n };\n /**\n * Checks if a given column is visible.\n * @memberof canvasDatagrid\n * @name isColumnVisible\n * @method\n * @returns {boolean} When true, the column is visible.\n * @param {number} columnIndex Column index.\n */\n self.isColumnVisible = function (columnIndex) {\n return (\n self.visibleCells.filter(function (c) {\n return c.columnIndex === columnIndex;\n }).length > 0\n );\n };\n /**\n * Checks if a given row is visible.\n * @memberof canvasDatagrid\n * @name isRowVisible\n * @method\n * @returns {boolean} When true, the row is visible.\n * @param {number} rowIndex Row index.\n */\n self.isRowVisible = function (rowIndex) {\n return (\n self.visibleCells.filter(function (c) {\n return c.rowIndex === rowIndex;\n }).length > 0\n );\n };\n /**\n * Gets the cell at columnIndex and rowIndex.\n * @memberof canvasDatagrid\n * @name getVisibleCellByIndex\n * @method\n * @returns {cell} cell at the selected location.\n * @param {number} x Column index.\n * @param {number} y Row index.\n */\n self.getVisibleCellByIndex = function (x, y) {\n return self.visibleCells.filter(function (c) {\n return c.columnIndex === x && c.rowIndex === y;\n })[0];\n };\n /**\n * Gets the cell at grid pixel coordinate x and y. Author's note. This function ties drawing and events together. This is a very complex function and is core to the component.\n * @memberof canvasDatagrid\n * @name getCellAt\n * @method\n * @returns {cell} cell at the selected location.\n * @param {number} x Number of pixels from the left.\n * @param {number} y Number of pixels from the top.\n */\n self.getCellAt = function (x, y, useTouchScrollZones) {\n function getBorder(entitiy) {\n if (\n entitiy.x + entitiy.width - self.attributes.borderResizeZone * 0.4 <\n x &&\n entitiy.x + entitiy.width + self.attributes.borderResizeZone * 0.6 > x\n ) {\n return 'r';\n }\n if (\n entitiy.x - self.attributes.borderResizeZone * 0.4 < x &&\n entitiy.x + self.attributes.borderResizeZone * 0.6 > x\n ) {\n return 'l';\n }\n if (\n entitiy.y + entitiy.height - self.attributes.borderResizeZone * 0.4 <\n y &&\n entitiy.y + entitiy.height + self.attributes.borderResizeZone * 0.6 > y\n ) {\n return 'b';\n }\n if (\n entitiy.y - self.attributes.borderResizeZone * 0.4 < y &&\n entitiy.y + self.attributes.borderResizeZone * 0.6 > y\n ) {\n return 't';\n }\n }\n if (!self.visibleCells) {\n return;\n }\n var border,\n tsz = useTouchScrollZones ? self.attributes.touchScrollZone : 0,\n moveMode = self.attributes.borderDragBehavior === 'move',\n i,\n l = self.visibleCells.length,\n moveBorder,\n xBorderBehavior = moveMode ? self.cursorGrab : 'ew-resize',\n yBorderBehavior = moveMode ? self.cursorGrab : 'ns-resize',\n cell,\n entitiy;\n if (!self.visibleCells || !self.visibleCells.length) {\n return;\n }\n self.hasFocus = true;\n if (!(y < self.height && y > 0 && x < self.width && x > 0)) {\n self.hasFocus = false;\n return {\n dragContext: 'inherit',\n context: 'inherit',\n };\n }\n for (i = 0; i < l; i += 1) {\n cell = self.visibleCells[i];\n // interactive dimensions of the cell. used for touch \"over size\" zones\n entitiy = {\n x: cell.x,\n y: cell.y,\n height: cell.height,\n width: cell.width,\n };\n if (\n useTouchScrollZones &&\n /(vertical|horizontal)-scroll-/.test(cell.style)\n ) {\n entitiy.x -= tsz;\n entitiy.y -= tsz;\n entitiy.height += tsz;\n entitiy.width += tsz;\n }\n if (\n entitiy.x - self.style.cellBorderWidth < x &&\n entitiy.x + entitiy.width + self.style.cellBorderWidth > x &&\n entitiy.y - self.style.cellBorderWidth < y &&\n entitiy.y + entitiy.height + self.style.cellBorderWidth > y\n ) {\n if (/frozen-row-marker/.test(cell.style)) {\n cell.dragContext = cell.style;\n cell.context = 'row-resize';\n return cell;\n }\n if (/frozen-column-marker/.test(cell.style)) {\n cell.dragContext = cell.style;\n cell.context = 'col-resize';\n return cell;\n }\n if (/selection-handle-/.test(cell.style)) {\n cell.dragContext = cell.style;\n cell.context = 'crosshair';\n return cell;\n }\n if (/vertical-scroll-(bar|box)/.test(cell.style)) {\n cell.dragContext = 'vertical-scroll-box';\n cell.context = 'vertical-scroll-box';\n cell.isScrollBar = true;\n cell.isVerticalScrollBar = true;\n if (y > self.scrollBox.box.v.y + self.scrollBox.scrollBoxHeight) {\n cell.dragContext = 'vertical-scroll-bottom';\n cell.context = 'vertical-scroll-bottom';\n } else if (y < self.scrollBox.box.v.y) {\n cell.dragContext = 'vertical-scroll-top';\n cell.context = 'vertical-scroll-top';\n }\n self.cursor = 'default';\n return cell;\n }\n if (/horizontal-scroll-(bar|box)/.test(cell.style)) {\n cell.dragContext = 'horizontal-scroll-box';\n cell.context = 'horizontal-scroll-box';\n cell.isScrollBar = true;\n cell.isHorizontalScrollBar = true;\n if (x > self.scrollBox.box.h.x + self.scrollBox.scrollBoxWidth) {\n cell.dragContext = 'horizontal-scroll-right';\n cell.context = 'horizontal-scroll-right';\n } else if (x < self.scrollBox.box.h.x) {\n cell.dragContext = 'horizontal-scroll-left';\n cell.context = 'horizontal-scroll-left';\n }\n self.cursor = 'default';\n return cell;\n }\n border = getBorder(entitiy);\n // check if the border of this cell is the border of the selection and if so show move cursor in move mode\n moveBorder =\n moveMode &&\n cell.selectionBorder &&\n cell.selectionBorder.indexOf(border) !== -1;\n if (\n ['l', 'r'].indexOf(border) !== -1 &&\n (self.attributes.allowColumnResize || moveBorder) &&\n ((self.attributes.allowColumnResizeFromCell && cell.isNormal) ||\n !cell.isNormal ||\n moveBorder) &&\n ((self.attributes.allowRowHeaderResize &&\n (cell.isRowHeader || cell.isCorner)) ||\n !(cell.isRowHeader && cell.isCorner))\n ) {\n if (\n (cell.isColumnHeader ||\n cell.isCorner ||\n (self.attributes.allowColumnResizeFromCell && cell.isNormal)) &&\n border === 'r'\n ) {\n cell.context = 'ew-resize';\n cell.dragContext = 'ew-resize';\n return cell;\n }\n if (!(cell.isColumnHeader || cell.isCorner) && moveBorder) {\n cell.context = xBorderBehavior;\n cell.dragContext = border + '-move';\n return cell;\n }\n }\n if (\n ['t', 'b'].indexOf(border) !== -1 &&\n cell.rowIndex > -1 &&\n (self.attributes.allowRowResize || moveBorder) &&\n ((self.attributes.allowRowResizeFromCell && cell.isNormal) ||\n !cell.isNormal ||\n moveBorder) &&\n !cell.isColumnHeader\n ) {\n if (\n (cell.isRowHeader ||\n cell.isCorner ||\n (self.attributes.allowRowResizeFromCell && cell.isNormal)) &&\n border === 'b'\n ) {\n cell.context = 'ns-resize';\n cell.dragContext = 'ns-resize';\n return cell;\n }\n if (!(cell.isRowHeader || cell.isCorner) && moveBorder) {\n cell.context = yBorderBehavior;\n cell.dragContext = border + '-move';\n return cell;\n }\n }\n if (cell.style === 'columnHeaderCell') {\n cell.context = 'cell';\n cell.dragContext = 'column-reorder';\n return cell;\n }\n if (cell.style === 'rowHeaderCell') {\n if (\n self.attributes.rowGrabZoneSize +\n (cell.y - self.style.cellBorderWidth) <\n y ||\n !self.attributes.allowRowReordering\n ) {\n cell.dragContext = 'cell';\n cell.context = 'cell';\n } else {\n cell.context = self.cursorGrab;\n cell.dragContext = 'row-reorder';\n }\n return cell;\n }\n if (cell.isGrid) {\n self.hasFocus = false;\n cell.dragContext = 'cell-grid';\n cell.context = 'cell-grid';\n return cell;\n }\n if (cell.style === 'tree-grid') {\n self.hasFocus = false;\n cell.dragContext = 'tree';\n cell.context = 'tree';\n return cell;\n }\n cell.dragContext = 'cell';\n cell.context = 'cell';\n return cell;\n }\n }\n self.hasFocus = true;\n self.cursor = 'default';\n return {\n dragContext: 'background',\n context: 'background',\n style: 'background',\n isBackground: true,\n };\n };\n /**\n * Gets the bounds of current selection.\n * @returns {rect} selection.\n * @memberof canvasDatagrid\n * @name getSelectionBounds\n * @method\n */\n self.getSelectionBounds = function () {\n var low = { x: Infinity, y: Infinity },\n high = { x: -Infinity, y: -Infinity };\n self.selections.forEach(function (row, rowIndex) {\n var maxCol, minCol;\n low.y = rowIndex < low.y ? rowIndex : low.y;\n high.y = rowIndex > high.y ? rowIndex : high.y;\n maxCol = Math.max.apply(null, row);\n minCol = Math.min.apply(null, row);\n low.x = minCol < low.x ? minCol : low.x;\n high.x = maxCol > high.x ? maxCol : high.x;\n });\n return {\n top: low.y,\n left: low.x,\n bottom: high.y,\n right: high.x,\n };\n };\n /**\n * Returns an auto generated schema based on data structure.\n * @memberof canvasDatagrid\n * @name getSchemaFromData\n * @method\n * @tutorial schema\n * @returns {schema} schema A schema based on the first item in the data array.\n */\n self.getSchemaFromData = function (d) {\n d = d || self.originalData;\n return Object.keys(d[0] || { ' ': '' }).map(function mapEachSchemaColumn(\n key,\n index,\n ) {\n var type = self.getBestGuessDataType(key, d),\n i = {\n name: key,\n title: isNaN(parseInt(key, 10))\n ? key\n : self.integerToAlpha(key).toUpperCase(),\n index: index,\n columnIndex: index,\n type: type,\n filter: self.filter(type),\n };\n if (\n self.storedSettings &&\n self.storedSettings.visibility &&\n self.storedSettings.visibility[i.name] !== undefined\n ) {\n i.hidden = !self.storedSettings.visibility[i.name];\n }\n return i;\n });\n };\n /**\n * Clears the change log grid.changes that keeps track of changes to the data set.\n * This does not undo changes or alter data it is simply a convince array to keep\n * track of changes made to the data since last this method was called.\n * @memberof canvasDatagrid\n * @name clearChangeLog\n * @method\n */\n self.clearChangeLog = function () {\n self.changes = [];\n };\n /**\n * Selects an area of the grid.\n * @memberof canvasDatagrid\n * @name selectArea\n * @method\n * @param {rect} bounds A rect object representing the selected values.\n */\n self.selectArea = function (bounds, ctrl) {\n self.selectionBounds = bounds || self.selectionBounds;\n var ev,\n x,\n y,\n s = self.getSchema();\n if (!ctrl) {\n self.selections = [];\n }\n if (\n self.selectionBounds.top < -1 ||\n self.selectionBounds.bottom > self.viewData.length ||\n self.selectionBounds.left < -1 ||\n self.selectionBounds.right > s.length\n ) {\n throw new Error('Impossible selection area');\n }\n for (\n x = self.selectionBounds.top;\n x <= self.selectionBounds.bottom;\n x += 1\n ) {\n self.selections[x] = [];\n for (\n y = self.selectionBounds.left;\n y <= self.selectionBounds.right;\n y += 1\n ) {\n if (self.selections[x].indexOf(y) === -1) {\n self.selections[x].push(y);\n }\n }\n }\n ev = {\n selections: self.selections,\n selectionBounds: self.selectionBounds,\n selectedCells: self.getSelectedCells(),\n };\n Object.defineProperty(ev, 'selectedData', {\n get: function () {\n return self.getSelectedData();\n },\n });\n self.dispatchEvent('selectionchanged', ev);\n };\n /**\n * Returns the maximum text width for a given column by column name.\n * @memberof canvasDatagrid\n * @name findColumnMaxTextLength\n * @method\n * @returns {number} The number of pixels wide the maximum width value in the selected column.\n * @param {string} name The name of the column to calculate the value's width of.\n */\n self.findColumnMaxTextLength = function (name) {\n var m = -Infinity;\n if (name === 'cornerCell') {\n self.ctx.font = self.style.rowHeaderCellFont;\n return (\n self.ctx.measureText(\n (\n self.viewData.length + (self.attributes.showNewRow ? 1 : 0)\n ).toString(),\n ).width +\n self.style.autosizePadding +\n self.style.autosizeHeaderCellPadding +\n self.style.rowHeaderCellPaddingRight +\n self.style.rowHeaderCellPaddingLeft +\n (self.attributes.tree\n ? self.style.treeArrowWidth +\n self.style.treeArrowMarginLeft +\n self.style.treeArrowMarginRight\n : 0)\n );\n }\n var formatter = null;\n self.getSchema().forEach(function (col) {\n if (col.name !== name) {\n return;\n }\n self.ctx.font = self.style.columnHeaderCellFont;\n var t =\n self.ctx.measureText(col.title || col.name).width +\n self.style.headerCellPaddingRight +\n self.style.headerCellPaddingLeft;\n m = t > m ? t : m;\n formatter = self.formatters[col.type];\n });\n self.viewData.forEach(function (row) {\n var text = row[name];\n if (formatter) {\n text = formatter({ cell: { value: text } });\n }\n self.ctx.font = self.style.cellFont;\n var t =\n self.ctx.measureText(text).width +\n self.style.cellPaddingRight +\n self.style.cellPaddingLeft +\n self.style.cellAutoResizePadding;\n m = t > m ? t : m;\n });\n return m;\n };\n /**\n * Gets the total width of all header columns.\n * @memberof canvasDatagrid\n * @name getHeaderWidth\n * @method\n */\n self.getHeaderWidth = function () {\n return self.getVisibleSchema().reduce(function (total, header) {\n return total + parseInt(header.width || self.style.cellWidth, 10);\n }, 0);\n };\n /**\n * Gets the height of a row by index.\n * @memberof canvasDatagrid\n * @name getRowHeight\n * @method\n * @param {number} rowIndex The row index to lookup.\n */\n self.getRowHeight = function (rowIndex) {\n return (self.sizes.rows[rowIndex] || self.style.cellHeight) * self.scale;\n };\n /**\n * Gets the width of a column by index.\n * @memberof canvasDatagrid\n * @name getColumnWidth\n * @method\n * @param {number} columnIndex The column index to lookup.\n */\n self.getColumnWidth = function (columnIndex) {\n return (\n (self.sizes.columns[columnIndex] ||\n self.getSchema()[columnIndex].width ||\n self.style.cellWidth) * self.scale\n );\n };\n self.formatters.string = function cellFormatterString(e) {\n return e.cell.value !== undefined ? e.cell.value : '';\n };\n self.formatters.rowHeaderCell = self.formatters.string;\n self.formatters.headerCell = self.formatters.string;\n self.formatters.number = self.formatters.string;\n self.formatters.int = self.formatters.string;\n self.formatters.html = self.formatters.string;\n self.sorters.string = function (columnName, direction) {\n var asc = direction === 'asc';\n return function (a, b) {\n const aValue = a[columnName] || '';\n const bValue = b[columnName] || '';\n if (asc) {\n if (!aValue.localeCompare) {\n return 1;\n }\n return aValue.localeCompare(bValue);\n }\n if (!bValue.localeCompare) {\n return 1;\n }\n return bValue.localeCompare(aValue);\n };\n };\n self.sorters.number = function (columnName, direction) {\n var asc = direction === 'asc';\n return function (a, b) {\n if (asc) {\n return a[columnName] - b[columnName];\n }\n return b[columnName] - a[columnName];\n };\n };\n self.sorters.date = function (columnName, direction) {\n var asc = direction === 'asc';\n return function (a, b) {\n if (asc) {\n return (\n new Date(a[columnName]).getTime() - new Date(b[columnName]).getTime()\n );\n }\n return (\n new Date(b[columnName]).getTime() - new Date(a[columnName]).getTime()\n );\n };\n };\n}\n","/*jslint browser: true, unparam: true, todo: true, plusplus: true*/\n/*globals define: true, MutationObserver: false, requestAnimationFrame: false, performance: false, btoa: false*/\n'use strict';\n\nexport default function (self) {\n var touchTimerMs = 50,\n debounceTouchMove,\n touchMoving,\n touchScrollTimeout;\n self.scrollAnimation = {};\n self.touchDelta = {};\n self.touchAnimateTo = {};\n self.animationFrames = 0;\n self.getTouchPos = function (e, touchIndex) {\n var t = touchIndex ? e.touches[touchIndex] : e.touches[0],\n rect = self.canvas.getBoundingClientRect(),\n pos;\n if (!t) {\n return;\n }\n pos = {\n x: t.clientX - rect.left,\n y: t.clientY - rect.top,\n };\n if (self.isChildGrid) {\n pos.x -= self.canvasOffsetLeft;\n pos.y -= self.canvasOffsetTop;\n }\n return {\n x: pos.x,\n y: pos.y,\n rect: rect,\n };\n };\n // shamelessly stolen from from https://gist.github.com/gre/1650294\n self.easingFunctions = {\n linear: function (t) {\n return t;\n },\n easeInQuad: function (t) {\n return t * t;\n },\n easeOutQuad: function (t) {\n return t * (2 - t);\n },\n easeInOutQuad: function (t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n },\n easeInCubic: function (t) {\n return t * t * t;\n },\n easeOutCubic: function (t) {\n return --t * t * t + 1;\n },\n easeInOutCubic: function (t) {\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n },\n easeInQuart: function (t) {\n return t * t * t * t;\n },\n easeOutQuart: function (t) {\n return 1 - --t * t * t * t;\n },\n easeInOutQuart: function (t) {\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\n },\n easeInQuint: function (t) {\n return t * t * t * t * t;\n },\n easeOutQuint: function (t) {\n return 1 + --t * t * t * t * t;\n },\n easeInOutQuint: function (t) {\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\n },\n };\n self.easing = function (t, b, c, d) {\n return (\n c * self.easingFunctions[self.attributes.touchEasingMethod](t / d) + b\n );\n };\n self.calculatePPSTimed = function () {\n self.xPPST = -(\n (self.touchDelta.x - self.touchSigmaTimed.x) /\n (self.touchDelta.t - self.touchSigmaTimed.t)\n );\n self.yPPST = -(\n (self.touchDelta.y - self.touchSigmaTimed.y) /\n (self.touchDelta.t - self.touchSigmaTimed.t)\n );\n self.touchSigmaTimed = {\n x: self.touchDelta.x,\n y: self.touchDelta.y,\n t: performance.now(),\n };\n };\n self.calculatePPS = function () {\n self.xPPS = -(\n (self.touchDelta.x - self.touchSigma.x) /\n (self.touchDelta.t - self.touchSigma.t)\n );\n self.yPPS = -(\n (self.touchDelta.y - self.touchSigma.y) /\n (self.touchDelta.t - self.touchSigma.t)\n );\n self.touchSigma = {\n x: self.touchDelta.x,\n y: self.touchDelta.y,\n t: performance.now(),\n };\n };\n self.touchEndAnimation = function () {\n if (!self.canvas || !self.scrollBox.scrollTo) {\n return requestAnimationFrame(self.touchEndAnimation);\n }\n var n = performance.now(),\n d = self.attributes.touchReleaseAnimationDurationMs,\n t;\n t = n - self.touchDelta.t;\n self.animationFrames += 1;\n self.scrollAnimation.x = self.easing(\n t,\n self.touchDelta.scrollLeft,\n self.touchAnimateTo.x,\n d,\n );\n self.scrollAnimation.y = self.easing(\n t,\n self.touchDelta.scrollTop,\n self.touchAnimateTo.y,\n d,\n );\n if (\n t > d ||\n (self.scrollAnimation.y === self.scrollBox.scrollTop &&\n self.scrollAnimation.x === self.scrollBox.scrollLeft) ||\n self.stopAnimation\n ) {\n return;\n }\n self.scrollBox.scrollTo(self.scrollAnimation.x, self.scrollAnimation.y);\n requestAnimationFrame(self.touchEndAnimation);\n };\n self.touchEditCell = function (cell) {\n self.beginEditAt(cell.columnIndex, cell.rowIndex);\n };\n self.touchstart = function (e) {\n if (e.changedTouches[0]) {\n self.touchStart = self.getTouchPos(e);\n self.startingCell = self.getCellAt(\n self.touchStart.x,\n self.touchStart.y,\n true,\n );\n }\n if (\n self.dispatchEvent('touchstart', {\n NativeEvent: e,\n cell: self.startingCell,\n })\n ) {\n return;\n }\n self.disposeContextMenu();\n clearInterval(self.calculatePPSTimer);\n clearTimeout(self.touchContextTimeout);\n self.touchStartEvent = e;\n self.stopAnimation = true;\n self.animationFrames = 0;\n self.stopPropagation(e);\n if (e.touches.length === 1 && e.changedTouches[0] && !self.zoomAltered) {\n self.touchLength = 1;\n self.touchStart = self.touchStart || self.touchStart1;\n self.touchScrollStart = {\n x: self.scrollBox.scrollLeft,\n y: self.scrollBox.scrollTop,\n t: performance.now(),\n };\n self.touchDelta = {\n x: 0,\n y: 0,\n scrollLeft: self.scrollBox.scrollLeft,\n scrollTop: self.scrollBox.scrollTop,\n t: self.touchScrollStart.t,\n };\n self.touchSigma = {\n x: self.touchDelta.x,\n y: self.touchDelta.y,\n t: self.touchDelta.t,\n };\n self.touchSigmaTimed = {\n x: self.touchDelta.x,\n y: self.touchDelta.y,\n t: self.touchDelta.t,\n };\n self.touchContextTimeout = setTimeout(function () {\n self.contextmenuEvent(e, self.touchStart);\n }, self.attributes.touchContextMenuTimeMs);\n self.calculatePPSTimer = setInterval(\n self.calculatePPSTimed,\n touchTimerMs,\n );\n if (\n self.startingCell &&\n (self.startingCell.isGrid ||\n ['tree', 'inherit'].indexOf(self.startingCell.context) !== -1)\n ) {\n self.hasFocus = false;\n return;\n }\n self.hasFocus = true;\n if (self.startingCell.isHeader) {\n if (self.startingCell.isRowHeader) {\n self.selectArea({\n top: self.startingCell.rowIndex,\n bottom: self.startingCell.rowIndex,\n left: 0,\n right: self.getVisibleSchema().length - 1,\n });\n self.draw(true);\n } else if (self.startingCell.isColumnHeader) {\n if (self.attributes.columnHeaderClickBehavior === 'sort') {\n if (self.orderBy === self.startingCell.header.name) {\n self.orderDirection =\n self.orderDirection === 'asc' ? 'desc' : 'asc';\n } else {\n self.orderDirection = 'asc';\n }\n self.order(self.startingCell.header.name, self.orderDirection);\n }\n if (self.attributes.columnHeaderClickBehavior === 'select') {\n self.selectArea({\n top: 0,\n bottom: self.viewData.length - 1,\n left: self.startingCell.columnIndex,\n right: self.startingCell.columnIndex,\n });\n self.draw(true);\n }\n }\n self.touchEndEvents(e);\n return;\n }\n }\n if (self.zoomAltered) {\n return;\n }\n document.body.addEventListener('touchmove', self.touchmove, {\n passive: false,\n });\n document.body.addEventListener('touchend', self.touchend, false);\n document.body.addEventListener('touchcancel', self.touchcancel, false);\n self.draw(true);\n };\n self.touchSelect = function (cell, handleType) {\n if (cell.rowIndex === undefined || cell.columnIndex === undefined) {\n return;\n }\n self.touchSelecting = true;\n var bounds = self.getSelectionBounds();\n if (\n handleType === 'selection-handle-bl' &&\n cell.rowIndex >= bounds.top &&\n cell.columnIndex <= bounds.right\n ) {\n bounds.bottom = cell.rowIndex;\n bounds.left = cell.columnIndex;\n } else if (\n handleType === 'selection-handle-tl' &&\n cell.rowIndex <= bounds.bottom &&\n cell.columnIndex <= bounds.right\n ) {\n bounds.top = cell.rowIndex;\n bounds.left = cell.columnIndex;\n } else if (\n handleType === 'selection-handle-tr' &&\n cell.rowIndex <= bounds.bottom &&\n cell.columnIndex >= bounds.left\n ) {\n bounds.top = cell.rowIndex;\n bounds.right = cell.columnIndex;\n } else if (\n handleType === 'selection-handle-br' &&\n cell.rowIndex >= bounds.top &&\n cell.columnIndex >= bounds.left\n ) {\n bounds.bottom = cell.rowIndex;\n bounds.right = cell.columnIndex;\n }\n if (self.attributes.selectionMode === 'row' || cell.rowIndex === -1) {\n bounds.left = 0;\n bounds.right = self.getSchema().length - 1;\n } else {\n bounds.left = Math.max(0, bounds.left);\n }\n self.selectArea(bounds);\n self.draw(true);\n };\n function touchMove(e) {\n var ch, rw, rScrollZone, lScrollZone, bScrollZone, tScrollZone, sbw, t1, t2;\n if (self.dispatchEvent('beforetouchmove', { NativeEvent: e })) {\n return;\n }\n clearTimeout(touchScrollTimeout);\n if (e.changedTouches[0]) {\n self.touchPosition = self.getTouchPos(e);\n }\n if (e.changedTouches[1]) {\n self.touchPosition1 = self.getTouchPos(e, 1);\n }\n if (\n Math.abs(self.touchDelta.x) + Math.abs(self.touchDelta.y) >\n self.attributes.touchDeadZone\n ) {\n clearTimeout(self.touchContextTimeout);\n }\n if (e.touches.length === 2 && self.touchPosition && self.touchPosition1) {\n t1 = self.touchPosition.y;\n t2 = self.touchPosition1.y;\n if (!self.zoomDeltaStart) {\n self.zoomDeltaStart = Math.abs(t1 - t2);\n self.startScale = self.scale;\n }\n self.touchLength = 2;\n self.scaleDelta = self.zoomDeltaStart - Math.abs(t1 - t2);\n self.scale =\n self.startScale -\n self.scaleDelta * self.attributes.touchZoomSensitivity;\n self.scale = Math.min(\n Math.max(self.scale, self.attributes.touchZoomMin),\n self.attributes.touchZoomMax,\n );\n self.zoomAltered = true;\n self.resize(true);\n self.resizeChildGrids();\n return;\n }\n if (self.zoomAltered) {\n return;\n }\n self.touchLength = 1;\n self.touchPosition = self.touchPosition || self.touchPosition1;\n ch = self.getColumnHeaderCellHeight();\n rw = self.getRowHeaderCellWidth();\n rScrollZone =\n self.width - self.style.scrollBarWidth - self.touchPosition.x <\n self.attributes.selectionScrollZone;\n lScrollZone =\n self.touchPosition.x - rw < self.attributes.selectionScrollZone;\n bScrollZone =\n self.height - self.style.scrollBarWidth - self.touchPosition.y <\n self.attributes.selectionScrollZone;\n tScrollZone =\n self.touchPosition.y - ch < self.attributes.selectionScrollZone;\n sbw = self.style.scrollBarWidth;\n function touchScroll() {\n var x = self.scrollBox.scrollLeft,\n y = self.scrollBox.scrollTop;\n x += rScrollZone ? self.attributes.selectionScrollIncrement : 0;\n y += bScrollZone ? self.attributes.selectionScrollIncrement : 0;\n y -= tScrollZone ? self.attributes.selectionScrollIncrement : 0;\n x -= lScrollZone ? self.attributes.selectionScrollIncrement : 0;\n self.scrollBox.scrollTo(x, y);\n touchScrollTimeout = setTimeout(\n touchScroll,\n self.attributes.scrollRepeatRate,\n );\n }\n e.stopPropagation();\n self.touchDelta = {\n x: self.touchPosition.x - self.touchStart.x,\n y: self.touchPosition.y - self.touchStart.y,\n scrollLeft: self.scrollBox.scrollLeft,\n scrollTop: self.scrollBox.scrollTop,\n t: performance.now(),\n };\n self.currentCell = self.getCellAt(\n self.touchPosition.x,\n self.touchPosition.y,\n );\n self.dispatchEvent('touchmove', { NativeEvent: e, cell: self.currentCell });\n self.calculatePPS();\n self.touchDuration = performance.now() - self.touchScrollStart.t;\n self.stopAnimation = true;\n self.animationFrames = 0;\n if (\n self.touchSelecting &&\n (rScrollZone || lScrollZone || tScrollZone || bScrollZone)\n ) {\n touchScroll();\n }\n if (/vertical-scroll-/.test(self.startingCell.style)) {\n self.scrollBox.scrollTop =\n self.scrollBox.scrollHeight *\n ((self.touchPosition.y - ch - sbw) /\n (self.scrollBox.height - sbw - ch));\n return;\n }\n if (/horizontal-scroll-/.test(self.startingCell.style)) {\n self.scrollBox.scrollLeft =\n self.scrollBox.scrollWidth *\n ((self.touchPosition.x - rw - sbw) / (self.scrollBox.width - sbw - rw));\n return;\n }\n if (/selection-handle-/.test(self.startingCell.style)) {\n self.touchSelect(self.currentCell, self.startingCell.style);\n return;\n }\n self.scrollBox.scrollTo(\n self.touchScrollStart.x - self.touchDelta.x,\n self.touchScrollStart.y - self.touchDelta.y,\n );\n }\n self.touchmove = function (e) {\n if (touchMoving) {\n return;\n }\n requestAnimationFrame(function () {\n touchMoving = true;\n touchMove(e);\n touchMoving = false;\n });\n };\n self.touchEndEvents = function (e) {\n self.zoomDeltaStart = undefined;\n self.touchSelecting = false;\n clearInterval(self.touchScrollTimeout);\n clearInterval(self.touchContextTimeout);\n clearInterval(self.calculatePPSTimer);\n e.stopPropagation();\n document.body.removeEventListener('touchmove', self.touchmove, {\n passive: false,\n });\n document.body.removeEventListener('touchend', self.touchend, false);\n document.body.removeEventListener('touchcancel', self.touchcancel, false);\n };\n self.touchend = function (e) {\n if (\n self.dispatchEvent('touchend', { NativeEvent: e, cell: self.currentCell })\n ) {\n return;\n }\n self.zoomDeltaStart = undefined;\n if (e.changedTouches[0]) {\n self.touchPosition = undefined;\n }\n if (e.changedTouches[1]) {\n self.touchPosition1 = undefined;\n }\n if (self.zoomAltered) {\n if (e.touches.length === 0) {\n self.zoomAltered = false;\n }\n return;\n }\n var dz =\n Math.abs(self.touchDelta.x) + Math.abs(self.touchDelta.y) <\n self.attributes.touchDeadZone;\n if (isNaN(self.xPPS)) {\n self.xPPS = 0;\n }\n if (isNaN(self.yPPS)) {\n self.yPPS = 0;\n }\n if (isNaN(self.xPPST)) {\n self.xPPST = 0;\n }\n if (isNaN(self.yPPST)) {\n self.yPPST = 0;\n }\n self.touchAnimateTo.x =\n self.xPPS * self.attributes.touchReleaseAcceleration;\n self.touchAnimateTo.y =\n self.yPPS * self.attributes.touchReleaseAcceleration;\n self.calculatePPSTimed();\n if (\n !dz &&\n self.animationFrames === 0 &&\n (Math.abs(self.xPPST) > self.attributes.scrollAnimationPPSThreshold ||\n Math.abs(self.yPPST) > self.attributes.scrollAnimationPPSThreshold) &&\n !/-scroll-/.test(self.startingCell.style) &&\n !dz\n ) {\n self.stopAnimation = false;\n self.touchEndAnimation();\n }\n self.touchEndEvents(e);\n };\n self.touchcancel = function (e) {\n if (\n self.dispatchEvent('touchcancel', {\n NativeEvent: e,\n cell: self.currentCell,\n })\n ) {\n return;\n }\n self.touchEndEvents(e);\n };\n}\n","module.exports=function(e){var o={};function a(t){if(o[t])return o[t].exports;var r=o[t]={i:t,l:!1,exports:{}};return e[t].call(r.exports,r,r.exports,a),r.l=!0,r.exports}return a.m=e,a.c=o,a.d=function(e,o,t){a.o(e,o)||Object.defineProperty(e,o,{enumerable:!0,get:t})},a.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},a.t=function(e,o){if(1&o&&(e=a(e)),8&o)return e;if(4&o&&\"object\"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(a.r(t),Object.defineProperty(t,\"default\",{enumerable:!0,value:e}),2&o&&\"string\"!=typeof e)for(var r in e)a.d(t,r,function(o){return e[o]}.bind(null,r));return t},a.n=function(e){var o=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(o,\"a\",o),o},a.o=function(e,o){return Object.prototype.hasOwnProperty.call(e,o)},a.p=\"\",a(a.s=0)}([function(e,o,a){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0});var t=a(1),r=Object.keys(t.default).reduce((function(e,o){return e.concat(t.default[o])}),[]);o.default=function(e){return-1===r.indexOf(e.key)}},function(e,o,a){\"use strict\";Object.defineProperty(o,\"__esModule\",{value:!0});o.default={modifier:[\"Alt\",\"AltGraph\",\"CapsLock\",\"Control\",\"Fn\",\"FnLock\",\"Meta\",\"NumLock\",\"ScrollLock\",\"Shift\",\"Symbol\",\"SymbolLock\"],legacyModifier:[\"Hyper\",\"Super\"],whiteSpace:[\"Enter\",\"Tab\"],navigation:[\"ArrowDown\",\"ArrowLeft\",\"ArrowRight\",\"ArrowUp\",\"End\",\"Home\",\"PageDown\",\"PageUp\"],editing:[\"Backspace\",\"Clear\",\"Copy\",\"CrSel\",\"Cut\",\"Delete\",\"EraseEof\",\"ExSel\",\"Insert\",\"Paste\",\"Redo\",\"Undo\"],ui:[\"Accept\",\"Again\",\"Attn\",\"Cancel\",\"ContextMenu\",\"Escape\",\"Execute\",\"Find\",\"Help\",\"Pause\",\"Play\",\"Props\",\"Select\",\"ZoomIn\",\"ZoomOut\"],device:[\"BrightnessDown\",\"BrightnessUp\",\"Eject\",\"LogOff\",\"Power\",\"PowerOff\",\"PrintScreen\",\"Hibernate\",\"Standby\",\"WakeUp\"],imeCompositionKeys:[\"AllCandidates\",\"Alphanumeric\",\"CodeInput\",\"Compose\",\"Convert\",\"Dead\",\"FinalMode\",\"GroupFirst\",\"GroupLast\",\"GroupNext\",\"GroupPrevious\",\"ModeChange\",\"NextCandidate\",\"NonConvert\",\"PreviousCandidate\",\"Process\",\"SingleCandidate\"],koreanSpecific:[\"HangulMode\",\"HanjaMode\",\"JunjaMode\"],japaneseSpecific:[\"Eisu\",\"Hankaku\",\"Hiragana\",\"HiraganaKatakana\",\"KanaMode\",\"KanjiMode\",\"Katakana\",\"Romaji\",\"Zenkaku\",\"ZenkakuHankaku\"],commonFunction:[\"F1\",\"F2\",\"F3\",\"F4\",\"F5\",\"F6\",\"F7\",\"F8\",\"F9\",\"F10\",\"F11\",\"F12\",\"Soft1\",\"Soft2\",\"Soft3\",\"Soft4\"],multimedia:[\"ChannelDown\",\"ChannelUp\",\"Close\",\"MailForward\",\"MailReply\",\"MailSend\",\"MediaClose\",\"MediaFastForward\",\"MediaPause\",\"MediaPlay\",\"MediaPlayPause\",\"MediaRecord\",\"MediaRewind\",\"MediaStop\",\"MediaTrackNext\",\"MediaTrackPrevious\",\"New\",\"Open\",\"Print\",\"Save\",\"SpellCheck\"],multimediaNumpad:[\"Key11\",\"Key12\"],audio:[\"AudioBalanceLeft\",\"AudioBalanceRight\",\"AudioBassBoostDown\",\"AudioBassBoostToggle\",\"AudioBassBoostUp\",\"AudioFaderFront\",\"AudioFaderRear\",\"AudioSurroundModeNext\",\"AudioTrebleDown\",\"AudioTrebleUp\",\"AudioVolumeDown\",\"AudioVolumeUp\",\"AudioVolumeMute\",\"MicrophoneToggle\",\"MicrophoneVolumeDown\",\"MicrophoneVolumeUp\",\"MicrophoneVolumeMute\"],speech:[\"SpeechCorrectionList\",\"SpeechInputToggle\"],application:[\"LaunchApplication1\",\"LaunchApplication2\",\"LaunchCalendar\",\"LaunchContacts\",\"LaunchMail\",\"LaunchMediaPlayer\",\"LaunchMusicPlayer\",\"LaunchPhone\",\"LaunchScreenSaver\",\"LaunchSpreadsheet\",\"LaunchWebBrowser\",\"LaunchWebCam\",\"LaunchWordProcessor\"],browser:[\"BrowserBack\",\"BrowserFavorites\",\"BrowserForward\",\"BrowserHome\",\"BrowserRefresh\",\"BrowserSearch\",\"BrowserStop\"],mobilePhone:[\"AppSwitch\",\"Call\",\"Camera\",\"CameraFocus\",\"EndCall\",\"GoBack\",\"GoHome\",\"HeadsetHook\",\"LastNumberRedial\",\"Notification\",\"MannerMode\",\"VoiceDial\"],tv:[\"TV\",\"TV3DMode\",\"TVAntennaCable\",\"TVAudioDescription\",\"TVAudioDescriptionMixDown\",\"TVAudioDescriptionMixUp\",\"TVContentsMenu\",\"TVDataService\",\"TVInput\",\"TVInputComponent1\",\"TVInputComponent2\",\"TVInputComposite1\",\"TVInputComposite2\",\"TVInputHDMI1\",\"TVInputHDMI2\",\"TVInputHDMI3\",\"TVInputHDMI4\",\"TVInputVGA1\",\"TVMediaContext\",\"TVNetwork\",\"TVNumberEntry\",\"TVPower\",\"TVRadioService\",\"TVSatellite\",\"TVSatelliteBS\",\"TVSatelliteCS\",\"TVSatelliteToggle\",\"TVTerrestrialAnalog\",\"TVTerrestrialDigital\",\"TVTimer\"],mediaControls:[\"AVRInput\",\"AVRPower\",\"ColorF0Red\",\"ColorF1Green\",\"ColorF2Yellow\",\"ColorF3Blue\",\"ColorF4Grey\",\"ColorF5Brown\",\"ClosedCaptionToggle\",\"Dimmer\",\"DisplaySwap\",\"DVR\",\"Exit\",\"FavoriteClear0\",\"FavoriteClear1\",\"FavoriteClear2\",\"FavoriteClear3\",\"FavoriteRecall0\",\"FavoriteRecall1\",\"FavoriteRecall2\",\"FavoriteRecall3\",\"FavoriteStore0\",\"FavoriteStore1\",\"FavoriteStore2\",\"FavoriteStore3\",\"Guide\",\"GuideNextDay\",\"GuidePreviousDay\",\"Info\",\"InstantReplay\",\"Link\",\"ListProgram\",\"LiveContent\",\"Lock\",\"MediaApps\",\"MediaAudioTrack\",\"MediaLast\",\"MediaSkipBackward\",\"MediaSkipForward\",\"MediaStepBackward\",\"MediaStepForward\",\"MediaTopMenu\",\"NavigateIn\",\"NavigateNext\",\"NavigateOut\",\"NavigatePrevious\",\"NextFavoriteChannel\",\"NextUserProfile\",\"OnDemand\",\"Pairing\",\"PinPDown\",\"PinPMove\",\"PinPToggle\",\"PinPUp\",\"PlaySpeedDown\",\"PlaySpeedReset\",\"PlaySpeedUp\",\"RandomToggle\",\"RcLowBattery\",\"RecordSpeedNext\",\"RfBypass\",\"ScanChannelsToggle\",\"ScreenModeNext\",\"Settings\",\"SplitScreenToggle\",\"STBInput\",\"STBPower\",\"Subtitle\",\"Teletext\",\"VideoModeNext\",\"Wink\",\"ZoomToggle\"]}}]).default;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(\"./lib/main.js\");\n"],"sourceRoot":""}
|