shineout 3.9.7-beta.2 → 3.9.7-beta.3

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
@@ -522,5 +522,5 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
522
522
  // 此文件由脚本自动生成,请勿直接修改。
523
523
  // This file was generated automatically by a script. Please do not modify it directly.
524
524
  var _default = exports.default = {
525
- version: '3.9.7-beta.2'
525
+ version: '3.9.7-beta.3'
526
526
  };
package/dist/shineout.js CHANGED
@@ -12401,7 +12401,7 @@ var handleStyle = function handleStyle(style) {
12401
12401
  };
12402
12402
  /* harmony default export */ var jss_style_handleStyle = (handleStyle);
12403
12403
  ;// CONCATENATED MODULE: ../shineout-style/src/version.ts
12404
- /* harmony default export */ var version = ('3.9.7-beta.2');
12404
+ /* harmony default export */ var version = ('3.9.7-beta.3');
12405
12405
  ;// CONCATENATED MODULE: ../shineout-style/src/jss-style/index.tsx
12406
12406
 
12407
12407
 
@@ -35572,7 +35572,7 @@ var useDragMock = function useDragMock(props) {
35572
35572
  var deltaY = event.clientY - dragInfo.lastY;
35573
35573
  dragInfo.lastX = event.clientX;
35574
35574
  dragInfo.lastY = event.clientY;
35575
- (_props$onDragMove = props.onDragMove) === null || _props$onDragMove === void 0 || _props$onDragMove.call(props, deltaX, deltaY);
35575
+ (_props$onDragMove = props.onDragMove) === null || _props$onDragMove === void 0 || _props$onDragMove.call(props, deltaX, deltaY, event);
35576
35576
  });
35577
35577
  var handleMouseUp = usePersistFn(function (event) {
35578
35578
  var _props$onDragEnd;
@@ -63160,6 +63160,12 @@ var useSlider = function useSlider(props) {
63160
63160
  context.clickLock = false;
63161
63161
  }, 100);
63162
63162
  });
63163
+ var isDisabled = use_persist_fn(function (value) {
63164
+ if (typeof props.disabled === 'function') {
63165
+ return props.disabled(value);
63166
+ }
63167
+ return !!props.disabled;
63168
+ });
63163
63169
  var handleDragEnd = use_persist_fn(function () {
63164
63170
  lockClick();
63165
63171
  var start = getValueFromRate(rate[0], scale, step);
@@ -63171,20 +63177,56 @@ var useSlider = function useSlider(props) {
63171
63177
  props.onChange(end);
63172
63178
  }
63173
63179
  });
