shineout 3.10.3-beta.5 → 3.10.3-beta.6

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/cjs/index.js CHANGED
@@ -545,5 +545,5 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
545
545
  // 此文件由脚本自动生成,请勿直接修改。
546
546
  // This file was generated automatically by a script. Please do not modify it directly.
547
547
  var _default = exports.default = {
548
- version: '3.10.3-beta.5'
548
+ version: '3.10.3-beta.6'
549
549
  };
package/dist/shineout.js CHANGED
@@ -13736,7 +13736,7 @@ var handleStyle = function handleStyle(style) {
13736
13736
  };
13737
13737
  /* harmony default export */ var jss_style_handleStyle = (handleStyle);
13738
13738
  ;// CONCATENATED MODULE: ../shineout-style/src/version.ts
13739
- /* harmony default export */ var version = ('3.10.3-beta.5');
13739
+ /* harmony default export */ var version = ('3.10.3-beta.6');
13740
13740
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
13741
13741
 
13742
13742
 
@@ -44108,6 +44108,7 @@ Tag.Input = tag_input;
44108
44108
 
44109
44109
 
44110
44110
  function getResetMore(onFilter, container, doms) {
44111
+ var restCount = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
44111
44112
  if (!container || !doms || !doms.length) return -1;
44112
44113
  var items = Array.from(doms);
44113
44114
  var style = getComputedStyle(container);
@@ -44119,6 +44120,7 @@ function getResetMore(onFilter, container, doms) {
44119
44120
  var hideEl = items.pop();
44120
44121
  var hideElStyle = getComputedStyle(hideEl);
44121
44122
  var hideMargin = parsePxToNumber(hideElStyle.marginLeft) + parsePxToNumber(hideElStyle.marginRight);
44123
+ var total = items.length + restCount;
44122
44124
  var num = 0;
44123
44125
  var sumWidth = 0;
44124
44126
  var itemWidthArr = items.map(function (item) {
@@ -44134,7 +44136,7 @@ function getResetMore(onFilter, container, doms) {
44134
44136
  for (var i = 0; i < itemWidthArr.length; i++) {
44135
44137
  var itemLen = itemWidthArr[i];
44136
44138
  // number length
44137
- var resetNum = items.length - 1 - i;
44139
+ var resetNum = total - 1 - i;
44138
44140
  var moreWidth = void 0;
44139
44141
  if (resetNum <= 0) {
44140
44142
  moreWidth = 0;
@@ -44149,7 +44151,7 @@ function getResetMore(onFilter, container, doms) {
44149
44151
  break;
44150
44152
  }
44151
44153
  num += 1;
44152
- if (i === items.length - 1) {
44154
+ if (i === total - 1) {
44153
44155
  // not show more
44154
44156
  num = -1;
44155
44157
  }
@@ -44329,11 +44331,17 @@ var result_Result = function Result(props) {
44329
44331
  _useState4 = slicedToArray_default()(_useState3, 2),
44330
44332
  shouldResetMore = _useState4[0],
44331
44333
  setShouldResetMore = _useState4[1];
44334
+ var _useState5 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(0),
44335
+ _useState6 = slicedToArray_default()(_useState5, 2),
44336
+ measureKey = _useState6[0],
44337
+ setMeasureKey = _useState6[1];
44332
44338
  var render = useRender();
44333
44339
  var resultRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null);
44334
44340
  var _useRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)({
44335
44341
  prevMore: more,
44336
- maxMore: 0
44342
+ maxMore: 0,
44343
+ // 估算偏小、需要渲染全部结果重新测量时的结果数量;按数量比较,值变化后的首次渲染不会沿用旧结论
44344
+ showAllLength: 0
44337
44345
  }),
44338
44346
  context = _useRef.current;
44339
44347
  var removeLock = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(false);
@@ -44532,12 +44540,16 @@ var result_Result = function Result(props) {
44532
44540
  ]);
44533
44541
  var result = renderMultipleResult.results;
44534
44542
  var moreNumber = getCompressedBound();
44543
+ // 测量折叠数量时只渲染容器可能放得下的数量(按每个 tag 至少 20px 估算),避免大量选中值时渲染全部 tag
44544
+ var measureLimit = context.maxMore + 1;
44545
+ var shouldLimitMeasure = compressed && !isCompressedBound() && !renderResultContentProp && more === -1 && context.maxMore > 0 && result_isArray(result) && result.length > Math.max(measureLimit, context.showAllLength);
44546
+ var moreData = shouldLimitMeasure ? result.slice(0, measureLimit) : result;
44535
44547
  var renderMultipleResultMore = /*#__PURE__*/(0,jsx_runtime.jsx)(result_more, {
44536
44548
  keygen: keygen,
44537
44549
  onRemove: onRemove,
44538
44550
  classes: props.classes,
44539
44551
  jssStyle: props.jssStyle,
44540
- data: result,
44552
+ data: moreData,
44541
44553
  datas: renderMultipleResult.datas,
44542
44554
  size: size,
44543
44555
  compressed: compressed,
@@ -44583,10 +44595,12 @@ var result_Result = function Result(props) {
44583
44595
  var exceedsCapacity = valueLength && valueLength > context.maxMore;
44584
44596
  if (hasExistingCompression && hasValidEstimate && exceedsCapacity && typeof requestIdleCallback !== 'undefined') {
44585
44597
  requestIdleCallback(function () {
44598
+ context.showAllLength = 0;
44586
44599
  setMore(-1);
44587
44600
  setShouldResetMore(true);
44588
44601
  });
44589
44602
  } else {
44603
+ context.showAllLength = 0;
44590
44604
  if (!renderCompressed) setMore(-1);
44591
44605
  setShouldResetMore(true);
44592
44606
  }
@@ -44660,7 +44674,16 @@ var result_Result = function Result(props) {
44660
44674
  if (shouldResetMore && more === -1 && compressed && resultRef.current && (props.value || []).length) {
44661
44675
  var tagClassName = ".".concat(styles.tag.split(' ')[0]);
44662
44676
  if (shouldResetMore && result_isArray(value) && (value || []).length) {
44663
- var newMore = getResetMore(showInput, resultRef.current, resultRef.current.querySelectorAll(tagClassName));
44677
+ var restCount = shouldLimitMeasure ? result.length - moreData.length : 0;
44678
+ var newMore = getResetMore(showInput, resultRef.current, resultRef.current.querySelectorAll(tagClassName), restCount);
44679
+ // 只渲染了部分 tag 且全部放得下,说明估算偏小,渲染全部后重新测量
44680
+ if (newMore === -1 && restCount > 0) {
44681
+ context.showAllLength = result.length;
44682
+ setMeasureKey(function (k) {
44683
+ return k + 1;
44684
+ });
44685
+ return;
44686
+ }
44664
44687
  context.prevMore = newMore;
44665
44688
  setMore(newMore);
44666
44689
  setShouldResetMore(false);
@@ -44670,7 +44693,7 @@ var result_Result = function Result(props) {
44670
44693
  } else if (shouldResetMore) {
44671
44694
  setShouldResetMore(false);
44672
44695
  }
44673
- }, [shouldResetMore]);
44696
+ }, [shouldResetMore, measureKey]);
44674
44697
  (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () {
44675
44698
  if (!resultRef.current) return;
44676
44699
  if (!compressed) return;
@@ -80343,7 +80366,7 @@ var watermark_interface = __webpack_require__(6640);
80343
80366
 
80344
80367
 
80345
80368
  /* harmony default export */ var src_0 = ({
80346
- version: '3.10.3-beta.5'
80369
+ version: '3.10.3-beta.6'
80347
80370
  });
80348
80371
  }();
80349
80372
  /******/ return __webpack_exports__;