@v-c/slider 1.0.2 → 1.0.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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("vue"),e=require("@v-c/util/dist/KeyCode"),B=require("classnames"),L=require("../context.cjs"),s=require("../util.cjs"),U=o.defineComponent({name:"Handle",props:{prefixCls:{type:String,required:!0},value:{type:Number,required:!0},valueIndex:{type:Number,required:!0},dragging:{type:Boolean,default:!1},draggingDelete:{type:Boolean,default:!1},onStartMove:{type:Function,required:!0},onDelete:{type:Function,required:!0},onOffsetChange:{type:Function,required:!0},onFocus:{type:Function,required:!0},onMouseenter:{type:Function,required:!0},render:Function,onChangeComplete:Function,mock:Boolean,classNames:Object,styles:Object},emits:["focus","mouseenter","startMove","delete","offsetChange","changeComplete"],setup(l,{attrs:p,emit:u,expose:F}){const{min:v,max:g,direction:t,disabled:d,keyboard:q,range:E,tabIndex:P,ariaLabelForHandle:k,ariaLabelledByForHandle:D,ariaRequired:M,ariaValueTextFormatterForHandle:N}=L.useInjectSlider(),c=o.ref({}),f=o.ref({}),b=o.ref({}),y=a=>{d||u("startMove",a,l.valueIndex)},O=a=>{u("focus",a,l.valueIndex)},S=a=>{u("mouseenter",a,l.valueIndex)},H=a=>{if(!d&&q){let n=null;switch(a.which||a.keyCode){case e.LEFT:n=t.value==="ltr"||t.value==="btt"?-1:1;break;case e.RIGHT:n=t.value==="ltr"||t.value==="btt"?1:-1;break;case e.UP:n=t.value!=="ttb"?1:-1;break;case e.DOWN:n=t.value!=="ttb"?-1:1;break;case e.HOME:n="min";break;case e.END:n="max";break;case e.PAGE_UP:n=2;break;case e.PAGE_DOWN:n=-2;break;case e.BACKSPACE:case e.DELETE:u("delete",a,l.valueIndex);break}n!==null&&(a.preventDefault(),u("offsetChange",n,l.valueIndex))}},w=a=>{switch(a.which||a.keyCode){case e.LEFT:case e.RIGHT:case e.UP:case e.DOWN:case e.HOME:case e.END:case e.PAGE_UP:case e.PAGE_DOWN:u("changeComplete");break}};return F({focus:()=>l.valueIndex}),()=>{const{prefixCls:a,value:n,valueIndex:r,onStartMove:$,onDelete:j,render:x,dragging:h,draggingDelete:C,onOffsetChange:R,onChangeComplete:W,onFocus:V,onMouseenter:z,styles:T,classNames:A,...I}=l,G=s.getDirectionStyle(t.value,n,v.value,g.value);r!==null?c.value={tabindex:d?null:s.getIndex(P,r),role:"slider","aria-valuemin":v.value,"aria-valuemax":g.value,"aria-valuenow":n,"aria-disabled":d,"aria-label":s.getIndex(k,r),"aria-labelledby":s.getIndex(D,r),"aria-required":s.getIndex(M,r),"aria-valuetext":s.getIndex(N,r)?.(n),"aria-orientation":t.value==="ltr"||t.value==="rtl"?"horizontal":"vertical",onMousedown:y,onTouchstart:y,onFocus:O,onMouseenter:S,onKeydown:H,onKeyup:w,...I}:c.value={...I};const i=`${a}-handle`;f.value=B(i,{[`${i}-${r+1}`]:r!==null&&E,[`${i}-dragging`]:h,[`${i}-dragging-delete`]:C},A?.handle),b.value={...G,...p.style,...T?.handle};const m=o.createVNode("div",o.mergeProps({class:f.value,style:b.value},c.value),null);if(x){const K={index:r,prefixCls:a,value:n,dragging:h,draggingDelete:C,node:m},_=()=>x(K);return o.createVNode(_,null,null)}return m}}});exports.default=U;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const o=require("vue"),e=require("@v-c/util/dist/KeyCode"),B=require("classnames"),L=require("../context.cjs"),s=require("../util.cjs"),U=o.defineComponent({name:"Handle",props:{prefixCls:{type:String,required:!0},value:{type:Number,required:!0},valueIndex:{type:Number,required:!0},dragging:{type:Boolean,default:!1},draggingDelete:{type:Boolean,default:!1},onStartMove:{type:Function,required:!0},onDelete:{type:Function,required:!0},onOffsetChange:{type:Function,required:!0},onFocus:{type:Function,required:!0},onMouseenter:{type:Function,required:!0},render:{type:Function},onChangeComplete:Function,mock:Boolean,classNames:Object,styles:Object},emits:["focus","mouseenter","startMove","delete","offsetChange","changeComplete"],setup(l,{attrs:p,emit:u,expose:F}){const{min:v,max:g,direction:t,disabled:d,keyboard:q,range:E,tabIndex:P,ariaLabelForHandle:k,ariaLabelledByForHandle:D,ariaRequired:M,ariaValueTextFormatterForHandle:N}=L.useInjectSlider(),c=o.ref({}),f=o.ref({}),b=o.ref({}),y=a=>{d||u("startMove",a,l.valueIndex)},O=a=>{u("focus",a,l.valueIndex)},S=a=>{u("mouseenter",a,l.valueIndex)},H=a=>{if(!d&&q){let n=null;switch(a.which||a.keyCode){case e.LEFT:n=t.value==="ltr"||t.value==="btt"?-1:1;break;case e.RIGHT:n=t.value==="ltr"||t.value==="btt"?1:-1;break;case e.UP:n=t.value!=="ttb"?1:-1;break;case e.DOWN:n=t.value!=="ttb"?-1:1;break;case e.HOME:n="min";break;case e.END:n="max";break;case e.PAGE_UP:n=2;break;case e.PAGE_DOWN:n=-2;break;case e.BACKSPACE:case e.DELETE:u("delete",a,l.valueIndex);break}n!==null&&(a.preventDefault(),u("offsetChange",n,l.valueIndex))}},w=a=>{switch(a.which||a.keyCode){case e.LEFT:case e.RIGHT:case e.UP:case e.DOWN:case e.HOME:case e.END:case e.PAGE_UP:case e.PAGE_DOWN:u("changeComplete");break}};return F({focus:()=>l.valueIndex}),()=>{const{prefixCls:a,value:n,valueIndex:r,onStartMove:$,onDelete:j,render:x,dragging:h,draggingDelete:C,onOffsetChange:R,onChangeComplete:W,onFocus:V,onMouseenter:z,styles:T,classNames:A,...I}=l,G=s.getDirectionStyle(t.value,n,v.value,g.value);r!==null?c.value={tabindex:d?null:s.getIndex(P,r),role:"slider","aria-valuemin":v.value,"aria-valuemax":g.value,"aria-valuenow":n,"aria-disabled":d,"aria-label":s.getIndex(k,r),"aria-labelledby":s.getIndex(D,r),"aria-required":s.getIndex(M,r),"aria-valuetext":s.getIndex(N,r)?.(n),"aria-orientation":t.value==="ltr"||t.value==="rtl"?"horizontal":"vertical",onMousedown:y,onTouchstart:y,onFocus:O,onMouseenter:S,onKeydown:H,onKeyup:w,...I}:c.value={...I};const i=`${a}-handle`;f.value=B(i,{[`${i}-${r+1}`]:r!==null&&E,[`${i}-dragging`]:h,[`${i}-dragging-delete`]:C},A?.handle),b.value={...G,...p.style,...T?.handle};const m=o.createVNode("div",o.mergeProps({class:f.value,style:b.value},c.value),null);if(x){const K={index:r,prefixCls:a,value:n,dragging:h,draggingDelete:C,node:m},_=()=>x(K);return o.createVNode(_,null,null)}return m}}});exports.default=U;
@@ -1,5 +1,13 @@
1
1
  import { PropType } from 'vue';
