UNPKG

vue3-spinners

Version:
135 lines (128 loc) 2.69 kB
import { defineComponent, h } from 'vue'; import useSpinner, { spinnerProps } from '../utils/use-spinner.js'; const svg = [ h('g', [ h('path', { fill: 'none', stroke: 'currentColor', 'stroke-width': '5', 'stroke-miterlimit': '10', d: 'M58.4,51.7c-0.9-0.9-1.4-2-1.4-2.3s0.5-0.4,1.4-1.4 C70.8,43.8,79.8,30.5,80,15.5H70H30H20c0.2,15,9.2,28.1,21.6,32.3c0.9,0.9,1.4,1.2,1.4,1.5s-0.5,1.6-1.4,2.5 C29.2,56.1,20.2,69.5,20,85.5h10h40h10C79.8,69.5,70.8,55.9,58.4,51.7z', }), h( 'clipPath', { id: 'uil-hourglass-clip1', }, [ h( 'rect', { x: '15', y: '20', width: '70', height: '25', }, [ h('animate', { attributeName: 'height', from: '25', to: '0', dur: '1s', repeatCount: 'indefinite', values: '25;0;0', keyTimes: '0;0.5;1', }), h('animate', { attributeName: 'y', from: '20', to: '45', dur: '1s', repeatCount: 'indefinite', values: '20;45;45', keyTimes: '0;0.5;1', }), ] ), ] ), h( 'clipPath', { id: 'uil-hourglass-clip2', }, [ h( 'rect', { x: '15', y: '55', width: '70', height: '25', }, [ h('animate', { attributeName: 'height', from: '0', to: '25', dur: '1s', repeatCount: 'indefinite', values: '0;25;25', keyTimes: '0;0.5;1', }), h('animate', { attributeName: 'y', from: '80', to: '55', dur: '1s', repeatCount: 'indefinite', values: '80;55;55', keyTimes: '0;0.5;1', }), ] ), ] ), h('path', { d: 'M29,23c3.1,11.4,11.3,19.5,21,19.5S67.9,34.4,71,23H29z', 'clip-path': 'url(../uil-hourglass-clip1)', fill: 'currentColor', }), h('path', { d: 'M71.6,78c-3-11.6-11.5-20-21.5-20s-18.5,8.4-21.5,20H71.6z', 'clip-path': 'url(../uil-hourglass-clip2)', fill: 'currentColor', }), h('animateTransform', { attributeName: 'transform', type: 'rotate', from: '0 50 50', to: '180 50 50', repeatCount: 'indefinite', dur: '1s', values: '0 50 50;0 50 50;180 50 50', keyTimes: '0;0.7;1', }), ]), ]; export default defineComponent({ name: 'VueSpinnerHourglass', props: spinnerProps, setup(props) { const { cSize, classes, style } = useSpinner(props); return () => h( 'svg', { style: style.value, class: classes.value, width: cSize.value, height: cSize.value, viewBox: '0 0 100 100', preserveAspectRatio: 'xMidYMid', xmlns: 'http://www.w3.org/2000/svg', }, svg ); }, });