shineout 3.10.3-beta.5 → 3.10.3-beta.7

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.7'
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.7');
13740
13740
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
13741
13741
 
13742
13742
 
@@ -27954,18 +27954,13 @@ var stepsStyle = {
27954
27954
  arrowIcon: {
27955
27955
  position: 'absolute',
27956
27956
  top: 0,
27957
- right: 0.25,
27957
+ right: 0,
27958
27958
  bottom: 0,
27959
- transform: 'translateX(100%)',
27959
+ // 1 倍屏下向左压进内容区 0.5px,盖住小数尺寸下亚像素对齐和抗锯齿产生的缝;2 倍屏误差小,偏移 0.25px
27960
+ transform: 'translateX(calc(100% - 0.5px))',
27960
27961
  zIndex: 1,
27961
27962
  '@media (min-resolution: 2dppx)': {
27962
- right: 0
27963
- },
27964
- '$withDescription &': {
27965
- transform: 'translateX(calc(100% - 0.5px))',
27966
- '@media (min-resolution: 2dppx)': {
27967
- transform: 'translateX(100%)'
27968
- }
27963
+ transform: 'translateX(calc(100% - 0.25px))'
27969
27964
  },
27970
27965
  '& > svg': {
27971
27966
  display: 'block',
@@ -27995,9 +27990,12 @@ var stepsStyle = {
27995
27990
  display: 'none'
27996
27991
  },
27997
27992
  '$arrow[dir=rtl] &': {
27998
- left: '0.25px',
27993
+ left: 0,
27999
27994
  right: 'auto',
28000
- transform: 'translateX(-100%)',
27995
+ transform: 'translateX(calc(-100% + 0.5px))',
27996
+ '@media (min-resolution: 2dppx)': {
27997
+ transform: 'translateX(calc(-100% + 0.25px))'
27998
+ },
28001
27999
  '& > svg': {
28002
28000
  transform: "rotate(180deg)"
28003
28001
  }
@@ -44108,6 +44106,7 @@ Tag.Input = tag_input;
44108
44106
 
44109
44107
 
44110
44108
  function getResetMore(onFilter, container, doms) {
44109
+ var restCount = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
44111
44110
  if (!container || !doms || !doms.length) return -1;
44112
44111
  var items = Array.from(doms);
44113
44112
  var style = getComputedStyle(container);
@@ -44119,6 +44118,7 @@ function getResetMore(onFilter, container, doms) {
44119
44118
  var hideEl = items.pop();
44120
44119
  var hideElStyle = getComputedStyle(hideEl);
44121
44120
  var hideMargin = parsePxToNumber(hideElStyle.marginLeft) + parsePxToNumber(hideElStyle.marginRight);
44121
+ var total = items.length + restCount;
44122
44122
  var num = 0;
44123
44123
  var sumWidth = 0;
44124
44124
  var itemWidthArr = items.map(function (item) {
@@ -44134,7 +44134,7 @@ function getResetMore(onFilter, container, doms) {
44134
44134
  for (var i = 0; i < itemWidthArr.length; i++) {
44135
44135
  var itemLen = itemWidthArr[i];
44136
44136
  // number length
44137
- var resetNum = items.length - 1 - i;
44137
+ var resetNum = total - 1 - i;
44138
44138
  var moreWidth = void 0;
44139
44139
  if (resetNum <= 0) {
44140
44140
  moreWidth = 0;
@@ -44149,7 +44149,7 @@ function getResetMore(onFilter, container, doms) {
44149
44149
  break;
44150
44150
  }
44151
44151
  num += 1;
44152
- if (i === items.length - 1) {
44152
+ if (i === total - 1) {
44153
44153
  // not show more
44154
44154
  num = -1;
44155
44155
  }
@@ -44329,11 +44329,17 @@ var result_Result = function Result(props) {
44329
44329
  _useState4 = slicedToArray_default()(_useState3, 2),
44330
44330
  shouldResetMore = _useState4[0],
44331
44331
  setShouldResetMore = _useState4[1];
44332
+ var _useState5 = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useState)(0),
44333
+ _useState6 = slicedToArray_default()(_useState5, 2),
44334
+ measureKey = _useState6[0],
44335
+ setMeasureKey = _useState6[1];
44332
44336
  var render = useRender();
44333
44337
  var resultRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(null);
44334
44338
  var _useRef = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)({
44335
44339
  prevMore: more,
44336
- maxMore: 0
44340
+ maxMore: 0,
44341
+ // 估算偏小、需要渲染全部结果重新测量时的结果数量;按数量比较,值变化后的首次渲染不会沿用旧结论
44342
+ showAllLength: 0
44337
44343
  }),
44338
44344
  context = _useRef.current;
44339
44345
  var removeLock = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useRef)(false);
@@ -44532,12 +44538,16 @@ var result_Result = function Result(props) {
44532
44538
  ]);
44533
44539
  var result = renderMultipleResult.results;
44534
44540
  var moreNumber = getCompressedBound();
44541
+ // 测量折叠数量时只渲染容器可能放得下的数量(按每个 tag 至少 20px 估算),避免大量选中值时渲染全部 tag
44542
+ var measureLimit = context.maxMore + 1;
44543
+ var shouldLimitMeasure = compressed && !isCompressedBound() && !renderResultContentProp && more === -1 && context.maxMore > 0 && result_isArray(result) && result.length > Math.max(measureLimit, context.showAllLength);
44544
+ var moreData = shouldLimitMeasure ? result.slice(0, measureLimit) : result;
44535
44545
  var renderMultipleResultMore = /*#__PURE__*/(0,jsx_runtime.jsx)(result_more, {
44536
44546
  keygen: keygen,
44537
44547
  onRemove: onRemove,
44538
44548
  classes: props.classes,
44539
44549
  jssStyle: props.jssStyle,
44540
- data: result,
44550
+ data: moreData,
44541
44551
  datas: renderMultipleResult.datas,
44542
44552
  size: size,
44543
44553
  compressed: compressed,
@@ -44583,10 +44593,12 @@ var result_Result = function Result(props) {
44583
44593
  var exceedsCapacity = valueLength && valueLength > context.maxMore;
44584
44594
  if (hasExistingCompression && hasValidEstimate && exceedsCapacity && typeof requestIdleCallback !== 'undefined') {
44585
44595
  requestIdleCallback(function () {
44596
+ context.showAllLength = 0;
44586
44597
  setMore(-1);
44587
44598
  setShouldResetMore(true);
44588
44599
  });
44589
44600
  } else {
44601
+ context.showAllLength = 0;
44590
44602
  if (!renderCompressed) setMore(-1);
44591
44603
  setShouldResetMore(true);
44592
44604
  }
@@ -44660,7 +44672,16 @@ var result_Result = function Result(props) {
44660
44672
  if (shouldResetMore && more === -1 && compressed && resultRef.current && (props.value || []).length) {
44661
44673
  var tagClassName = ".".concat(styles.tag.split(' ')[0]);
44662
44674
  if (shouldResetMore && result_isArray(value) && (value || []).length) {
44663
- var newMore = getResetMore(showInput, resultRef.current, resultRef.current.querySelectorAll(tagClassName));
44675
+ var restCount = shouldLimitMeasure ? result.length - moreData.length : 0;
44676
+ var newMore = getResetMore(showInput, resultRef.current, resultRef.current.querySelectorAll(tagClassName), restCount);
44677
+ // 只渲染了部分 tag 且全部放得下,说明估算偏小,渲染全部后重新测量
44678
+ if (newMore === -1 && restCount > 0) {
44679
+ context.showAllLength = result.length;
44680
+ setMeasureKey(function (k) {
44681
+ return k + 1;
44682
+ });
44683
+ return;
44684
+ }
44664
44685
  context.prevMore = newMore;
44665
44686
  setMore(newMore);
44666
44687
  setShouldResetMore(false);
@@ -44670,7 +44691,7 @@ var result_Result = function Result(props) {
44670
44691
  } else if (shouldResetMore) {
44671
44692
  setShouldResetMore(false);
44672
44693
  }
44673
- }, [shouldResetMore]);
44694
+ }, [shouldResetMore, measureKey]);
44674
44695
  (0,external_root_React_commonjs2_react_commonjs_react_amd_react_.useEffect)(function () {
44675
44696
  if (!resultRef.current) return;
44676
44697
  if (!compressed) return;
@@ -80343,7 +80364,7 @@ var watermark_interface = __webpack_require__(6640);
80343
80364
 
80344
80365
 
80345
80366
  /* harmony default export */ var src_0 = ({
80346
- version: '3.10.3-beta.5'
80367
+ version: '3.10.3-beta.7'
80347
80368
  });
80348
80369
  }();
80349
80370
  /******/ return __webpack_exports__;