2
2
  import { OnStartMove, SliderClassNames, SliderStyles } from '../interface';
3
+ export interface RenderProps {
4
+ index: number;
5
+ prefixCls: string;
6
+ value: number;
7
+ dragging: boolean;
8
+ draggingDelete: boolean;
9
+ node: any;
10
+ }
3
11
  declare const _default: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
4
12
  prefixCls: {
5
13
  type: StringConstructor;
@@ -41,7 +49,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
41
49
  type: PropType<(e: MouseEvent, index: number) => void>;
42
50
  required: true;
43
51
  };
44
- render: FunctionConstructor;
52
+ render: {
53
+ type: PropType<(v: RenderProps) => any>;
54
+ };
45
55
  onChangeComplete: PropType<() => void>;
46
56
  mock: BooleanConstructor;
47
57
  classNames: PropType<SliderClassNames>;
@@ -87,7 +97,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
87
97
  type: PropType<(e: MouseEvent, index: number) => void>;
88
98
  required: true;
89
99
  };
90
- render: FunctionConstructor;
100
+ render: {
101
+ type: PropType<(v: RenderProps) => any>;
102
+ };
91
103
  onChangeComplete: PropType<() => void>;
92
104
  mock: BooleanConstructor;
93
105
  classNames: PropType<SliderClassNames>;