63174
- var handleDragMove = use_persist_fn(function (deltaX, deltaY) {
63180
+ var handleDragMove = use_persist_fn(function (deltaX, deltaY, mouseEvent) {
63175
63181
  setRate(function (r) {
63176
63182
  var target = trackRef.current;
63177
63183
  if (!target) return r;
63178
63184
  var newRate = toConsumableArray_default()(r);
63179
63185
  var v = context.dragIndex === 0 ? r[0] : r[1];
63180
- var max = props.vertical ? target.clientHeight : target.clientWidth;
63181
- var delta = props.vertical ? deltaY * -1 : deltaX * (isReserve ? -1 : 1);
63182
- var rate = Math.max(v + delta / max, 0);
63186
+ var rate;
63187
+
63188
+ // If disabled function is used and we have mouse event, use absolute position
63189
+ if (typeof props.disabled === 'function' && mouseEvent) {
63190
+ var rect = target.getBoundingClientRect();
63191
+ var currentIndicatorRate = v;
63192
+
63193
+ // Calculate mouse position rate
63194
+ var mouseRate;
63195
+ if (props.vertical) {
63196
+ mouseRate = (rect.bottom - mouseEvent.clientY) / rect.height;
63197
+ } else {
63198
+ mouseRate = isReserve ? (rect.right - mouseEvent.clientX) / rect.width : (mouseEvent.clientX - rect.left) / rect.width;
63199
+ }
63200
+
63201
+ // Only allow movement if mouse crossed the indicator position
63202
+ if (mouseRate > currentIndicatorRate) {
63203
+ // Mouse is to the right/top, allow moving right/up
63204
+ rate = Math.max(Math.min(mouseRate, 1), 0);
63205
+ } else if (mouseRate < currentIndicatorRate) {
63206
+ // Mouse is to the left/bottom, allow moving left/down
63207
+ rate = Math.max(Math.min(mouseRate, 1), 0);
63208
+ } else {
63209
+ // Mouse is at same position, no change
63210
+ return r;
63211
+ }
63212
+ } else {
63213
+ // Normal delta-based movement
63214
+ var max = props.vertical ? target.clientHeight : target.clientWidth;
63215
+ var delta = props.vertical ? deltaY * -1 : deltaX * (isReserve ? -1 : 1);
63216
+ rate = Math.max(v + delta / max, 0);
63217
+ }
63183
63218
  if (rate > 1) {
63184
63219
  rate = 1;
63185
63220
  if (typeof props.onIncrease === 'function') props.onIncrease();
63186
63221
  }
63187
63222
  newRate[context.dragIndex] = rate;
63223
+
63224
+ // Check if the new value would be disabled
63225
+ var newValue = getValueFromRate(newRate[context.dragIndex], scale, step);
63226
+ if (isDisabled(newValue)) {
63227
+ // Stay at current position to prevent flickering
63228
+ return r;
63229
+ }
63188
63230
  if (newRate[0] > newRate[1]) {
63189
63231
  context.dragIndex = context.dragIndex === 0 ? 1 : 0;
63190
63232
  var temp = newRate[0];
@@ -63213,6 +63255,9 @@ var useSlider = function useSlider(props) {
63213
63255
  var rect = target.getBoundingClientRect();
63214
63256
  var rate = !props.vertical ? (isReserve ? rect.right - e.clientX : e.clientX - rect.left) / rect.width : (rect.bottom - e.clientY) / rect.height;
63215
63257
  var value = getValueFromRate(rate, scale, step);
63258
+
63259
+ // Check if the clicked value would be disabled
63260
+ if (isDisabled(value)) return;
63216
63261
  if (props.range) {
63217
63262
  var _start = startValue;
63218
63263
  var _end = endValue;
@@ -63249,8 +63294,10 @@ var useSlider = function useSlider(props) {
63249
63294
  handleEndMouseDown: handleEndMouseDown,
63250
63295
  handleTrackClick: handleTrackClick
63251
63296
  });
63252
- var start = dragInfo.isDragging ? rate[0] : getRateFromValue(startValue, scale);
63253
- var end = dragInfo.isDragging ? rate[1] : getRateFromValue(endValue, scale);
63297
+
63298
+ // During dragging, optionally snap to quantized values in discrete mode
63299
+ var start = dragInfo.isDragging ? props.discrete ? getRateFromValue(getValueFromRate(rate[0], scale, step), scale) : rate[0] : getRateFromValue(startValue, scale);
63300
+ var end = dragInfo.isDragging ? props.discrete ? getRateFromValue(getValueFromRate(rate[1], scale, step), scale) : rate[1] : getRateFromValue(endValue, scale);
63254
63301
  var innerStyle = getTrackInnerStyle(start, end);
63255
63302
  return {
63256
63303
  func: func,
@@ -63306,7 +63353,9 @@ var Slider = function Slider(props0) {
63306
63353
  step: step,
63307
63354
  vertical: !!props.vertical,
63308
63355
  onIncrease: props.onIncrease,
63309
- direction: config.direction
63356
+ direction: config.direction,
63357
+ disabled: props.disabled,
63358
+ discrete: props.discrete
63310
63359
  }),
63311
63360
  func = _useSlider.func,
63312
63361
  trackRef = _useSlider.trackRef,
@@ -63328,12 +63377,20 @@ var Slider = function Slider(props0) {
63328
63377
  children: formated
63329
63378
  });
63330
63379
  };
63380
+ var isDisabled = function isDisabled(value) {
63381
+ if (typeof props.disabled === 'function') {
63382
+ return props.disabled(value);
63383
+ }
63384
+ return !!props.disabled;
63385
+ };
63331
63386
  var renderIndicator = function renderIndicator(position) {
63332
63387
  if (!props.range && position === 0) return null;
63333
63388
  var handleEndMouseDown = position === 0 ? func.handleStartMouseDown : func.handleEndMouseDown;
63389
+ var value = position === 0 ? startValue : endValue;
63390
+ var disabled = isDisabled(value);
63334
63391
  return /*#__PURE__*/(0,jsx_runtime.jsxs)(jsx_runtime.Fragment, {
63335
63392
  children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
63336
- onMouseDown: props.disabled ? undefined : handleEndMouseDown,
63393
+ onMouseDown: disabled ? undefined : handleEndMouseDown,
63337
63394
  className: classnames_default()(sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.indicator, position === 0 ? sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.indicatorStart : sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.indicatorEnd, dragIndex === position && (sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.indicatorActive), tipType === 'hover' && (sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.indicatorHover)),
63338
63395
  dir: config.direction
63339
63396
  }), renderIndicatorValue(position)]
@@ -63349,14 +63406,30 @@ var Slider = function Slider(props0) {
63349
63406
  var verticalStyle = props.vertical ? {
63350
63407
  height: height
63351
63408
  } : {};
63409
+
63410
+ // For boolean disabled, use it directly; for function disabled, check all values
63411
+ var isWholeDisabled = function isWholeDisabled() {
63412
+ if (typeof props.disabled === 'boolean' || props.disabled === undefined) {
63413
+ return !!props.disabled;
63414
+ }
63415
+ // For function disabled, the component is not fully disabled (individual indicators are)
63416
+ return false;
63417
+ };
63418
+ var shouldDisableTrackClick = function shouldDisableTrackClick() {
63419
+ if (typeof props.disabled === 'boolean' || props.disabled === undefined) {
63420
+ return !!props.disabled;
63421
+ }
63422
+ // For function disabled, allow track clicks
63423
+ return false;
63424
+ };
63352
63425
  return /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
63353
63426
  id: fieldId,
63354
- className: classnames_default()(sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.rootClass, sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.wrapper, props.autoHide && (sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.autoHide), props.disabled && (sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.disabled), props.vertical && (sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.vertical), props.className),
63427
+ className: classnames_default()(sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.rootClass, sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.wrapper, props.autoHide && (sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.autoHide), isWholeDisabled() && (sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.disabled), props.vertical && (sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.vertical), props.className),
63355
63428
  style: objectSpread2_default()(objectSpread2_default()({}, verticalStyle), props.style),
63356
63429
  children: [/*#__PURE__*/(0,jsx_runtime.jsx)("div", {
63357
63430
  className: sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.track,
63358
63431
  ref: trackRef,
63359
- onClick: props.disabled ? undefined : func.handleTrackClick,
63432
+ onClick: shouldDisableTrackClick() ? undefined : func.handleTrackClick,
63360
63433
  children: /*#__PURE__*/(0,jsx_runtime.jsxs)("div", {
63361
63434
  className: sliderClasses === null || sliderClasses === void 0 ? void 0 : sliderClasses.trackInner,
63362
63435
  style: innerStyle,
@@ -74958,7 +75031,7 @@ var upload_interface = __webpack_require__(8821);
74958
75031
 
74959
75032
 
74960
75033
  /* harmony default export */ var src_0 = ({
74961
- version: '3.9.7-beta.2'
75034
+ version: '3.9.7-beta.3'
74962
75035
  });
74963
75036
  }();
74964
75037
  /******/ return __webpack_exports__;