{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///webpack/bootstrap 44cb53805f1088007aac","webpack:///./src/index.ts","webpack:///external \"angular\"","webpack:///./src/UiGridAutoFitColumnsService.ts","webpack:///./~/lodash/object/get.js","webpack:///./~/lodash/internal/baseGet.js","webpack:///./~/lodash/internal/toObject.js","webpack:///./~/lodash/lang/isObject.js","webpack:///./~/lodash/internal/toPath.js","webpack:///./~/lodash/internal/baseToString.js","webpack:///./~/lodash/lang/isArray.js","webpack:///./~/lodash/internal/getNative.js","webpack:///./~/lodash/lang/isNative.js","webpack:///./~/lodash/lang/isFunction.js","webpack:///./~/lodash/internal/isObjectLike.js","webpack:///./~/lodash/internal/isLength.js","webpack:///./src/Measurer.ts","webpack:///./src/UiGridMetrics.ts","webpack:///./src/UiGridAutoFitColumnsDirective.ts"],"names":[],"mappings":"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G;qBACpG,IAAM,gBAAgB,GAAG,gBAAgB,GAAG,GAAG,GAAG,GAAG,GAAG,gBAAgB,CAAC;qBAEzE,EAAE,CAAC,CAAC,gBAAgB,GAAG,aAAa,CAAC,WAAS,CAAC,CAAC,CAAC,CAAC;yBAC9C,aAAa,CAAC,WAAS,CAAC,GAAG,gBAAgB,CAAC;qBAChD,CAAC;iBACL,CAAC,CAAC,CAAC;iBAEH,GAA8G;iBAC9G,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;aACjD,CAAC;SACL,CAAC,CAAC,CAAC;SACH,GAAgC;KACpC,CAAC;KAEL,EAAC;AAAD,EAAC;AAxGY,MAwGZ;;;;;;;AChID;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,aAAa;AACxB,YAAW,EAAE;AACb,cAAa,EAAE;AACf;AACA;AACA,GAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AChCA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAkB;AAClB,YAAW,MAAM;AACjB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC5BA;;AAEA;AACA;AACA;AACA;AACA,YAAa;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA,GAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC3BA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAa;AACb,cAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA,YAAa;AACb,cAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA;;;;;;;ACZA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,GAA6C;AAC7C;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACvCA;;AAEA;AACA;AACA;AACA;AACA,YAAkB;AAClB,YAAW,OAAO;AAClB,cAAa,EAAE;AACf;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACfA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,8BAA2D;AAC3D;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;AC/CA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,EAAE;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;ACrCA;AACA;AACA;AACA;AACA,YAAa;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;ACXA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAa;AACb,cAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;;;;;;;;ACnBA;KAAA;KAeA,CAAC;KAZU,CAA2C;SAC9C,IAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAA2C;SACvF,IAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACxC,OAAO,CAAC,IAAI,GAAG,IAAI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","file":"autoFitColumns.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"angular\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"angular\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"angular\")) : factory(root[\"angular\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function(__WEBPACK_EXTERNAL_MODULE_1__) {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 44cb53805f1088007aac","import * as angular from 'angular';\nimport { UiGridAutoFitColumnsService } from './UiGridAutoFitColumnsService';\nimport { UiGridAutoFitColumnsDirective } from './UiGridAutoFitColumnsDirective';\n\nexport default angular.module('ui.grid.autoFitColumns', ['ui.grid'])\n .service('uiGridAutoFitColumnsService', UiGridAutoFitColumnsService)\n .directive('uiGridAutoFitColumns', UiGridAutoFitColumnsDirective)\n .name;\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.ts","module.exports = __WEBPACK_EXTERNAL_MODULE_1__;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"angular\"\n// module id = 1\n// module chunks = 0","import * as get from 'lodash/object/get';\nimport Measurer from './Measurer';\nimport UiGridMetrics from './UiGridMetrics';\n\ninterface IExtendedColumnDef extends uiGrid.IColumnDef {\n enableColumnAutoFit: boolean;\n}\n\ninterface IExtendedGridColumn extends uiGrid.IGridColumn {\n colDef: IExtendedColumnDef;\n}\n\ninterface IExtendedGridInstance extends uiGrid.IGridInstance {\n options: IExtendedGridOptions;\n}\n\ninterface IExtendedGridOptions extends uiGrid.IGridOptions {\n enableColumnAutoFit: boolean;\n}\n\ninterface IAnyFilterPredicateFunc {\n (value: any, firstFlag?: any, secondFlag?: any): string;\n}\n\nexport class UiGridAutoFitColumnsService {\n private gridMetrics: UiGridMetrics;\n\n /*@ngInject*/\n constructor (private $q: angular.IQService, private $filter: angular.IFilterService) {\n this.gridMetrics = new UiGridMetrics();\n }\n\n initializeGrid(grid: IExtendedGridInstance) {\n grid.registerColumnBuilder(this.colAutoFitColumnBuilder.bind(this));\n grid.registerColumnsProcessor(this.columnsProcessor.bind(this), 60);\n\n UiGridAutoFitColumnsService.defaultGridOptions(grid.options);\n }\n\n static defaultGridOptions(gridOptions: IExtendedGridOptions) {\n // true by default\n gridOptions.enableColumnAutoFit = gridOptions.enableColumnAutoFit !== false;\n }\n\n private getFilterIfExists(filterName): any {\n try {\n return this.$filter(filterName);\n } catch (e) {\n return null;\n }\n }\n\n private getFilteredValue(value: string, cellFilter: string) {\n if (cellFilter && cellFilter !== '') {\n const filter = this.getFilterIfExists(cellFilter);\n if (filter) {\n value = filter(value);\n } else {\n // https://regex101.com/r/rC5eR5/2\n const re = /([^:]*):([^:]*):?([\\s\\S]+)?/;\n let matches;\n if ((matches = re.exec(cellFilter)) !== null) {\n value = this.$filter(matches[1])(value, matches[2], matches[3]);\n }\n }\n }\n return value;\n }\n\n colAutoFitColumnBuilder(colDef: IExtendedColumnDef, col: IExtendedGridColumn, gridOptions: IExtendedGridOptions) {\n const promises = [];\n\n if (colDef.enableColumnAutoFit === undefined) {\n //TODO: make it as col.isResizable()\n if (UiGridAutoFitColumnsService.isResizable(colDef)) {\n colDef.enableColumnAutoFit = gridOptions.enableColumnAutoFit;\n } else {\n colDef.enableColumnAutoFit = false;\n }\n }\n\n return this.$q.all(promises);\n }\n\n static isResizable(colDef: IExtendedColumnDef): boolean {\n return !colDef.hasOwnProperty('width');\n }\n\n columnsProcessor(renderedColumnsToProcess?: Array, rows?: Array) {\n if (!rows.length) {\n return renderedColumnsToProcess;\n }\n // TODO: respect existing colDef options\n // if (col.colDef.enableColumnAutoFitting === false) return;\n\n let optimalWidths: {\n [name: string]: number\n } = {};\n\n\n renderedColumnsToProcess.forEach(column => {\n\n if (column.colDef.enableColumnAutoFit) {\n const columnKey = column.field || column.name;\n optimalWidths[columnKey] = Measurer.measureRoundedTextWidth(column.displayName, this.gridMetrics.getHeaderFont()) + this.gridMetrics.getHeaderButtonsWidth();\n\n rows.forEach((row) => {\n let cellText = get(row.entity, columnKey);\n\n if (!!column.colDef.cellFilter) {\n cellText = this.getFilteredValue(cellText, column.colDef.cellFilter);\n }\n\n const currentCellWidth = Measurer.measureRoundedTextWidth(cellText, this.gridMetrics.getCellFont());\n const optimalCellWidth = currentCellWidth > 300 ? 300 : currentCellWidth;\n\n if (optimalCellWidth > optimalWidths[columnKey]) {\n optimalWidths[columnKey] = optimalCellWidth;\n }\n });\n\n column.colDef.width = optimalWidths[columnKey] + this.gridMetrics.getPadding() + this.gridMetrics.getBorder();\n column.updateColumnDef(column.colDef, false);\n }\n });\n return renderedColumnsToProcess;\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/UiGridAutoFitColumnsService.ts","var baseGet = require('../internal/baseGet'),\n toPath = require('../internal/toPath');\n\n/**\n * Gets the property value at `path` of `object`. If the resolved value is\n * `undefined` the `defaultValue` is used in its place.\n *\n * @static\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned if the resolved value is `undefined`.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, toPath(path), (path + ''));\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/object/get.js\n// module id = 3\n// module chunks = 0","var toObject = require('./toObject');\n\n/**\n * The base implementation of `get` without support for string paths\n * and default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path of the property to get.\n * @param {string} [pathKey] The key representation of path.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path, pathKey) {\n if (object == null) {\n return;\n }\n if (pathKey !== undefined && pathKey in toObject(object)) {\n path = [pathKey];\n }\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[path[index++]];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/internal/baseGet.js\n// module id = 4\n// module chunks = 0","var isObject = require('../lang/isObject');\n\n/**\n * Converts `value` to an object if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Object} Returns the object.\n */\nfunction toObject(value) {\n return isObject(value) ? value : Object(value);\n}\n\nmodule.exports = toObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/internal/toObject.js\n// module id = 5\n// module chunks = 0","/**\n * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.\n * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(1);\n * // => false\n */\nfunction isObject(value) {\n // Avoid a V8 JIT bug in Chrome 19-20.\n // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/lang/isObject.js\n// module id = 6\n// module chunks = 0","var baseToString = require('./baseToString'),\n isArray = require('../lang/isArray');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\n\\\\]|\\\\.)*?)\\2)\\]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `value` to property path array if it's not one.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {Array} Returns the property path array.\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return value;\n }\n var result = [];\n baseToString(value).replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n}\n\nmodule.exports = toPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/internal/toPath.js\n// module id = 7\n// module chunks = 0","/**\n * Converts `value` to a string if it's not one. An empty string is returned\n * for `null` or `undefined` values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n return value == null ? '' : (value + '');\n}\n\nmodule.exports = baseToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/internal/baseToString.js\n// module id = 8\n// module chunks = 0","var getNative = require('../internal/getNative'),\n isLength = require('../internal/isLength'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** `Object#toString` result references. */\nvar arrayTag = '[object Array]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/* Native method references for those with the same name as other `lodash` methods. */\nvar nativeIsArray = getNative(Array, 'isArray');\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(function() { return arguments; }());\n * // => false\n */\nvar isArray = nativeIsArray || function(value) {\n return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;\n};\n\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/lang/isArray.js\n// module id = 9\n// module chunks = 0","var isNative = require('../lang/isNative');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = object == null ? undefined : object[key];\n return isNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/internal/getNative.js\n// module id = 10\n// module chunks = 0","var isFunction = require('./isFunction'),\n isObjectLike = require('../internal/isObjectLike');\n\n/** Used to detect host constructors (Safari > 5). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar fnToString = Function.prototype.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n fnToString.call(hasOwnProperty).replace(/[\\\\^$.*+?()[\\]{}|]/g, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * Checks if `value` is a native function.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function, else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\nfunction isNative(value) {\n if (value == null) {\n return false;\n }\n if (isFunction(value)) {\n return reIsNative.test(fnToString.call(value));\n }\n return isObjectLike(value) && reIsHostCtor.test(value);\n}\n\nmodule.exports = isNative;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/lang/isNative.js\n// module id = 11\n// module chunks = 0","var isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar funcTag = '[object Function]';\n\n/** Used for native method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objToString = objectProto.toString;\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in older versions of Chrome and Safari which return 'function' for regexes\n // and Safari 8 which returns 'object' for typed array constructors.\n return isObject(value) && objToString.call(value) == funcTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/lang/isFunction.js\n// module id = 12\n// module chunks = 0","/**\n * Checks if `value` is object-like.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/internal/isObjectLike.js\n// module id = 13\n// module chunks = 0","/**\n * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)\n * of an array-like value.\n */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n */\nfunction isLength(value) {\n return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/lodash/internal/isLength.js\n// module id = 14\n// module chunks = 0","export class Measurer {\n private static canvas: HTMLCanvasElement;\n\n static measureTextWidth(text: string, font: string): number{\n const canvas = Measurer.canvas || (Measurer.canvas = document.createElement('canvas'));\n const context = canvas.getContext('2d');\n context.font = font;\n const metrics = context.measureText(text);\n return metrics.width;\n }\n\n static measureRoundedTextWidth(text: string, font: string): number{\n const width = Measurer.measureTextWidth(text, font);\n return Math.floor(width) + 1;\n }\n}\n\nexport default Measurer;\n\n\n\n// WEBPACK FOOTER //\n// ./src/Measurer.ts","export class UiGridMetrics {\n private headerFont: string;\n private cellFont: string;\n private padding: number;\n private border: number;\n\n getHeaderFont(){\n if(this.headerFont){\n return this.headerFont;\n }\n\n let header = document.querySelector('.ui-grid-header-cell .ui-grid-cell-contents');\n\n if(!header) {\n throw new Error('not found: .ui-grid-header-cell .ui-grid-cell-contents');\n }\n\n let headerStyle = getComputedStyle(header);\n this.headerFont = UiGridMetrics.getFontStringFrom(headerStyle);\n return this.headerFont;\n }\n\n getCellFont(){\n if(this.cellFont){\n return this.cellFont;\n }\n\n let cell = document.querySelector('.ui-grid-cell > .ui-grid-cell-contents');\n\n if(!cell){\n let element = document.createElement('div');\n element.className = 'ui-grid-cell-contents';\n element.style.cssFloat = 'left';\n angular.element(document.body).append(element);\n let cellStyle = getComputedStyle(element);\n this.cellFont = UiGridMetrics.getFontStringFrom(cellStyle);\n angular.element(element).remove();\n return this.cellFont;\n }\n\n let cellStyle = getComputedStyle(cell);\n this.cellFont = UiGridMetrics.getFontStringFrom(cellStyle);\n return this.cellFont;\n }\n\n getPadding(){\n if(this.padding){\n return this.padding;\n }\n\n let header = document.querySelector('.ui-grid-header-cell .ui-grid-cell-contents');\n\n if(!header) {\n throw new Error('not found: .ui-grid-header-cell .ui-grid-cell-contents');\n }\n\n let {paddingLeft, paddingRight} = getComputedStyle(header);\n this.padding = parseInt(paddingLeft) + parseInt(paddingRight);\n return this.padding;\n }\n\n getBorder(){\n if(this.border){\n return this.border;\n }\n\n let header = document.querySelector('.ui-grid-header-cell');\n\n if(!header) {\n throw new Error('not found: .ui-grid-header-cell');\n }\n\n let {borderRightWidth} = getComputedStyle(header);\n this.border = parseInt(borderRightWidth);\n return this.border;\n }\n\n getHeaderButtonsWidth(){\n // TODO: lets be more precise\n const HEADER_BUTTONS_WIDTH = 25;\n return HEADER_BUTTONS_WIDTH;\n }\n\n private static getFontStringFrom({fontStyle, fontVariant, fontWeight, fontSize, fontFamily}: CSSStyleDeclaration): string {\n // in FF cssStyle.font may be '' so we need to collect it manually\n // font: [font-style||font-variant||font-weight] font-size [/line-height] font-family | inherit\n return `${fontStyle} ${fontVariant} ${fontWeight} ${fontSize} ${fontFamily}`;\n }\n\n}\n\nexport default UiGridMetrics;\n\n\n\n// WEBPACK FOOTER //\n// ./src/UiGridMetrics.ts","import { UiGridAutoFitColumnsService } from './UiGridAutoFitColumnsService';\n\n/*@ngInject*/\nexport function UiGridAutoFitColumnsDirective (uiGridAutoFitColumnsService: UiGridAutoFitColumnsService) {\n return {\n replace: true,\n priority: 0,\n require: '^uiGrid',\n scope: false,\n compile: function () {\n return {\n pre: function ($scope, $elm, $attrs, uiGridCtrl) {\n uiGridAutoFitColumnsService.initializeGrid(uiGridCtrl.grid);\n }\n };\n }\n };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/UiGridAutoFitColumnsDirective.ts"],"sourceRoot":""}