canvas-datagrid 0.3.13 → 0.3.14
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 +6 -0
- package/dist/canvas-datagrid.debug.js +54 -4
- 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/lib/events/index.js +28 -3
- package/lib/intf.js +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack://canvasDatagrid/webpack/universalModuleDefinition","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":["typeMap","component","dehyphenateProperty","hyphenateProperty","prop","replace","p","nextLetterCap","Array","prototype","forEach","call","char","toUpperCase","cust","toLowerCase","getDefaultItem","base","item","i","r","defaults","filter","applyComponentStyle","supressChangeAndDrawEvents","intf","isComponent","cStyle","window","getComputedStyle","tagName","canvas","defs","computedStyle","styles","def","val","getPropertyValue","setStyleProperty","dispatchEvent","requestAnimationFrame","resize","style","data","strData","JSON","parse","e","Error","schema","strSchema","number","strNum","n","parseInt","isNaN","strBool","test","string","str","getObservableAttributes","attrs","attributes","attr","push","disconnectedCallback","connected","connectedCallback","parentDOMNode","innerHTML","appendChild","observe","adoptedCallback","attributeChangedCallback","attrName","oldVal","newVal","tfn","dataType","name","addEventListener","Function","observer","MutationObserver","mutations","checkInnerHTML","checkStyle","mutation","attributeName","target","nodeName","parentNode","addedNodes","length","type","characterData","childList","subtree","document","querySelectorAll","el","self","zIndexTop","hoverScrollTimeout","autoCompleteContext","applyContextItemStyle","contextItemContainer","createInlineStyle","mobile","createContextMenu","ev","pos","items","parentContextMenu","container","createElement","upArrow","downArrow","children","selectedIndex","rect","isArray","createItems","childMenuArrow","removeChildContext","relatedTarget","contextMenu","contains","dispose","splice","indexOf","undefined","removeEventListener","setAttribute","contextAddCallback","getAttribute","cPos","getBoundingClientRect","left","childContextMenuMarginLeft","offsetWidth","top","childContextMenuMarginTop","bottom","right","createChildContext","apply","addItem","addContent","content","title","childContextMenuArrowHTML","click","clickIndex","idx","Event","checkArrowVisibility","scrollTop","removeChild","scrollHeight","offsetHeight","startHoverScroll","t","a","contextHoverScrollAmount","setTimeout","contextHoverScrollRateMs","endHoverScroll","clearTimeout","init","loc","s","scrollOffset","contextMenuZIndex","x","y","height","position","color","contextMenuArrowColor","textAlign","zIndex","inputDropdown","maxHeight","innerHeight","autocompleteBottomMargin","minWidth","width","hasFocus","deltaY","scrollLeft","deltaX","contextMenuArrowUpHTML","contextMenuArrowDownHTML","body","contextMenuWindowMargin","innerWidth","parentGrid","c","Object","defineProperty","get","set","value","isFinite","index","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","contextmenuEvent","overridePos","createDiposeEvent","contextPosition","getLayerPos","NativeEvent","getCellAt","isGrid","contextMenuMarginLeft","canvasOffsetLeft","contextMenuMarginTop","canvasOffsetTop","mobileContextMenuMargin","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","verticalAlign","marginLeft","padding","border","contextFilterInputBorder","borderRadius","contextFilterInputBorderRadius","lineHeight","fontWeight","fontFamily","contextFilterInputFontFamily","contextFilterInputFontSize","contextMenuBackground","contextMenuColor","contextFilterButtonBorder","contextFilterButtonBorderRadius","contextMenuFilterButtonFontFamily","contextMenuFilterButtonFontSize","cssFloat","childContextMenuArrowColor","contextMenuChildArrowFontSize","contextMenuFontFamily","contextMenuFontSize","contextMenuBorder","contextMenuPadding","contextMenuBorderRadius","opacity","contextMenuOpacity","overflow","contextMenuHoverBackground","contextMenuHoverColor","display","cursor","boxSizing","outline","margin","mobileEditFontFamily","mobileEditFontSize","editCellBorder","editCellColor","editCellBackgroundColor","appearance","webkitAppearance","mozAppearance","editCellPaddingLeft","editCellFontFamily","boxShadow","editCellBoxShadow","contextMenuItemMargin","contextMenuItemBorderRadius","contextMenuLabelMargin","contextMenuLabelDisplay","contextMenuLabelMinWidth","maxWidth","contextMenuLabelMaxWidth","whiteSpace","contextMenuCursor","contextMenuFilterInvalidExpresion","appendTo","setDom","ctx","context","eventParent","onblur","blur","parentIsCanvas","getContext","textBaseline","parentNodeStyle","touchstart","mouseup","mousedown","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","img","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","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","scrollBox","entities","m","scrollBarBoxMargin","scrollBarBorderColor","lineWidth","scrollBarBorderWidth","horizontalBox","horizontalBar","scrollBoxWidth","scrollWidth","verticalBox","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","selected","hovered","hovers","hoverMode","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","showRowNumberGaps","previousRowNumber","hasRowGap","barHeight","rowHeaderCellRowNumberGapHeight","barColor","rowHeaderCellRowNumberGapColor","drawRowHeader","showRowHeaders","filteredRowNumber","rowHeaderValue","hasActiveFilters","headerDescription","drawHeaders","g","o","columnHeaderCell","nonFrozenHeaderWidth","drawHeaderColumnRange","start","end","rArgs","rhIndex","frozenRow","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","reorderMarkerIndexBorderWidth","reorderMarkerIndexBorderColor","reorderTarget","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","scrollCache","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","event","selectedData","getSelectedData","selectedCells","getSelectedCells","selectionBounds","selectArea","autoScrollOnMousemove","movedVertically","autoScrollMargin","movedHorizontally","autoScrollZone","startingBounds","checkSelectionChange","sb","selectAll","columnHeaderClickBehavior","selectColumn","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","source","reorderDeadZone","stopDragReorder","oIndex","tIndex","cr","dragMove","stopDragMove","moveSelection","freezeMove","stopFreezeMove","startFreezeMove","lastMouseDownTarget","button","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","textRows","sData","sSorted","firstRowKeys","isNeat","htmlSafe","rowKeys","textRow","setData","genericDiv","genericSpan","genericTable","excelTable","excelTableRow","some","expression","IGNORE_NODETYPES","isHtmlTable","sanitizeElementData","element","elementData","innerText","parseHtmlText","doc","DOMParser","parseFromString","querySelector","parseHtmlTable","trs","childNodes","childNode","col","parseText","ctor","treeGridAttributes","storageName","invalidSearchExpClass","localStyleLibraryStorageKey","orderings","add","sortFunction","sort","filters","sorters","parsers","schemaHashes","componentL1Events","eventNames","expandToRow","viewDataLength","orderedIndex","entries","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","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","offsetX","offsetY","targetX","targetY","sbh","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","getRowHeight","cellFormatterString","headerCell","asc","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","clearInterval","calculatePPSTimer","touchContextTimeout","touchStartEvent","zoomAltered","touchStart1","touchScrollStart","touchContextMenuTimeMs","setInterval","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*/\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 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.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 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 if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\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 () {\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 };\n self.contextmenuEvent = function (e, overridePos) {\n if (!self.hasFocus && e.target !== self.canvas) {\n return;\n }\n function createDiposeEvent() {\n requestAnimationFrame(function () {\n document.addEventListener('click', self.disposeContextMenu);\n document.removeEventListener('mouseup', createDiposeEvent);\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 (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 self.contextMenu = createContextMenu(ev, contextPosition, items);\n document.addEventListener('mouseup', createDiposeEvent);\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 ['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 ['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 ['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 ['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-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.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 + 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 }\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 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 en.horizontalBox.x =\n rowHeaderCellWidth +\n self.style.scrollBarBoxMargin +\n (en.horizontalBar.width - self.scrollBox.scrollBoxWidth) *\n (self.scrollBox.scrollLeft / self.scrollBox.scrollWidth);\n en.verticalBox.y =\n columnHeaderCellHeight +\n self.style.scrollBarBoxMargin +\n (en.verticalBar.height - self.scrollBox.scrollBoxHeight) *\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 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 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 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 // 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.\n if (\n isRowHeader &&\n self.attributes.showRowNumbers &&\n self.attributes.showRowNumberGaps\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 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 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 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 self.scrollBox.widthBoxRatio = self.scrollBox.width / dataWidth;\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 - columnHeaderCellHeight) / 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;\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.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 };\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 (!self.dragAddToSelection && cell.rowIndex !== undefined) {\n if (\n self.selections[cell.rowIndex] &&\n self.selections[cell.rowIndex].indexOf(cell.columnIndex) !== -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) === -1\n ) {\n self.selections[cell.rowIndex].push(cell.columnIndex);\n const 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 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 self.selections = [];\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 if (dragBounds.top !== -1) {\n self.selectArea(sBounds, 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 self.setActiveCell(i.columnIndex, i.rowIndex);\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 if (self.attributes.columnHeaderClickBehavior === 'select') {\n self.selectColumn(i.header.index, ctrl, e.shiftKey);\n self.draw();\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 (\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 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 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 cr[self.dragMode].splice(oIndex, 1);\n cr[self.dragMode].splice(tIndex, 0, self.reorderObject[i]);\n if (self.dragMode === 'column-reorder') {\n self.orders.columns = cr[self.dragMode];\n } else {\n self.orders.rows = cr[self.dragMode];\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 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 }\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 }\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 self.selections = [];\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 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 (['cell', 'activeCell'].indexOf(self.currentCell.style) !== -1) {\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 self.forEachSelectedCell(function (data, index, colName) {\n data[index][colName] = '';\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 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(column.name) < 0) {\n if (firstRowKeys.indexOf(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.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 'attributechanged',\n 'beforebeginedit',\n 'beforecreatecellgrid',\n 'beforedraw',\n 'beforeendedit',\n 'beforerendercell',\n 'beforerendercellgrid',\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.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.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 }\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 }\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 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 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 }\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 * 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 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(self.orders.columns[columnIndex]) ===\n -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 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 if (a[columnName] === undefined || a[columnName] === null) {\n return 1;\n }\n if (b[columnName] === undefined || b[columnName] === null) {\n return 0;\n }\n if (asc) {\n if (!a[columnName].localeCompare) {\n return 1;\n }\n return a[columnName].localeCompare(b[columnName]);\n }\n if (!b[columnName].localeCompare) {\n return 1;\n }\n return b[columnName].localeCompare(a[columnName]);\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/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":["typeMap","component","dehyphenateProperty","hyphenateProperty","prop","replace","p","nextLetterCap","Array","prototype","forEach","call","char","toUpperCase","cust","toLowerCase","getDefaultItem","base","item","i","r","defaults","filter","applyComponentStyle","supressChangeAndDrawEvents","intf","isComponent","cStyle","window","getComputedStyle","tagName","canvas","defs","computedStyle","styles","def","val","getPropertyValue","setStyleProperty","dispatchEvent","requestAnimationFrame","resize","style","data","strData","JSON","parse","e","Error","schema","strSchema","number","strNum","n","parseInt","isNaN","strBool","test","string","str","getObservableAttributes","attrs","attributes","attr","push","disconnectedCallback","connected","connectedCallback","parentDOMNode","innerHTML","appendChild","observe","adoptedCallback","attributeChangedCallback","attrName","oldVal","newVal","tfn","dataType","name","addEventListener","Function","observer","MutationObserver","mutations","checkInnerHTML","checkStyle","mutation","attributeName","target","nodeName","parentNode","addedNodes","length","type","characterData","childList","subtree","document","querySelectorAll","el","self","zIndexTop","hoverScrollTimeout","autoCompleteContext","applyContextItemStyle","contextItemContainer","createInlineStyle","mobile","createContextMenu","ev","pos","items","parentContextMenu","container","createElement","upArrow","downArrow","children","selectedIndex","rect","isArray","createItems","childMenuArrow","removeChildContext","relatedTarget","contextMenu","contains","dispose","splice","indexOf","undefined","removeEventListener","setAttribute","contextAddCallback","getAttribute","cPos","getBoundingClientRect","left","childContextMenuMarginLeft","offsetWidth","top","childContextMenuMarginTop","bottom","right","createChildContext","apply","addItem","addContent","content","title","childContextMenuArrowHTML","click","clickIndex","idx","Event","checkArrowVisibility","scrollTop","removeChild","scrollHeight","offsetHeight","startHoverScroll","t","a","contextHoverScrollAmount","setTimeout","contextHoverScrollRateMs","endHoverScroll","clearTimeout","init","loc","s","scrollOffset","contextMenuZIndex","x","y","height","position","color","contextMenuArrowColor","textAlign","zIndex","inputDropdown","maxHeight","innerHeight","autocompleteBottomMargin","minWidth","width","hasFocus","deltaY","scrollLeft","deltaX","contextMenuArrowUpHTML","contextMenuArrowDownHTML","body","contextMenuWindowMargin","innerWidth","parentGrid","c","Object","defineProperty","get","set","value","isFinite","index","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","contextmenuEvent","overridePos","createDiposeEvent","contextPosition","getLayerPos","NativeEvent","getCellAt","isGrid","contextMenuMarginLeft","canvasOffsetLeft","contextMenuMarginTop","canvasOffsetTop","mobileContextMenuMargin","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","verticalAlign","marginLeft","padding","border","contextFilterInputBorder","borderRadius","contextFilterInputBorderRadius","lineHeight","fontWeight","fontFamily","contextFilterInputFontFamily","contextFilterInputFontSize","contextMenuBackground","contextMenuColor","contextFilterButtonBorder","contextFilterButtonBorderRadius","contextMenuFilterButtonFontFamily","contextMenuFilterButtonFontSize","cssFloat","childContextMenuArrowColor","contextMenuChildArrowFontSize","contextMenuFontFamily","contextMenuFontSize","contextMenuBorder","contextMenuPadding","contextMenuBorderRadius","opacity","contextMenuOpacity","overflow","contextMenuHoverBackground","contextMenuHoverColor","display","cursor","boxSizing","outline","margin","mobileEditFontFamily","mobileEditFontSize","editCellBorder","editCellColor","editCellBackgroundColor","appearance","webkitAppearance","mozAppearance","editCellPaddingLeft","editCellFontFamily","boxShadow","editCellBoxShadow","contextMenuItemMargin","contextMenuItemBorderRadius","contextMenuLabelMargin","contextMenuLabelDisplay","contextMenuLabelMinWidth","maxWidth","contextMenuLabelMaxWidth","whiteSpace","contextMenuCursor","contextMenuFilterInvalidExpresion","appendTo","setDom","ctx","context","eventParent","onblur","blur","parentIsCanvas","getContext","textBaseline","parentNodeStyle","touchstart","mouseup","mousedown","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","img","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","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","scrollBox","entities","m","scrollBarBoxMargin","scrollBarBorderColor","lineWidth","scrollBarBorderWidth","horizontalBox","horizontalBar","scrollBoxWidth","scrollWidth","verticalBox","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","selected","hovered","hovers","hoverMode","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","showRowNumberGaps","previousRowNumber","hasRowGap","barHeight","rowHeaderCellRowNumberGapHeight","barColor","rowHeaderCellRowNumberGapColor","drawRowHeader","showRowHeaders","filteredRowNumber","rowHeaderValue","hasActiveFilters","headerDescription","drawHeaders","g","o","columnHeaderCell","nonFrozenHeaderWidth","drawHeaderColumnRange","start","end","rArgs","rhIndex","frozenRow","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","reorderMarkerIndexBorderWidth","reorderMarkerIndexBorderColor","reorderTarget","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","scrollCache","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","event","selectedData","getSelectedData","selectedCells","getSelectedCells","selectionBounds","selectArea","autoScrollOnMousemove","movedVertically","autoScrollMargin","movedHorizontally","autoScrollZone","startingBounds","checkSelectionChange","sb","selectAll","columnHeaderClickBehavior","selectColumn","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","source","reorderDeadZone","stopDragReorder","oIndex","tIndex","cr","dragMove","stopDragMove","moveSelection","freezeMove","stopFreezeMove","startFreezeMove","lastMouseDownTarget","button","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","element","elementData","innerText","parseHtmlText","doc","DOMParser","parseFromString","querySelector","parseHtmlTable","trs","childNodes","childNode","col","parseText","ctor","treeGridAttributes","storageName","invalidSearchExpClass","localStyleLibraryStorageKey","orderings","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","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","offsetX","offsetY","targetX","targetY","sbh","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","getRowHeight","cellFormatterString","headerCell","asc","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","clearInterval","calculatePPSTimer","touchContextTimeout","touchStartEvent","zoomAltered","touchStart1","touchScrollStart","touchContextMenuTimeMs","setInterval","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*/\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 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.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 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 if (el.parentNode) {\n el.parentNode.removeChild(el);\n }\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 () {\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 };\n self.contextmenuEvent = function (e, overridePos) {\n if (!self.hasFocus && e.target !== self.canvas) {\n return;\n }\n function createDiposeEvent() {\n requestAnimationFrame(function () {\n document.addEventListener('click', self.disposeContextMenu);\n document.removeEventListener('mouseup', createDiposeEvent);\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 (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 self.contextMenu = createContextMenu(ev, contextPosition, items);\n document.addEventListener('mouseup', createDiposeEvent);\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 ['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 ['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 ['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 ['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-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.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 + 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 }\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 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 en.horizontalBox.x =\n rowHeaderCellWidth +\n self.style.scrollBarBoxMargin +\n (en.horizontalBar.width - self.scrollBox.scrollBoxWidth) *\n (self.scrollBox.scrollLeft / self.scrollBox.scrollWidth);\n en.verticalBox.y =\n columnHeaderCellHeight +\n self.style.scrollBarBoxMargin +\n (en.verticalBar.height - self.scrollBox.scrollBoxHeight) *\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 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 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 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 // 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.\n if (\n isRowHeader &&\n self.attributes.showRowNumbers &&\n self.attributes.showRowNumberGaps\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 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 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 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 self.scrollBox.widthBoxRatio = self.scrollBox.width / dataWidth;\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 - columnHeaderCellHeight) / 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;\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.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 };\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 (!self.dragAddToSelection && cell.rowIndex !== undefined) {\n if (\n self.selections[cell.rowIndex] &&\n self.selections[cell.rowIndex].indexOf(cell.columnIndex) !== -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) === -1\n ) {\n self.selections[cell.rowIndex].push(cell.columnIndex);\n const 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 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 self.selections = [];\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 if (dragBounds.top !== -1) {\n self.selectArea(sBounds, 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 self.setActiveCell(i.columnIndex, i.rowIndex);\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 if (self.attributes.columnHeaderClickBehavior === 'select') {\n self.selectColumn(i.header.index, ctrl, e.shiftKey);\n self.draw();\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 (\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 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 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 cr[self.dragMode].splice(oIndex, 1);\n cr[self.dragMode].splice(tIndex, 0, self.reorderObject[i]);\n if (self.dragMode === 'column-reorder') {\n self.orders.columns = cr[self.dragMode];\n } else {\n self.orders.rows = cr[self.dragMode];\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 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 }\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 }\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 self.selections = [];\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 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 (['cell', 'activeCell'].indexOf(self.currentCell.style) !== -1) {\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 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(column.name) < 0) {\n if (firstRowKeys.indexOf(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.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 'attributechanged',\n 'beforebeginedit',\n 'beforecreatecellgrid',\n 'beforedraw',\n 'beforeendedit',\n 'beforerendercell',\n 'beforerendercellgrid',\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.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 }\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 }\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 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 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 }\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 * 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 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(self.orders.columns[columnIndex]) ===\n -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 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 if (a[columnName] === undefined || a[columnName] === null) {\n return 1;\n }\n if (b[columnName] === undefined || b[columnName] === null) {\n return 0;\n }\n if (asc) {\n if (!a[columnName].localeCompare) {\n return 1;\n }\n return a[columnName].localeCompare(b[columnName]);\n }\n if (!b[columnName].localeCompare) {\n return 1;\n }\n return b[columnName].localeCompare(a[columnName]);\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":""}
|