{"version":3,"file":"static/js/8518.ebf48d5e.chunk.js","mappings":"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","sources":["../node_modules/computed-style/dist/computedStyle.commonjs.js","../node_modules/line-height/lib/line-height.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/react-truncate-markup/es/tokenize-rules.js","../node_modules/react-truncate-markup/es/atom.js","../node_modules/react-truncate-markup/es/index.js"],"sourcesContent":["// This code has been refactored for 140 bytes\n// You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js\nvar computedStyle = function (el, prop, getComputedStyle) {\n  getComputedStyle = window.getComputedStyle;\n\n  // In one fell swoop\n  return (\n    // If we have getComputedStyle\n    getComputedStyle ?\n      // Query it\n      // TODO: From CSS-Query notes, we might need (node, null) for FF\n      getComputedStyle(el) :\n\n    // Otherwise, we are in IE and use currentStyle\n      el.currentStyle\n  )[\n    // Switch to camelCase for CSSOM\n    // DEV: Grabbed from jQuery\n    // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194\n    // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597\n    prop.replace(/-(\\w)/gi, function (word, letter) {\n      return letter.toUpperCase();\n    })\n  ];\n};\n\nmodule.exports = computedStyle;\n","// Load in dependencies\nvar computedStyle = require('computed-style');\n\n/**\n * Calculate the `line-height` of a given node\n * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.\n * @returns {Number} `line-height` of the element in pixels\n */\nfunction lineHeight(node) {\n  // Grab the line-height via style\n  var lnHeightStr = computedStyle(node, 'line-height');\n  var lnHeight = parseFloat(lnHeightStr, 10);\n\n  // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em')\n  if (lnHeightStr === lnHeight + '') {\n    // Save the old lineHeight style and update the em unit to the element\n    var _lnHeightStyle = node.style.lineHeight;\n    node.style.lineHeight = lnHeightStr + 'em';\n\n    // Calculate the em based height\n    lnHeightStr = computedStyle(node, 'line-height');\n    lnHeight = parseFloat(lnHeightStr, 10);\n\n    // Revert the lineHeight style\n    if (_lnHeightStyle) {\n      node.style.lineHeight = _lnHeightStyle;\n    } else {\n      delete node.style.lineHeight;\n    }\n  }\n\n  // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt)\n  // DEV: `em` units are converted to `pt` in IE6\n  // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length\n  if (lnHeightStr.indexOf('pt') !== -1) {\n    lnHeight *= 4;\n    lnHeight /= 3;\n  // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm)\n  } else if (lnHeightStr.indexOf('mm') !== -1) {\n    lnHeight *= 96;\n    lnHeight /= 25.4;\n  // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm)\n  } else if (lnHeightStr.indexOf('cm') !== -1) {\n    lnHeight *= 96;\n    lnHeight /= 2.54;\n  // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in)\n  } else if (lnHeightStr.indexOf('in') !== -1) {\n    lnHeight *= 96;\n  // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc)\n  } else if (lnHeightStr.indexOf('pc') !== -1) {\n    lnHeight *= 16;\n  }\n\n  // Continue our computation\n  lnHeight = Math.round(lnHeight);\n\n  // If the line-height is \"normal\", calculate by font-size\n  if (lnHeightStr === 'normal') {\n    // Create a temporary node\n    var nodeName = node.nodeName;\n    var _node = document.createElement(nodeName);\n    _node.innerHTML = '&nbsp;';\n\n    // If we have a text area, reset it to only 1 row\n    // https://github.com/twolfson/line-height/issues/4\n    if (nodeName.toUpperCase() === 'TEXTAREA') {\n      _node.setAttribute('rows', '1');\n    }\n\n    // Set the font-size of the element\n    var fontSizeStr = computedStyle(node, 'font-size');\n    _node.style.fontSize = fontSizeStr;\n\n    // Remove default padding/border which can affect offset height\n    // https://github.com/twolfson/line-height/issues/4\n    // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight\n    _node.style.padding = '0px';\n    _node.style.border = '0px';\n\n    // Append it to the body\n    var body = document.body;\n    body.appendChild(_node);\n\n    // Assume the line height of the element is the height\n    var height = _node.offsetHeight;\n    lnHeight = height;\n\n    // Remove our child from the DOM\n    body.removeChild(_node);\n  }\n\n  // Return the calculated height\n  return lnHeight;\n}\n\n// Export lineHeight\nmodule.exports = lineHeight;\n","var safeIsNaN = Number.isNaN ||\n    function ponyfill(value) {\n        return typeof value === 'number' && value !== value;\n    };\nfunction isEqual(first, second) {\n    if (first === second) {\n        return true;\n    }\n    if (safeIsNaN(first) && safeIsNaN(second)) {\n        return true;\n    }\n    return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n    if (newInputs.length !== lastInputs.length) {\n        return false;\n    }\n    for (var i = 0; i < newInputs.length; i++) {\n        if (!isEqual(newInputs[i], lastInputs[i])) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n    if (isEqual === void 0) { isEqual = areInputsEqual; }\n    var lastThis;\n    var lastArgs = [];\n    var lastResult;\n    var calledOnce = false;\n    function memoized() {\n        var newArgs = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            newArgs[_i] = arguments[_i];\n        }\n        if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) {\n            return lastResult;\n        }\n        lastResult = resultFn.apply(this, newArgs);\n        calledOnce = true;\n        lastThis = this;\n        lastArgs = newArgs;\n        return lastResult;\n    }\n    return memoized;\n}\n\nexport default memoizeOne;\n","var TOKENIZE_POLICY = {\n  characters: {\n    tokenizeString: null,\n    isAtomic: function isAtomic(str) {\n      return str.length <= 1;\n    }\n  },\n  words: {\n    tokenizeString: function tokenizeString(str) {\n      return str.match(/(\\s*\\S[\\S\\xA0]*)/g);\n    },\n    isAtomic: function isAtomic(str) {\n      return (/^\\s*[\\S\\xA0]*\\s*$/.test(str)\n      );\n    }\n  }\n};\n\nexport default TOKENIZE_POLICY;","export var Atom = function Atom(props) {\n  return props.children || null;\n};\nAtom.__rtm_atom = true;\n\nexport var isAtomComponent = function isAtomComponent(reactEl) {\n  return !!(reactEl && reactEl.type && reactEl.type.__rtm_atom === true);\n};\n\nexport var ATOM_STRING_ID = '<Atom>';","var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class, _temp;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nimport React from 'react';\nimport memoizeOne from 'memoize-one';\nimport PropTypes from 'prop-types';\nimport getLineHeight from 'line-height';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport TOKENIZE_POLICY from './tokenize-rules';\nimport { Atom, isAtomComponent, ATOM_STRING_ID } from './atom';\n\nvar SPLIT = {\n  LEFT: true,\n  RIGHT: false\n};\n\nvar toString = function toString(node) {\n  var string = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n  if (!node) {\n    return string;\n  } else if (typeof node === 'string') {\n    return string + node;\n  } else if (isAtomComponent(node)) {\n    return string + ATOM_STRING_ID;\n  }\n  var children = Array.isArray(node) ? node : node.props.children || '';\n\n  return string + React.Children.map(children, function (child) {\n    return toString(child);\n  }).join('');\n};\n\nvar cloneWithChildren = function cloneWithChildren(node, children, isRootEl, level) {\n  var getDisplayStyle = function getDisplayStyle() {\n    if (isRootEl) {\n      return {\n        // root element cannot be an inline element because of the line calculation\n        display: (node.props.style || {}).display || 'block'\n      };\n    } else if (level === 2) {\n      return {\n        // level 2 elements (direct children of the root element) need to be inline because of the ellipsis.\n        // if level 2 element was a block element, ellipsis would get rendered on a new line, breaking the max number of lines\n        display: (node.props.style || {}).display || 'inline-block'\n      };\n    } else return {};\n  };\n\n  return _extends({}, node, {\n    props: _extends({}, node.props, {\n      style: _extends({}, node.props.style, getDisplayStyle()),\n      children: children\n    })\n  });\n};\n\nvar validateTree = function validateTree(node) {\n  if (node == null || ['string', 'number'].includes(typeof node === 'undefined' ? 'undefined' : _typeof(node)) || isAtomComponent(node)) {\n    return true;\n  } else if (typeof node.type === 'function') {\n    if (process.env.NODE_ENV !== 'production') {\n      /* eslint-disable no-console */\n      console.error('ReactTruncateMarkup tried to render <' + node.type.name + ' />, but truncating React components is not supported, the full content is rendered instead. Only DOM elements are supported. Alternatively, you can take advantage of the <TruncateMarkup.Atom /> component (see more in the docs https://github.com/patrik-piskay/react-truncate-markup/blob/master/README.md#truncatemarkupatom-).');\n      /* eslint-enable */\n    }\n\n    return false;\n  }\n\n  if (node.props && node.props.children) {\n    return React.Children.toArray(node.props.children).reduce(function (isValid, child) {\n      return isValid && validateTree(child);\n    }, true);\n  }\n\n  return true;\n};\n\nvar TruncateMarkup = (_temp = _class = function (_React$Component) {\n  _inherits(TruncateMarkup, _React$Component);\n\n  function TruncateMarkup(props) {\n    _classCallCheck(this, TruncateMarkup);\n\n    var _this = _possibleConstructorReturn(this, _React$Component.call(this, props));\n\n    _this.lineHeight = null;\n    _this.splitDirectionSeq = [];\n    _this.shouldTruncate = true;\n    _this.wasLastCharTested = false;\n    _this.endFound = false;\n    _this.latestThatFits = null;\n    _this.onTruncateCalled = false;\n    _this.toStringMemo = memoizeOne(toString);\n    _this.childrenWithRefMemo = memoizeOne(_this.childrenElementWithRef);\n    _this.validateTreeMemo = memoizeOne(validateTree);\n\n    _this.onTruncate = function (wasTruncated) {\n      if (!_this.onTruncateCalled) {\n        _this.onTruncateCalled = true;\n        _this.props.onTruncate(wasTruncated);\n      }\n    };\n\n    _this.handleResize = function (el, prevResizeObserver) {\n      // clean up previous observer\n      if (prevResizeObserver) {\n        prevResizeObserver.disconnect();\n      }\n\n      // unmounting or just unsetting the element to be replaced with a new one later\n      if (!el) return null;\n\n      /* Wrapper element resize handing */\n      var initialRender = true;\n      var resizeCallback = function resizeCallback() {\n        if (initialRender) {\n          // ResizeObserer cb is called on initial render too so we are skipping here\n          initialRender = false;\n        } else {\n          // wrapper element has been resized, recalculating with the original text\n          _this.shouldTruncate = false;\n          _this.latestThatFits = null;\n\n          _this.setState({\n            text: _this.origText\n          }, function () {\n            _this.shouldTruncate = true;\n            _this.onTruncateCalled = false;\n            _this.truncate();\n          });\n        }\n      };\n\n      var resizeObserver = prevResizeObserver || new ResizeObserver(resizeCallback);\n\n      resizeObserver.observe(el);\n\n      return resizeObserver;\n    };\n\n    _this.setRef = function (el) {\n      var isNewEl = _this.el !== el;\n      _this.el = el;\n\n      // whenever we obtain a new element, attach resize handler\n      if (isNewEl) {\n        _this.resizeObserver = _this.handleResize(el, _this.resizeObserver);\n      }\n    };\n\n    _this.state = {\n      text: _this.childrenWithRefMemo(_this.props.children)\n    };\n    return _this;\n  }\n\n  TruncateMarkup.prototype.componentDidMount = function componentDidMount() {\n    if (!this.isValid) {\n      return;\n    }\n\n    // get the computed line-height of the parent element\n    // it'll be used for determining whether the text fits the container or not\n    this.lineHeight = this.props.lineHeight || getLineHeight(this.el);\n    this.truncate();\n  };\n\n  TruncateMarkup.prototype.UNSAFE_componentWillReceiveProps = function UNSAFE_componentWillReceiveProps(nextProps) {\n    var _this2 = this;\n\n    this.shouldTruncate = false;\n    this.latestThatFits = null;\n\n    this.setState({\n      text: this.childrenWithRefMemo(nextProps.children)\n    }, function () {\n      if (!_this2.isValid) {\n        return;\n      }\n\n      _this2.lineHeight = nextProps.lineHeight || getLineHeight(_this2.el);\n      _this2.shouldTruncate = true;\n      _this2.truncate();\n    });\n  };\n\n  TruncateMarkup.prototype.componentDidUpdate = function componentDidUpdate() {\n    if (this.shouldTruncate === false || this.isValid === false) {\n      return;\n    }\n\n    if (this.endFound) {\n      // we've found the end where we cannot split the text further\n      // that means we've already found the max subtree that fits the container\n      // so we are rendering that\n      if (this.latestThatFits !== null && this.state.text !== this.latestThatFits) {\n        /* eslint-disable react/no-did-update-set-state */\n        this.setState({\n          text: this.latestThatFits\n        });\n\n        return;\n        /* eslint-enable */\n      }\n\n      this.onTruncate( /* wasTruncated */true);\n\n      return;\n    }\n\n    if (this.splitDirectionSeq.length) {\n      if (this.fits()) {\n        this.latestThatFits = this.state.text;\n        // we've found a subtree that fits the container\n        // but we need to check if we didn't cut too much of it off\n        // so we are changing the last splitting decision from splitting and going left\n        // to splitting and going right\n        this.splitDirectionSeq.splice(this.splitDirectionSeq.length - 1, 1, SPLIT.RIGHT, SPLIT.LEFT);\n      } else {\n        this.splitDirectionSeq.push(SPLIT.LEFT);\n      }\n\n      this.tryToFit(this.origText, this.splitDirectionSeq);\n    }\n  };\n\n  TruncateMarkup.prototype.componentWillUnmount = function componentWillUnmount() {\n    this.lineHeight = null;\n    this.latestThatFits = null;\n    this.splitDirectionSeq = [];\n  };\n\n  TruncateMarkup.prototype.truncate = function truncate() {\n    if (this.fits()) {\n      // the whole text fits on the first try, no need to do anything else\n      this.shouldTruncate = false;\n      this.onTruncate( /* wasTruncated */false);\n\n      return;\n    }\n\n    this.truncateOriginalText();\n  };\n\n  TruncateMarkup.prototype.childrenElementWithRef = function childrenElementWithRef(children) {\n    var child = React.Children.only(children);\n\n    return React.cloneElement(child, {\n      ref: this.setRef,\n      style: _extends({\n        wordWrap: 'break-word'\n      }, child.props.style)\n    });\n  };\n\n  TruncateMarkup.prototype.truncateOriginalText = function truncateOriginalText() {\n    this.endFound = false;\n    this.splitDirectionSeq = [SPLIT.LEFT];\n    this.wasLastCharTested = false;\n\n    this.tryToFit(this.origText, this.splitDirectionSeq);\n  };\n\n  /**\n   * Splits rootEl based on instructions and updates React's state with the returned element\n   * After React rerenders the new text, we'll check if the new text fits in componentDidUpdate\n   * @param  {ReactElement} rootEl - the original children element\n   * @param  {Array} splitDirections - list of SPLIT.RIGHT/LEFT instructions\n   */\n\n\n  TruncateMarkup.prototype.tryToFit = function tryToFit(rootEl, splitDirections) {\n    if (!rootEl.props.children) {\n      // no markup in container\n      return;\n    }\n\n    var newRootEl = this.split(rootEl, splitDirections, /* isRootEl */true);\n\n    var ellipsis = typeof this.props.ellipsis === 'function' ? this.props.ellipsis(newRootEl) : this.props.ellipsis;\n\n    ellipsis = (typeof ellipsis === 'undefined' ? 'undefined' : _typeof(ellipsis)) === 'object' ? React.cloneElement(ellipsis, { key: 'ellipsis' }) : ellipsis;\n\n    var newChildren = newRootEl.props.children;\n    var newChildrenWithEllipsis = [].concat(newChildren, ellipsis);\n\n    // edge case tradeoff EC#1 - on initial render it doesn't fit in the requested number of lines (1) so it starts truncating\n    // - because of truncating and the ellipsis position, div#lvl2 will have display set to 'inline-block',\n    //   causing the whole body to fit in 1 line again\n    // - if that happens, ellipsis is not needed anymore as the whole body is rendered\n    // - NOTE this could be fixed by checking for this exact case and handling it separately so it renders <div>foo {ellipsis}</div>\n    //\n    // Example:\n    // <TruncateMarkup lines={1}>\n    //   <div>\n    //     foo\n    //     <div id=\"lvl2\">bar</div>\n    //   </div>\n    // </TruncateMarkup>\n    var shouldRenderEllipsis = toString(newChildren) !== this.toStringMemo(this.props.children);\n\n    this.setState({\n      text: _extends({}, newRootEl, {\n        props: _extends({}, newRootEl.props, {\n          children: shouldRenderEllipsis ? newChildrenWithEllipsis : newChildren\n        })\n      })\n    });\n  };\n\n  /**\n   * Splits JSX node based on its type\n   * @param  {null|string|Array|Object} node - JSX node\n   * @param  {Array} splitDirections - list of SPLIT.RIGHT/LEFT instructions\n   * @return {null|string|Array|Object} - split JSX node\n   */\n\n\n  TruncateMarkup.prototype.split = function split(node, splitDirections) {\n    var isRoot = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n    var level = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n\n    if (!node || isAtomComponent(node)) {\n      this.endFound = true;\n\n      return node;\n    } else if (typeof node === 'string') {\n      return this.splitString(node, splitDirections, level);\n    } else if (Array.isArray(node)) {\n      return this.splitArray(node, splitDirections, level);\n    }\n\n    var newChildren = this.split(node.props.children, splitDirections,\n    /* isRoot */false, level + 1);\n\n    return cloneWithChildren(node, newChildren, isRoot, level);\n  };\n\n  TruncateMarkup.prototype.splitString = function splitString(string) {\n    var splitDirections = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n    var level = arguments[2];\n\n    if (!splitDirections.length) {\n      return string;\n    }\n\n    if (splitDirections.length && this.policy.isAtomic(string)) {\n      // allow for an extra render test with the current character included\n      // in most cases this variation was already tested, but some edge cases require this check\n      // NOTE could be removed once EC#1 is taken care of\n      if (!this.wasLastCharTested) {\n        this.wasLastCharTested = true;\n      } else {\n        // we are trying to split further but we have nowhere to go now\n        // that means we've already found the max subtree that fits the container\n        this.endFound = true;\n      }\n\n      return string;\n    }\n\n    if (this.policy.tokenizeString) {\n      var wordsArray = this.splitArray(this.policy.tokenizeString(string), splitDirections, level);\n\n      // in order to preserve the input structure\n      return wordsArray.join('');\n    }\n\n    var splitDirection = splitDirections[0],\n        restSplitDirections = splitDirections.slice(1);\n\n    var pivotIndex = Math.ceil(string.length / 2);\n    var beforeString = string.substring(0, pivotIndex);\n\n    if (splitDirection === SPLIT.LEFT) {\n      return this.splitString(beforeString, restSplitDirections, level);\n    }\n    var afterString = string.substring(pivotIndex);\n\n    return beforeString + this.splitString(afterString, restSplitDirections, level);\n  };\n\n  TruncateMarkup.prototype.splitArray = function splitArray(array) {\n    var splitDirections = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n    var level = arguments[2];\n\n    if (!splitDirections.length) {\n      return array;\n    }\n\n    if (array.length === 1) {\n      return [this.split(array[0], splitDirections, /* isRoot */false, level)];\n    }\n\n    var splitDirection = splitDirections[0],\n        restSplitDirections = splitDirections.slice(1);\n\n    var pivotIndex = Math.ceil(array.length / 2);\n    var beforeArray = array.slice(0, pivotIndex);\n\n    if (splitDirection === SPLIT.LEFT) {\n      return this.splitArray(beforeArray, restSplitDirections, level);\n    }\n    var afterArray = array.slice(pivotIndex);\n\n    return beforeArray.concat(this.splitArray(afterArray, restSplitDirections, level));\n  };\n\n  TruncateMarkup.prototype.fits = function fits() {\n    var maxLines = this.props.lines;\n\n    var _el$getBoundingClient = this.el.getBoundingClientRect(),\n        height = _el$getBoundingClient.height;\n\n    var computedLines = Math.round(height / parseFloat(this.lineHeight));\n\n    return maxLines >= computedLines;\n  };\n\n  TruncateMarkup.prototype.render = function render() {\n    return this.state.text;\n  };\n\n  _createClass(TruncateMarkup, [{\n    key: 'isValid',\n    get: function get() {\n      return this.validateTreeMemo(this.props.children);\n    }\n  }, {\n    key: 'origText',\n    get: function get() {\n      return this.childrenWithRefMemo(this.props.children);\n    }\n  }, {\n    key: 'policy',\n    get: function get() {\n      return TOKENIZE_POLICY[this.props.tokenize] || TOKENIZE_POLICY.characters;\n    }\n  }]);\n\n  return TruncateMarkup;\n}(React.Component), _class.Atom = Atom, _class.defaultProps = {\n  lines: 1,\n  ellipsis: '...',\n  lineHeight: '',\n  onTruncate: function onTruncate() {},\n  tokenize: 'characters'\n}, _temp);\nexport { TruncateMarkup as default };\nTruncateMarkup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n  children: PropTypes.element.isRequired,\n  lines: PropTypes.number,\n  ellipsis: PropTypes.oneOfType([PropTypes.element, PropTypes.string, PropTypes.func]),\n  lineHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n  onTruncate: PropTypes.func,\n  // eslint-disable-next-line\n  onAfterTruncate: function onAfterTruncate(props, propName, componentName) {\n    if (props[propName]) {\n      return new Error(componentName + ': Setting `onAfterTruncate` prop is deprecated, use `onTruncate` instead.');\n    }\n  },\n  tokenize: function tokenize(props, propName, componentName) {\n    var tokenizeValue = props[propName];\n\n    if (typeof tokenizeValue !== 'undefined') {\n      if (!TOKENIZE_POLICY[tokenizeValue]) {\n        /* eslint-disable no-console */\n        return new Error(componentName + ': Unknown option for prop \\'tokenize\\': \\'' + tokenizeValue + '\\'. Option \\'characters\\' will be used instead.');\n        /* eslint-enable */\n      }\n    }\n  }\n} : {};"],"names":["module","exports","el","prop","getComputedStyle","window","currentStyle","replace","word","letter","toUpperCase","computedStyle","require","node","lnHeightStr","lnHeight","parseFloat","_lnHeightStyle","style","lineHeight","indexOf","Math","round","nodeName","_node","document","createElement","innerHTML","setAttribute","fontSizeStr","fontSize","padding","border","body","appendChild","offsetHeight","removeChild","safeIsNaN","Number","isNaN","value","areInputsEqual","newInputs","lastInputs","length","i","first","second","resultFn","isEqual","lastThis","lastResult","lastArgs","calledOnce","newArgs","_i","arguments","this","apply","characters","tokenizeString","isAtomic","str","words","match","test","Atom","props","children","__rtm_atom","_class","_temp","isAtomComponent","reactEl","type","_createClass","defineProperties","target","descriptor","enumerable","configurable","writable","Object","defineProperty","key","Constructor","protoProps","staticProps","prototype","_typeof","Symbol","iterator","obj","constructor","_extends","assign","source","hasOwnProperty","call","SPLIT","toString","string","undefined","Array","isArray","React","map","child","join","validateTree","includes","toArray","reduce","isValid","TruncateMarkup","_React$Component","instance","TypeError","_classCallCheck","_this","self","ReferenceError","_possibleConstructorReturn","splitDirectionSeq","shouldTruncate","wasLastCharTested","endFound","latestThatFits","onTruncateCalled","toStringMemo","memoizeOne","childrenWithRefMemo","childrenElementWithRef","validateTreeMemo","onTruncate","wasTruncated","handleResize","prevResizeObserver","disconnect","initialRender","resizeObserver","ResizeObserver","setState","text","origText","truncate","observe","setRef","isNewEl","state","subClass","superClass","create","setPrototypeOf","__proto__","_inherits","componentDidMount","getLineHeight","UNSAFE_componentWillReceiveProps","nextProps","_this2","componentDidUpdate","fits","splice","push","tryToFit","componentWillUnmount","truncateOriginalText","only","ref","wordWrap","rootEl","splitDirections","newRootEl","split","ellipsis","newChildren","newChildrenWithEllipsis","concat","shouldRenderEllipsis","isRoot","level","splitString","splitArray","isRootEl","display","cloneWithChildren","policy","splitDirection","restSplitDirections","slice","pivotIndex","ceil","beforeString","substring","afterString","array","beforeArray","afterArray","maxLines","lines","height","getBoundingClientRect","render","get","TOKENIZE_POLICY","tokenize","defaultProps","propTypes"],"sourceRoot":""}