UNPKG

vue-cesium

Version:
1 lines 38.5 kB
{"version":3,"file":"use-slider.mjs","sources":["../../../../../../packages/components/ui/slider/use-slider.ts"],"sourcesContent":["import { h, ref, computed, onBeforeUnmount, getCurrentInstance, PropType } from 'vue'\n\nimport { TouchPan } from '@vue-cesium/directives'\n\nimport useDark, { useDarkProps } from '@vue-cesium/composables/private/use-dark'\nimport { useFormProps, useFormInject } from '@vue-cesium/composables/private/use-form'\n\nimport { between } from '@vue-cesium/utils/private/format'\nimport { position } from '@vue-cesium/utils/private/event'\nimport { isNumber, isObject } from '@vue-cesium/utils/util'\nimport { hDir } from '@vue-cesium/utils/private/render'\n\nconst markerPrefixClass = 'vc-slider__marker-labels'\nconst defaultMarkerConvertFn = v => ({ value: v })\nconst defaultMarkerLabelRenderFn = ({ marker }) =>\n h(\n 'div',\n {\n key: marker.value,\n style: marker.style,\n class: marker.classes\n },\n marker.label\n )\n\n// PGDOWN, LEFT, DOWN, PGUP, RIGHT, UP\nexport const keyCodes = [34, 37, 40, 33, 39, 38]\n\nexport const useSliderProps = {\n ...useDarkProps,\n ...useFormProps,\n\n min: {\n type: Number,\n default: 0\n },\n max: {\n type: Number,\n default: 100\n },\n innerMin: Number,\n innerMax: Number,\n\n step: {\n type: Number,\n default: 1,\n validator: v => v >= 0\n },\n\n snap: Boolean,\n\n vertical: Boolean,\n reverse: Boolean,\n\n hideSelection: Boolean,\n\n color: String,\n markerLabelsClass: String,\n\n label: Boolean,\n labelColor: String,\n labelTextColor: String,\n labelAlways: Boolean,\n switchLabelSide: Boolean,\n\n markers: [Boolean, Number],\n markerLabels: [Boolean, Array, Object, Function],\n switchMarkerLabelsSide: Boolean,\n\n trackImg: String,\n trackColor: String,\n innerTrackImg: String,\n innerTrackColor: String,\n selectionColor: String,\n selectionImg: String,\n\n thumbSize: {\n type: String,\n default: '20px'\n },\n trackSize: {\n type: String,\n default: '4px'\n },\n\n disable: Boolean,\n readonly: Boolean,\n dense: Boolean,\n\n tabindex: [String, Number],\n\n thumbColor: String,\n thumbPath: {\n type: String,\n default: 'M 4, 10 a 6,6 0 1,0 12,0 a 6,6 0 1,0 -12,0'\n }\n}\n\nexport const useSliderEmits = ['pan', 'update:modelValue', 'change']\n\nexport default function ({ updateValue, updatePosition, getDragging, formAttrs }) {\n const { props, emit, slots, proxy } = getCurrentInstance() as any\n const isDark = useDark(props)\n\n const injectFormInput = useFormInject(formAttrs)\n\n const active = ref(false)\n const preventFocus = ref(false)\n const focus = ref(false)\n const dragging = ref(false)\n\n const axis = computed(() => (props.vertical === true ? '--v' : '--h'))\n const labelSide = computed(() => '-' + (props.switchLabelSide === true ? 'switched' : 'standard'))\n\n const isReversed = computed(() => props.reverse === true)\n\n const innerMin = computed(() => (isNaN(props.innerMin) === true || props.innerMin < props.min ? props.min : props.innerMin))\n const innerMax = computed(() => (isNaN(props.innerMax) === true || props.innerMax > props.max ? props.max : props.innerMax))\n\n const editable = computed(() => props.disable !== true && props.readonly !== true && innerMin.value < innerMax.value)\n\n const decimals = computed(() => (String(props.step).trim().split('.')[1] || '').length)\n const step = computed(() => (props.step === 0 ? 1 : props.step))\n const tabindex = computed(() => (editable.value === true ? props.tabindex || 0 : -1))\n\n const trackLen = computed(() => props.max - props.min)\n const innerBarLen = computed(() => innerMax.value - innerMin.value)\n\n const innerMinRatio = computed(() => convertModelToRatio(innerMin.value))\n const innerMaxRatio = computed(() => convertModelToRatio(innerMax.value))\n\n const positionProp = computed(() =>\n props.vertical === true ? (isReversed.value === true ? 'bottom' : 'top') : isReversed.value === true ? 'right' : 'left'\n )\n\n const sizeProp = computed(() => (props.vertical === true ? 'height' : 'width'))\n const thicknessProp = computed(() => (props.vertical === true ? 'width' : 'height'))\n const orientation = computed(() => (props.vertical === true ? 'vertical' : 'horizontal'))\n\n const attributes = computed(() => {\n const acc = {\n role: 'slider',\n 'aria-valuemin': innerMin.value,\n 'aria-valuemax': innerMax.value,\n 'aria-orientation': orientation.value,\n 'data-step': props.step\n }\n\n if (props.disable === true) {\n acc['aria-disabled'] = 'true'\n } else if (props.readonly === true) {\n acc['aria-readonly'] = 'true'\n }\n\n return acc\n })\n\n const classes = computed(\n () =>\n `vc-slider vc-slider${axis.value} vc-slider--${active.value === true ? '' : 'in'}active inline no-wrap ` +\n (props.vertical === true ? 'row' : 'column') +\n (props.disable === true ? ' disabled' : ' vc-slider--enabled' + (editable.value === true ? ' vc-slider--editable' : '')) +\n ((focus.value as any) === 'both' ? ' vc-slider--focus' : '') +\n (props.label || props.labelAlways === true ? ' vc-slider--label' : '') +\n (props.labelAlways === true ? ' vc-slider--label-always' : '') +\n (isDark.value === true ? ' vc-slider--dark' : '') +\n (props.dense === true ? ' vc-slider--dense vc-slider--dense' + axis.value : '')\n )\n\n function getPositionClass(name) {\n const cls = 'vc-slider__' + name\n return `${cls} ${cls}${axis.value} ${cls}${axis.value}${labelSide.value}`\n }\n function getAxisClass(name) {\n const cls = 'vc-slider__' + name\n return `${cls} ${cls}${axis.value}`\n }\n\n const selectionBarClass = computed(() => {\n const color = props.selectionColor || props.color\n return 'vc-slider__selection absolute' + (color !== void 0 ? ` text-${color}` : '')\n })\n const markerClass = computed(() => getAxisClass('markers') + ' absolute overflow-hidden')\n const trackContainerClass = computed(() => getAxisClass('track-container'))\n const pinClass = computed(() => getPositionClass('pin'))\n const labelClass = computed(() => getPositionClass('label'))\n const textContainerClass = computed(() => getPositionClass('text-container'))\n const markerLabelsContainerClass = computed(\n () => getPositionClass('marker-labels-container') + (props.markerLabelsClass !== void 0 ? ` ${props.markerLabelsClass}` : '')\n )\n\n const trackClass = computed(() => 'vc-slider__track relative-position no-outline' + (props.trackColor !== void 0 ? ` bg-${props.trackColor}` : ''))\n const trackStyle = computed(() => {\n const acc = { [thicknessProp.value]: props.trackSize }\n if (props.trackImg !== void 0) {\n acc.backgroundImage = `url(${props.trackImg}) !important`\n }\n return acc\n })\n\n const innerBarClass = computed(() => 'vc-slider__inner absolute' + (props.innerTrackColor !== void 0 ? ` bg-${props.innerTrackColor}` : ''))\n const innerBarStyle = computed(() => {\n const acc = {\n [positionProp.value]: `${100 * innerMinRatio.value}%`,\n [sizeProp.value]: `${100 * (innerMaxRatio.value - innerMinRatio.value)}%`\n }\n if (props.innerTrackImg !== void 0) {\n acc.backgroundImage = `url(${props.innerTrackImg}) !important`\n }\n return acc\n })\n\n function convertRatioToModel(ratio) {\n const { min, max, step } = props\n let model = min + ratio * (max - min)\n\n if (step > 0) {\n const modulo = (model - min) % step\n model += (Math.abs(modulo) >= step / 2 ? (modulo < 0 ? -1 : 1) * step : 0) - modulo\n }\n\n if (decimals.value > 0) {\n model = parseFloat(model.toFixed(decimals.value))\n }\n\n return between(model, innerMin.value, innerMax.value)\n }\n\n function convertModelToRatio(model) {\n return trackLen.value === 0 ? 0 : (model - props.min) / trackLen.value\n }\n\n function getDraggingRatio(evt, dragging) {\n const pos = position(evt),\n val =\n props.vertical === true\n ? between((pos.top - dragging.top) / dragging.height, 0, 1)\n : between((pos.left - dragging.left) / dragging.width, 0, 1)\n\n return between(isReversed.value === true ? 1.0 - val : val, innerMinRatio.value, innerMaxRatio.value)\n }\n\n const markerStep = computed(() => (isNumber(props.markers) === true ? props.markers : step.value))\n\n const markerTicks = computed(() => {\n const acc = []\n const step = markerStep.value\n const max = props.max\n\n let value = props.min\n do {\n acc.push(value)\n value += step\n } while (value < max)\n\n acc.push(max)\n return acc\n })\n\n const markerLabelClass = computed(() => {\n const prefix = ` ${markerPrefixClass}${axis.value}-`\n return (\n markerPrefixClass +\n `${prefix}${props.switchMarkerLabelsSide === true ? 'switched' : 'standard'}` +\n `${prefix}${isReversed.value === true ? 'rtl' : 'ltr'}`\n )\n })\n\n const markerLabelsList = computed(() => {\n if (props.markerLabels === false) {\n return null\n }\n\n return getMarkerList(props.markerLabels).map((entry, index) => ({\n index,\n value: entry.value,\n label: entry.label || entry.value,\n classes: markerLabelClass.value + (entry.classes !== void 0 ? ' ' + entry.classes : ''),\n style: {\n ...getMarkerLabelStyle(entry.value),\n ...(entry.style || {})\n }\n }))\n })\n\n const markerScope = computed(() => ({\n markerList: markerLabelsList.value,\n markerMap: markerLabelsMap.value,\n classes: markerLabelClass.value, // TODO ts definition\n getStyle: getMarkerLabelStyle\n }))\n\n const markerStyle = computed(() => {\n if (innerBarLen.value !== 0) {\n const size = (100 * markerStep.value) / innerBarLen.value\n\n return {\n ...innerBarStyle.value,\n backgroundSize: props.vertical === true ? `2px ${size}%` : `${size}% 2px`\n }\n }\n\n return null\n })\n\n function getMarkerList(def) {\n if (def === false) {\n return null\n }\n\n if (def === true) {\n return markerTicks.value.map(defaultMarkerConvertFn)\n }\n\n if (typeof def === 'function') {\n return markerTicks.value.map(value => {\n const item = def(value)\n return isObject(item) === true ? { ...item, value } : { value, label: item }\n })\n }\n\n const filterFn = ({ value }) => value >= props.min && value <= props.max\n\n if (Array.isArray(def) === true) {\n return def.map(item => (isObject(item) === true ? item : { value: item })).filter(filterFn)\n }\n\n return Object.keys(def)\n .map(key => {\n const item = def[key]\n const value = Number(key)\n return isObject(item) === true ? { ...item, value } : { value, label: item }\n })\n .filter(filterFn)\n }\n\n function getMarkerLabelStyle(val) {\n return { [positionProp.value]: `${(100 * (val - props.min)) / trackLen.value}%` }\n }\n\n const markerLabelsMap = computed(() => {\n if (props.markerLabels === false) {\n return null\n }\n\n const acc = {}\n markerLabelsList.value.forEach(entry => {\n acc[entry.value] = entry\n })\n return acc\n })\n\n function getMarkerLabelsContent() {\n if (slots['marker-label-group'] !== void 0) {\n return slots['marker-label-group'](markerScope.value)\n }\n\n const fn = slots['marker-label'] || defaultMarkerLabelRenderFn\n return markerLabelsList.value.map(marker =>\n fn({\n marker,\n ...markerScope.value\n })\n )\n }\n\n const panDirective = computed(() => {\n // if editable.value === true\n return [\n [\n TouchPan,\n onPan,\n void 0,\n {\n [orientation.value]: true,\n prevent: true,\n stop: true,\n mouse: true,\n mouseAllDir: true\n }\n ]\n ]\n })\n\n function onPan(event) {\n if (event.isFinal === true) {\n if (dragging.value !== void 0) {\n updatePosition(event.evt)\n // only if touch, because we also have mousedown/up:\n event.touch === true && updateValue(true)\n dragging.value = void 0\n emit('pan', 'end')\n }\n active.value = false\n focus.value = false\n } else if (event.isFirst === true) {\n dragging.value = getDragging(event.evt)\n updatePosition(event.evt)\n updateValue()\n active.value = true\n emit('pan', 'start')\n } else {\n updatePosition(event.evt)\n updateValue()\n }\n }\n\n function onBlur() {\n focus.value = false\n }\n\n function onActivate(evt) {\n updatePosition(evt, getDragging(evt))\n updateValue()\n\n preventFocus.value = true\n active.value = true\n\n document.addEventListener('mouseup', onDeactivate, true)\n }\n\n function onDeactivate() {\n preventFocus.value = false\n active.value = false\n\n updateValue(true)\n onBlur()\n\n document.removeEventListener('mouseup', onDeactivate, true)\n }\n\n function onMobileClick(evt) {\n updatePosition(evt, getDragging(evt))\n updateValue(true)\n }\n\n function onKeyup(evt) {\n if (keyCodes.includes(evt.keyCode)) {\n updateValue(true)\n }\n }\n\n function getTextContainerStyle(ratio) {\n if (props.vertical === true) {\n return null\n }\n\n // const p = $q.lang.rtl !== props.reverse ? 1 - ratio : ratio\n const p = ratio\n return {\n transform: `translateX(calc(${2 * p - 1} * ${props.thumbSize} / 2 + ${50 - 100 * p}%))`\n }\n }\n\n function getThumbRenderFn(thumb) {\n const focusClass = computed(() =>\n preventFocus.value === false && (focus.value === thumb.focusValue || (focus.value as any) === 'both') ? ' vc-slider--focus' : ''\n )\n\n const classes = computed(\n () =>\n `vc-slider__thumb vc-slider__thumb${axis.value} vc-slider__thumb${axis.value}-${\n isReversed.value === true ? 'rtl' : 'ltr'\n } absolute non-selectable` +\n focusClass.value +\n (thumb.thumbColor.value !== void 0 ? ` text-${thumb.thumbColor.value}` : '')\n )\n\n const style = computed(() => ({\n width: props.thumbSize,\n height: props.thumbSize,\n [positionProp.value]: `${100 * thumb.ratio.value}%`,\n zIndex: focus.value === thumb.focusValue ? 2 : void 0\n }))\n\n const pinColor = computed(() => (thumb.labelColor.value !== void 0 ? ` text-${thumb.labelColor.value}` : ''))\n\n const textContainerStyle = computed(() => getTextContainerStyle(thumb.ratio.value))\n\n const textClass = computed(() => 'vc-slider__text' + (thumb.labelTextColor.value !== void 0 ? ` text-${thumb.labelTextColor.value}` : ''))\n\n return () => {\n const thumbContent = [\n h(\n 'svg',\n {\n class: 'vc-slider__thumb-shape absolute-full',\n viewBox: '0 0 20 20',\n 'aria-hidden': 'true'\n },\n [h('path', { d: props.thumbPath })]\n ),\n\n h('div', { class: 'vc-slider__focus-ring fit' })\n ]\n\n if (props.label === true || props.labelAlways === true) {\n thumbContent.push(\n h(\n 'div',\n {\n class: pinClass.value + ' absolute fit no-pointer-events' + pinColor.value\n },\n [\n h(\n 'div',\n {\n class: labelClass.value,\n style: { minWidth: props.thumbSize }\n },\n [\n h(\n 'div',\n {\n class: textContainerClass.value,\n style: textContainerStyle.value\n },\n [h('span', { class: textClass.value }, thumb.label.value)]\n )\n ]\n )\n ]\n )\n )\n\n if (props.name !== void 0 && props.disable !== true) {\n injectFormInput(thumbContent, 'push')\n }\n }\n\n return h(\n 'div',\n {\n class: classes.value,\n style: style.value,\n ...thumb.getNodeData()\n },\n thumbContent\n )\n }\n }\n\n function getContent(selectionBarStyle, trackContainerTabindex, trackContainerEvents, injectThumb) {\n const trackContent = []\n\n props.innerTrackColor !== 'transparent' &&\n trackContent.push(\n h('div', {\n key: 'inner',\n class: innerBarClass.value,\n style: innerBarStyle.value\n })\n )\n\n props.selectionColor !== 'transparent' &&\n trackContent.push(\n h('div', {\n key: 'selection',\n class: selectionBarClass.value,\n style: selectionBarStyle.value\n })\n )\n\n props.markers !== false &&\n trackContent.push(\n h('div', {\n key: 'marker',\n class: markerClass.value,\n style: markerStyle.value\n })\n )\n\n injectThumb(trackContent)\n\n const content = [\n hDir(\n 'div',\n {\n key: 'trackC',\n class: trackContainerClass.value,\n tabindex: trackContainerTabindex.value,\n ...trackContainerEvents.value\n },\n [\n h(\n 'div',\n {\n class: trackClass.value,\n style: trackStyle.value\n },\n trackContent\n )\n ],\n 'slide',\n editable.value,\n () => panDirective.value\n )\n ]\n\n if (props.markerLabels !== false) {\n const action = props.switchMarkerLabelsSide === true ? 'unshift' : 'push'\n\n content[action](\n h(\n 'div',\n {\n key: 'markerL',\n class: markerLabelsContainerClass.value\n },\n getMarkerLabelsContent()\n )\n )\n }\n\n return content\n }\n\n onBeforeUnmount(() => {\n document.removeEventListener('mouseup', onDeactivate, true)\n })\n\n return {\n state: {\n active,\n focus,\n preventFocus,\n dragging,\n\n editable,\n classes,\n tabindex,\n attributes,\n\n step,\n decimals,\n trackLen,\n innerMin,\n innerMinRatio,\n innerMax,\n innerMaxRatio,\n positionProp,\n sizeProp,\n isReversed\n },\n\n methods: {\n onActivate,\n onMobileClick,\n onBlur,\n onKeyup,\n getContent,\n getThumbRenderFn,\n convertRatioToModel,\n convertModelToRatio,\n getDraggingRatio\n }\n }\n}\n"],"names":["step","dragging","classes"],"mappings":"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"}