vue3-use-hooks
Version:
2 lines (1 loc) • 2.87 kB
JavaScript
(function(c,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],a):(c=typeof globalThis<"u"?globalThis:c||self,a(c.index={},c.Vue))})(this,function(c,a){"use strict";function w(r){const e=a.ref(r),o=l=>{e.value=l};return[a.readonly(e),o]}const L=(r="en")=>{const e=a.ref(r);return{camelCase:n=>n.replace(/(?:^\w|[A-Z]|\b\w)/g,function(s,i){return i===0?s.toLocaleLowerCase(e):s.toLocaleUpperCase(e)}).replace(/\s+/g,""),kebabCase:n=>n.match(/[A-Z]{2,}(?=[A-Z][a-z]+[0-9]*|\b)|[A-Z]?[a-z]+[0-9]*|[A-Z]|[0-9]+/g).map(s=>s.toLocaleLowerCase(e)).join("-"),pascalCase:n=>n.replace(/\w\S*/g,s=>s.charAt(0).toLocaleUpperCase(e)+s.substr(1).toLocaleLowerCase(e)),upperCase:n=>n.toLocaleUpperCase(e),lowerCase:n=>n.toLocaleLowerCase(e),sentenceCase:n=>n.toLocaleLowerCase(e).replace(/(^\s*\w|[.!?]\s*\w)/g,s=>s.toLocaleUpperCase(e)),capitalizeCase:n=>{const s=n.replace(/[-_](\w)/g,(i,C)=>C.toLocaleUpperCase(e));return s[0].toLocaleUpperCase(e)+s.slice(1)}}},S=(r={},e=!1)=>{const[o,l]=w(e),[u,d]=w(r);return{visible:o,setVisible:l,current:u,openModal:t=>{d(t),l(!0)},closeModal:()=>{l(!1),d()}}},b=(r,e="")=>{const o=a.ref(null),l=()=>{const t=localStorage.getItem(r);if(t!==null){o.value=u(t);return}o.value=e},u=t=>{let n=null;try{n=JSON.parse(t)}catch{n=t}return n},d=t=>{t.key===r&&(o.value=t.newValue?u(t.newValue):null)};let f=!1;return typeof window<"u"&&(l(),f=!0),a.onMounted(()=>{f||l(),window.addEventListener("storage",d,!0)}),a.watchEffect(()=>{o.value&&localStorage.setItem(r,JSON.stringify(o.value))}),a.onUnmounted(()=>{window.removeEventListener("storage",d)}),{value:o,remove:()=>{try{localStorage.removeItem(r),o.value=null}catch(t){console.error(t)}}}},g=(r=null)=>{const e=a.ref(r),o=a.ref([]),l=a.computed(()=>/(?:<iframe[^>]*)(?:(?:\/>)|(?:>.*?<\/iframe>))/.test(e.value)||/(?:<blockquote[^>]*)(?:(?:\/>)|(?:>.*?<\/blockquote>))/.test(e.value)),u=(t=e.value)=>{const s=new DOMParser().parseFromString(t,"text/html");for(const i of s.body.childNodes){if(i.tagName==="SCRIPT")return i.src;i.innerHTML&&i.innerHTML.includes("<script")&&u(i.innerHTML)}return null},d=t=>t.remove(),f=({async:t=!0,defer:n=!1,id:s,src:i})=>{const C=document.getElementById(s);C&&d(C);const p=document.createElement("script");p.type="text/javascript",p.id=s,p.src=i,p.async=t,p.defer=n,document.body.insertAdjacentElement("afterend",p),p.addEventListener("load",()=>{window.instgrm&&window.instgrm.Embeds.process()}),o.value=[...o.value,p]},m=()=>{e.value=null,o.value.map(t=>d(t)),o.value=[]};return a.onMounted(()=>{e.value&&f({id:"id",src:u(e.value)})}),a.watch(r,t=>{t&&f({id:"id",src:u(t)})}),{isEmbedBlock:l,clear:m}};c.useEmbed=g,c.useLocalStorage=b,c.useModal=S,c.useState=w,c.useStringCase=L,Object.defineProperties(c,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});