@nick-skriabin/glyph 0.1.52 → 0.1.53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -15,5 +15,5 @@ import oe,{createContext,forwardRef,useState,useContext,useRef,useEffect,useLayo
|
|
|
15
15
|
tell application "System Events"
|
|
16
16
|
set frontmost of (first process whose name is "qlmanage") to true
|
|
17
17
|
end tell
|
|
18
|
-
'`,{stdio:"ignore"});}function ys(e){return new Promise((t,n)=>{let r=platform(),o,s;r==="linux"?(o="xdg-open",s=[e]):r==="win32"?(o="cmd",s=["/c","start",'""',e]):(o="open",s=[e]);let i=spawn(o,s,{detached:true,stdio:["ignore","ignore","ignore"]});i.unref(),i.on("error",c=>{n(new Error(`Failed to open preview: ${c.message}`));}),setTimeout(t,100);})}function xs({src:e,width:t,height:n,style:r,focusedStyle:o,placeholderStyle:s,focusable:i=true,inline:c=true,placeholder:l,onStateChange:u,onError:f,autoLoad:h=false}){let b=useContext(X),I=useContext(J),v=useContext(ie),d=useContext(it),m=useRef(null),x=useRef(null),P=useRef(Math.floor(Math.random()*1e6)),[R,A]=useState(false),[D,B]=useState(false),[T,N]=useState("placeholder"),[L,C]=useState(null),[y,S]=useState(null),g=useRef(null),M=l||tn(e),_=mt(e),j=useCallback(K=>{N(K),u?.(K);},[u]);useEffect(()=>{if(!(!b||!x.current||!m.current||!i))return b.register(x.current,m.current)},[b,i,R]),useEffect(()=>{if(!b||!x.current)return;let K=x.current;return B(b.focusedId===K),b.onFocusChange(te=>{B(te===K);})},[b,R]),useEffect(()=>{if(!(!v||!m.current))return S(v.getLayout(m.current)),v.subscribe(m.current,S)},[v,R]),useEffect(()=>{if(!d||T!=="loaded"||!g.current||!y)return;let{data:K,cellWidth:te,cellHeight:Y}=g.current,se=P.current;return d.registerImage({id:se,data:K,x:y.innerX,y:y.innerY,width:te,height:Y}),()=>{d.unregisterImage(se);}},[d,T,y]);let H=useCallback(async()=>{if(T!=="loading"){j("loading"),C(null);try{let K=await ar(e);if(c&&Pt()&&y){let Y=ht(K.data),se=K.data;if(Y!=="png"){let a=ur(K.data);if(!a){j("preview"),await nn(K.localPath),j("placeholder");return}se=a;}let ee=t??y.innerWidth,E=n??y.innerHeight;if(ee<=0||E<=0)throw new Error("Image area too small");g.current={data:se,localPath:K.localPath,cellWidth:ee,cellHeight:E},j("loaded");}else j("preview"),await nn(K.localPath),j("placeholder");}catch(K){let te=K instanceof Error?K:new Error(String(K));C(te.message),j("error"),f?.(te);}}},[e,T,c,y,t,n,j,f]);useEffect(()=>{if(!I||!x.current||!i)return;let K=x.current,te=Y=>b?.focusedId!==K?false:Y.name==="space"||Y.name==="return"||Y.name==="r"&&g.current?(H(),true):Y.name==="escape"&&T==="loaded"?(g.current=null,j("placeholder"),true):false;return I.registerInputHandler(K,te)},[I,b,i,R,H,T,j]),useEffect(()=>{h&&T==="placeholder"&&y&&y.innerWidth>0&&H();},[h,T,y,H]),useEffect(()=>{let K=P.current;return ()=>{d?.unregisterImage(K);}},[d]);let q,O;switch(T){case "placeholder":O=_?"\u{1F310}":"\u{1F5BC}\uFE0F",q=`${O} ${M}`;break;case "loading":O="\u23F3",q=`${O} Loading...`;break;case "loaded":q=null;break;case "preview":O="\u{1F441}\uFE0F",q=`${O} Previewing...`;break;case "error":O="\u274C",q=`${O} ${L||"Error"}`;break}let z={...{border:"round",borderColor:"blackBright",justifyContent:"center",alignItems:"center",...r,...t!==void 0?{width:t}:{},...n!==void 0?{height:n}:{}},...D&&o?o:{}},$={color:"blackBright",...s,...D?{color:"cyan"}:{}};return oe.createElement("box",{style:z,focusable:i,ref:K=>{K?(m.current=K,x.current=K.focusId,A(true)):(m.current=null,x.current=null,A(false));}},q!==null?oe.createElement("text",{style:$},q):null)}function Is(e){let t=useContext(X),[n]=useState(()=>`focus-${Math.random().toString(36).slice(2,9)}`),r=t?t.focusedId===n:false;useEffect(()=>{if(!(!t||!e?.current))return e.current.focusId=n,t.register(n,e.current)},[t,n,e]);let o=useMemo(()=>()=>{t?.requestFocus(n);},[t,n]);return {focused:r,focus:o}}function Rs(e={}){let{disabled:t,onFocus:n,onBlur:r,onKeyPress:o}=e,s=useContext(X),i=useContext(J),c=useRef(null),l=useRef(null),[u,f]=useState(false),h=useRef(n),b=useRef(r),I=useRef(o);h.current=n,b.current=r,I.current=o;let v=useCallback(m=>{c.current=m,m?l.current=m.focusId??null:l.current=null;},[]);useEffect(()=>{if(!(!s||!l.current||!c.current))return s.register(l.current,c.current)},[s]),useEffect(()=>{!s||!l.current||s.setSkippable(l.current,!!t);},[s,t]),useEffect(()=>{if(!s||!l.current)return;let m=l.current,x=s.focusedId===m;return f(x),s.onFocusChange(P=>{let R=P===m;f(A=>(R&&!A?h.current?.():!R&&A&&b.current?.(),R));})},[s]),useEffect(()=>{if(!i||!l.current||t)return;let m=l.current,x=P=>s?.focusedId!==m?false:I.current?.(P)===true;return i.registerInputHandler(m,x)},[i,s,t]);let d=useCallback(()=>{s&&l.current&&s.requestFocus(l.current);},[s]);return {ref:v,isFocused:u,focus:d,focusId:l.current}}function Ps(){let e=useContext(Re);if(!e)throw new Error("useApp must be used within a Glyph render tree");return {exit:e.exit,get columns(){return e.columns},get rows(){return e.rows}}}function Fs(){let e=useContext(X),t=useContext(ie),[n,r]=useState([]),o=useRef(()=>{}),s=useCallback(()=>{if(!e)return;let c=(e.getActiveElements?.()??e.getRegisteredElements?.()??[]).map(({id:l,node:u})=>({id:l,node:u,layout:t?.getLayout(u)??u.layout,type:u.type}));c.sort((l,u)=>l.layout.y!==u.layout.y?l.layout.y-u.layout.y:l.layout.x-u.layout.x),r(c);},[e,t]);return o.current=s,useEffect(()=>{if(!e)return;s();let i=e.onFocusChange(()=>{s();}),c=setTimeout(s,50);return ()=>{i(),clearTimeout(c);}},[e,t,s]),e?{elements:n,focusedId:e.focusedId,requestFocus:e.requestFocus,focusNext:e.focusNext,focusPrev:e.focusPrev,refresh:()=>o.current()}:null}function Gs(e){let t=[];for(let n of e)switch(n){case "9":t.push({type:"digit",char:n});break;case "a":t.push({type:"letter",char:n});break;case "*":t.push({type:"alphanumeric",char:n});break;default:t.push({type:"literal",char:n});break}return t}function Ls(e,t){switch(t){case "digit":return /\d/.test(e);case "letter":return /[a-zA-Z]/.test(e);case "alphanumeric":return /[a-zA-Z0-9]/.test(e);case "literal":return true}}function le(e){let t=typeof e=="string"?{mask:e}:e,{mask:n,placeholder:r="_",showPlaceholder:o=false}=t,s=Gs(n);return (i,c)=>{let l=[];for(let h of i)(h!==r&&!/[\s\-\(\)\/\.\:]/.test(h)||/[a-zA-Z0-9]/.test(h))&&/[a-zA-Z0-9]/.test(h)&&l.push(h);let u="",f=0;for(let h of s)if(h.type==="literal")(f<l.length||o)&&(u+=h.char);else if(f<l.length){let b=l[f];if(Ls(b,h.type))u+=b,f++;else {f++;continue}}else o&&(u+=r);return u}}var Ms={usPhone:le("(999) 999-9999"),intlPhone:le("+9 999 999 9999"),dateUS:le("99/99/9999"),dateEU:le("99/99/9999"),dateISO:le("9999-99-99"),time:le("99:99"),timeFull:le("99:99:99"),creditCard:le("9999 9999 9999 9999"),ssn:le("999-99-9999"),zip:le("99999"),zipPlus4:le("99999-9999"),ipv4:le("999.999.999.999"),mac:le("**:**:**:**:**:**")};export{eo as Box,yo as Button,zo as Checkbox,Qo as DialogHost,Nt as FocusScope,xs as Image,so as Input,rs as JumpNav,po as Keybind,Ht as List,Po as Menu,ho as Portal,Bo as Progress,Uo as Radio,ko as ScrollView,qo as Select,uo as Spacer,Mo as Spinner,ro as Text,Wo as ToastHost,le as createMask,Me as detectTerminalCapabilities,Ms as masks,Rt as parseAnsi,Yr as render,kt as stripAnsi,Pt as supportsInlineImages,Ps as useApp,Yo as useDialog,Is as useFocus,Fs as useFocusRegistry,Rs as useFocusable,Ve as useInput,me as useLayout,Do as useToast};//# sourceMappingURL=index.js.map
|
|
18
|
+
'`,{stdio:"ignore"});}function ys(e){return new Promise((t,n)=>{let r=platform(),o,s;r==="linux"?(o="xdg-open",s=[e]):r==="win32"?(o="cmd",s=["/c","start",'""',e]):(o="open",s=[e]);let i=spawn(o,s,{detached:true,stdio:["ignore","ignore","ignore"]});i.unref(),i.on("error",c=>{n(new Error(`Failed to open preview: ${c.message}`));}),setTimeout(t,100);})}function xs({src:e,width:t,height:n,style:r,focusedStyle:o,placeholderStyle:s,focusable:i=true,inline:c=true,placeholder:l,onStateChange:u,onError:f,autoLoad:h=false}){let b=useContext(X),I=useContext(J),v=useContext(ie),d=useContext(it),m=useRef(null),x=useRef(null),P=useRef(Math.floor(Math.random()*1e6)),[R,A]=useState(false),[D,B]=useState(false),[T,N]=useState("placeholder"),[L,C]=useState(null),[y,S]=useState(null),g=useRef(null),M=l||tn(e),_=mt(e),j=useCallback(K=>{N(K),u?.(K);},[u]);useEffect(()=>{if(!(!b||!x.current||!m.current||!i))return b.register(x.current,m.current)},[b,i,R]),useEffect(()=>{if(!b||!x.current)return;let K=x.current;return B(b.focusedId===K),b.onFocusChange(te=>{B(te===K);})},[b,R]),useEffect(()=>{if(!(!v||!m.current))return S(v.getLayout(m.current)),v.subscribe(m.current,S)},[v,R]),useEffect(()=>{if(!d||T!=="loaded"||!g.current||!y)return;let{data:K,cellWidth:te,cellHeight:Y}=g.current,se=P.current;return d.registerImage({id:se,data:K,x:y.innerX,y:y.innerY,width:te,height:Y}),()=>{d.unregisterImage(se);}},[d,T,y]);let H=useCallback(async()=>{if(T!=="loading"){j("loading"),C(null);try{let K=await ar(e);if(c&&Pt()&&y){let Y=ht(K.data),se=K.data;if(Y!=="png"){let a=ur(K.data);if(!a){j("preview"),await nn(K.localPath),j("placeholder");return}se=a;}let ee=t??y.innerWidth,E=n??y.innerHeight;if(ee<=0||E<=0)throw new Error("Image area too small");g.current={data:se,localPath:K.localPath,cellWidth:ee,cellHeight:E},j("loaded");}else j("preview"),await nn(K.localPath),j("placeholder");}catch(K){let te=K instanceof Error?K:new Error(String(K));C(te.message),j("error"),f?.(te);}}},[e,T,c,y,t,n,j,f]);useEffect(()=>{if(!I||!x.current||!i)return;let K=x.current,te=Y=>b?.focusedId!==K?false:Y.name==="space"||Y.name==="return"||Y.name==="r"&&g.current?(H(),true):Y.name==="escape"&&T==="loaded"?(g.current=null,j("placeholder"),true):false;return I.registerInputHandler(K,te)},[I,b,i,R,H,T,j]),useEffect(()=>{h&&T==="placeholder"&&y&&y.innerWidth>0&&H();},[h,T,y,H]),useEffect(()=>{let K=P.current;return ()=>{d?.unregisterImage(K);}},[d]);let q,O;switch(T){case "placeholder":O=_?"\u{1F310}":"\u{1F5BC}\uFE0F",q=`${O} ${M}`;break;case "loading":O="\u23F3",q=`${O} Loading...`;break;case "loaded":q=null;break;case "preview":O="\u{1F441}\uFE0F",q=`${O} Previewing...`;break;case "error":O="\u274C",q=`${O} ${L||"Error"}`;break}let z={...{border:"round",borderColor:"blackBright",justifyContent:"center",alignItems:"center",...r,...t!==void 0?{width:t}:{},...n!==void 0?{height:n}:{}},...D?{borderColor:"cyan"}:{},...D&&o?o:{}},$={color:"blackBright",...s,...D?{color:"cyan"}:{}};return oe.createElement("box",{style:z,focusable:i,ref:K=>{K?(m.current=K,x.current=K.focusId,A(true)):(m.current=null,x.current=null,A(false));}},q!==null?oe.createElement("text",{style:$},q):null)}function Is(e){let t=useContext(X),[n]=useState(()=>`focus-${Math.random().toString(36).slice(2,9)}`),r=t?t.focusedId===n:false;useEffect(()=>{if(!(!t||!e?.current))return e.current.focusId=n,t.register(n,e.current)},[t,n,e]);let o=useMemo(()=>()=>{t?.requestFocus(n);},[t,n]);return {focused:r,focus:o}}function Rs(e={}){let{disabled:t,onFocus:n,onBlur:r,onKeyPress:o}=e,s=useContext(X),i=useContext(J),c=useRef(null),l=useRef(null),[u,f]=useState(false),h=useRef(n),b=useRef(r),I=useRef(o);h.current=n,b.current=r,I.current=o;let v=useCallback(m=>{c.current=m,m?l.current=m.focusId??null:l.current=null;},[]);useEffect(()=>{if(!(!s||!l.current||!c.current))return s.register(l.current,c.current)},[s]),useEffect(()=>{!s||!l.current||s.setSkippable(l.current,!!t);},[s,t]),useEffect(()=>{if(!s||!l.current)return;let m=l.current,x=s.focusedId===m;return f(x),s.onFocusChange(P=>{let R=P===m;f(A=>(R&&!A?h.current?.():!R&&A&&b.current?.(),R));})},[s]),useEffect(()=>{if(!i||!l.current||t)return;let m=l.current,x=P=>s?.focusedId!==m?false:I.current?.(P)===true;return i.registerInputHandler(m,x)},[i,s,t]);let d=useCallback(()=>{s&&l.current&&s.requestFocus(l.current);},[s]);return {ref:v,isFocused:u,focus:d,focusId:l.current}}function Ps(){let e=useContext(Re);if(!e)throw new Error("useApp must be used within a Glyph render tree");return {exit:e.exit,get columns(){return e.columns},get rows(){return e.rows}}}function Fs(){let e=useContext(X),t=useContext(ie),[n,r]=useState([]),o=useRef(()=>{}),s=useCallback(()=>{if(!e)return;let c=(e.getActiveElements?.()??e.getRegisteredElements?.()??[]).map(({id:l,node:u})=>({id:l,node:u,layout:t?.getLayout(u)??u.layout,type:u.type}));c.sort((l,u)=>l.layout.y!==u.layout.y?l.layout.y-u.layout.y:l.layout.x-u.layout.x),r(c);},[e,t]);return o.current=s,useEffect(()=>{if(!e)return;s();let i=e.onFocusChange(()=>{s();}),c=setTimeout(s,50);return ()=>{i(),clearTimeout(c);}},[e,t,s]),e?{elements:n,focusedId:e.focusedId,requestFocus:e.requestFocus,focusNext:e.focusNext,focusPrev:e.focusPrev,refresh:()=>o.current()}:null}function Gs(e){let t=[];for(let n of e)switch(n){case "9":t.push({type:"digit",char:n});break;case "a":t.push({type:"letter",char:n});break;case "*":t.push({type:"alphanumeric",char:n});break;default:t.push({type:"literal",char:n});break}return t}function Ls(e,t){switch(t){case "digit":return /\d/.test(e);case "letter":return /[a-zA-Z]/.test(e);case "alphanumeric":return /[a-zA-Z0-9]/.test(e);case "literal":return true}}function le(e){let t=typeof e=="string"?{mask:e}:e,{mask:n,placeholder:r="_",showPlaceholder:o=false}=t,s=Gs(n);return (i,c)=>{let l=[];for(let h of i)(h!==r&&!/[\s\-\(\)\/\.\:]/.test(h)||/[a-zA-Z0-9]/.test(h))&&/[a-zA-Z0-9]/.test(h)&&l.push(h);let u="",f=0;for(let h of s)if(h.type==="literal")(f<l.length||o)&&(u+=h.char);else if(f<l.length){let b=l[f];if(Ls(b,h.type))u+=b,f++;else {f++;continue}}else o&&(u+=r);return u}}var Ms={usPhone:le("(999) 999-9999"),intlPhone:le("+9 999 999 9999"),dateUS:le("99/99/9999"),dateEU:le("99/99/9999"),dateISO:le("9999-99-99"),time:le("99:99"),timeFull:le("99:99:99"),creditCard:le("9999 9999 9999 9999"),ssn:le("999-99-9999"),zip:le("99999"),zipPlus4:le("99999-9999"),ipv4:le("999.999.999.999"),mac:le("**:**:**:**:**:**")};export{eo as Box,yo as Button,zo as Checkbox,Qo as DialogHost,Nt as FocusScope,xs as Image,so as Input,rs as JumpNav,po as Keybind,Ht as List,Po as Menu,ho as Portal,Bo as Progress,Uo as Radio,ko as ScrollView,qo as Select,uo as Spacer,Mo as Spinner,ro as Text,Wo as ToastHost,le as createMask,Me as detectTerminalCapabilities,Ms as masks,Rt as parseAnsi,Yr as render,kt as stripAnsi,Pt as supportsInlineImages,Ps as useApp,Yo as useDialog,Is as useFocus,Fs as useFocusRegistry,Rs as useFocusable,Ve as useInput,me as useLayout,Do as useToast};//# sourceMappingURL=index.js.map
|
|
19
19
|
//# sourceMappingURL=index.js.map
|