{"remainingRequest":"/Users/csr/workspace/open-component/node_modules/thread-loader/dist/cjs.js??ref--9-1!/Users/csr/workspace/open-component/node_modules/@breezr/plugin-typescript/node_modules/ts-loader/index.js??ref--9-2!/Users/csr/workspace/open-component/packages/rc-truncate/src/Truncate.tsx","dependencies":[{"path":"/Users/csr/workspace/open-component/packages/rc-truncate/src/Truncate.tsx","mtime":1571644356719},{"path":"/Users/csr/workspace/open-component/node_modules/cache-loader/dist/cjs.js","mtime":1571812248602},{"path":"/Users/csr/workspace/open-component/node_modules/thread-loader/dist/cjs.js","mtime":1571812248618},{"path":"/Users/csr/workspace/open-component/node_modules/@breezr/plugin-typescript/node_modules/ts-loader/index.js","mtime":1571882237140}],"contextDependencies":[],"result":["import React from 'react';\nimport { SizeMe } from 'react-sizeme';\nimport classnames from 'classnames';\nimport TruncateByLength from './TruncateByLength';\nimport TruncateByWidth from './TruncateByWidth';\nimport { wrapperClassName } from './constants';\nimport { SWrapper } from './styles';\n/**\n * @public\n */\nvar Truncate = function (_a) {\n    var children = _a.children, _b = _a.type, type = _b === void 0 ? 'length' : _b, value = _a.value, threshold = _a.threshold, tooltip = _a.tooltip, showTooltip = _a.showTooltip, _c = _a.align, align = _c === void 0 ? 'r' : _c, _d = _a.omission, omission = _d === void 0 ? '...' : _d, tooltipMaxWidth = _a.tooltipMaxWidth, className = _a.className, style = _a.style, updaterRef = _a.updaterRef, isOverflowChange = _a.isOverflowChange;\n    var actuallShowTooltip = (function () {\n        // 旧版组件支持tooltip prop，且'enable'表示true\n        if (showTooltip !== undefined)\n            return showTooltip;\n        if (tooltip !== undefined) {\n            return tooltip === true || tooltip === 'enable';\n        }\n        return true;\n    })();\n    var actualThreshold = (function () {\n        if (threshold !== undefined) {\n            return threshold;\n        }\n        if (value !== undefined) {\n            // 旧版API： value可以为30、'30'、'30px'\n            if (typeof value === 'number') {\n                // value可以是40\n                return value;\n            }\n            var parsed = parseInt(value, 10);\n            if (!Number.isNaN(parsed)) {\n                // value可以是'40'\n                return parsed;\n            }\n            if (type === 'width' && typeof value === 'string') {\n                // 仅当type为'width'时，value可以是'40px'这种【非纯数字字符串】\n                return value;\n            }\n            console.error(\"type can't be string unless type is 'width', using default: 30\");\n        }\n        return 30;\n    })();\n    if (type === 'length' &&\n        // type 视为 'length' 的前提：\n        typeof children === 'string' &&\n        actualThreshold !== 'auto') {\n        return (React.createElement(Wrapper, { className: className, style: style },\n            React.createElement(TruncateByLength, { threshold: actualThreshold, omission: omission, showTooltip: actuallShowTooltip, align: align, tooltipMaxWidth: tooltipMaxWidth }, children)));\n    }\n    // 其余情况 type 视为 'width'\n    if (actualThreshold === 'auto') {\n        return (React.createElement(SizeMe, null, function (_a) {\n            var size = _a.size;\n            // 获得可用宽度（即Wrapper的宽度）\n            var actualActualThreshold;\n            // 设置一个超大的Threshold，使得react-sizeme能拿到完整内容的宽度\n            if (!size.width)\n                actualActualThreshold = 5000;\n            else\n                actualActualThreshold = size.width;\n            return (React.createElement(Wrapper, { className: className, style: style },\n                React.createElement(TruncateByWidth, { threshold: actualActualThreshold, omission: omission, showTooltip: actuallShowTooltip, align: align, tooltipMaxWidth: tooltipMaxWidth, updaterRef: updaterRef, isOverflowChange: isOverflowChange }, children)));\n        }));\n    }\n    return (React.createElement(Wrapper, { className: className, style: style },\n        React.createElement(TruncateByWidth, { threshold: actualThreshold, omission: omission, showTooltip: actuallShowTooltip, align: align, tooltipMaxWidth: tooltipMaxWidth, updaterRef: updaterRef, isOverflowChange: isOverflowChange }, children)));\n};\nexport default Truncate;\nvar Wrapper = function (_a) {\n    var className = _a.className, children = _a.children, style = _a.style;\n    return (React.createElement(SWrapper, { className: classnames(wrapperClassName, className), style: style }, children));\n};\n",{"version":3,"file":"/Users/csr/workspace/open-component/packages/rc-truncate/src/Truncate.tsx","sourceRoot":"","sources":["/Users/csr/workspace/open-component/packages/rc-truncate/src/Truncate.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react'\nimport { SizeMe } from 'react-sizeme'\nimport classnames from 'classnames'\nimport TruncateByLength from './TruncateByLength'\nimport TruncateByWidth from './TruncateByWidth'\nimport { AlignType, wrapperClassName } from './constants'\nimport { SWrapper } from './styles'\n\n/**\n * @public\n */\nexport interface ITruncateProps {\n  /**\n   * 需要被截断的内容<br/>\n   * 如果想要通过字符长度来截断，则children必须为string；<br/>\n   * 如果想要通过宽度来截断，则children可以为任意可渲染元素；\n   */\n  children: string | React.ReactNode\n  /**\n   * 如何判断是否需要截断：<br/>\n   * 'length': 内容字符串长度是否大于`threshold`\n   * 'width': 内容渲染后的宽度是否大于`threshold`\n   * @defaultValue 'length'\n   */\n  type?: 'length' | 'width'\n  /**\n   * 截断临界值：<br/>\n   * `type` 为 'length' 时，threshold限制字符串长度，必须传入number类型。<br/>\n   * `type` 为 'width' 时，threshold限制内容渲染后的宽度，可以传入number或`'auto'`。<br/>\n   * 其中`'auto'`表示截断宽度自动设置为容器元素的宽度。尤其适用于flex布局下，截断宽度由剩余宽度决定的场景。\n   * @defaultValue 30\n   */\n  threshold?: number | 'auto'\n  /**\n   * @deprecated 此prop用于兼容旧的API。以后请使用`threshold`\n   * @internal\n   */\n  value?: number | string\n  /**\n   * 在被截断时，是否使用气泡展示完整内容\n   * @defaultValue 'enable'\n   * @deprecated 此prop用于兼容旧的API。以后请使用`showTooltip`\n   * @internal\n   */\n  tooltip?: boolean | string\n  /**\n   * 在被截断时，是否使用气泡展示完整内容\n   * @defaultValue true\n   */\n  showTooltip?: boolean\n  /**\n   * 气泡对齐方式，可选值参见 Balloon（Tooltip）组件文档\n   * @defaultValue 'r'(右)\n   */\n  align?: AlignType\n  /**\n   * 省略符号\n   */\n  omission?: React.ReactNode\n  /**\n   * tooltip的最大宽度限制，`showTooltip`为true时才有效\n   */\n  tooltipMaxWidth?: number\n  /**\n   * 容器的类名\n   */\n  className?: string\n  /**\n   * 容器的样式\n   */\n  style?: React.CSSProperties\n  /**\n   * 【极少使用】如果你绕过React的更新机制来更新子节点（比如直接用js操作DOM，或者加载图片造成子节点变宽），我们无法及时检查子节点是否需要截断。这种情况下，你需要通过这个prop来获取updater来手动调用。见\"non-string\"这个Demo。<br/>\n   * 仅当`type` 为 'width' 时有效。\n   */\n  updaterRef?: React.MutableRefObject<(() => void) | null>\n  /**\n   * 【极少使用】方便父组件知道当前是否发生了截断，`type==='width'`时可用（`type==='length'`时你自己就很容易判断是否会截断）。<br/>\n   * 慎用，避免`截断状态->你扩大父容器->非截断状态->你缩小父容器->截断状态->...`这样的无限循环。\n   */\n  isOverflowChange?: (newIsOverflow: boolean) => void\n}\n\n/**\n * @public\n */\nconst Truncate: React.FC<ITruncateProps> = ({\n  children,\n  type = 'length',\n  value,\n  threshold,\n  tooltip,\n  showTooltip,\n  align = 'r',\n  omission = '...',\n  tooltipMaxWidth,\n  className,\n  style,\n  updaterRef,\n  isOverflowChange,\n}) => {\n  const actuallShowTooltip = (() => {\n    // 旧版组件支持tooltip prop，且'enable'表示true\n    if (showTooltip !== undefined) return showTooltip\n    if (tooltip !== undefined) {\n      return tooltip === true || tooltip === 'enable'\n    }\n    return true\n  })()\n  const actualThreshold: number | string = (() => {\n    if (threshold !== undefined) {\n      return threshold\n    }\n    if (value !== undefined) {\n      // 旧版API： value可以为30、'30'、'30px'\n      if (typeof value === 'number') {\n        // value可以是40\n        return value\n      }\n      const parsed = parseInt(value, 10)\n      if (!Number.isNaN(parsed)) {\n        // value可以是'40'\n        return parsed\n      }\n      if (type === 'width' && typeof value === 'string') {\n        // 仅当type为'width'时，value可以是'40px'这种【非纯数字字符串】\n        return value\n      }\n      console.error(\n        `type can't be string unless type is 'width', using default: 30`\n      )\n    }\n    return 30\n  })()\n\n  if (\n    type === 'length' &&\n    // type 视为 'length' 的前提：\n    typeof children === 'string' &&\n    actualThreshold !== 'auto'\n  ) {\n    return (\n      <Wrapper className={className} style={style}>\n        <TruncateByLength\n          threshold={actualThreshold as number}\n          omission={omission}\n          showTooltip={actuallShowTooltip}\n          align={align}\n          tooltipMaxWidth={tooltipMaxWidth}\n        >\n          {children}\n        </TruncateByLength>\n      </Wrapper>\n    )\n  }\n  // 其余情况 type 视为 'width'\n  if (actualThreshold === 'auto') {\n    return (\n      <SizeMe>\n        {({ size }) => {\n          // 获得可用宽度（即Wrapper的宽度）\n          let actualActualThreshold: number\n          // 设置一个超大的Threshold，使得react-sizeme能拿到完整内容的宽度\n          if (!size.width) actualActualThreshold = 5000\n          else actualActualThreshold = size.width\n\n          return (\n            <Wrapper className={className} style={style}>\n              <TruncateByWidth\n                threshold={actualActualThreshold}\n                omission={omission}\n                showTooltip={actuallShowTooltip}\n                align={align}\n                tooltipMaxWidth={tooltipMaxWidth}\n                updaterRef={updaterRef}\n                isOverflowChange={isOverflowChange}\n              >\n                {children}\n              </TruncateByWidth>\n            </Wrapper>\n          )\n        }}\n      </SizeMe>\n    )\n  }\n  return (\n    <Wrapper className={className} style={style}>\n      <TruncateByWidth\n        threshold={actualThreshold as number}\n        omission={omission}\n        showTooltip={actuallShowTooltip}\n        align={align}\n        tooltipMaxWidth={tooltipMaxWidth}\n        updaterRef={updaterRef}\n        isOverflowChange={isOverflowChange}\n      >\n        {children}\n      </TruncateByWidth>\n    </Wrapper>\n  )\n}\n\nexport default Truncate\n\nconst Wrapper: React.FC<{\n  className?: string\n  style?: React.CSSProperties\n}> = ({ className, children, style }) => {\n  return (\n    <SWrapper className={classnames(wrapperClassName, className)} style={style}>\n      {children}\n    </SWrapper>\n  )\n}\n"]}]}