770 lines
22 KiB
JavaScript
770 lines
22 KiB
JavaScript
import {
|
|
ripple_default
|
|
} from "./chunk-NMCVREUK.js";
|
|
import {
|
|
makeElevationProps,
|
|
useElevation
|
|
} from "./chunk-QXA6VMYU.js";
|
|
import {
|
|
VInput,
|
|
makeFocusProps,
|
|
makeVInputProps,
|
|
useFocus
|
|
} from "./chunk-ZCXGZYP7.js";
|
|
import {
|
|
makeRoundedProps,
|
|
useRounded
|
|
} from "./chunk-24LK52JF.js";
|
|
import {
|
|
VScaleTransition
|
|
} from "./chunk-JVZUVJAC.js";
|
|
import {
|
|
useBackgroundColor,
|
|
useTextColor
|
|
} from "./chunk-ZZ55KHRR.js";
|
|
import {
|
|
useRtl
|
|
} from "./chunk-IR5437QA.js";
|
|
import {
|
|
useProxiedModel
|
|
} from "./chunk-PVQHDZXM.js";
|
|
import {
|
|
VLabel
|
|
} from "./chunk-J5HFPFMJ.js";
|
|
import {
|
|
clamp,
|
|
convertToUnit,
|
|
createRange,
|
|
genericComponent,
|
|
getDecimals,
|
|
keyValues,
|
|
makeComponentProps,
|
|
propsFactory,
|
|
useRender
|
|
} from "./chunk-I4KGD5X4.js";
|
|
import {
|
|
Fragment,
|
|
computed,
|
|
createVNode,
|
|
inject,
|
|
mergeProps,
|
|
provide,
|
|
ref,
|
|
resolveDirective,
|
|
shallowRef,
|
|
toRef,
|
|
vShow,
|
|
withDirectives
|
|
} from "./chunk-PD2AWGJV.js";
|
|
|
|
// node_modules/vuetify/lib/components/VSlider/VSlider.mjs
|
|
import "C:/Users/Jeremy/Documents/Dev/Projects.cloudsucks.net/Vulture/VApp/node_modules/vuetify/lib/components/VSlider/VSlider.css";
|
|
|
|
// node_modules/vuetify/lib/components/VSlider/VSliderThumb.mjs
|
|
import "C:/Users/Jeremy/Documents/Dev/Projects.cloudsucks.net/Vulture/VApp/node_modules/vuetify/lib/components/VSlider/VSliderThumb.css";
|
|
|
|
// node_modules/vuetify/lib/components/VSlider/slider.mjs
|
|
var VSliderSymbol = Symbol.for("vuetify:v-slider");
|
|
function getOffset(e, el, direction) {
|
|
const vertical = direction === "vertical";
|
|
const rect = el.getBoundingClientRect();
|
|
const touch = "touches" in e ? e.touches[0] : e;
|
|
return vertical ? touch.clientY - (rect.top + rect.height / 2) : touch.clientX - (rect.left + rect.width / 2);
|
|
}
|
|
function getPosition(e, position) {
|
|
if ("touches" in e && e.touches.length) return e.touches[0][position];
|
|
else if ("changedTouches" in e && e.changedTouches.length) return e.changedTouches[0][position];
|
|
else return e[position];
|
|
}
|
|
var makeSliderProps = propsFactory({
|
|
disabled: {
|
|
type: Boolean,
|
|
default: null
|
|
},
|
|
error: Boolean,
|
|
readonly: {
|
|
type: Boolean,
|
|
default: null
|
|
},
|
|
max: {
|
|
type: [Number, String],
|
|
default: 100
|
|
},
|
|
min: {
|
|
type: [Number, String],
|
|
default: 0
|
|
},
|
|
step: {
|
|
type: [Number, String],
|
|
default: 0
|
|
},
|
|
thumbColor: String,
|
|
thumbLabel: {
|
|
type: [Boolean, String],
|
|
default: void 0,
|
|
validator: (v) => typeof v === "boolean" || v === "always"
|
|
},
|
|
thumbSize: {
|
|
type: [Number, String],
|
|
default: 20
|
|
},
|
|
showTicks: {
|
|
type: [Boolean, String],
|
|
default: false,
|
|
validator: (v) => typeof v === "boolean" || v === "always"
|
|
},
|
|
ticks: {
|
|
type: [Array, Object]
|
|
},
|
|
tickSize: {
|
|
type: [Number, String],
|
|
default: 2
|
|
},
|
|
color: String,
|
|
trackColor: String,
|
|
trackFillColor: String,
|
|
trackSize: {
|
|
type: [Number, String],
|
|
default: 4
|
|
},
|
|
direction: {
|
|
type: String,
|
|
default: "horizontal",
|
|
validator: (v) => ["vertical", "horizontal"].includes(v)
|
|
},
|
|
reverse: Boolean,
|
|
...makeRoundedProps(),
|
|
...makeElevationProps({
|
|
elevation: 2
|
|
}),
|
|
ripple: {
|
|
type: Boolean,
|
|
default: true
|
|
}
|
|
}, "Slider");
|
|
var useSteps = (props) => {
|
|
const min = computed(() => parseFloat(props.min));
|
|
const max = computed(() => parseFloat(props.max));
|
|
const step = computed(() => +props.step > 0 ? parseFloat(props.step) : 0);
|
|
const decimals = computed(() => Math.max(getDecimals(step.value), getDecimals(min.value)));
|
|
function roundValue(value) {
|
|
value = parseFloat(value);
|
|
if (step.value <= 0) return value;
|
|
const clamped = clamp(value, min.value, max.value);
|
|
const offset = min.value % step.value;
|
|
const newValue = Math.round((clamped - offset) / step.value) * step.value + offset;
|
|
return parseFloat(Math.min(newValue, max.value).toFixed(decimals.value));
|
|
}
|
|
return {
|
|
min,
|
|
max,
|
|
step,
|
|
decimals,
|
|
roundValue
|
|
};
|
|
};
|
|
var useSlider = (_ref) => {
|
|
let {
|
|
props,
|
|
steps,
|
|
onSliderStart,
|
|
onSliderMove,
|
|
onSliderEnd,
|
|
getActiveThumb
|
|
} = _ref;
|
|
const {
|
|
isRtl
|
|
} = useRtl();
|
|
const isReversed = toRef(props, "reverse");
|
|
const vertical = computed(() => props.direction === "vertical");
|
|
const indexFromEnd = computed(() => vertical.value !== isReversed.value);
|
|
const {
|
|
min,
|
|
max,
|
|
step,
|
|
decimals,
|
|
roundValue
|
|
} = steps;
|
|
const thumbSize = computed(() => parseInt(props.thumbSize, 10));
|
|
const tickSize = computed(() => parseInt(props.tickSize, 10));
|
|
const trackSize = computed(() => parseInt(props.trackSize, 10));
|
|
const numTicks = computed(() => (max.value - min.value) / step.value);
|
|
const disabled = toRef(props, "disabled");
|
|
const thumbColor = computed(() => props.error || props.disabled ? void 0 : props.thumbColor ?? props.color);
|
|
const trackColor = computed(() => props.error || props.disabled ? void 0 : props.trackColor ?? props.color);
|
|
const trackFillColor = computed(() => props.error || props.disabled ? void 0 : props.trackFillColor ?? props.color);
|
|
const mousePressed = shallowRef(false);
|
|
const startOffset = shallowRef(0);
|
|
const trackContainerRef = ref();
|
|
const activeThumbRef = ref();
|
|
function parseMouseMove(e) {
|
|
var _a;
|
|
const vertical2 = props.direction === "vertical";
|
|
const start = vertical2 ? "top" : "left";
|
|
const length = vertical2 ? "height" : "width";
|
|
const position2 = vertical2 ? "clientY" : "clientX";
|
|
const {
|
|
[start]: trackStart,
|
|
[length]: trackLength
|
|
} = (_a = trackContainerRef.value) == null ? void 0 : _a.$el.getBoundingClientRect();
|
|
const clickOffset = getPosition(e, position2);
|
|
let clickPos = Math.min(Math.max((clickOffset - trackStart - startOffset.value) / trackLength, 0), 1) || 0;
|
|
if (vertical2 ? indexFromEnd.value : indexFromEnd.value !== isRtl.value) clickPos = 1 - clickPos;
|
|
return roundValue(min.value + clickPos * (max.value - min.value));
|
|
}
|
|
const handleStop = (e) => {
|
|
onSliderEnd({
|
|
value: parseMouseMove(e)
|
|
});
|
|
mousePressed.value = false;
|
|
startOffset.value = 0;
|
|
};
|
|
const handleStart = (e) => {
|
|
activeThumbRef.value = getActiveThumb(e);
|
|
if (!activeThumbRef.value) return;
|
|
activeThumbRef.value.focus();
|
|
mousePressed.value = true;
|
|
if (activeThumbRef.value.contains(e.target)) {
|
|
startOffset.value = getOffset(e, activeThumbRef.value, props.direction);
|
|
} else {
|
|
startOffset.value = 0;
|
|
onSliderMove({
|
|
value: parseMouseMove(e)
|
|
});
|
|
}
|
|
onSliderStart({
|
|
value: parseMouseMove(e)
|
|
});
|
|
};
|
|
const moveListenerOptions = {
|
|
passive: true,
|
|
capture: true
|
|
};
|
|
function onMouseMove(e) {
|
|
onSliderMove({
|
|
value: parseMouseMove(e)
|
|
});
|
|
}
|
|
function onSliderMouseUp(e) {
|
|
e.stopPropagation();
|
|
e.preventDefault();
|
|
handleStop(e);
|
|
window.removeEventListener("mousemove", onMouseMove, moveListenerOptions);
|
|
window.removeEventListener("mouseup", onSliderMouseUp);
|
|
}
|
|
function onSliderTouchend(e) {
|
|
var _a;
|
|
handleStop(e);
|
|
window.removeEventListener("touchmove", onMouseMove, moveListenerOptions);
|
|
(_a = e.target) == null ? void 0 : _a.removeEventListener("touchend", onSliderTouchend);
|
|
}
|
|
function onSliderTouchstart(e) {
|
|
var _a;
|
|
handleStart(e);
|
|
window.addEventListener("touchmove", onMouseMove, moveListenerOptions);
|
|
(_a = e.target) == null ? void 0 : _a.addEventListener("touchend", onSliderTouchend, {
|
|
passive: false
|
|
});
|
|
}
|
|
function onSliderMousedown(e) {
|
|
e.preventDefault();
|
|
handleStart(e);
|
|
window.addEventListener("mousemove", onMouseMove, moveListenerOptions);
|
|
window.addEventListener("mouseup", onSliderMouseUp, {
|
|
passive: false
|
|
});
|
|
}
|
|
const position = (val) => {
|
|
const percentage = (val - min.value) / (max.value - min.value) * 100;
|
|
return clamp(isNaN(percentage) ? 0 : percentage, 0, 100);
|
|
};
|
|
const showTicks = toRef(props, "showTicks");
|
|
const parsedTicks = computed(() => {
|
|
if (!showTicks.value) return [];
|
|
if (!props.ticks) {
|
|
return numTicks.value !== Infinity ? createRange(numTicks.value + 1).map((t) => {
|
|
const value = min.value + t * step.value;
|
|
return {
|
|
value,
|
|
position: position(value)
|
|
};
|
|
}) : [];
|
|
}
|
|
if (Array.isArray(props.ticks)) return props.ticks.map((t) => ({
|
|
value: t,
|
|
position: position(t),
|
|
label: t.toString()
|
|
}));
|
|
return Object.keys(props.ticks).map((key) => ({
|
|
value: parseFloat(key),
|
|
position: position(parseFloat(key)),
|
|
label: props.ticks[key]
|
|
}));
|
|
});
|
|
const hasLabels = computed(() => parsedTicks.value.some((_ref2) => {
|
|
let {
|
|
label
|
|
} = _ref2;
|
|
return !!label;
|
|
}));
|
|
const data = {
|
|
activeThumbRef,
|
|
color: toRef(props, "color"),
|
|
decimals,
|
|
disabled,
|
|
direction: toRef(props, "direction"),
|
|
elevation: toRef(props, "elevation"),
|
|
hasLabels,
|
|
isReversed,
|
|
indexFromEnd,
|
|
min,
|
|
max,
|
|
mousePressed,
|
|
numTicks,
|
|
onSliderMousedown,
|
|
onSliderTouchstart,
|
|
parsedTicks,
|
|
parseMouseMove,
|
|
position,
|
|
readonly: toRef(props, "readonly"),
|
|
rounded: toRef(props, "rounded"),
|
|
roundValue,
|
|
showTicks,
|
|
startOffset,
|
|
step,
|
|
thumbSize,
|
|
thumbColor,
|
|
thumbLabel: toRef(props, "thumbLabel"),
|
|
ticks: toRef(props, "ticks"),
|
|
tickSize,
|
|
trackColor,
|
|
trackContainerRef,
|
|
trackFillColor,
|
|
trackSize,
|
|
vertical
|
|
};
|
|
provide(VSliderSymbol, data);
|
|
return data;
|
|
};
|
|
|
|
// node_modules/vuetify/lib/components/VSlider/VSliderThumb.mjs
|
|
var makeVSliderThumbProps = propsFactory({
|
|
focused: Boolean,
|
|
max: {
|
|
type: Number,
|
|
required: true
|
|
},
|
|
min: {
|
|
type: Number,
|
|
required: true
|
|
},
|
|
modelValue: {
|
|
type: Number,
|
|
required: true
|
|
},
|
|
position: {
|
|
type: Number,
|
|
required: true
|
|
},
|
|
ripple: {
|
|
type: [Boolean, Object],
|
|
default: true
|
|
},
|
|
...makeComponentProps()
|
|
}, "VSliderThumb");
|
|
var VSliderThumb = genericComponent()({
|
|
name: "VSliderThumb",
|
|
directives: {
|
|
Ripple: ripple_default
|
|
},
|
|
props: makeVSliderThumbProps(),
|
|
emits: {
|
|
"update:modelValue": (v) => true
|
|
},
|
|
setup(props, _ref) {
|
|
let {
|
|
slots,
|
|
emit
|
|
} = _ref;
|
|
const slider = inject(VSliderSymbol);
|
|
const {
|
|
isRtl,
|
|
rtlClasses
|
|
} = useRtl();
|
|
if (!slider) throw new Error("[Vuetify] v-slider-thumb must be used inside v-slider or v-range-slider");
|
|
const {
|
|
thumbColor,
|
|
step,
|
|
disabled,
|
|
thumbSize,
|
|
thumbLabel,
|
|
direction,
|
|
isReversed,
|
|
vertical,
|
|
readonly,
|
|
elevation,
|
|
mousePressed,
|
|
decimals,
|
|
indexFromEnd
|
|
} = slider;
|
|
const elevationProps = computed(() => !disabled.value ? elevation.value : void 0);
|
|
const {
|
|
elevationClasses
|
|
} = useElevation(elevationProps);
|
|
const {
|
|
textColorClasses,
|
|
textColorStyles
|
|
} = useTextColor(thumbColor);
|
|
const {
|
|
pageup,
|
|
pagedown,
|
|
end,
|
|
home,
|
|
left,
|
|
right,
|
|
down,
|
|
up
|
|
} = keyValues;
|
|
const relevantKeys = [pageup, pagedown, end, home, left, right, down, up];
|
|
const multipliers = computed(() => {
|
|
if (step.value) return [1, 2, 3];
|
|
else return [1, 5, 10];
|
|
});
|
|
function parseKeydown(e, value) {
|
|
if (!relevantKeys.includes(e.key)) return;
|
|
e.preventDefault();
|
|
const _step = step.value || 0.1;
|
|
const steps = (props.max - props.min) / _step;
|
|
if ([left, right, down, up].includes(e.key)) {
|
|
const increase = vertical.value ? [isRtl.value ? left : right, isReversed.value ? down : up] : indexFromEnd.value !== isRtl.value ? [left, up] : [right, up];
|
|
const direction2 = increase.includes(e.key) ? 1 : -1;
|
|
const multiplier = e.shiftKey ? 2 : e.ctrlKey ? 1 : 0;
|
|
value = value + direction2 * _step * multipliers.value[multiplier];
|
|
} else if (e.key === home) {
|
|
value = props.min;
|
|
} else if (e.key === end) {
|
|
value = props.max;
|
|
} else {
|
|
const direction2 = e.key === pagedown ? 1 : -1;
|
|
value = value - direction2 * _step * (steps > 100 ? steps / 10 : 10);
|
|
}
|
|
return Math.max(props.min, Math.min(props.max, value));
|
|
}
|
|
function onKeydown(e) {
|
|
const newValue = parseKeydown(e, props.modelValue);
|
|
newValue != null && emit("update:modelValue", newValue);
|
|
}
|
|
useRender(() => {
|
|
const positionPercentage = convertToUnit(indexFromEnd.value ? 100 - props.position : props.position, "%");
|
|
return createVNode("div", {
|
|
"class": ["v-slider-thumb", {
|
|
"v-slider-thumb--focused": props.focused,
|
|
"v-slider-thumb--pressed": props.focused && mousePressed.value
|
|
}, props.class, rtlClasses.value],
|
|
"style": [{
|
|
"--v-slider-thumb-position": positionPercentage,
|
|
"--v-slider-thumb-size": convertToUnit(thumbSize.value)
|
|
}, props.style],
|
|
"role": "slider",
|
|
"tabindex": disabled.value ? -1 : 0,
|
|
"aria-valuemin": props.min,
|
|
"aria-valuemax": props.max,
|
|
"aria-valuenow": props.modelValue,
|
|
"aria-readonly": !!readonly.value,
|
|
"aria-orientation": direction.value,
|
|
"onKeydown": !readonly.value ? onKeydown : void 0
|
|
}, [createVNode("div", {
|
|
"class": ["v-slider-thumb__surface", textColorClasses.value, elevationClasses.value],
|
|
"style": {
|
|
...textColorStyles.value
|
|
}
|
|
}, null), withDirectives(createVNode("div", {
|
|
"class": ["v-slider-thumb__ripple", textColorClasses.value],
|
|
"style": textColorStyles.value
|
|
}, null), [[resolveDirective("ripple"), props.ripple, null, {
|
|
circle: true,
|
|
center: true
|
|
}]]), createVNode(VScaleTransition, {
|
|
"origin": "bottom center"
|
|
}, {
|
|
default: () => {
|
|
var _a;
|
|
return [withDirectives(createVNode("div", {
|
|
"class": "v-slider-thumb__label-container"
|
|
}, [createVNode("div", {
|
|
"class": ["v-slider-thumb__label"]
|
|
}, [createVNode("div", null, [((_a = slots["thumb-label"]) == null ? void 0 : _a.call(slots, {
|
|
modelValue: props.modelValue
|
|
})) ?? props.modelValue.toFixed(step.value ? decimals.value : 1)])])]), [[vShow, thumbLabel.value && props.focused || thumbLabel.value === "always"]])];
|
|
}
|
|
})]);
|
|
});
|
|
return {};
|
|
}
|
|
});
|
|
|
|
// node_modules/vuetify/lib/components/VSlider/VSliderTrack.mjs
|
|
import "C:/Users/Jeremy/Documents/Dev/Projects.cloudsucks.net/Vulture/VApp/node_modules/vuetify/lib/components/VSlider/VSliderTrack.css";
|
|
var makeVSliderTrackProps = propsFactory({
|
|
start: {
|
|
type: Number,
|
|
required: true
|
|
},
|
|
stop: {
|
|
type: Number,
|
|
required: true
|
|
},
|
|
...makeComponentProps()
|
|
}, "VSliderTrack");
|
|
var VSliderTrack = genericComponent()({
|
|
name: "VSliderTrack",
|
|
props: makeVSliderTrackProps(),
|
|
emits: {},
|
|
setup(props, _ref) {
|
|
let {
|
|
slots
|
|
} = _ref;
|
|
const slider = inject(VSliderSymbol);
|
|
if (!slider) throw new Error("[Vuetify] v-slider-track must be inside v-slider or v-range-slider");
|
|
const {
|
|
color,
|
|
parsedTicks,
|
|
rounded,
|
|
showTicks,
|
|
tickSize,
|
|
trackColor,
|
|
trackFillColor,
|
|
trackSize,
|
|
vertical,
|
|
min,
|
|
max,
|
|
indexFromEnd
|
|
} = slider;
|
|
const {
|
|
roundedClasses
|
|
} = useRounded(rounded);
|
|
const {
|
|
backgroundColorClasses: trackFillColorClasses,
|
|
backgroundColorStyles: trackFillColorStyles
|
|
} = useBackgroundColor(trackFillColor);
|
|
const {
|
|
backgroundColorClasses: trackColorClasses,
|
|
backgroundColorStyles: trackColorStyles
|
|
} = useBackgroundColor(trackColor);
|
|
const startDir = computed(() => `inset-${vertical.value ? "block" : "inline"}-${indexFromEnd.value ? "end" : "start"}`);
|
|
const endDir = computed(() => vertical.value ? "height" : "width");
|
|
const backgroundStyles = computed(() => {
|
|
return {
|
|
[startDir.value]: "0%",
|
|
[endDir.value]: "100%"
|
|
};
|
|
});
|
|
const trackFillWidth = computed(() => props.stop - props.start);
|
|
const trackFillStyles = computed(() => {
|
|
return {
|
|
[startDir.value]: convertToUnit(props.start, "%"),
|
|
[endDir.value]: convertToUnit(trackFillWidth.value, "%")
|
|
};
|
|
});
|
|
const computedTicks = computed(() => {
|
|
if (!showTicks.value) return [];
|
|
const ticks = vertical.value ? parsedTicks.value.slice().reverse() : parsedTicks.value;
|
|
return ticks.map((tick, index) => {
|
|
var _a;
|
|
const directionValue = tick.value !== min.value && tick.value !== max.value ? convertToUnit(tick.position, "%") : void 0;
|
|
return createVNode("div", {
|
|
"key": tick.value,
|
|
"class": ["v-slider-track__tick", {
|
|
"v-slider-track__tick--filled": tick.position >= props.start && tick.position <= props.stop,
|
|
"v-slider-track__tick--first": tick.value === min.value,
|
|
"v-slider-track__tick--last": tick.value === max.value
|
|
}],
|
|
"style": {
|
|
[startDir.value]: directionValue
|
|
}
|
|
}, [(tick.label || slots["tick-label"]) && createVNode("div", {
|
|
"class": "v-slider-track__tick-label"
|
|
}, [((_a = slots["tick-label"]) == null ? void 0 : _a.call(slots, {
|
|
tick,
|
|
index
|
|
})) ?? tick.label])]);
|
|
});
|
|
});
|
|
useRender(() => {
|
|
return createVNode("div", {
|
|
"class": ["v-slider-track", roundedClasses.value, props.class],
|
|
"style": [{
|
|
"--v-slider-track-size": convertToUnit(trackSize.value),
|
|
"--v-slider-tick-size": convertToUnit(tickSize.value)
|
|
}, props.style]
|
|
}, [createVNode("div", {
|
|
"class": ["v-slider-track__background", trackColorClasses.value, {
|
|
"v-slider-track__background--opacity": !!color.value || !trackFillColor.value
|
|
}],
|
|
"style": {
|
|
...backgroundStyles.value,
|
|
...trackColorStyles.value
|
|
}
|
|
}, null), createVNode("div", {
|
|
"class": ["v-slider-track__fill", trackFillColorClasses.value],
|
|
"style": {
|
|
...trackFillStyles.value,
|
|
...trackFillColorStyles.value
|
|
}
|
|
}, null), showTicks.value && createVNode("div", {
|
|
"class": ["v-slider-track__ticks", {
|
|
"v-slider-track__ticks--always-show": showTicks.value === "always"
|
|
}]
|
|
}, [computedTicks.value])]);
|
|
});
|
|
return {};
|
|
}
|
|
});
|
|
|
|
// node_modules/vuetify/lib/components/VSlider/VSlider.mjs
|
|
var makeVSliderProps = propsFactory({
|
|
...makeFocusProps(),
|
|
...makeSliderProps(),
|
|
...makeVInputProps(),
|
|
modelValue: {
|
|
type: [Number, String],
|
|
default: 0
|
|
}
|
|
}, "VSlider");
|
|
var VSlider = genericComponent()({
|
|
name: "VSlider",
|
|
props: makeVSliderProps(),
|
|
emits: {
|
|
"update:focused": (value) => true,
|
|
"update:modelValue": (v) => true,
|
|
start: (value) => true,
|
|
end: (value) => true
|
|
},
|
|
setup(props, _ref) {
|
|
let {
|
|
slots,
|
|
emit
|
|
} = _ref;
|
|
const thumbContainerRef = ref();
|
|
const {
|
|
rtlClasses
|
|
} = useRtl();
|
|
const steps = useSteps(props);
|
|
const model = useProxiedModel(props, "modelValue", void 0, (value) => {
|
|
return steps.roundValue(value == null ? steps.min.value : value);
|
|
});
|
|
const {
|
|
min,
|
|
max,
|
|
mousePressed,
|
|
roundValue,
|
|
onSliderMousedown,
|
|
onSliderTouchstart,
|
|
trackContainerRef,
|
|
position,
|
|
hasLabels,
|
|
readonly
|
|
} = useSlider({
|
|
props,
|
|
steps,
|
|
onSliderStart: () => {
|
|
emit("start", model.value);
|
|
},
|
|
onSliderEnd: (_ref2) => {
|
|
let {
|
|
value
|
|
} = _ref2;
|
|
const roundedValue = roundValue(value);
|
|
model.value = roundedValue;
|
|
emit("end", roundedValue);
|
|
},
|
|
onSliderMove: (_ref3) => {
|
|
let {
|
|
value
|
|
} = _ref3;
|
|
return model.value = roundValue(value);
|
|
},
|
|
getActiveThumb: () => {
|
|
var _a;
|
|
return (_a = thumbContainerRef.value) == null ? void 0 : _a.$el;
|
|
}
|
|
});
|
|
const {
|
|
isFocused,
|
|
focus,
|
|
blur
|
|
} = useFocus(props);
|
|
const trackStop = computed(() => position(model.value));
|
|
useRender(() => {
|
|
const inputProps = VInput.filterProps(props);
|
|
const hasPrepend = !!(props.label || slots.label || slots.prepend);
|
|
return createVNode(VInput, mergeProps({
|
|
"class": ["v-slider", {
|
|
"v-slider--has-labels": !!slots["tick-label"] || hasLabels.value,
|
|
"v-slider--focused": isFocused.value,
|
|
"v-slider--pressed": mousePressed.value,
|
|
"v-slider--disabled": props.disabled
|
|
}, rtlClasses.value, props.class],
|
|
"style": props.style
|
|
}, inputProps, {
|
|
"focused": isFocused.value
|
|
}), {
|
|
...slots,
|
|
prepend: hasPrepend ? (slotProps) => {
|
|
var _a, _b;
|
|
return createVNode(Fragment, null, [((_a = slots.label) == null ? void 0 : _a.call(slots, slotProps)) ?? (props.label ? createVNode(VLabel, {
|
|
"id": slotProps.id.value,
|
|
"class": "v-slider__label",
|
|
"text": props.label
|
|
}, null) : void 0), (_b = slots.prepend) == null ? void 0 : _b.call(slots, slotProps)]);
|
|
} : void 0,
|
|
default: (_ref4) => {
|
|
let {
|
|
id,
|
|
messagesId
|
|
} = _ref4;
|
|
return createVNode("div", {
|
|
"class": "v-slider__container",
|
|
"onMousedown": !readonly.value ? onSliderMousedown : void 0,
|
|
"onTouchstartPassive": !readonly.value ? onSliderTouchstart : void 0
|
|
}, [createVNode("input", {
|
|
"id": id.value,
|
|
"name": props.name || id.value,
|
|
"disabled": !!props.disabled,
|
|
"readonly": !!props.readonly,
|
|
"tabindex": "-1",
|
|
"value": model.value
|
|
}, null), createVNode(VSliderTrack, {
|
|
"ref": trackContainerRef,
|
|
"start": 0,
|
|
"stop": trackStop.value
|
|
}, {
|
|
"tick-label": slots["tick-label"]
|
|
}), createVNode(VSliderThumb, {
|
|
"ref": thumbContainerRef,
|
|
"aria-describedby": messagesId.value,
|
|
"focused": isFocused.value,
|
|
"min": min.value,
|
|
"max": max.value,
|
|
"modelValue": model.value,
|
|
"onUpdate:modelValue": (v) => model.value = v,
|
|
"position": trackStop.value,
|
|
"elevation": props.elevation,
|
|
"onFocus": focus,
|
|
"onBlur": blur,
|
|
"ripple": props.ripple
|
|
}, {
|
|
"thumb-label": slots["thumb-label"]
|
|
})]);
|
|
}
|
|
});
|
|
});
|
|
return {};
|
|
}
|
|
});
|
|
|
|
export {
|
|
VSlider
|
|
};
|
|
//# sourceMappingURL=chunk-4GJMZCX5.js.map
|