vue-amazing-ui
Version:
An Amazing Vue3 UI Components Library, Using TypeScript.
2 lines (1 loc) • 8 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("vue"),b=require("@ctrl/tinycolor"),N=require("@ant-design/colors");function H(e=Date.now(),n="YYYY-MM-DD HH:mm:ss"){try{let t;if(typeof e=="number"||typeof e=="string"){if(t=new Date(e),isNaN(t.getTime()))throw new Error("Invalid date")}else t=e;const r=(l,u=2)=>String(l).padStart(u,"0"),s=l=>{switch(l){case"YYYY":return r(t.getFullYear());case"YY":return r(t.getFullYear()).slice(2,4);case"MM":return r(t.getMonth()+1);case"M":return String(t.getMonth()+1);case"DD":return r(t.getDate());case"D":return String(t.getDate());case"HH":return r(t.getHours());case"H":return String(t.getHours());case"mm":return r(t.getMinutes());case"m":return String(t.getMinutes());case"ss":return r(t.getSeconds());case"s":return String(t.getSeconds());case"SSS":return r(t.getMilliseconds(),3);default:return l}};return n.replace(/(YYYY|YY|M{1,2}|D{1,2}|H{1,2}|m{1,2}|s{1,2}|SSS)/g,s)}catch(t){return console.error("Error formatting date:",t),""}}function U(e,n=2,t=",",r=".",s,l){typeof e!="number"&&typeof e!="string"&&console.warn("Expected value to be of type number or string"),typeof n!="number"&&console.warn("Expected precision to be of type number");const u=Number(e);if(isNaN(u)||!isFinite(u))return"";if(u===0)return u.toFixed(n);let c=u.toFixed(n);if(typeof t=="string"&&t!==""){const[f,i]=c.split(".");c=f.replace(/(\d)(?=(\d{3})+$)/g,"$1"+t)+(i?r+i:"")}return(s||"")+c+(l||"")}function j(e,n=0,t=!1){let r=null;function s(u){if(r||(r=u),u-r>=n){try{e()}catch(f){console.error("Error executing rafTimeout function:",f)}t&&(r=u,l.id=requestAnimationFrame(s))}else l.id=requestAnimationFrame(s)}const l={id:requestAnimationFrame(s)};return l}function C(e){e&&e.id&&typeof e.id=="number"?cancelAnimationFrame(e.id):console.warn("cancelRaf received an invalid id:",e)}function R(e,n=300){let t=!0;return function(...r){if(!t)return!1;t&&(e(...r),t=!1,setTimeout(()=>{t=!0},n))}}function A(e,n=300){let t=null;return function(...r){t&&clearTimeout(t),t=setTimeout(()=>{e(...r)},n)}}function q(e,n){if(Number.isNaN(e)||Number.isNaN(n))throw new Error("Both num1 and num2 must be valid numbers.");const t=e%1!==0,r=n%1!==0;if(!t&&!r)return e+n;const s=String(e).split(".")[1]??"",l=String(n).split(".")[1]??"",u=Math.max(s.length,l.length),c=Math.pow(10,u),f=e.toFixed(u),i=n.toFixed(u);return(+f.replace(".","")+ +i.replace(".",""))/c}function B(e,n){if(!e){console.error("无效的 url");return}const t=n||e.split("?")[0].split("/").pop()||"download";try{fetch(e).then(r=>{r.ok?r.blob().then(s=>{const l=URL.createObjectURL(s),u=document.createElement("a");u.href=l,u.download=t,document.body.appendChild(u),u.click(),document.body.removeChild(u),URL.revokeObjectURL(l)}):console.error("请求文件失败,状态码:",r.status)})}catch(r){console.error("文件下载失败:",r)}}function I(){const e=document.documentElement;e.classList.toggle("dark"),e.classList.contains("dark")?e.style.colorScheme="dark":e.style.colorScheme="light"}function Y(){const e=o.ref(!1),n=o.getCurrentInstance();return n&&o.onMounted(()=>{e.value=!0},n),e}function M(e){const n=Y();return o.computed(()=>(n.value,!!e()))}function k(e,n,t){o.onMounted(()=>e.addEventListener(n,t)),o.onUnmounted(()=>e.removeEventListener(n,t))}function P(e,n,t={}){const r=M(()=>window&&"MutationObserver"in window),s=o.ref(!1);let l;const u=o.computed(()=>{const d=o.toValue(e);return d?Array.isArray(d)?d.map(m=>o.toValue(m)).filter(m=>m):[d]:[]}),c=()=>{l&&(l.disconnect(),l=void 0)},f=()=>{r.value&&u.value.length&&!s.value&&(l=new MutationObserver(n),u.value.forEach(d=>l.observe(d,t)))};o.watch(()=>u.value,()=>{c(),f()},{immediate:!0,flush:"post"});const i=()=>{s.value=!1,f()},v=()=>{s.value=!0,c()};return o.onBeforeUnmount(()=>c()),{start:i,stop:v}}function z(e=window,n=0,t,r){const s=o.ref(0),l=o.ref(0),u=o.ref(0),c=o.ref(0),f=o.ref(!1),i=o.ref(!1),v=o.ref(!1),d=o.ref(!1),m=o.ref(!1),w=o.ref(0),S=o.ref(0);function O(a){f.value=!0;const p=a.target.documentElement??a.target;s.value=p.scrollLeft,u.value=p.scrollTop,i.value=s.value<w.value,v.value=s.value>w.value,d.value=u.value<S.value,m.value=u.value>S.value,w.value=s.value,S.value=u.value,E(a),t&&t(a)}const L=R(O,n);function V(a){f.value&&(f.value=!1,i.value=!1,v.value=!1,d.value=!1,m.value=!1,r&&r(a))}const E=A(V,n+200),x=o.computed(()=>{const a=o.toValue(e);return a||null});o.watch(()=>x.value,(a,p)=>{var h;if(p&&F(p),a){const g=((h=a==null?void 0:a.document)==null?void 0:h.documentElement)||(a==null?void 0:a.documentElement)||a;l.value=g.scrollWidth-g.clientWidth,c.value=g.scrollHeight-g.clientHeight,g.addEventListener("scroll",L),g.addEventListener("scrollend",E)}},{immediate:!0,flush:"post"});function F(a){var h;const p=((h=a==null?void 0:a.document)==null?void 0:h.documentElement)||(a==null?void 0:a.documentElement)||a;p.removeEventListener("scroll",L),p.removeEventListener("scrollend",E)}return o.onBeforeUnmount(()=>F(x.value)),{x:s,xScrollMax:l,y:u,yScrollMax:c,isScrolling:f,left:i,right:v,top:d,bottom:m}}function G(){const e=o.ref(0),n=o.ref(0);let t=performance.now();const r=10,s=l=>{if(n.value++,n.value>=r){const u=l-t;e.value=Math.round(1e3/(u/r)),t=l,n.value=0}requestAnimationFrame(s)};return requestAnimationFrame(s),{fps:e}}function W(e){if(!e||typeof e!="string"||e.trim()==="")throw new Error("Invalid mediaQuery parameter. It must be a non-empty string.");const n=o.ref(window&&window.matchMedia(e).matches),t=window.matchMedia(e),r=s=>{n.value=s.matches};return o.onMounted(()=>{t.addEventListener("change",r)}),o.onBeforeUnmount(()=>{t.removeEventListener("change",r)}),{match:n}}function $(e,n,t={}){const r=M(()=>window&&"ResizeObserver"in window);let s;const l=o.ref(!1),u=o.computed(()=>{const d=o.toValue(e);return d?Array.isArray(d)?d.map(m=>o.toValue(m)).filter(m=>m):[d]:[]}),c=()=>{s&&(s.disconnect(),s=void 0)},f=()=>{r.value&&u.value.length&&!l.value&&(s=new ResizeObserver(n),u.value.forEach(d=>s.observe(d,t)))};o.watch(()=>u.value,()=>{c(),f()},{immediate:!0,flush:"post"});const i=()=>{l.value=!1,f()},v=()=>{l.value=!0,c()};return o.onBeforeUnmount(()=>c()),{start:i,stop:v}}function Z(e){const n=o.useSlots(),t=r=>{var u;const s=(u=n[r])==null?void 0:u.call(n),l=c=>{if(c.type===o.Comment||Array.isArray(c.children)&&!c.children.length)return!1;if(c.type!==o.Text)return!0;if(typeof c.children=="string")return c.children.trim()!==""};return s&&(s!=null&&s.length)?s.some(f=>l(f)):!1};if(Array.isArray(e)){const r=o.reactive({});return e.forEach(s=>{const l=o.computed(()=>t(s));r[s]=l}),r}else return o.computed(()=>t(e))}function J(e){const n=T("#1677ff"),t=o.inject("common",o.reactive({colorPalettes:n,shadowColor:D(n[0])})),r=o.inject("components",null);return r!==null&&e in r&&r[e].colorPalettes.length?o.toRefs(r[e]):o.toRefs(t)}function T(e){return N.generate(e)}function y(e){return e>=0&&e<=255}function D(e,n="#ffffff"){const{r:t,g:r,b:s,a:l}=new b.TinyColor(e).toRgb();if(l<1)return e;const{r:u,g:c,b:f}=new b.TinyColor(n).toRgb();for(let i=.01;i<=1;i+=.01){const v=Math.round((t-u*(1-i))/i),d=Math.round((r-c*(1-i))/i),m=Math.round((s-f*(1-i))/i);if(y(v)&&y(d)&&y(m))return new b.TinyColor({r:v,g:d,b:m,a:Math.round(i*100)/100}).toRgbString()}return new b.TinyColor({r:t,g:r,b:s,a:1}).toRgbString()}function K(e){const n=o.ref(!1);try{const t={get[e](){return n.value=!0,!1}};window.addEventListener("test",()=>null,t),window.removeEventListener("test",()=>null,t)}catch{n.value=!1}return{isSupported:n}}exports.add=q;exports.cancelRaf=C;exports.dateFormat=H;exports.debounce=A;exports.downloadFile=B;exports.formatNumber=U;exports.getAlphaColor=D;exports.getColorPalettes=T;exports.rafTimeout=j;exports.throttle=R;exports.toggleDark=I;exports.useEventListener=k;exports.useFps=G;exports.useInject=J;exports.useMediaQuery=W;exports.useMounted=Y;exports.useMutationObserver=P;exports.useOptionsSupported=K;exports.useResizeObserver=$;exports.useScroll=z;exports.useSlotsExist=Z;exports.useSupported=M;