{"version":3,"file":"ui-scroll-grid.js","mappings":"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","sources":["webpack://angular-ui-scroll/./src/ui-scroll-grid.js"],"sourcesContent":["angular.module('ui.scroll.grid', [])\r\n .directive('uiScrollTh', ['$log', '$timeout', function(console, $timeout) {\r\n\r\n function GridAdapter(controller) {\r\n\r\n this.getLayout = () => controller.getLayout();\r\n\r\n this.applyLayout = (layout) => controller.applyLayout(layout);\r\n\r\n this.columnFromPoint = (x, y) => controller.columnFromPoint(x, y);\r\n\r\n Object.defineProperty(this, 'columns', { get: () => controller.getColumns() });\r\n }\r\n\r\n function ColumnAdapter(controller, column) {\r\n\r\n this.css = function( /* attr, value */ ) {\r\n var attr = arguments[0];\r\n var value = arguments[1];\r\n if (arguments.length == 1) {\r\n return column.header.css(attr);\r\n }\r\n if (arguments.length == 2) {\r\n column.header.css(attr, value);\r\n controller.forEachRow((row) => row[column.id].css(attr, value));\r\n column.css[attr] = value;\r\n }\r\n };\r\n\r\n this.moveBefore = (index) => controller.moveBefore(column, index);\r\n\r\n this.exchangeWith = (index) => controller.exchangeWith(column, index);\r\n\r\n Object.defineProperty(this, 'columnId', { get: () => column.id });\r\n }\r\n\r\n function ColumnController(controller, columns, header) {\r\n\r\n this.header = header;\r\n this.css = {};\r\n this.mapTo = columns.length;\r\n this.id = columns.length;\r\n\r\n // controller api methods\r\n\r\n this.applyLayout = function(layout) {\r\n this.css = angular.extend({}, layout.css);\r\n this.mapTo = layout.mapTo;\r\n applyCss(this.header, this.css);\r\n };\r\n\r\n this.moveBefore = function(target) {\r\n if (target) {\r\n moveBefore(header, target.header);\r\n controller.forEachRow((row) => moveBefore(row[this.id], row[target.id]));\r\n } else {\r\n moveLast(header);\r\n controller.forEachRow((row) => moveLast(row[this.id]));\r\n }\r\n };\r\n\r\n this.columnFromPoint = function(x, y) {\r\n if (insidePoint(header, x, y)) {\r\n return this;\r\n }\r\n let result = null;\r\n controller.forEachRow((row) =>\r\n result = insidePoint(row[this.id], x, y) ? this : result\r\n );\r\n return result;\r\n };\r\n\r\n this.applyCss = function(target) {\r\n applyCss(target, this.css);\r\n };\r\n\r\n // function definitions\r\n\r\n function insidePoint(element, x, y) {\r\n let offset = element.offset();\r\n if (x < offset.left || offset.left + element.outerWidth(true) < x)\r\n return false;\r\n if (y < offset.top || offset.top + element.outerHeight(true) < y)\r\n return false;\r\n return true;\r\n }\r\n\r\n function moveBefore(element, target) {\r\n element.detach();\r\n target.before(element);\r\n }\r\n\r\n function moveLast(element) {\r\n let parent = element.parent();\r\n element.detach();\r\n parent.append(element);\r\n }\r\n\r\n function applyCss(target, css) {\r\n target.removeAttr('style');\r\n for (let attr in css) {\r\n if (css.hasOwnProperty(attr)) {\r\n target.css(attr, css[attr]);\r\n }\r\n }\r\n }\r\n\r\n }\r\n\r\n function GridController(scrollViewport) {\r\n let columns = [];\r\n let rowMap = new Map();\r\n\r\n $timeout(() => {\r\n scrollViewport.adapter.publicContext.gridAdapter = new GridAdapter(this);\r\n scrollViewport.adapter.transform = (scope, item) => transform(rowMap.get(scope), item);\r\n });\r\n\r\n this.registerColumn = function(header) {\r\n columns.push(new ColumnController(this, columns, header));\r\n };\r\n\r\n this.registerCell = function(scope, cell) {\r\n let row = rowMap.get(scope);\r\n if (!row) {\r\n row = [];\r\n rowMap.set(scope, row);\r\n }\r\n if (row.length >= columns.length) {\r\n return false;\r\n }\r\n row.push(cell);\r\n return true;\r\n };\r\n\r\n this.unregisterCell = function(scope, cell) {\r\n let row = rowMap.get(scope);\r\n let i = row.indexOf(cell);\r\n row.splice(i, 1);\r\n if (!row.length) {\r\n rowMap.delete(scope);\r\n }\r\n };\r\n\r\n this.forEachRow = function(callback) {\r\n rowMap.forEach(callback);\r\n };\r\n\r\n this.getColumns = function() {\r\n let result = [];\r\n columns.slice()\r\n .sort((a, b) => a.mapTo - b.mapTo)\r\n .forEach((column) => result.push(new ColumnAdapter(this, column)));\r\n return result;\r\n };\r\n\r\n this.getLayout = function() {\r\n let result = [];\r\n columns.forEach((column, index) => result.push({\r\n index: index,\r\n css: angular.extend({}, column.css),\r\n mapTo: column.mapTo\r\n }));\r\n return result;\r\n };\r\n\r\n this.applyLayout = function(layouts) {\r\n if (!layouts || layouts.length != columns.length) {\r\n throw new Error('Failed to apply layout - number of layouts should match number of columns');\r\n }\r\n layouts.forEach((layout, index) => columns[index].applyLayout(layout));\r\n transform(columns.map((column) => column.header));\r\n rowMap.forEach((row) => transform(row));\r\n };\r\n\r\n this.moveBefore = function(selected, target) {\r\n let index = target;\r\n\r\n if (target % 1 !== 0) {\r\n index = target ? columns[target.columnId].mapTo : columns.length;\r\n }\r\n if (index < 0 || index > columns.length) {\r\n return; // throw an error?\r\n }\r\n\r\n let mapTo = selected.mapTo,\r\n next = null;\r\n index -= mapTo < index ? 1 : 0;\r\n\r\n columns.forEach(c => {\r\n c.mapTo -= c.mapTo > mapTo ? 1 : 0;\r\n c.mapTo += c.mapTo >= index ? 1 : 0;\r\n next = c.mapTo === index + 1 ? c : next;\r\n });\r\n\r\n selected.mapTo = index;\r\n selected.moveBefore(next);\r\n };\r\n\r\n this.exchangeWith = function(selected, index) {\r\n if (index < 0 || index >= columns.length) {\r\n return;\r\n }\r\n columns.find(c => c.mapTo === index).mapTo = selected.mapTo;\r\n selected.mapTo = index;\r\n };\r\n\r\n this.columnFromPoint = function(x, y) {\r\n let column = columns.find(col => col.columnFromPoint(x, y));\r\n return column ? new ColumnAdapter(this, column) : undefined;\r\n };\r\n\r\n // function definitions\r\n\r\n function transform(row) {\r\n let parent = row[0].parent();\r\n let visible = [];\r\n\r\n row.forEach((cell, index) => {\r\n columns[index].applyCss(cell);\r\n visible[columns[index].mapTo] = row[index];\r\n row[index].detach();\r\n });\r\n\r\n visible.forEach(cell => parent.append(cell));\r\n }\r\n\r\n }\r\n\r\n return {\r\n require: ['^^uiScrollViewport'],\r\n restrict: 'A',\r\n link: ($scope, element, $attr, controllers) => {\r\n controllers[0].gridController = controllers[0].gridController || new GridController(controllers[0]);\r\n controllers[0].gridController.registerColumn(element);\r\n }\r\n };\r\n }])\r\n\r\n.directive('uiScrollTd', function() {\r\n return {\r\n require: ['?^^uiScrollViewport'],\r\n restrict: 'A',\r\n link: ($scope, element, $attr, controllers) => {\r\n if (!controllers[0]) {\r\n return;\r\n }\r\n let scope = $scope;\r\n let tdInitializer = $scope.uiScrollTdInitializer;\r\n if (!tdInitializer) {\r\n tdInitializer = $scope.uiScrollTdInitializer = {\r\n linking: true\r\n };\r\n }\r\n if (!tdInitializer.linking) {\r\n scope = tdInitializer.scope;\r\n }\r\n let gridController = controllers[0].gridController;\r\n if (gridController.registerCell(scope, element)) {\r\n $scope.$on('$destroy', () => gridController.unregisterCell(scope, element));\r\n }\r\n if (!tdInitializer.linking) {\r\n tdInitializer.onLink();\r\n }\r\n }\r\n };\r\n});\r\n"],"names":["angular","module","directive","console","$timeout","GridAdapter","controller","getLayout","applyLayout","layout","columnFromPoint","x","y","Object","defineProperty","get","getColumns","ColumnAdapter","column","css","attr","arguments","value","length","header","forEachRow","row","id","moveBefore","index","exchangeWith","ColumnController","columns","mapTo","extend","applyCss","target","_this","moveLast","_this2","insidePoint","result","element","offset","left","outerWidth","top","outerHeight","detach","before","parent","append","removeAttr","hasOwnProperty","GridController","scrollViewport","_this3","rowMap","Map","adapter","publicContext","gridAdapter","transform","scope","item","registerColumn","push","registerCell","cell","set","unregisterCell","i","indexOf","splice","delete","callback","forEach","_this4","slice","sort","a","b","layouts","Error","map","selected","columnId","next","c","find","col","undefined","visible","require","restrict","link","$scope","$attr","controllers","gridController","tdInitializer","uiScrollTdInitializer","linking","$on","onLink"],"sourceRoot":""}