@@ -46,7 +46,9 @@ const te = /* @__PURE__ */ L({
46
46
  type: Function,
47
47
  required: !0
48
48
  },
49
- render: Function,
49
+ render: {
50
+ type: Function
51
+ },
50
52
  onChangeComplete: Function,
51
53
  mock: Boolean,
52
54
  classNames: Object,
@@ -70,7 +72,7 @@ const te = /* @__PURE__ */ L({
70
72
  ariaLabelledByForHandle: M,
71
73
  ariaRequired: q,
72
74
  ariaValueTextFormatterForHandle: O
73
- } = $(), i = c({}), g = c({}), b = c({}), m = (a) => {
75
+ } = $(), i = c({}), g = c({}), b = c({}), y = (a) => {
74
76
  s || o("startMove", a, l.valueIndex);
75
77
  }, H = (a) => {
76
78
  o("focus", a, l.valueIndex);
@@ -136,7 +138,7 @@ const te = /* @__PURE__ */ L({
136
138
  valueIndex: r,
137
139
  onStartMove: _,
138
140
  onDelete: j,
139
- render: y,
141
+ render: m,
140
142
  dragging: h,
141
143
  draggingDelete: p,
142
144
  onOffsetChange: V,
@@ -159,8 +161,8 @@ const te = /* @__PURE__ */ L({
159
161
  "aria-required": u(q, r),
160
162
  "aria-valuetext": u(O, r)?.(n),
161
163
  "aria-orientation": t.value === "ltr" || t.value === "rtl" ? "horizontal" : "vertical",
162
- onMousedown: m,
163
- onTouchstart: m,
164
+ onMousedown: y,
165
+ onTouchstart: y,
164
166
  onFocus: H,
165
167
  onMouseenter: S,
166
168
  onKeydown: w,
@@ -183,7 +185,7 @@ const te = /* @__PURE__ */ L({
183
185
  class: g.value,
184
186
  style: b.value
185
187
  }, i.value), null);
186
- if (y) {
188
+ if (m) {
187
189
  const B = {
188
190
  index: r,
189
191
  prefixCls: a,
@@ -192,7 +194,7 @@ const te = /* @__PURE__ */ L({
192
194
  draggingDelete: p,
193
195
  node: C
194
196
  };
195
- return F(() => y(B), null, null);
197
+ return F(() => m(B), null, null);
196
198
  }
197
199
  return C;
198
200
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),I=require("../util.cjs"),p=require("./Handle.cjs"),M=e.defineComponent({name:"Handles",props:{prefixCls:{type:String,required:!0},values:{type:Array,required:!0},handleStyle:{type:[Object,Array]},onStartMove:{type:Function,required:!0},onOffsetChange:{type:Function,required:!0},onFocus:{type:Function},onBlur:{type:Function},onDelete:{type:Function,required:!0},handleRender:Function,activeHandleRender:Function,draggingIndex:{type:Number,default:-1},draggingDelete:{type:Boolean,default:!1},onChangeComplete:Function},emits:["focus"],slots:Object,setup(v,{emit:y,expose:F}){const u=e.ref(),o=e.ref(!1),a=e.ref(-1),l=n=>{a.value=n,o.value=!0},h=(n,t)=>{l(t),y("focus",n)},m=(n,t)=>{l(t)};return F({focus:()=>u.value?.focus(),hideHelp:()=>{o.value=!1}}),()=>{const{prefixCls:n,onStartMove:t,onOffsetChange:q,values:s,handleRender:H,activeHandleRender:d,draggingIndex:i,draggingDelete:c,onFocus:x,handleStyle:C,...S}=v,g={prefixCls:n,onStartMove:t,onOffsetChange:q,render:H,onFocus:h,onMouseenter:m,...S};return e.createVNode(e.Fragment,null,[s?.map((b,r)=>{const f=i===r;return e.createVNode(p.default,e.mergeProps({ref:u.value,dragging:f,draggingDelete:f&&c,style:I.getIndex(C,r),key:r,value:b,valueIndex:r},g),null)}),d&&o.value&&e.createVNode(p.default,e.mergeProps({key:"a11y"},g,{value:s[a.value],valueIndex:1,dragging:i!==-1,draggingDelete:c,render:d,style:{pointerEvents:"none"},"aria-hidden":!0}),null)])}}});exports.default=M;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),I=require("../util.cjs"),f=require("./Handle.cjs"),M=e.defineComponent({name:"Handles",props:{prefixCls:{type:String,required:!0},values:{type:Array,required:!0},handleStyle:{type:[Object,Array]},onStartMove:{type:Function,required:!0},onOffsetChange:{type:Function,required:!0},onFocus:{type:Function},onBlur:{type:Function},onDelete:{type:Function,required:!0},handleRender:{type:Function},activeHandleRender:{type:Function},draggingIndex:{type:Number,default:-1},draggingDelete:{type:Boolean,default:!1},onChangeComplete:Function},emits:["focus"],slots:Object,setup(v,{emit:y,expose:F}){const u=e.ref(),o=e.ref(!1),a=e.ref(-1),l=n=>{a.value=n,o.value=!0},h=(n,t)=>{l(t),y("focus",n)},m=(n,t)=>{l(t)};return F({focus:()=>u.value?.focus(),hideHelp:()=>{o.value=!1}}),()=>{const{prefixCls:n,onStartMove:t,onOffsetChange:q,values:s,handleRender:H,activeHandleRender:d,draggingIndex:i,draggingDelete:c,onFocus:x,handleStyle:C,...S}=v,g={prefixCls:n,onStartMove:t,onOffsetChange:q,render:H,onFocus:h,onMouseenter:m,...S};return e.createVNode(e.Fragment,null,[s?.map((b,r)=>{const p=i===r;return e.createVNode(f.default,e.mergeProps({ref:u.value,dragging:p,draggingDelete:p&&c,style:I.getIndex(C,r),key:r,value:b,valueIndex:r},g),null)}),d&&o.value&&e.createVNode(f.default,e.mergeProps({key:"a11y"},g,{value:s[a.value],valueIndex:1,dragging:i!==-1,draggingDelete:c,render:d,style:{pointerEvents:"none"},"aria-hidden":!0}),null)])}}});exports.default=M;
@@ -1,5 +1,13 @@
1
1
  import { CSSProperties, PropType, SlotsType } from 'vue';
2
2
  import { OnStartMove } from '../interface';
3
+ export interface RenderProps {
4
+ index: number;
5
+ prefixCls: string;
6
+ value: number;
7
+ dragging: boolean;
8
+ draggingDelete: boolean;
9
+ node: any;
10
+ }
3
11
  export interface HandlesRef {
4
12
  focus: (index: number) => void;
5
13
  hideHelp: VoidFunction;
@@ -34,8 +42,12 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
34
42
  type: PropType<(index: number) => void>;
35
43
  required: true;
36
44
  };
37
- handleRender: FunctionConstructor;
38
- activeHandleRender: FunctionConstructor;
45
+ handleRender: {
46
+ type: PropType<(props: RenderProps) => any>;
47
+ };
48
+ activeHandleRender: {
49
+ type: PropType<(props: RenderProps) => any>;
50
+ };
39
51
  draggingIndex: {
40
52
  type: NumberConstructor;
41
53
  default: number;
@@ -75,8 +87,12 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
75
87
  type: PropType<(index: number) => void>;
76
88
  required: true;
77
89
  };
78
- handleRender: FunctionConstructor;
79
- activeHandleRender: FunctionConstructor;
90
+ handleRender: {
91
+ type: PropType<(props: RenderProps) => any>;
92
+ };
93
+ activeHandleRender: {
94
+ type: PropType<(props: RenderProps) => any>;
95
+ };
80
96
  draggingIndex: {
81
97
  type: NumberConstructor;
82
98
  default: number;
@@ -33,8 +33,12 @@ const k = /* @__PURE__ */ S({
33
33
  type: Function,
34
34
  required: !0
35
35
  },
36
- handleRender: Function,
37
- activeHandleRender: Function,
36
+ handleRender: {
37
+ type: Function
38
+ },
39
+ activeHandleRender: {
40
+ type: Function
41
+ },
38
42
  draggingIndex: {
39
43
  type: Number,
40
44
  default: -1
package/dist/Slider.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("vue"),se=require("@v-c/util/dist/isEqual"),P=require("@v-c/util/dist/warning"),J=require("classnames"),ce=require("./context.cjs"),ie=require("./Handles/index.cjs"),de=require("./hooks/useDrag.cjs"),fe=require("./hooks/useOffset.cjs"),ve=require("./hooks/useRange.cjs"),ge=require("./Marks/index.cjs"),be=require("./Steps/index.cjs"),he=require("./Tracks/index.cjs");function me(){return{prefixCls:{type:String,default:"vc-slider"},className:String,classNames:Object,styles:Object,id:String,disabled:{type:Boolean,default:!1},keyboard:{type:Boolean,default:!0},autoFocus:Boolean,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},value:[Number,Array],defaultValue:[Number,Array],range:[Boolean,Object],count:Number,allowCross:{type:Boolean,default:!0},pushable:{type:[Boolean,Number],default:!1},reverse:Boolean,vertical:Boolean,included:{type:Boolean,default:!0},startPoint:Number,trackStyle:[Object,Array],handleStyle:[Object,Array],railStyle:Object,dotStyle:[Object,Function],activeDotStyle:[Object,Function],marks:Object,dots:Boolean,handleRender:Function,activeHandleRender:Function,track:{type:Boolean,default:!0},tabIndex:{type:[Number,Array],default:0},ariaLabelForHandle:[String,Array],ariaLabelledByForHandle:[String,Array],ariaRequired:Boolean,ariaValueTextFormatterForHandle:[Function,Array],onFocus:Function,onBlur:Function,onChange:Function,onBeforeChange:Function,onAfterChange:Function,onChangeComplete:Function}}const ye=a.defineComponent({name:"Slider",props:{...me()},emits:["focus","blur","change","beforeChange","afterChange","changeComplete"],slots:Object,setup(t,{attrs:$,emit:f,expose:K,slots:Q}){const y=a.ref(),R=a.ref(),k=a.shallowRef("ltr");a.watch([()=>t.reverse,()=>t.vertical],([e,l])=>{l?k.value=e?"ttb":"btt":k.value=e?"rtl":"ltr"},{immediate:!0});const b=a.shallowRef(0),S=a.shallowRef(100),E=a.shallowRef(1),p=a.ref([]),C=a.ref(t.defaultValue||t.value),u=a.ref([]),o=a.ref(),B=a.ref();a.watchEffect(()=>{const{range:e,min:l,max:n,step:s,pushable:i,marks:h,allowCross:x,value:v,count:g}=t,[c,F,H,j,I]=ve.default(e);o.value={rangeEnabled:c,rangeEditable:F,rangeDraggableTrack:H,minCount:j,maxCount:I},b.value=isFinite(l)?l:0,S.value=isFinite(n)?n:100,E.value=s!==null&&s<=0?1:s;const M=a.computed(()=>typeof i=="boolean"?i?E.value:!1:i>=0?i:!1);p.value=Object.keys(h||{}).map(m=>{const d=h?.[m],r={value:Number(m)};return d&&typeof d=="object"&&!a.isVNode(d)&&("label"in d||"style"in d)?(r.style=d.style,r.label=d.label):r.label=d,r}).filter(({label:m})=>m||typeof m=="number").sort((m,d)=>m.value-d.value);const[A,O]=fe.default(b.value,S.value,E.value,p.value,x,M.value);B.value={formatValue:A,offsetValues:O},v!==void 0&&(C.value=v);const oe=a.computed(()=>{const m=C.value===null||C.value===void 0?[]:Array.isArray(C.value)?C.value:[C.value],[d=b.value]=m;let r=C.value===null?[]:[d];if(c){if(r=[...m],g||C.value===void 0){const N=g>=0?g+1:2;for(r=r.slice(0,N);r.length<N;)r.push(r[r.length-1]??b.value)}r.sort((N,T)=>N-T)}return r.forEach((N,T)=>{r[T]=A(N)}),r});u.value=oe.value});const V=e=>o.value.rangeEnabled?e:e[0],q=e=>{const l=[...e].sort((n,s)=>n-s);se(l,u.value,!0)||f("change",V(l)),C.value=l},L=e=>{e&&y.value?.hideHelp();const l=V(u.value);t.onAfterChange&&(f("afterChange",l),P(!1,"[vc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.")),f("changeComplete",l)},U=e=>{if(t.disabled||!o.value.rangeEditable||u.value.length<=o.value.minCount)return;const l=[...u.value];l.splice(e,1),f("beforeChange",V(l)),q(l);const n=Math.max(0,e-1);y.value?.hideHelp(),y.value?.focus(n)},[_,W,Z,z,X]=de.default(R,k,u,b,S,B.value.formatValue,q,L,B.value.offsetValues,o.value.rangeEditable,o.value.minCount),Y=(e,l)=>{if(!t.disabled){const n=[...u.value];let s=0,i=0,h=S.value-b.value;u.value.forEach((g,c)=>{const F=Math.abs(e-g);F<=h&&(h=F,s=c),g<e&&(i=c)});let x=s;o.value.rangeEditable&&h!==0&&(!o.value.maxCount||u.value.length<o.value.maxCount)?(n.splice(i+1,0,e),x=i+1):n[s]=e,o.value.rangeEnabled&&!u.value.length&&t.count===void 0&&n.push(e);const v=V(n);f("beforeChange",v),q(n),l?(document.activeElement?.blur?.(),y.value?.focus(x),X(l,x,n)):(t.onAfterChange&&(f("afterChange",v),P(!1,"[vc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.")),f("changeComplete",v))}},ee=e=>{e.preventDefault();const{width:l,height:n,left:s,top:i,bottom:h,right:x}=R.value.getBoundingClientRect(),{clientX:v,clientY:g}=e;let c;switch(k.value){case"btt":c=(h-g)/n;break;case"ttb":c=(g-i)/n;break;case"rtl":c=(x-v)/l;break;default:c=(v-s)/l}const F=b.value+c*(S.value-b.value);Y(B.value.formatValue(F),e)},w=a.ref(null),ae=(e,l)=>{if(!t.disabled){const n=B.value.offsetValues(u.value,e,l);f("beforeChange",V(u.value)),q(n.values),w.value=n.value}};a.watchEffect(()=>{if(w.value!==null){const e=u.value.indexOf(w.value);e>=0&&y.value?.focus(e)}w.value=null});const le=a.computed(()=>o.value.rangeDraggableTrack&&E.value===null?(process.env.NODE_ENV!=="production"&&P(!1,"`draggableTrack` is not supported when `step` is `null`."),!1):o.value.rangeDraggableTrack),G=(e,l)=>{X(e,l),f("beforeChange",V(u.value))},te=a.computed(()=>_.value!==-1);a.watchEffect(()=>{if(!te.value){const e=u.value.lastIndexOf(W.value);y.value?.focus(e)}});const D=a.computed(()=>[...z.value].sort((e,l)=>e-l)),[ne,ue]=a.computed(()=>o.value.rangeEnabled?[D.value[0],D.value[D.value.length-1]]:[b.value,D.value[0]]).value;K({focus:()=>{y.value?.focus(0)},blur:()=>{const{activeElement:e}=document;R.value?.contains(e)&&e?.blur()}}),a.watchEffect(()=>{t.autoFocus&&y.value?.focus(0)});const re=a.computed(()=>({min:b,max:S,direction:k,disabled:t.disabled,keyboard:t.keyboard,step:E,included:t.included,includedStart:ne,includedEnd:ue,range:o.value.rangeEnabled,tabIndex:t.tabIndex,ariaLabelForHandle:t.ariaLabelForHandle,ariaLabelledByForHandle:t.ariaLabelledByForHandle,ariaRequired:t.ariaRequired,ariaValueTextFormatterForHandle:t.ariaValueTextFormatterForHandle,styles:t.styles||{},classNames:t.classNames||{}}));return ce.useProviderSliderContext(re.value),()=>{const{prefixCls:e="vc-slider",id:l,disabled:n=!1,vertical:s,startPoint:i,trackStyle:h,handleStyle:x,railStyle:v,dotStyle:g,activeDotStyle:c,dots:F,handleRender:H,activeHandleRender:j,track:I,classNames:M,styles:A}=t;return a.createVNode("div",{ref:R,class:J(e,[$.class],{[`${e}-disabled`]:n,[`${e}-vertical`]:s,[`${e}-horizontal`]:!s,[`${e}-with-marks`]:p.value.length}),style:$.style,onMousedown:ee,id:l},[a.createVNode("div",{class:J(`${e}-rail`,M?.rail),style:{...v,...A?.rail}},null),I&&a.createVNode(he.default,{prefixCls:e,trackStyle:h,values:u.value,startPoint:i,onStartMove:le.value?G:void 0},null),a.createVNode(be.default,{prefixCls:e,marks:p.value,dots:F,style:g,activeStyle:c},null),a.createVNode(ie.default,{ref:y,prefixCls:e,handleStyle:x,values:z.value,draggingIndex:_.value,draggingDelete:Z.value,onStartMove:G,onOffsetChange:ae,onFocus:O=>f("focus",O),onBlur:O=>f("blur",O),handleRender:H,activeHandleRender:j,onChangeComplete:L,onDelete:o.value.rangeEditable?U:()=>{}},null),a.createVNode(ge.default,{prefixCls:e,marks:p.value,onClick:Y},Q)])}}});exports.default=ye;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("vue"),se=require("@v-c/util/dist/isEqual"),P=require("@v-c/util/dist/warning"),J=require("classnames"),ce=require("./context.cjs"),ie=require("./Handles/index.cjs"),de=require("./hooks/useDrag.cjs"),fe=require("./hooks/useOffset.cjs"),ve=require("./hooks/useRange.cjs"),ge=require("./Marks/index.cjs"),be=require("./Steps/index.cjs"),he=require("./Tracks/index.cjs");function me(){return{prefixCls:{type:String,default:"vc-slider"},className:String,classNames:Object,styles:Object,id:String,disabled:{type:Boolean,default:!1},keyboard:{type:Boolean,default:!0},autoFocus:Boolean,min:{type:Number,default:0},max:{type:Number,default:100},step:{type:[Number,null],default:1},value:[Number,Array,null],defaultValue:[Number,Array],range:[Boolean,Object],count:Number,allowCross:{type:Boolean,default:!0},pushable:{type:[Boolean,Number],default:!1},reverse:Boolean,vertical:Boolean,included:{type:Boolean,default:!0},startPoint:Number,trackStyle:[Object,Array],handleStyle:[Object,Array],railStyle:Object,dotStyle:[Object,Function],activeDotStyle:[Object,Function],marks:Object,dots:Boolean,handleRender:Function,activeHandleRender:Function,track:{type:Boolean,default:!0},tabIndex:{type:[Number,Array],default:0},ariaLabelForHandle:[String,Array],ariaLabelledByForHandle:[String,Array],ariaRequired:Boolean,ariaValueTextFormatterForHandle:[Function,Array],onFocus:Function,onBlur:Function,onChange:Function,onBeforeChange:Function,onAfterChange:Function,onChangeComplete:Function}}const ye=a.defineComponent({name:"Slider",props:{...me()},emits:["focus","blur","change","beforeChange","afterChange","changeComplete"],slots:Object,setup(t,{attrs:$,emit:f,expose:K,slots:Q}){const y=a.ref(),R=a.ref(),k=a.shallowRef("ltr");a.watch([()=>t.reverse,()=>t.vertical],([e,l])=>{l?k.value=e?"ttb":"btt":k.value=e?"rtl":"ltr"},{immediate:!0});const b=a.shallowRef(0),S=a.shallowRef(100),E=a.shallowRef(1),p=a.ref([]),C=a.ref(t.defaultValue||t.value),u=a.ref([]),o=a.ref(),B=a.ref();a.watchEffect(()=>{const{range:e,min:l,max:n,step:s,pushable:i,marks:h,allowCross:x,value:v,count:g}=t,[c,F,H,j,I]=ve.default(e);o.value={rangeEnabled:c,rangeEditable:F,rangeDraggableTrack:H,minCount:j,maxCount:I},b.value=isFinite(l)?l:0,S.value=isFinite(n)?n:100,E.value=s!==null&&s<=0?1:s;const M=a.computed(()=>typeof i=="boolean"?i?E.value:!1:i>=0?i:!1);p.value=Object.keys(h||{}).map(m=>{const d=h?.[m],r={value:Number(m)};return d&&typeof d=="object"&&!a.isVNode(d)&&("label"in d||"style"in d)?(r.style=d.style,r.label=d.label):r.label=d,r}).filter(({label:m})=>m||typeof m=="number").sort((m,d)=>m.value-d.value);const[A,O]=fe.default(b.value,S.value,E.value,p.value,x,M.value);B.value={formatValue:A,offsetValues:O},v!==void 0&&(C.value=v);const oe=a.computed(()=>{const m=C.value===null||C.value===void 0?[]:Array.isArray(C.value)?C.value:[C.value],[d=b.value]=m;let r=C.value===null?[]:[d];if(c){if(r=[...m],g||C.value===void 0){const N=g>=0?g+1:2;for(r=r.slice(0,N);r.length<N;)r.push(r[r.length-1]??b.value)}r.sort((N,T)=>N-T)}return r.forEach((N,T)=>{r[T]=A(N)}),r});u.value=oe.value});const V=e=>o.value.rangeEnabled?e:e[0],q=e=>{const l=[...e].sort((n,s)=>n-s);se(l,u.value,!0)||f("change",V(l)),C.value=l},L=e=>{e&&y.value?.hideHelp();const l=V(u.value);t.onAfterChange&&(f("afterChange",l),P(!1,"[vc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.")),f("changeComplete",l)},U=e=>{if(t.disabled||!o.value.rangeEditable||u.value.length<=o.value.minCount)return;const l=[...u.value];l.splice(e,1),f("beforeChange",V(l)),q(l);const n=Math.max(0,e-1);y.value?.hideHelp(),y.value?.focus(n)},[_,W,Z,z,X]=de.default(R,k,u,b,S,B.value.formatValue,q,L,B.value.offsetValues,o.value.rangeEditable,o.value.minCount),Y=(e,l)=>{if(!t.disabled){const n=[...u.value];let s=0,i=0,h=S.value-b.value;u.value.forEach((g,c)=>{const F=Math.abs(e-g);F<=h&&(h=F,s=c),g<e&&(i=c)});let x=s;o.value.rangeEditable&&h!==0&&(!o.value.maxCount||u.value.length<o.value.maxCount)?(n.splice(i+1,0,e),x=i+1):n[s]=e,o.value.rangeEnabled&&!u.value.length&&t.count===void 0&&n.push(e);const v=V(n);f("beforeChange",v),q(n),l?(document.activeElement?.blur?.(),y.value?.focus(x),X(l,x,n)):(t.onAfterChange&&(f("afterChange",v),P(!1,"[vc-slider] `onAfterChange` is deprecated. Please use `onChangeComplete` instead.")),f("changeComplete",v))}},ee=e=>{e.preventDefault();const{width:l,height:n,left:s,top:i,bottom:h,right:x}=R.value.getBoundingClientRect(),{clientX:v,clientY:g}=e;let c;switch(k.value){case"btt":c=(h-g)/n;break;case"ttb":c=(g-i)/n;break;case"rtl":c=(x-v)/l;break;default:c=(v-s)/l}const F=b.value+c*(S.value-b.value);Y(B.value.formatValue(F),e)},w=a.ref(null),ae=(e,l)=>{if(!t.disabled){const n=B.value.offsetValues(u.value,e,l);f("beforeChange",V(u.value)),q(n.values),w.value=n.value}};a.watchEffect(()=>{if(w.value!==null){const e=u.value.indexOf(w.value);e>=0&&y.value?.focus(e)}w.value=null});const le=a.computed(()=>o.value.rangeDraggableTrack&&E.value===null?(process.env.NODE_ENV!=="production"&&P(!1,"`draggableTrack` is not supported when `step` is `null`."),!1):o.value.rangeDraggableTrack),G=(e,l)=>{X(e,l),f("beforeChange",V(u.value))},te=a.computed(()=>_.value!==-1);a.watchEffect(()=>{if(!te.value){const e=u.value.lastIndexOf(W.value);y.value?.focus(e)}});const D=a.computed(()=>[...z.value].sort((e,l)=>e-l)),[ne,ue]=a.computed(()=>o.value.rangeEnabled?[D.value[0],D.value[D.value.length-1]]:[b.value,D.value[0]]).value;K({focus:()=>{y.value?.focus(0)},blur:()=>{const{activeElement:e}=document;R.value?.contains(e)&&e?.blur()}}),a.watchEffect(()=>{t.autoFocus&&y.value?.focus(0)});const re=a.computed(()=>({min:b,max:S,direction:k,disabled:t.disabled,keyboard:t.keyboard,step:E,included:t.included,includedStart:ne,includedEnd:ue,range:o.value.rangeEnabled,tabIndex:t.tabIndex,ariaLabelForHandle:t.ariaLabelForHandle,ariaLabelledByForHandle:t.ariaLabelledByForHandle,ariaRequired:t.ariaRequired,ariaValueTextFormatterForHandle:t.ariaValueTextFormatterForHandle,styles:t.styles||{},classNames:t.classNames||{}}));return ce.useProviderSliderContext(re.value),()=>{const{prefixCls:e="vc-slider",id:l,disabled:n=!1,vertical:s,startPoint:i,trackStyle:h,handleStyle:x,railStyle:v,dotStyle:g,activeDotStyle:c,dots:F,handleRender:H,activeHandleRender:j,track:I,classNames:M,styles:A}=t;return a.createVNode("div",{ref:R,class:J(e,[$.class],{[`${e}-disabled`]:n,[`${e}-vertical`]:s,[`${e}-horizontal`]:!s,[`${e}-with-marks`]:p.value.length}),style:$.style,onMousedown:ee,id:l},[a.createVNode("div",{class:J(`${e}-rail`,M?.rail),style:{...v,...A?.rail}},null),I&&a.createVNode(he.default,{prefixCls:e,trackStyle:h,values:u.value,startPoint:i,onStartMove:le.value?G:void 0},null),a.createVNode(be.default,{prefixCls:e,marks:p.value,dots:F,style:g,activeStyle:c},null),a.createVNode(ie.default,{ref:y,prefixCls:e,handleStyle:x,values:z.value,draggingIndex:_.value,draggingDelete:Z.value,onStartMove:G,onOffsetChange:ae,onFocus:O=>f("focus",O),onBlur:O=>f("blur",O),handleRender:H,activeHandleRender:j,onChangeComplete:L,onDelete:o.value.rangeEditable?U:()=>{}},null),a.createVNode(ge.default,{prefixCls:e,marks:p.value,onClick:Y},Q)])}}});exports.default=ye;
package/dist/Slider.d.ts CHANGED
@@ -9,6 +9,14 @@ export interface RangeConfig {
9
9
  /** Set max count when `editable` */
10
10
  maxCount?: number;
11
11
  }
12
+ export interface RenderProps {
13
+ index: number;
14
+ prefixCls: string;
15
+ value: number;
16
+ dragging: boolean;
17
+ draggingDelete: boolean;
18
+ node: any;
19
+ }
12
20
  type ValueType = number | number[];
13
21
  declare function sliderProps(): {
14
22
  prefixCls: {
@@ -37,10 +45,10 @@ declare function sliderProps(): {
37
45
  default: number;
38
46
  };
39
47
  step: {
40
- type: NumberConstructor;
48
+ type: (NumberConstructor | null)[];
41
49
  default: number;
42
50
  };
43
- value: PropType<ValueType>;
51
+ value: PropType<ValueType | null>;
44
52
  defaultValue: PropType<ValueType>;
45
53
  range: PropType<boolean | RangeConfig>;
46
54
  count: NumberConstructor;
@@ -66,8 +74,8 @@ declare function sliderProps(): {
66
74
  activeDotStyle: PropType<Record<string, any> | ((dotValue: number) => Record<string, any>)>;
67
75
  marks: PropType<Record<string | number, any | MarkObj>>;
68
76
  dots: BooleanConstructor;
69
- handleRender: FunctionConstructor;
70
- activeHandleRender: FunctionConstructor;
77
+ handleRender: PropType<(props: RenderProps) => any>;
78
+ activeHandleRender: PropType<(props: RenderProps) => any>;
71
79
  track: {
72
80
  type: BooleanConstructor;
73
81
  default: boolean;
@@ -121,10 +129,10 @@ declare const _default: import('vue').DefineComponent<ExtractPropTypes<{
121
129
  default: number;
122
130
  };
123
131
  step: {
124
- type: NumberConstructor;
132
+ type: (NumberConstructor | null)[];
125
133
  default: number;
126
134
  };
127
- value: PropType<ValueType>;
135
+ value: PropType<ValueType | null>;
128
136
  defaultValue: PropType<ValueType>;
129
137
  range: PropType<boolean | RangeConfig>;
130
138
  count: NumberConstructor;
@@ -150,8 +158,8 @@ declare const _default: import('vue').DefineComponent<ExtractPropTypes<{
150
158
  activeDotStyle: PropType<Record<string, any> | ((dotValue: number) => Record<string, any>)>;
151
159
  marks: PropType<Record<string | number, any | MarkObj>>;
152
160
  dots: BooleanConstructor;
153
- handleRender: FunctionConstructor;
154
- activeHandleRender: FunctionConstructor;
161
+ handleRender: PropType<(props: RenderProps) => any>;
162
+ activeHandleRender: PropType<(props: RenderProps) => any>;
155
163
  track: {
156
164
  type: BooleanConstructor;
157
165
  default: boolean;
@@ -199,10 +207,10 @@ declare const _default: import('vue').DefineComponent<ExtractPropTypes<{
199
207
  default: number;
200
208
  };
201
209
  step: {
202
- type: NumberConstructor;
210
+ type: (NumberConstructor | null)[];
203
211
  default: number;
204
212
  };
205
- value: PropType<ValueType>;
213
+ value: PropType<ValueType | null>;
206
214
  defaultValue: PropType<ValueType>;
207
215
  range: PropType<boolean | RangeConfig>;
208
216
  count: NumberConstructor;
@@ -228,8 +236,8 @@ declare const _default: import('vue').DefineComponent<ExtractPropTypes<{
228
236
  activeDotStyle: PropType<Record<string, any> | ((dotValue: number) => Record<string, any>)>;
229
237
  marks: PropType<Record<string | number, any | MarkObj>>;
230
238
  dots: BooleanConstructor;
231
- handleRender: FunctionConstructor;
232
- activeHandleRender: FunctionConstructor;
239
+ handleRender: PropType<(props: RenderProps) => any>;
240
+ activeHandleRender: PropType<(props: RenderProps) => any>;
233
241
  track: {
234
242
  type: BooleanConstructor;
235
243
  default: boolean;
@@ -270,11 +278,14 @@ declare const _default: import('vue').DefineComponent<ExtractPropTypes<{
270
278
  vertical: boolean;
271
279
  included: boolean;
272
280
  autoFocus: boolean;
273
- step: number;
281
+ step: number | null;
274
282
  allowCross: boolean;
275
283
  pushable: number | boolean;
276
284
  dots: boolean;
277
285
  }, SlotsType<{
278
- mark: ({ point: number, label: unknown }: any) => any;
286
+ mark: ({ point, label }: {
287
+ point: number;
288
+ label: unknown;
289
+ }) => any;
279
290
  }>, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
280
291
  export default _default;
package/dist/Slider.js CHANGED
@@ -38,10 +38,10 @@ function pe() {
38
38
  default: 100
39
39
  },
40
40
  step: {
41
- type: Number,
41
+ type: [Number, null],
42
42
  default: 1
43
43
  },
44
- value: [Number, Array],
44
+ value: [Number, Array, null],
45
45
  defaultValue: [Number, Array],
46
46
  range: [Boolean, Object],
47
47
  count: Number,
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("vue"),h=require("classnames"),M=require("../context.cjs"),d=require("../util.cjs"),q=c.defineComponent({name:"Track",props:{prefixCls:{type:String,required:!0},replaceCls:{type:String},start:{type:Number,required:!0},end:{type:Number,required:!0},index:{type:Number,default:()=>null},onStartMove:{type:Function}},setup(a,{attrs:f}){const{direction:v,min:s,max:o,disabled:b,range:p,classNames:g}=M.useInjectSlider(),S=r=>{!b&&a.onStartMove&&a.onStartMove(r,-1)},e={};return()=>{const{prefixCls:r,index:l,onStartMove:u,replaceCls:$,start:m,end:y}=a,t=d.getOffset(m,s.value,o.value),n=d.getOffset(y,s.value,o.value),i=`${r}-track`,k=$||h(i,{[`${i}-${l+1}`]:l!==null&&p,[`${r}-track-draggable`]:u},g.track);switch(v.value){case"rtl":e.right=`${t*100}%`,e.width=`${n*100-t*100}%`;break;case"btt":e.bottom=`${t*100}%`,e.height=`${n*100-t*100}%`;break;case"ttb":e.top=`${t*100}%`,e.height=`${n*100-t*100}%`;break;default:e.left=`${t*100}%`,e.width=`${n*100-t*100}%`}return c.createVNode("div",{class:k,style:{...e,...f.style},onMousedown:u?S:void 0},null)}}});exports.default=q;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("vue"),h=require("classnames"),M=require("../context.cjs"),d=require("../util.cjs"),q=c.defineComponent({name:"Track",props:{prefixCls:{type:String,required:!0},replaceCls:{type:String},start:{type:Number,required:!0},end:{type:Number,required:!0},index:{type:Number,default:()=>null},onStartMove:{type:Function}},setup(a,{attrs:f}){const{direction:v,min:s,max:o,disabled:b,range:p,classNames:g}=M.useInjectSlider(),S=r=>{!b&&a.onStartMove&&a.onStartMove(r,-1)};return()=>{const{prefixCls:r,index:l,onStartMove:u,replaceCls:$,start:m,end:y}=a,t=d.getOffset(m,s.value,o.value),n=d.getOffset(y,s.value,o.value),i=`${r}-track`,k=$||h(i,{[`${i}-${l+1}`]:l!==null&&p,[`${r}-track-draggable`]:u},g.track),e={};switch(v.value){case"rtl":e.right=`${t*100}%`,e.width=`${n*100-t*100}%`;break;case"btt":e.bottom=`${t*100}%`,e.height=`${n*100-t*100}%`;break;case"ttb":e.top=`${t*100}%`,e.height=`${n*100-t*100}%`;break;default:e.left=`${t*100}%`,e.width=`${n*100-t*100}%`}return c.createVNode("div",{class:k,style:{...e,...f.style},onMousedown:u?S:void 0},null)}}});exports.default=q;
@@ -40,7 +40,7 @@ const I = /* @__PURE__ */ y({
40
40
  classNames: $
41
41
  } = C(), b = (r) => {
42
42
  !m && n.onStartMove && n.onStartMove(r, -1);
43
- }, e = {};
43
+ };
44
44
  return () => {
45
45
  const {
46
46
  prefixCls: r,
@@ -52,7 +52,7 @@ const I = /* @__PURE__ */ y({
52
52
  } = n, t = u(S, o.value, s.value), a = u(g, o.value, s.value), c = `${r}-track`, k = v || x(c, {
53
53
  [`${c}-${l + 1}`]: l !== null && p,
54
54
  [`${r}-track-draggable`]: i
55
- }, $.track);
55
+ }, $.track), e = {};
56
56
  switch (f.value) {
57
57
  case "rtl":
58
58
  e.right = `${t * 100}%`, e.width = `${a * 100 - t * 100}%`;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const m=require("vue");function P(c,a,f,D,O,g){const w=m.computed(()=>n=>Math.max(c,Math.min(a,n))).value,V=m.computed(()=>n=>{if(f!==null){const l=c+Math.round((w(n)-c)/f)*f,u=r=>(String(r).split(".")[1]||"").length,o=Math.max(u(f),u(a),u(c)),t=Number(l.toFixed(o));return c<=t&&t<=a?t:null}return null}).value,y=m.computed(()=>n=>{const l=w(n),u=D.map(r=>r.value);f!==null&&u.push(V(n)),u.push(c,a);let o=u[0],t=a-c;return u.forEach(r=>{const h=Math.abs(l-r);h<=t&&(o=r,t=h)}),o}).value,b=(n,l,u,o="unit")=>{if(typeof l=="number"){let t;const r=n[u],h=r+l;let e=[];D.forEach(s=>{e.push(s.value)}),e.push(c,a),e.push(V(r));const i=l>0?1:-1;o==="unit"?e.push(V(r+i*f)):e.push(V(h)),e=e.filter(s=>s!==null).filter(s=>l<0?s<=r:s>=r),o==="unit"&&(e=e.filter(s=>s!==r));const S=o==="unit"?r:h;t=e[0];let E=Math.abs(t-S);if(e.forEach(s=>{const N=Math.abs(s-S);N<E&&(t=s,E=N)}),t===void 0)return l<0?c:a;if(o==="dist")return t;if(Math.abs(l)>1){const s=[...n];return s[u]=t,b(s,l-i,u,o)}return t}else{if(l==="min")return c;if(l==="max")return a}},M=(n,l,u,o="unit")=>{const t=n[u],r=b(n,l,u,o);return{value:r,changed:r!==t}},p=n=>g===null&&n===0||typeof g=="number"&&n<g;return[y,(n,l,u,o="unit")=>{const t=n.map(y),r=t[u],h=b(t,l,u,o);if(t[u]=h,O){if(typeof g=="number"||g===null){for(let e=u+1;e<t.length;e+=1){let i=!0;for(;p(t[e]-t[e-1])&&i;)({value:t[e],changed:i}=M(t,1,e))}for(let e=u;e>0;e-=1){let i=!0;for(;p(t[e]-t[e-1])&&i;)({value:t[e-1],changed:i}=M(t,-1,e-1))}for(let e=t.length-1;e>0;e-=1){let i=!0;for(;p(t[e]-t[e-1])&&i;)({value:t[e-1],changed:i}=M(t,-1,e-1))}for(let e=0;e<t.length-1;e+=1){let i=!0;for(;p(t[e+1]-t[e])&&i;)({value:t[e+1],changed:i}=M(t,1,e+1))}}}else{const e=g||0;u>0&&t[u-1]!==r&&(t[u]=Math.max(t[u],t[u-1]+e)),u<t.length-1&&t[u+1]!==r&&(t[u]=Math.min(t[u],t[u+1]-e))}return{value:t[u],values:t}}]}exports.default=P;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const P=require("vue");function _(c,a,h,b,O,V){const D=P.computed(()=>r=>Math.max(c,Math.min(a,r))).value,g=r=>{if(h!==null){const i=c+Math.round((D(r)-c)/h)*h,l=u=>(String(u).split(".")[1]||"").length,s=Math.max(l(h),l(a),l(c)),t=Number(i.toFixed(s));return c<=t&&t<=a?t:null}return null},w=r=>{const i=D(r),l=b.map(u=>u&&u.value);if(h!==null){const u=g(r);u!==null&&l.push(u)}l.push(c,a);let s=l[0],t=a-c;return l.forEach(u=>{const f=Math.abs(i-u);f<=t&&(s=u,t=f)}),s},S=(r,i,l,s="unit")=>{if(typeof i=="number"){let t;const u=r[l],f=u+i;let e=[];b.forEach(n=>{e.push(n.value)}),e.push(c,a);const o=g(u);o!==null&&e.push(o);const y=i>0?1:-1;if(s==="unit"){const n=g(u+y*h);n!==null&&e.push(n)}else{const n=g(f);n!==null&&e.push(n)}e=e.filter(n=>n!==null).filter(n=>i<0?n<=u:n>=u),s==="unit"&&(e=e.filter(n=>n!==u));const E=s==="unit"?u:f;t=e[0];let N=Math.abs(t-E);if(e.forEach(n=>{const m=Math.abs(n-E);m<N&&(t=n,N=m)}),t===void 0)return i<0?c:a;if(s==="dist")return t;if(Math.abs(i)>1){const n=[...r];return n[l]=t,S(n,i-y,l,s)}return t}else{if(i==="min")return c;if(i==="max")return a}},p=(r,i,l,s="unit")=>{const t=r[l],u=S(r,i,l,s);return{value:u,changed:u!==t}},M=r=>V===null&&r===0||typeof V=="number"&&r<V;return[w,(r,i,l,s="unit")=>{const t=r.map(w),u=t[l],f=S(t,i,l,s);if(t[l]=f,O){if(typeof V=="number"||V===null){for(let e=l+1;e<t.length;e+=1){let o=!0;for(;M(t[e]-t[e-1])&&o;)({value:t[e],changed:o}=p(t,1,e))}for(let e=l;e>0;e-=1){let o=!0;for(;M(t[e]-t[e-1])&&o;)({value:t[e-1],changed:o}=p(t,-1,e-1))}for(let e=t.length-1;e>0;e-=1){let o=!0;for(;M(t[e]-t[e-1])&&o;)({value:t[e-1],changed:o}=p(t,-1,e-1))}for(let e=0;e<t.length-1;e+=1){let o=!0;for(;M(t[e+1]-t[e])&&o;)({value:t[e+1],changed:o}=p(t,1,e+1))}}}else{const e=V||0;l>0&&t[l-1]!==u&&(t[l]=Math.max(t[l],t[l-1]+e)),l<t.length-1&&t[l+1]!==u&&(t[l]=Math.min(t[l],t[l+1]-e))}return{value:t[l],values:t}}]}exports.default=_;
@@ -6,5 +6,5 @@ export type OffsetValues = (values: number[], offset: number | 'min' | 'max', va
6
6
  value: number;
7
7
  values: number[];
8
8
  };
9
- export default function useOffset(min: number, max: number, step: number, markList: InternalMarkObj[], allowCross: boolean, pushable: false | number): [FormatValue, OffsetValues];
9
+ export default function useOffset(min: number, max: number, step: number | null, markList: InternalMarkObj[], allowCross: boolean, pushable: false | number | null): [FormatValue, OffsetValues];
10
10
  export {};
@@ -1,98 +1,111 @@
1
- import { computed as m } from "vue";
2
- function P(c, a, f, w, C, V) {
3
- const b = m(() => (n) => Math.max(c, Math.min(a, n))).value, g = m(() => (n) => {
4
- if (f !== null) {
5
- const l = c + Math.round((b(n) - c) / f) * f, r = (u) => (String(u).split(".")[1] || "").length, i = Math.max(r(f), r(a), r(c)), t = Number(l.toFixed(i));
1
+ import { computed as F } from "vue";
2
+ function R(c, a, h, S, C, V) {
3
+ const w = F(() => (r) => Math.max(c, Math.min(a, r))).value, g = (r) => {
4
+ if (h !== null) {
5
+ const i = c + Math.round((w(r) - c) / h) * h, l = (n) => (String(n).split(".")[1] || "").length, o = Math.max(l(h), l(a), l(c)), t = Number(i.toFixed(o));
6
6
  return c <= t && t <= a ? t : null;
7
7
  }
8
8
  return null;
9
- }).value, y = m(() => (n) => {
10
- const l = b(n), r = w.map((u) => u.value);
11
- f !== null && r.push(g(n)), r.push(c, a);
12
- let i = r[0], t = a - c;
13
- return r.forEach((u) => {
14
- const h = Math.abs(l - u);
15
- h <= t && (i = u, t = h);
16
- }), i;
17
- }).value, D = (n, l, r, i = "unit") => {
18
- if (typeof l == "number") {
9
+ }, b = (r) => {
10
+ const i = w(r), l = S.map((n) => n && n.value);
11
+ if (h !== null) {
12
+ const n = g(r);
13
+ n !== null && l.push(n);
14
+ }
15
+ l.push(c, a);
16
+ let o = l[0], t = a - c;
17
+ return l.forEach((n) => {
18
+ const f = Math.abs(i - n);
19
+ f <= t && (o = n, t = f);
20
+ }), o;
21
+ }, D = (r, i, l, o = "unit") => {
22
+ if (typeof i == "number") {
19
23
  let t;
20
- const u = n[r], h = u + l;
24
+ const n = r[l], f = n + i;
21
25
  let e = [];
22
- w.forEach((s) => {
23
- e.push(s.value);
24
- }), e.push(c, a), e.push(g(u));
25
- const o = l > 0 ? 1 : -1;
26
- i === "unit" ? e.push(g(u + o * f)) : e.push(g(h)), e = e.filter((s) => s !== null).filter((s) => l < 0 ? s <= u : s >= u), i === "unit" && (e = e.filter((s) => s !== u));
27
- const E = i === "unit" ? u : h;
26
+ S.forEach((u) => {
27
+ e.push(u.value);
28
+ }), e.push(c, a);
29
+ const s = g(n);
30
+ s !== null && e.push(s);
31
+ const m = i > 0 ? 1 : -1;
32
+ if (o === "unit") {
33
+ const u = g(n + m * h);
34
+ u !== null && e.push(u);
35
+ } else {
36
+ const u = g(f);
37
+ u !== null && e.push(u);
38
+ }
39
+ e = e.filter((u) => u !== null).filter((u) => i < 0 ? u <= n : u >= n), o === "unit" && (e = e.filter((u) => u !== n));
40
+ const y = o === "unit" ? n : f;
28
41
  t = e[0];
29
- let N = Math.abs(t - E);
30
- if (e.forEach((s) => {
31
- const S = Math.abs(s - E);
32
- S < N && (t = s, N = S);
42
+ let E = Math.abs(t - y);
43
+ if (e.forEach((u) => {
44
+ const N = Math.abs(u - y);
45
+ N < E && (t = u, E = N);
33
46
  }), t === void 0)
34
- return l < 0 ? c : a;
35
- if (i === "dist")
47
+ return i < 0 ? c : a;
48
+ if (o === "dist")
36
49
  return t;
37
- if (Math.abs(l) > 1) {
38
- const s = [...n];
39
- return s[r] = t, D(s, l - o, r, i);
50
+ if (Math.abs(i) > 1) {
51
+ const u = [...r];
52
+ return u[l] = t, D(u, i - m, l, o);
40
53
  }
41
54
  return t;
42
55
  } else {
43
- if (l === "min")
56
+ if (i === "min")
44
57
  return c;
45
- if (l === "max")
58
+ if (i === "max")
46
59
  return a;
47
60
  }
48
- }, p = (n, l, r, i = "unit") => {
49
- const t = n[r], u = D(n, l, r, i);
61
+ }, p = (r, i, l, o = "unit") => {
62
+ const t = r[l], n = D(r, i, l, o);
50
63
  return {
51
- value: u,
52
- changed: u !== t
64
+ value: n,
65
+ changed: n !== t
53
66
  };
54
- }, M = (n) => V === null && n === 0 || typeof V == "number" && n < V;
55
- return [y, (n, l, r, i = "unit") => {
56
- const t = n.map(y), u = t[r], h = D(t, l, r, i);
57
- if (t[r] = h, C) {
67
+ }, M = (r) => V === null && r === 0 || typeof V == "number" && r < V;
68
+ return [b, (r, i, l, o = "unit") => {
69
+ const t = r.map(b), n = t[l], f = D(t, i, l, o);
70
+ if (t[l] = f, C) {
58
71
  if (typeof V == "number" || V === null) {
59
- for (let e = r + 1; e < t.length; e += 1) {
60
- let o = !0;
61
- for (; M(t[e] - t[e - 1]) && o; )
62
- ({ value: t[e], changed: o } = p(t, 1, e));
72
+ for (let e = l + 1; e < t.length; e += 1) {
73
+ let s = !0;
74
+ for (; M(t[e] - t[e - 1]) && s; )
75
+ ({ value: t[e], changed: s } = p(t, 1, e));
63
76
  }
64
- for (let e = r; e > 0; e -= 1) {
65
- let o = !0;
66
- for (; M(t[e] - t[e - 1]) && o; )
67
- ({ value: t[e - 1], changed: o } = p(t, -1, e - 1));
77
+ for (let e = l; e > 0; e -= 1) {
78
+ let s = !0;
79
+ for (; M(t[e] - t[e - 1]) && s; )
80
+ ({ value: t[e - 1], changed: s } = p(t, -1, e - 1));
68
81
  }
69
82
  for (let e = t.length - 1; e > 0; e -= 1) {
70
- let o = !0;
71
- for (; M(t[e] - t[e - 1]) && o; )
72
- ({ value: t[e - 1], changed: o } = p(t, -1, e - 1));
83
+ let s = !0;
84
+ for (; M(t[e] - t[e - 1]) && s; )
85
+ ({ value: t[e - 1], changed: s } = p(t, -1, e - 1));
73
86
  }
74
87
  for (let e = 0; e < t.length - 1; e += 1) {
75
- let o = !0;
76
- for (; M(t[e + 1] - t[e]) && o; )
77
- ({ value: t[e + 1], changed: o } = p(t, 1, e + 1));
88
+ let s = !0;
89
+ for (; M(t[e + 1] - t[e]) && s; )
90
+ ({ value: t[e + 1], changed: s } = p(t, 1, e + 1));
78
91
  }
79
92
  }
80
93
  } else {
81
94
  const e = V || 0;
82
- r > 0 && t[r - 1] !== u && (t[r] = Math.max(
83
- t[r],
84
- t[r - 1] + e
85
- )), r < t.length - 1 && t[r + 1] !== u && (t[r] = Math.min(
86
- t[r],
87
- t[r + 1] - e
95
+ l > 0 && t[l - 1] !== n && (t[l] = Math.max(
96
+ t[l],
97
+ t[l - 1] + e
98
+ )), l < t.length - 1 && t[l + 1] !== n && (t[l] = Math.min(
99
+ t[l],
100
+ t[l + 1] - e
88
101
  ));
89
102
  }
90
103
  return {
91
- value: t[r],
104
+ value: t[l],
92
105
  values: t
93
106
  };
94
107
  }];
95
108
  }
96
109
  export {
97
- P as default
110
+ R as default
98
111
  };
package/docs/debug.vue CHANGED
@@ -10,7 +10,6 @@ const data = ref()
10
10
 
11
11
  function handleSliderChange(nextValues) {
12
12
  console.log('Change:', nextValues)
13
- data.value = nextValues
14
13
  }
15
14
 
16
15
  function handleSliderChangeComplete(v) {
@@ -41,8 +40,8 @@ function handleSliderChangeComplete(v) {
41
40
 
42
41
  <div style="height: 300px; width: 600px;">
43
42
  <Slider
43
+ v-model:value="data"
44
44
  :disabled="disabled"
45
- :value="data"
46
45
  :step="0.01"
47
46
  :default-value="0.81"
48
47
  :min="0"
package/docs/editable.vue CHANGED
@@ -20,12 +20,11 @@ function onDragChange(info: Parameters<UnstableContextProps['onDragChange']>[0])
20
20
  console.log('Move:', rawValues)
21
21
  }
22
22
 
23
- function handleChange(nextValue: number[]) {
23
+ function handleChange(nextValue: number | number[]) {
24
24
  console.error('Change:', nextValue)
25
- value.value = nextValue
26
25
  }
27
26
 
28
- function handleChangeComplete(nextValue: number[]) {
27
+ function handleChangeComplete(nextValue: number | number[]) {
29
28
  console.log('Complete', nextValue)
30
29
  }
31
30
  </script>
@@ -34,6 +33,7 @@ function handleChangeComplete(nextValue: number[]) {
34
33
  <div>
35
34
  <div :style="style">
36
35
  <Slider
36
+ v-model:value="value"
37
37
  :range="{
38
38
  editable: true,
39
39
  minCount: 1,
@@ -41,7 +41,6 @@ function handleChangeComplete(nextValue: number[]) {
41
41
  }"
42
42
  :min="0"
43
43
  :max="100"
44
- :value="value"
45
44
  :styles="{
46
45
  rail: {
47
46
  background: 'linear-gradient(to right, blue, red)',