@sanity/code-input 3.0.0 → 3.0.1

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/lib/index.esm.js CHANGED
@@ -1,2 +1,2 @@
1
- var e,n,t,r;function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}import{useColorScheme as s,set as c,setIfMissing as d,unset as u,MemberField as h,defineType as g,definePlugin as m}from"sanity";import{CodeBlockIcon as v}from"@sanity/icons";import{jsx as p,jsxs as f}from"react/jsx-runtime";import b,{useState as w,useEffect as y,useRef as x,useMemo as O,useImperativeHandle as z,useCallback as j,Suspense as k}from"react";import{Card as S,Select as P,Stack as L,Box as M}from"@sanity/ui";import C,{css as F}from"styled-components";const _=F(e||(e=a(["\n .ace_editor_markers_highlight {\n position: absolute;\n background-color: ",";\n opacity: 0.2;\n width: 100% !important;\n border-radius: 0 !important;\n }\n"])),(e=>{let{theme:n}=e;return n.sanity.color.solid.primary.enabled.bg}));function A(e){return e.map((e=>({startRow:Number(e)-1,startCol:0,endRow:Number(e)-1,endCol:1/0,className:"ace_editor_markers_highlight",type:"screenLine",inFront:!0})))}const B=[{title:"Batch file",value:"batchfile"},{title:"C#",value:"csharp"},{title:"CSS",value:"css"},{title:"Go",value:"golang"},{title:"GROQ",value:"groq"},{title:"HTML",value:"html"},{title:"Java",value:"java"},{title:"JavaScript",value:"javascript"},{title:"JSON",value:"json"},{title:"JSX",value:"jsx"},{title:"Markdown",value:"markdown"},{title:"MySQL",value:"mysql"},{title:"PHP",value:"php"},{title:"Plain text",value:"text"},{title:"Python",value:"python"},{title:"Ruby",value:"ruby"},{title:"SASS",value:"sass"},{title:"SCSS",value:"scss"},{title:"sh",value:"sh"},{title:"TSX",value:"tsx"},{title:"TypeScript",value:"typescript"},{title:"XML",value:"xml"},{title:"YAML",value:"yaml"}],T={js:"javascript"},I=["github","monokai","terminal","tomorrow"],H={useSoftTabs:!0,navigateWithinSoftTabs:!0},R={$blockScrolling:!0},D=["code"],E=b.lazy((()=>import("./_chunks/editorSupport-895caf32.esm.js")));function G(){const[e,n]=w(!1);return y((()=>{requestAnimationFrame((()=>n(!0)))}),[]),e?E:null}const U=C(S)(n||(n=a(["\n position: relative;\n box-sizing: border-box;\n overflow: hidden;\n z-index: 0;\n\n .ace_editor {\n font-family: ",";\n font-size: ",";\n line-height: inherit;\n }\n\n ","\n\n &:not([disabled]):not([readonly]) {\n &:focus,\n &:focus-within {\n box-shadow: 0 0 0 2px ",";\n background-color: ",";\n border-color: ",";\n }\n }\n"])),(e=>{let{theme:n}=e;return n.sanity.fonts.code.family}),(e=>{let{theme:n}=e;return n.sanity.fonts.code.sizes[1]}),_,(e=>{let{theme:n}=e;return n.sanity.color.base.focusRing}),(e=>{let{theme:n}=e;return n.sanity.color.base.bg}),(e=>{let{theme:n}=e;return n.sanity.color.base.focusRing}));const J=C(M)(t||(t=a(["\n position: relative;\n"]))),N=C(M)(r||(r=a(["\n background-color: #272822;\n\n .ace_editor {\n box-sizing: border-box;\n cursor: default;\n pointer-events: none;\n }\n\n .ace_content {\n box-sizing: border-box;\n overflow: hidden;\n }\n"])));function X(e){var n;const t=x();y((()=>{var e;if(!(null==t?void 0:t.current))return;const n=null==(e=t.current)?void 0:e.editor;n&&(n.renderer.$cursorLayer.element.style.opacity=0,n.textInput.getElement().disabled=!0)}),[]);const r=j((()=>{}),[]),{value:i,type:l}=e,o=null==(n=null==l?void 0:l.options)?void 0:n.language,a=null==i?void 0:i.selection,s=(null==a?void 0:a.language)||o||"text",c=G();return p(J,{children:p(N,{padding:4,children:c&&p(k,{fallback:p("div",{children:"Loading code preview..."}),children:p(c,{ref:t,focus:!1,mode:s,theme:"monokai",width:"100%",onChange:r,maxLines:200,readOnly:!0,wrapEnabled:!0,showPrintMargin:!1,highlightActiveLine:!1,cursorStart:-1,value:(null==a?void 0:a.code)||"",markers:(null==a?void 0:a.highlightedLines)?A(a.highlightedLines):void 0,tabSize:2,showGutter:!1,setOptions:H,editorProps:R})})})})}const q="code",Q=g(l(l({name:"code",type:"object",title:"Code"},{components:{input:function(e){var n,t;const{members:r,elementProps:i,onChange:o,readOnly:a,renderField:g,renderInput:m,renderItem:v,renderPreview:b,schemaType:w,value:S,onPathFocus:M}=e,C=x(),F=O((()=>r.filter((e=>"field"===e.kind))),[r]),_=F.find((e=>"language"===e.name)),E=F.find((e=>"filename"===e.name)),J=F.find((e=>"code"===e.name));z(i.ref,(()=>({focus:()=>{var e,n;null==(n=null==(e=null==C?void 0:C.current)?void 0:e.editor)||n.focus()}})));const N=j((()=>{M(D)}),[M]),{scheme:X}=s(),q=O((()=>{var e,n;const t="light"===X,r=t?null==(e=w.options)?void 0:e.theme:null==(n=w.options)?void 0:n.darkTheme,i=t?"tomorrow":"monokai";return r&&I.find((e=>e===r))?r:i}),[w,X]),Q=j((e=>{var n,t;const r=null==(t=null==(n=C.current)?void 0:n.editor)?void 0:t.getSession(),i=null==r?void 0:r.getMarkers(!0),l=Object.keys(i).filter((e=>"screenLine"===i[e].type)).map((e=>i[e].range.start.row)),a=l.indexOf(e);a>-1?l.splice(a,1):(l.push(e),l.sort()),o(c(l.map((e=>e+1)),["highlightedLines"]))}),[C,o]),$=j((e=>{if(e.domEvent.target.classList.contains("ace_gutter-cell")){const n=e.getDocumentPosition().row;Q(n)}}),[Q]);y((()=>{var e;const n=null==(e=null==C?void 0:C.current)?void 0:e.editor;return()=>{var e;null==(e=null==n?void 0:n.session)||e.removeListener("guttermousedown",$)}}),[C,$]);const W=j((e=>{null==e||e.on("guttermousedown",$)}),[$]),Y=j((()=>{var e;const n=null==(e=w.options)?void 0:e.languageAlternatives;if(!n)return B;if(!Array.isArray(n))throw new Error("'options.languageAlternatives' should be an array, got ".concat(typeof n));return n.reduce(((e,n)=>{let{title:t,value:r,mode:i}=n;const l=T[r];return l?(console.warn('\'options.languageAlternatives\' lists a language with value "%s", which is an alias of "%s" - please replace the value to read "%s"',r,l,l),e.concat({title:t,value:l,mode:i})):(i||B.find((e=>e.value===r))||console.warn("'options.languageAlternatives' lists a language which is not supported: \"%s\", syntax highlighting will be disabled.",r),e.concat({title:t,value:r,mode:i}))}),[])}),[w]),K=j((e=>{var n;const t=D,r=null==(n=w.options)?void 0:n.language;o([d({_type:w.name,language:r}),e?c(e,t):u(t)])}),[o,w]),V=Y().slice(),Z=null==(n=w.options)?void 0:n.language,ee=(null==S?void 0:S.language)||Z,ne=V.find((e=>e.value===ee)),te=ee&&function(e){const n=T[e];return n||!!B.find((n=>n.value===e))&&e}(ee),re=(null==ne?void 0:ne.mode)||(te?ee:"text"),ie=j((e=>p(P,l(l({},e),{},{onChange:n=>{const t=n.currentTarget.value;e.onChange(t?c(t):u())},children:V.map((e=>p("option",{value:e.value,children:e.title},e.value)))}))),[V]),le=G(),oe=j((e=>p(U,{radius:1,shadow:1,readOnly:a,children:le&&p(k,{fallback:p("div",{children:"Loading code editor..."}),children:p(le,{ref:C,mode:re,theme:q,width:"100%",onChange:K,name:e.id,value:e.value,markers:S&&S.highlightedLines?A(S.highlightedLines):void 0,onLoad:W,readOnly:a,tabSize:2,wrapEnabled:!0,setOptions:H,editorProps:R,onFocus:N,onBlur:i.onBlur})})})),[le,q,K,N,W,re,i.onBlur,a,S]);return f(L,{space:4,children:[_&&p(h,{member:_,renderItem:v,renderField:g,renderInput:ie,renderPreview:b}),(null==(t=w.options)?void 0:t.withFilename)&&E&&p(h,{member:E,renderItem:v,renderField:g,renderInput:m,renderPreview:b}),J&&p(h,{member:J,renderInput:oe,renderItem:v,renderField:g,renderPreview:b})]})},preview:X}}),{},{icon:v,fields:[{name:"language",title:"Language",type:"string"},{name:"filename",title:"Filename",type:"string"},{title:"Code",name:"code",type:"text"},{title:"Highlighted lines",name:"highlightedLines",type:"array",of:[{type:"number",title:"Highlighted line"}]}],preview:{select:{language:"language",code:"code",filename:"filename",highlightedLines:"highlightedLines"},prepare:e=>{return{title:e.filename||(e.language||"unknown").toUpperCase(),media:(n=null==e?void 0:e.language,"jsx"===n?p("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",children:f("g",{fill:"#61DAFB",children:[p("circle",{cx:"64",cy:"64",r:"11.4"}),p("path",{d:"M107.3 45.2c-2.2-.8-4.5-1.6-6.9-2.3.6-2.4 1.1-4.8 1.5-7.1 2.1-13.2-.2-22.5-6.6-26.1-1.9-1.1-4-1.6-6.4-1.6-7 0-15.9 5.2-24.9 13.9-9-8.7-17.9-13.9-24.9-13.9-2.4 0-4.5.5-6.4 1.6-6.4 3.7-8.7 13-6.6 26.1.4 2.3.9 4.7 1.5 7.1-2.4.7-4.7 1.4-6.9 2.3C8.2 50 1.4 56.6 1.4 64s6.9 14 19.3 18.8c2.2.8 4.5 1.6 6.9 2.3-.6 2.4-1.1 4.8-1.5 7.1-2.1 13.2.2 22.5 6.6 26.1 1.9 1.1 4 1.6 6.4 1.6 7.1 0 16-5.2 24.9-13.9 9 8.7 17.9 13.9 24.9 13.9 2.4 0 4.5-.5 6.4-1.6 6.4-3.7 8.7-13 6.6-26.1-.4-2.3-.9-4.7-1.5-7.1 2.4-.7 4.7-1.4 6.9-2.3 12.5-4.8 19.3-11.4 19.3-18.8s-6.8-14-19.3-18.8zM92.5 14.7c4.1 2.4 5.5 9.8 3.8 20.3-.3 2.1-.8 4.3-1.4 6.6-5.2-1.2-10.7-2-16.5-2.5-3.4-4.8-6.9-9.1-10.4-13 7.4-7.3 14.9-12.3 21-12.3 1.3 0 2.5.3 3.5.9zM81.3 74c-1.8 3.2-3.9 6.4-6.1 9.6-3.7.3-7.4.4-11.2.4-3.9 0-7.6-.1-11.2-.4-2.2-3.2-4.2-6.4-6-9.6-1.9-3.3-3.7-6.7-5.3-10 1.6-3.3 3.4-6.7 5.3-10 1.8-3.2 3.9-6.4 6.1-9.6 3.7-.3 7.4-.4 11.2-.4 3.9 0 7.6.1 11.2.4 2.2 3.2 4.2 6.4 6 9.6 1.9 3.3 3.7 6.7 5.3 10-1.7 3.3-3.4 6.6-5.3 10zm8.3-3.3c1.5 3.5 2.7 6.9 3.8 10.3-3.4.8-7 1.4-10.8 1.9 1.2-1.9 2.5-3.9 3.6-6 1.2-2.1 2.3-4.2 3.4-6.2zM64 97.8c-2.4-2.6-4.7-5.4-6.9-8.3 2.3.1 4.6.2 6.9.2 2.3 0 4.6-.1 6.9-.2-2.2 2.9-4.5 5.7-6.9 8.3zm-18.6-15c-3.8-.5-7.4-1.1-10.8-1.9 1.1-3.3 2.3-6.8 3.8-10.3 1.1 2 2.2 4.1 3.4 6.1 1.2 2.2 2.4 4.1 3.6 6.1zm-7-25.5c-1.5-3.5-2.7-6.9-3.8-10.3 3.4-.8 7-1.4 10.8-1.9-1.2 1.9-2.5 3.9-3.6 6-1.2 2.1-2.3 4.2-3.4 6.2zM64 30.2c2.4 2.6 4.7 5.4 6.9 8.3-2.3-.1-4.6-.2-6.9-.2-2.3 0-4.6.1-6.9.2 2.2-2.9 4.5-5.7 6.9-8.3zm22.2 21l-3.6-6c3.8.5 7.4 1.1 10.8 1.9-1.1 3.3-2.3 6.8-3.8 10.3-1.1-2.1-2.2-4.2-3.4-6.2zM31.7 35c-1.7-10.5-.3-17.9 3.8-20.3 1-.6 2.2-.9 3.5-.9 6 0 13.5 4.9 21 12.3-3.5 3.8-7 8.2-10.4 13-5.8.5-11.3 1.4-16.5 2.5-.6-2.3-1-4.5-1.4-6.6zM7 64c0-4.7 5.7-9.7 15.7-13.4 2-.8 4.2-1.5 6.4-2.1 1.6 5 3.6 10.3 6 15.6-2.4 5.3-4.5 10.5-6 15.5C15.3 75.6 7 69.6 7 64zm28.5 49.3c-4.1-2.4-5.5-9.8-3.8-20.3.3-2.1.8-4.3 1.4-6.6 5.2 1.2 10.7 2 16.5 2.5 3.4 4.8 6.9 9.1 10.4 13-7.4 7.3-14.9 12.3-21 12.3-1.3 0-2.5-.3-3.5-.9zM96.3 93c1.7 10.5.3 17.9-3.8 20.3-1 .6-2.2.9-3.5.9-6 0-13.5-4.9-21-12.3 3.5-3.8 7-8.2 10.4-13 5.8-.5 11.3-1.4 16.5-2.5.6 2.3 1 4.5 1.4 6.6zm9-15.6c-2 .8-4.2 1.5-6.4 2.1-1.6-5-3.6-10.3-6-15.6 2.4-5.3 4.5-10.5 6-15.5 13.8 4 22.1 10 22.1 15.6 0 4.7-5.8 9.7-15.7 13.4z"})]})}):"javascript"===n?f("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",children:[p("path",{fill:"#F0DB4F",d:"M1.408 1.408h125.184v125.185H1.408z"}),p("path",{fill:"#323330",d:"M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581zM69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237z"})]}):"php"===n?p("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 800 400",children:p("g",{transform:"translate(-44.632 -141.55)",children:f("g",{transform:"matrix(8.3528 0 0 8.3119 -727.13 -3759.5)",children:[p("path",{d:"m99.974 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79504 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21198 0.0353 0.42398 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053"}),p("path",{d:"m133.49 469.36h7.314l-2.067 10.123h6.572c3.604 0.0707 6.2893 0.81269 8.056 2.226 1.802 1.4134 2.332 4.0987 1.59 8.056l-3.551 17.649h-7.42l3.392-16.854c0.35328-1.7666 0.2473-3.021-0.318-3.763-0.56536-0.74198-1.7844-1.113-3.657-1.113l-5.883-0.053-4.346 21.783h-7.314l7.632-38.054"}),p("path",{d:"m162.81 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79503 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21199 0.0353 0.42399 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053"})]})})}):"json"===n?f("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:"0 0 160 160",children:[f("defs",{children:[f("linearGradient",{id:"a",children:[p("stop",{offset:"0"}),p("stop",{offset:"1",stopColor:"#fff"})]}),p("linearGradient",{x1:"-553.27",y1:"525.908",x2:"-666.116",y2:"413.045",id:"c",xlinkHref:"#a",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(.99884 0 0 .9987 689.008 -388.844)"}),p("linearGradient",{x1:"-666.117",y1:"413.045",x2:"-553.27",y2:"525.908",id:"b",xlinkHref:"#a",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(.99884 0 0 .9987 689.008 -388.844)"})]}),p("path",{d:"M79.865 119.1c35.397 48.255 70.04-13.469 69.988-50.587-.06-43.886-44.54-68.414-70.017-68.414C38.943.1 0 33.895 0 80.135 0 131.531 44.64 160 79.836 160c-7.965-1.147-34.507-6.834-34.863-67.967-.24-41.346 13.487-57.865 34.805-50.599.477.177 23.514 9.265 23.514 38.95 0 29.56-23.427 38.716-23.427 38.716z",style:{marker:"none"},color:"#000",fill:"url(#b)",fillRule:"evenodd",overflow:"visible"}),p("path",{d:"M79.823 41.4C56.433 33.34 27.78 52.618 27.78 91.23c0 63.048 46.72 68.77 52.384 68.77C121.057 160 160 126.204 160 79.964 160 28.568 115.36.1 80.164.1c9.749-1.35 52.541 10.55 52.541 69.037 0 38.141-31.953 58.905-52.735 50.033-.478-.177-23.514-9.264-23.514-38.95 0-29.56 23.367-38.818 23.367-38.818z",style:{marker:"none"},color:"#000",fill:"url(#c)",fillRule:"evenodd",overflow:"visible"})]}):void 0),selection:e};var n}}})),$=m({name:"@sanity/code-input",schema:{types:[Q]}});export{X as PreviewCode,$ as codeInput,Q as codeSchema,q as codeTypeName};
1
+ var e,n,t,r;function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){return n||(n=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(n)}}))}import{useColorScheme as s,set as c,setIfMissing as d,unset as u,MemberField as h,defineType as m,definePlugin as g}from"sanity";import{CodeBlockIcon as v}from"@sanity/icons";import{jsx as p,jsxs as f}from"react/jsx-runtime";import b,{useState as w,useEffect as y,useRef as x,useMemo as O,useImperativeHandle as z,useCallback as j,Suspense as k}from"react";import{Card as S,Select as P,Stack as L,Box as M}from"@sanity/ui";import C,{css as F}from"styled-components";const _=F(e||(e=a(["\n .ace_editor_markers_highlight {\n position: absolute;\n background-color: ",";\n opacity: 0.2;\n width: 100% !important;\n border-radius: 0 !important;\n }\n"])),(e=>{let{theme:n}=e;return n.sanity.color.solid.primary.enabled.bg}));function A(e){return e.map((e=>({startRow:Number(e)-1,startCol:0,endRow:Number(e)-1,endCol:1/0,className:"ace_editor_markers_highlight",type:"screenLine",inFront:!0})))}const T=[{title:"Batch file",value:"batchfile"},{title:"C#",value:"csharp"},{title:"CSS",value:"css"},{title:"Go",value:"golang"},{title:"GROQ",value:"groq"},{title:"HTML",value:"html"},{title:"Java",value:"java"},{title:"JavaScript",value:"javascript"},{title:"JSON",value:"json"},{title:"JSX",value:"jsx"},{title:"Markdown",value:"markdown"},{title:"MySQL",value:"mysql"},{title:"PHP",value:"php"},{title:"Plain text",value:"text"},{title:"Python",value:"python"},{title:"Ruby",value:"ruby"},{title:"SASS",value:"sass"},{title:"SCSS",value:"scss"},{title:"sh",value:"sh"},{title:"TSX",value:"tsx"},{title:"TypeScript",value:"typescript"},{title:"XML",value:"xml"},{title:"YAML",value:"yaml"}],B={js:"javascript"},I=["github","monokai","terminal","tomorrow"],H={useSoftTabs:!0,navigateWithinSoftTabs:!0},R={$blockScrolling:!0},D=["code"],E=b.lazy((()=>import("./_chunks/editorSupport-895caf32.esm.js")));function G(){const[e,n]=w(!1);return y((()=>{requestAnimationFrame((()=>n(!0)))}),[]),e?E:null}const U=C(S)(n||(n=a(["\n position: relative;\n box-sizing: border-box;\n overflow: hidden;\n z-index: 0;\n\n .ace_editor {\n font-family: ",";\n font-size: ",";\n line-height: inherit;\n }\n\n ","\n\n &:not([disabled]):not([readonly]) {\n &:focus,\n &:focus-within {\n box-shadow: 0 0 0 2px ",";\n background-color: ",";\n border-color: ",";\n }\n }\n"])),(e=>{let{theme:n}=e;return n.sanity.fonts.code.family}),(e=>{let{theme:n}=e;return n.sanity.fonts.code.sizes[1]}),_,(e=>{let{theme:n}=e;return n.sanity.color.base.focusRing}),(e=>{let{theme:n}=e;return n.sanity.color.base.bg}),(e=>{let{theme:n}=e;return n.sanity.color.base.focusRing}));const J=C(M)(t||(t=a(["\n position: relative;\n"]))),N=C(M)(r||(r=a(["\n background-color: #272822;\n\n .ace_editor {\n box-sizing: border-box;\n cursor: default;\n pointer-events: none;\n }\n\n .ace_content {\n box-sizing: border-box;\n overflow: hidden;\n }\n"])));function X(e){var n;const t=x();y((()=>{var e;if(!(null==t?void 0:t.current))return;const n=null==(e=t.current)?void 0:e.editor;n&&(n.renderer.$cursorLayer.element.style.opacity=0,n.textInput.getElement().disabled=!0)}),[]);const r=j((()=>{}),[]),{selection:i,schemaType:l}=e,o=null==(n=null==l?void 0:l.options)?void 0:n.language,a=(null==i?void 0:i.language)||o||"text",s=G();return p(J,{children:p(N,{padding:4,children:s&&p(k,{fallback:p("div",{children:"Loading code preview..."}),children:p(s,{ref:t,focus:!1,mode:a,theme:"monokai",width:"100%",onChange:r,maxLines:200,readOnly:!0,wrapEnabled:!0,showPrintMargin:!1,highlightActiveLine:!1,cursorStart:-1,value:(null==i?void 0:i.code)||"",markers:(null==i?void 0:i.highlightedLines)?A(i.highlightedLines):void 0,tabSize:2,showGutter:!1,setOptions:H,editorProps:R})})})})}const q="code",Q=m({name:"code",type:"object",title:"Code",components:{input:function(e){var n,t;const{members:r,elementProps:i,onChange:o,readOnly:a,renderField:m,renderInput:g,renderItem:v,renderPreview:b,schemaType:w,value:S,onPathFocus:M}=e,C=x(),F=O((()=>r.filter((e=>"field"===e.kind))),[r]),_=F.find((e=>"language"===e.name)),E=F.find((e=>"filename"===e.name)),J=F.find((e=>"code"===e.name));z(i.ref,(()=>({focus:()=>{var e,n;null==(n=null==(e=null==C?void 0:C.current)?void 0:e.editor)||n.focus()}})));const N=j((()=>{M(D)}),[M]),{scheme:X}=s(),q=O((()=>{var e,n;const t="light"===X,r=t?null==(e=w.options)?void 0:e.theme:null==(n=w.options)?void 0:n.darkTheme,i=t?"tomorrow":"monokai";return r&&I.find((e=>e===r))?r:i}),[w,X]),Q=j((e=>{var n,t;const r=null==(t=null==(n=C.current)?void 0:n.editor)?void 0:t.getSession(),i=null==r?void 0:r.getMarkers(!0),l=Object.keys(i).filter((e=>"screenLine"===i[e].type)).map((e=>i[e].range.start.row)),a=l.indexOf(e);a>-1?l.splice(a,1):(l.push(e),l.sort()),o(c(l.map((e=>e+1)),["highlightedLines"]))}),[C,o]),$=j((e=>{if(e.domEvent.target.classList.contains("ace_gutter-cell")){const n=e.getDocumentPosition().row;Q(n)}}),[Q]);y((()=>{var e;const n=null==(e=null==C?void 0:C.current)?void 0:e.editor;return()=>{var e;null==(e=null==n?void 0:n.session)||e.removeListener("guttermousedown",$)}}),[C,$]);const W=j((e=>{null==e||e.on("guttermousedown",$)}),[$]),Y=j((()=>{var e;const n=null==(e=w.options)?void 0:e.languageAlternatives;if(!n)return T;if(!Array.isArray(n))throw new Error("'options.languageAlternatives' should be an array, got ".concat(typeof n));return n.reduce(((e,n)=>{let{title:t,value:r,mode:i}=n;const l=B[r];return l?(console.warn('\'options.languageAlternatives\' lists a language with value "%s", which is an alias of "%s" - please replace the value to read "%s"',r,l,l),e.concat({title:t,value:l,mode:i})):(i||T.find((e=>e.value===r))||console.warn("'options.languageAlternatives' lists a language which is not supported: \"%s\", syntax highlighting will be disabled.",r),e.concat({title:t,value:r,mode:i}))}),[])}),[w]),K=j((e=>{var n;const t=D,r=null==(n=w.options)?void 0:n.language;o([d({_type:w.name,language:r}),e?c(e,t):u(t)])}),[o,w]),V=Y().slice(),Z=null==(n=w.options)?void 0:n.language,ee=(null==S?void 0:S.language)||Z,ne=V.find((e=>e.value===ee)),te=ee&&function(e){const n=B[e];return n||!!T.find((n=>n.value===e))&&e}(ee),re=(null==ne?void 0:ne.mode)||(te?ee:"text"),ie=j((e=>p(P,l(l({},e),{},{onChange:n=>{const t=n.currentTarget.value;e.onChange(t?c(t):u())},children:V.map((e=>p("option",{value:e.value,children:e.title},e.value)))}))),[V]),le=G(),oe=j((e=>p(U,{radius:1,shadow:1,readOnly:a,children:le&&p(k,{fallback:p("div",{children:"Loading code editor..."}),children:p(le,{ref:C,mode:re,theme:q,width:"100%",onChange:K,name:e.id,value:e.value,markers:S&&S.highlightedLines?A(S.highlightedLines):void 0,onLoad:W,readOnly:a,tabSize:2,wrapEnabled:!0,setOptions:H,editorProps:R,onFocus:N,onBlur:i.onBlur})})})),[le,q,K,N,W,re,i.onBlur,a,S]);return f(L,{space:4,children:[_&&p(h,{member:_,renderItem:v,renderField:m,renderInput:ie,renderPreview:b}),(null==(t=w.options)?void 0:t.withFilename)&&E&&p(h,{member:E,renderItem:v,renderField:m,renderInput:g,renderPreview:b}),J&&p(h,{member:J,renderInput:oe,renderItem:v,renderField:m,renderPreview:b})]})},preview:X},icon:v,fields:[{name:"language",title:"Language",type:"string"},{name:"filename",title:"Filename",type:"string"},{title:"Code",name:"code",type:"text"},{title:"Highlighted lines",name:"highlightedLines",type:"array",of:[{type:"number",title:"Highlighted line"}]}],preview:{select:{language:"language",code:"code",filename:"filename",highlightedLines:"highlightedLines"},prepare:e=>{return{title:e.filename||(e.language||"unknown").toUpperCase(),media:(n=null==e?void 0:e.language,"jsx"===n?p("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",children:f("g",{fill:"#61DAFB",children:[p("circle",{cx:"64",cy:"64",r:"11.4"}),p("path",{d:"M107.3 45.2c-2.2-.8-4.5-1.6-6.9-2.3.6-2.4 1.1-4.8 1.5-7.1 2.1-13.2-.2-22.5-6.6-26.1-1.9-1.1-4-1.6-6.4-1.6-7 0-15.9 5.2-24.9 13.9-9-8.7-17.9-13.9-24.9-13.9-2.4 0-4.5.5-6.4 1.6-6.4 3.7-8.7 13-6.6 26.1.4 2.3.9 4.7 1.5 7.1-2.4.7-4.7 1.4-6.9 2.3C8.2 50 1.4 56.6 1.4 64s6.9 14 19.3 18.8c2.2.8 4.5 1.6 6.9 2.3-.6 2.4-1.1 4.8-1.5 7.1-2.1 13.2.2 22.5 6.6 26.1 1.9 1.1 4 1.6 6.4 1.6 7.1 0 16-5.2 24.9-13.9 9 8.7 17.9 13.9 24.9 13.9 2.4 0 4.5-.5 6.4-1.6 6.4-3.7 8.7-13 6.6-26.1-.4-2.3-.9-4.7-1.5-7.1 2.4-.7 4.7-1.4 6.9-2.3 12.5-4.8 19.3-11.4 19.3-18.8s-6.8-14-19.3-18.8zM92.5 14.7c4.1 2.4 5.5 9.8 3.8 20.3-.3 2.1-.8 4.3-1.4 6.6-5.2-1.2-10.7-2-16.5-2.5-3.4-4.8-6.9-9.1-10.4-13 7.4-7.3 14.9-12.3 21-12.3 1.3 0 2.5.3 3.5.9zM81.3 74c-1.8 3.2-3.9 6.4-6.1 9.6-3.7.3-7.4.4-11.2.4-3.9 0-7.6-.1-11.2-.4-2.2-3.2-4.2-6.4-6-9.6-1.9-3.3-3.7-6.7-5.3-10 1.6-3.3 3.4-6.7 5.3-10 1.8-3.2 3.9-6.4 6.1-9.6 3.7-.3 7.4-.4 11.2-.4 3.9 0 7.6.1 11.2.4 2.2 3.2 4.2 6.4 6 9.6 1.9 3.3 3.7 6.7 5.3 10-1.7 3.3-3.4 6.6-5.3 10zm8.3-3.3c1.5 3.5 2.7 6.9 3.8 10.3-3.4.8-7 1.4-10.8 1.9 1.2-1.9 2.5-3.9 3.6-6 1.2-2.1 2.3-4.2 3.4-6.2zM64 97.8c-2.4-2.6-4.7-5.4-6.9-8.3 2.3.1 4.6.2 6.9.2 2.3 0 4.6-.1 6.9-.2-2.2 2.9-4.5 5.7-6.9 8.3zm-18.6-15c-3.8-.5-7.4-1.1-10.8-1.9 1.1-3.3 2.3-6.8 3.8-10.3 1.1 2 2.2 4.1 3.4 6.1 1.2 2.2 2.4 4.1 3.6 6.1zm-7-25.5c-1.5-3.5-2.7-6.9-3.8-10.3 3.4-.8 7-1.4 10.8-1.9-1.2 1.9-2.5 3.9-3.6 6-1.2 2.1-2.3 4.2-3.4 6.2zM64 30.2c2.4 2.6 4.7 5.4 6.9 8.3-2.3-.1-4.6-.2-6.9-.2-2.3 0-4.6.1-6.9.2 2.2-2.9 4.5-5.7 6.9-8.3zm22.2 21l-3.6-6c3.8.5 7.4 1.1 10.8 1.9-1.1 3.3-2.3 6.8-3.8 10.3-1.1-2.1-2.2-4.2-3.4-6.2zM31.7 35c-1.7-10.5-.3-17.9 3.8-20.3 1-.6 2.2-.9 3.5-.9 6 0 13.5 4.9 21 12.3-3.5 3.8-7 8.2-10.4 13-5.8.5-11.3 1.4-16.5 2.5-.6-2.3-1-4.5-1.4-6.6zM7 64c0-4.7 5.7-9.7 15.7-13.4 2-.8 4.2-1.5 6.4-2.1 1.6 5 3.6 10.3 6 15.6-2.4 5.3-4.5 10.5-6 15.5C15.3 75.6 7 69.6 7 64zm28.5 49.3c-4.1-2.4-5.5-9.8-3.8-20.3.3-2.1.8-4.3 1.4-6.6 5.2 1.2 10.7 2 16.5 2.5 3.4 4.8 6.9 9.1 10.4 13-7.4 7.3-14.9 12.3-21 12.3-1.3 0-2.5-.3-3.5-.9zM96.3 93c1.7 10.5.3 17.9-3.8 20.3-1 .6-2.2.9-3.5.9-6 0-13.5-4.9-21-12.3 3.5-3.8 7-8.2 10.4-13 5.8-.5 11.3-1.4 16.5-2.5.6 2.3 1 4.5 1.4 6.6zm9-15.6c-2 .8-4.2 1.5-6.4 2.1-1.6-5-3.6-10.3-6-15.6 2.4-5.3 4.5-10.5 6-15.5 13.8 4 22.1 10 22.1 15.6 0 4.7-5.8 9.7-15.7 13.4z"})]})}):"javascript"===n?f("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",children:[p("path",{fill:"#F0DB4F",d:"M1.408 1.408h125.184v125.185H1.408z"}),p("path",{fill:"#323330",d:"M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581zM69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237z"})]}):"php"===n?p("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 800 400",children:p("g",{transform:"translate(-44.632 -141.55)",children:f("g",{transform:"matrix(8.3528 0 0 8.3119 -727.13 -3759.5)",children:[p("path",{d:"m99.974 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79504 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21198 0.0353 0.42398 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053"}),p("path",{d:"m133.49 469.36h7.314l-2.067 10.123h6.572c3.604 0.0707 6.2893 0.81269 8.056 2.226 1.802 1.4134 2.332 4.0987 1.59 8.056l-3.551 17.649h-7.42l3.392-16.854c0.35328-1.7666 0.2473-3.021-0.318-3.763-0.56536-0.74198-1.7844-1.113-3.657-1.113l-5.883-0.053-4.346 21.783h-7.314l7.632-38.054"}),p("path",{d:"m162.81 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79503 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21199 0.0353 0.42399 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053"})]})})}):"json"===n?f("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:"0 0 160 160",children:[f("defs",{children:[f("linearGradient",{id:"a",children:[p("stop",{offset:"0"}),p("stop",{offset:"1",stopColor:"#fff"})]}),p("linearGradient",{x1:"-553.27",y1:"525.908",x2:"-666.116",y2:"413.045",id:"c",xlinkHref:"#a",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(.99884 0 0 .9987 689.008 -388.844)"}),p("linearGradient",{x1:"-666.117",y1:"413.045",x2:"-553.27",y2:"525.908",id:"b",xlinkHref:"#a",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(.99884 0 0 .9987 689.008 -388.844)"})]}),p("path",{d:"M79.865 119.1c35.397 48.255 70.04-13.469 69.988-50.587-.06-43.886-44.54-68.414-70.017-68.414C38.943.1 0 33.895 0 80.135 0 131.531 44.64 160 79.836 160c-7.965-1.147-34.507-6.834-34.863-67.967-.24-41.346 13.487-57.865 34.805-50.599.477.177 23.514 9.265 23.514 38.95 0 29.56-23.427 38.716-23.427 38.716z",style:{marker:"none"},color:"#000",fill:"url(#b)",fillRule:"evenodd",overflow:"visible"}),p("path",{d:"M79.823 41.4C56.433 33.34 27.78 52.618 27.78 91.23c0 63.048 46.72 68.77 52.384 68.77C121.057 160 160 126.204 160 79.964 160 28.568 115.36.1 80.164.1c9.749-1.35 52.541 10.55 52.541 69.037 0 38.141-31.953 58.905-52.735 50.033-.478-.177-23.514-9.264-23.514-38.95 0-29.56 23.367-38.818 23.367-38.818z",style:{marker:"none"},color:"#000",fill:"url(#c)",fillRule:"evenodd",overflow:"visible"})]}):void 0),selection:e};var n}}}),$=g({name:"@sanity/code-input",schema:{types:[Q]}});export{X as PreviewCode,$ as codeInput,Q as codeSchema,q as codeTypeName};
2
2
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/createHighlightMarkers.ts","../src/config.ts","../src/ace-editor/AceEditorLazy.tsx","../src/CodeInput.tsx","../src/PreviewCode.tsx","../src/schema.tsx","../src/getMedia.tsx","../src/index.ts"],"sourcesContent":["import type {IMarker} from 'react-ace'\nimport {css} from 'styled-components'\n\nexport const highlightMarkersCSS = css`\n .ace_editor_markers_highlight {\n position: absolute;\n background-color: ${({theme}) => theme.sanity.color.solid.primary.enabled.bg};\n opacity: 0.2;\n width: 100% !important;\n border-radius: 0 !important;\n }\n`\n\nexport default function createHighlightMarkers(rows: number[]): IMarker[] {\n return rows.map((row) => ({\n startRow: Number(row) - 1,\n startCol: 0,\n endRow: Number(row) - 1,\n endCol: +Infinity,\n className: 'ace_editor_markers_highlight',\n type: 'screenLine',\n inFront: true,\n }))\n}\n","import {CodeInputLanguage} from './types'\n\n// NOTE: MAKE SURE THESE ALIGN WITH IMPORTS IN ./ace-editor/editorSupport\nexport const SUPPORTED_LANGUAGES: CodeInputLanguage[] = [\n {title: 'Batch file', value: 'batchfile'},\n {title: 'C#', value: 'csharp'},\n {title: 'CSS', value: 'css'},\n {title: 'Go', value: 'golang'},\n {title: 'GROQ', value: 'groq'},\n {title: 'HTML', value: 'html'},\n {title: 'Java', value: 'java'},\n {title: 'JavaScript', value: 'javascript'},\n {title: 'JSON', value: 'json'},\n {title: 'JSX', value: 'jsx'},\n {title: 'Markdown', value: 'markdown'},\n {title: 'MySQL', value: 'mysql'},\n {title: 'PHP', value: 'php'},\n {title: 'Plain text', value: 'text'},\n {title: 'Python', value: 'python'},\n {title: 'Ruby', value: 'ruby'},\n {title: 'SASS', value: 'sass'},\n {title: 'SCSS', value: 'scss'},\n {title: 'sh', value: 'sh'},\n {title: 'TSX', value: 'tsx'},\n {title: 'TypeScript', value: 'typescript'},\n {title: 'XML', value: 'xml'},\n {title: 'YAML', value: 'yaml'},\n]\n\nexport const LANGUAGE_ALIASES: Record<string, string | undefined> = {js: 'javascript'}\n\nexport const SUPPORTED_THEMES = ['github', 'monokai', 'terminal', 'tomorrow']\n\nexport const DEFAULT_THEME = 'tomorrow'\nexport const DEFAULT_DARK_THEME = 'monokai'\n\nexport const ACE_SET_OPTIONS = {\n useSoftTabs: true,\n navigateWithinSoftTabs: true /* note only supported by ace v1.2.7 or higher */,\n}\n\nexport const ACE_EDITOR_PROPS = {$blockScrolling: true}\n\nexport const PATH_LANGUAGE = ['language']\nexport const PATH_CODE = ['code']\nexport const PATH_FILENAME = ['filename']\n","import React, {useEffect, useState} from 'react'\n\n/**\n * AceEditor loads window global directly when imported, which crashes in node envs.\n * This works around the issue by only importing ace-dependencies when window is defined.\n *\n * We only set the ace lazy component after mounting, to allow us to render null on the server,\n * and use suspense on the client. This will make hydration work correctly.\n */\nexport const AceEditorLazy = React.lazy(() => import('./editorSupport'))\n\nexport function useAceEditor() {\n const [mounted, setMounted] = useState(false)\n useEffect(() => {\n requestAnimationFrame(() => setMounted(true))\n }, [])\n\n return mounted ? AceEditorLazy : null\n}\n","/* eslint-disable react/jsx-handler-names */\nimport React, {Suspense, useCallback, useEffect, useImperativeHandle, useMemo, useRef} from 'react'\nimport {\n InputProps,\n ObjectSchemaType,\n StringInputProps,\n useColorScheme,\n FieldMember,\n MemberField,\n ObjectInputProps,\n set,\n setIfMissing,\n unset,\n RenderInputCallback,\n} from 'sanity'\nimport {Card, Select, Stack, ThemeColorSchemeKey} from '@sanity/ui'\nimport styled from 'styled-components'\nimport createHighlightMarkers, {highlightMarkersCSS} from './createHighlightMarkers'\nimport {CodeInputLanguage, CodeInputValue} from './types'\nimport {\n ACE_EDITOR_PROPS,\n ACE_SET_OPTIONS,\n DEFAULT_DARK_THEME,\n DEFAULT_THEME,\n LANGUAGE_ALIASES,\n PATH_CODE,\n SUPPORTED_LANGUAGES,\n SUPPORTED_THEMES,\n} from './config'\nimport {useAceEditor} from './ace-editor/AceEditorLazy'\n\nexport type {CodeInputLanguage, CodeInputValue} from './types'\n\nconst EditorContainer = styled(Card)`\n position: relative;\n box-sizing: border-box;\n overflow: hidden;\n z-index: 0;\n\n .ace_editor {\n font-family: ${({theme}) => theme.sanity.fonts.code.family};\n font-size: ${({theme}) => theme.sanity.fonts.code.sizes[1]};\n line-height: inherit;\n }\n\n ${highlightMarkersCSS}\n\n &:not([disabled]):not([readonly]) {\n &:focus,\n &:focus-within {\n box-shadow: 0 0 0 2px ${({theme}) => theme.sanity.color.base.focusRing};\n background-color: ${({theme}) => theme.sanity.color.base.bg};\n border-color: ${({theme}) => theme.sanity.color.base.focusRing};\n }\n }\n`\n\n/**\n * @public\n */\nexport interface CodeOptions {\n theme?: string\n darkTheme?: string\n languageAlternatives?: CodeInputLanguage[]\n language?: string\n withFilename?: boolean\n}\n\n/**\n * @public\n */\nexport type CodeSchemaType = Omit<ObjectSchemaType, 'options'> & {\n options?: CodeOptions\n}\n\n/**\n * @public\n */\nexport type CodeInputProps = ObjectInputProps<CodeInputValue, CodeSchemaType> & {\n /** @internal */\n colorScheme?: ThemeColorSchemeKey\n}\n\n// Returns a string with the mode name if supported (because aliases), otherwise false\nfunction isSupportedLanguage(mode: string) {\n const alias = LANGUAGE_ALIASES[mode]\n\n if (alias) {\n return alias\n }\n\n const isSupported = SUPPORTED_LANGUAGES.find((lang) => lang.value === mode)\n if (isSupported) {\n return mode\n }\n\n return false\n}\n\nexport function CodeInput(props: CodeInputProps) {\n const {\n members,\n elementProps,\n onChange,\n readOnly,\n renderField,\n renderInput,\n renderItem,\n renderPreview,\n schemaType: type,\n value,\n onPathFocus,\n } = props\n\n const aceEditorRef = useRef<any>()\n\n const fieldMembers = useMemo(\n () => members.filter((member) => member.kind === 'field') as FieldMember[],\n [members]\n )\n\n const languageFieldMember = fieldMembers.find((member) => member.name === 'language')\n const filenameMember = fieldMembers.find((member) => member.name === 'filename')\n const codeFieldMember = fieldMembers.find((member) => member.name === 'code')\n\n useImperativeHandle(elementProps.ref, () => ({\n focus: () => {\n aceEditorRef?.current?.editor?.focus()\n },\n }))\n\n const handleCodeFocus = useCallback(() => {\n onPathFocus(PATH_CODE)\n }, [onPathFocus])\n\n const {scheme} = useColorScheme()\n\n const theme = useMemo(() => {\n const isLight = scheme === 'light'\n const preferredTheme = isLight ? type.options?.theme : type.options?.darkTheme\n const defaultTheme = isLight ? DEFAULT_THEME : DEFAULT_DARK_THEME\n return preferredTheme && SUPPORTED_THEMES.find((t) => t === preferredTheme)\n ? preferredTheme\n : defaultTheme\n }, [type, scheme])\n\n const handleToggleSelectLine = useCallback(\n (lineNumber: number) => {\n const editorSession = aceEditorRef.current?.editor?.getSession()\n const backgroundMarkers = editorSession?.getMarkers(true)\n const currentHighlightedLines = Object.keys(backgroundMarkers)\n .filter((key) => backgroundMarkers[key].type === 'screenLine')\n .map((key) => backgroundMarkers[key].range.start.row)\n const currentIndex = currentHighlightedLines.indexOf(lineNumber)\n if (currentIndex > -1) {\n // toggle remove\n currentHighlightedLines.splice(currentIndex, 1)\n } else {\n // toggle add\n currentHighlightedLines.push(lineNumber)\n currentHighlightedLines.sort()\n }\n onChange(\n set(\n currentHighlightedLines.map(\n (line) =>\n // ace starts at line (row) 0, but we store it starting at line 1\n line + 1\n ),\n ['highlightedLines']\n )\n )\n },\n [aceEditorRef, onChange]\n )\n\n const handleGutterMouseDown = useCallback(\n (event: any) => {\n const target = event.domEvent.target\n if (target.classList.contains('ace_gutter-cell')) {\n const row = event.getDocumentPosition().row\n handleToggleSelectLine(row)\n }\n },\n [handleToggleSelectLine]\n )\n\n useEffect(() => {\n const editor = aceEditorRef?.current?.editor\n return () => {\n editor?.session?.removeListener('guttermousedown', handleGutterMouseDown)\n }\n }, [aceEditorRef, handleGutterMouseDown])\n\n const handleEditorLoad = useCallback(\n (editor: any) => {\n editor?.on('guttermousedown', handleGutterMouseDown)\n },\n [handleGutterMouseDown]\n )\n\n const getLanguageAlternatives = useCallback((): {\n title: string\n value: string\n mode?: string\n }[] => {\n const languageAlternatives = type.options?.languageAlternatives\n if (!languageAlternatives) {\n return SUPPORTED_LANGUAGES\n }\n\n if (!Array.isArray(languageAlternatives)) {\n throw new Error(\n `'options.languageAlternatives' should be an array, got ${typeof languageAlternatives}`\n )\n }\n\n return languageAlternatives.reduce((acc: CodeInputLanguage[], {title, value: val, mode}) => {\n const alias = LANGUAGE_ALIASES[val]\n if (alias) {\n // eslint-disable-next-line no-console\n console.warn(\n `'options.languageAlternatives' lists a language with value \"%s\", which is an alias of \"%s\" - please replace the value to read \"%s\"`,\n val,\n alias,\n alias\n )\n\n return acc.concat({title, value: alias, mode: mode})\n }\n\n if (!mode && !SUPPORTED_LANGUAGES.find((lang) => lang.value === val)) {\n // eslint-disable-next-line no-console\n console.warn(\n `'options.languageAlternatives' lists a language which is not supported: \"%s\", syntax highlighting will be disabled.`,\n val\n )\n }\n\n return acc.concat({title, value: val, mode})\n }, [])\n }, [type])\n\n const handleCodeChange = useCallback(\n (code: string) => {\n const path = PATH_CODE\n const fixedLanguage = type.options?.language\n\n onChange([\n setIfMissing({_type: type.name, language: fixedLanguage}),\n code ? set(code, path) : unset(path),\n ])\n },\n [onChange, type]\n )\n\n const languages = getLanguageAlternatives().slice()\n\n const fixedLanguage = type.options?.language\n\n const language = value?.language || fixedLanguage\n\n // the language config from the schema\n const configured = languages.find((entry) => entry.value === language)\n\n // is the language officially supported (e.g. we import the mode by default)\n const supported = language && isSupportedLanguage(language)\n\n const mode = configured?.mode || (supported ? language : 'text')\n\n const renderLanguageInput = useCallback(\n (inputProps: Omit<InputProps, 'renderDefault'>) => {\n return (\n <Select\n {...(inputProps as StringInputProps)}\n onChange={(e) => {\n const newValue = e.currentTarget.value\n inputProps.onChange(newValue ? set(newValue) : unset())\n }}\n >\n {languages.map((lang: {title: string; value: string}) => (\n <option key={lang.value} value={lang.value}>\n {lang.title}\n </option>\n ))}\n </Select>\n )\n },\n [languages]\n )\n\n const AceEditor = useAceEditor()\n\n const renderCodeInput: RenderInputCallback = useCallback(\n (inputProps) => {\n return (\n <EditorContainer radius={1} shadow={1} readOnly={readOnly}>\n {AceEditor && (\n <Suspense fallback={<div>Loading code editor...</div>}>\n <AceEditor\n ref={aceEditorRef}\n mode={mode}\n theme={theme}\n width=\"100%\"\n onChange={handleCodeChange}\n name={inputProps.id}\n value={inputProps.value as string}\n markers={\n value && value.highlightedLines\n ? createHighlightMarkers(value.highlightedLines)\n : undefined\n }\n onLoad={handleEditorLoad}\n readOnly={readOnly}\n tabSize={2}\n wrapEnabled\n setOptions={ACE_SET_OPTIONS}\n editorProps={ACE_EDITOR_PROPS}\n onFocus={handleCodeFocus}\n onBlur={elementProps.onBlur}\n />\n </Suspense>\n )}\n </EditorContainer>\n )\n },\n [\n AceEditor,\n theme,\n handleCodeChange,\n handleCodeFocus,\n handleEditorLoad,\n mode,\n elementProps.onBlur,\n readOnly,\n value,\n ]\n )\n\n return (\n <Stack space={4}>\n {languageFieldMember && (\n <MemberField\n member={languageFieldMember}\n renderItem={renderItem}\n renderField={renderField}\n renderInput={renderLanguageInput}\n renderPreview={renderPreview}\n />\n )}\n\n {type.options?.withFilename && filenameMember && (\n <MemberField\n member={filenameMember}\n renderItem={renderItem}\n renderField={renderField}\n renderInput={renderInput}\n renderPreview={renderPreview}\n />\n )}\n\n {codeFieldMember && (\n <MemberField\n member={codeFieldMember}\n renderInput={renderCodeInput}\n renderItem={renderItem}\n renderField={renderField}\n renderPreview={renderPreview}\n />\n )}\n </Stack>\n )\n}\n","import React, {Suspense, useCallback, useEffect, useRef} from 'react'\nimport styled from 'styled-components'\nimport {Box} from '@sanity/ui'\nimport {ACE_EDITOR_PROPS, ACE_SET_OPTIONS} from './config'\nimport createHighlightMarkers from './createHighlightMarkers'\nimport {CodeInputValue} from './types'\nimport {useAceEditor} from './ace-editor/AceEditorLazy'\nimport {CodeSchemaType} from './CodeInput'\n\nconst PreviewContainer = styled(Box)`\n position: relative;\n`\n\nconst PreviewInner = styled(Box)`\n background-color: #272822;\n\n .ace_editor {\n box-sizing: border-box;\n cursor: default;\n pointer-events: none;\n }\n\n .ace_content {\n box-sizing: border-box;\n overflow: hidden;\n }\n`\n\n/**\n * @public\n */\nexport interface PreviewCodeProps {\n type?: CodeSchemaType\n value?: {selection?: CodeInputValue}\n}\n\n/**\n * @public\n */\nexport default function PreviewCode(props: PreviewCodeProps) {\n const aceEditorRef = useRef<any>()\n\n useEffect(() => {\n if (!aceEditorRef?.current) return\n\n const editor = aceEditorRef.current?.editor\n\n if (editor) {\n // Avoid cursor and focus tracking by Ace\n editor.renderer.$cursorLayer.element.style.opacity = 0\n editor.textInput.getElement().disabled = true\n }\n }, [])\n\n const handleEditorChange = useCallback(() => {\n // do nothing when the editor changes\n }, [])\n\n const {value, type} = props\n const fixedLanguage = type?.options?.language\n\n const selection = value?.selection\n const mode = selection?.language || fixedLanguage || 'text'\n\n const AceEditor = useAceEditor()\n return (\n <PreviewContainer>\n <PreviewInner padding={4}>\n {AceEditor && (\n <Suspense fallback={<div>Loading code preview...</div>}>\n <AceEditor\n ref={aceEditorRef}\n focus={false}\n mode={mode}\n theme=\"monokai\"\n width=\"100%\"\n onChange={handleEditorChange}\n maxLines={200}\n readOnly\n wrapEnabled\n showPrintMargin={false}\n highlightActiveLine={false}\n cursorStart={-1}\n value={selection?.code || ''}\n markers={\n selection?.highlightedLines\n ? createHighlightMarkers(selection.highlightedLines)\n : undefined\n }\n tabSize={2}\n showGutter={false}\n setOptions={ACE_SET_OPTIONS}\n editorProps={ACE_EDITOR_PROPS}\n />\n </Suspense>\n )}\n </PreviewInner>\n </PreviewContainer>\n )\n}\n","import {CodeBlockIcon} from '@sanity/icons'\nimport {CodeInput, CodeOptions} from './CodeInput'\nimport PreviewCode, {PreviewCodeProps} from './PreviewCode'\nimport {getMedia} from './getMedia'\nimport {defineType, ObjectDefinition} from 'sanity'\n\nexport type {CodeInputProps, CodeSchemaType} from './CodeInput'\n\nexport type {CodeInputLanguage, CodeInputValue} from './types'\nexport type {PreviewCode, PreviewCodeProps, CodeInput}\n\n/**\n * @public\n */\nexport const codeTypeName = 'code' as const\n\n/**\n * @public\n */\nexport interface CodeDefinition extends Omit<ObjectDefinition, 'type' | 'fields' | 'options'> {\n type: typeof codeTypeName\n options?: CodeOptions\n}\n\ndeclare module '@sanity/types' {\n // makes type: 'code' narrow correctly when using defineType/defineField/defineArrayMember\n export interface IntrinsicDefinitions {\n code: CodeDefinition\n }\n}\n\n/**\n * @public\n */\nexport const codeSchema = defineType({\n name: 'code',\n type: 'object',\n title: 'Code',\n ...({components: {input: CodeInput, preview: PreviewCode}} as {}), //TODO rollback change when rc.1 is released\n icon: CodeBlockIcon,\n fields: [\n {\n name: 'language',\n title: 'Language',\n type: 'string',\n },\n {\n name: 'filename',\n title: 'Filename',\n type: 'string',\n },\n {\n title: 'Code',\n name: 'code',\n type: 'text',\n },\n {\n title: 'Highlighted lines',\n name: 'highlightedLines',\n type: 'array',\n of: [\n {\n type: 'number',\n title: 'Highlighted line',\n },\n ],\n },\n ],\n preview: {\n select: {\n language: 'language',\n code: 'code',\n filename: 'filename',\n highlightedLines: 'highlightedLines',\n },\n prepare: (value: {\n language?: string\n code?: string\n filename?: string\n highlightedLines?: number[]\n }) => {\n return {\n title: value.filename || (value.language || 'unknown').toUpperCase(),\n media: getMedia(value?.language),\n selection: value,\n }\n },\n },\n})\n","import React from 'react'\n\nexport function getMedia(language?: string) {\n if (language === 'jsx') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <g fill=\"#61DAFB\">\n <circle cx=\"64\" cy=\"64\" r=\"11.4\" />\n <path d=\"M107.3 45.2c-2.2-.8-4.5-1.6-6.9-2.3.6-2.4 1.1-4.8 1.5-7.1 2.1-13.2-.2-22.5-6.6-26.1-1.9-1.1-4-1.6-6.4-1.6-7 0-15.9 5.2-24.9 13.9-9-8.7-17.9-13.9-24.9-13.9-2.4 0-4.5.5-6.4 1.6-6.4 3.7-8.7 13-6.6 26.1.4 2.3.9 4.7 1.5 7.1-2.4.7-4.7 1.4-6.9 2.3C8.2 50 1.4 56.6 1.4 64s6.9 14 19.3 18.8c2.2.8 4.5 1.6 6.9 2.3-.6 2.4-1.1 4.8-1.5 7.1-2.1 13.2.2 22.5 6.6 26.1 1.9 1.1 4 1.6 6.4 1.6 7.1 0 16-5.2 24.9-13.9 9 8.7 17.9 13.9 24.9 13.9 2.4 0 4.5-.5 6.4-1.6 6.4-3.7 8.7-13 6.6-26.1-.4-2.3-.9-4.7-1.5-7.1 2.4-.7 4.7-1.4 6.9-2.3 12.5-4.8 19.3-11.4 19.3-18.8s-6.8-14-19.3-18.8zM92.5 14.7c4.1 2.4 5.5 9.8 3.8 20.3-.3 2.1-.8 4.3-1.4 6.6-5.2-1.2-10.7-2-16.5-2.5-3.4-4.8-6.9-9.1-10.4-13 7.4-7.3 14.9-12.3 21-12.3 1.3 0 2.5.3 3.5.9zM81.3 74c-1.8 3.2-3.9 6.4-6.1 9.6-3.7.3-7.4.4-11.2.4-3.9 0-7.6-.1-11.2-.4-2.2-3.2-4.2-6.4-6-9.6-1.9-3.3-3.7-6.7-5.3-10 1.6-3.3 3.4-6.7 5.3-10 1.8-3.2 3.9-6.4 6.1-9.6 3.7-.3 7.4-.4 11.2-.4 3.9 0 7.6.1 11.2.4 2.2 3.2 4.2 6.4 6 9.6 1.9 3.3 3.7 6.7 5.3 10-1.7 3.3-3.4 6.6-5.3 10zm8.3-3.3c1.5 3.5 2.7 6.9 3.8 10.3-3.4.8-7 1.4-10.8 1.9 1.2-1.9 2.5-3.9 3.6-6 1.2-2.1 2.3-4.2 3.4-6.2zM64 97.8c-2.4-2.6-4.7-5.4-6.9-8.3 2.3.1 4.6.2 6.9.2 2.3 0 4.6-.1 6.9-.2-2.2 2.9-4.5 5.7-6.9 8.3zm-18.6-15c-3.8-.5-7.4-1.1-10.8-1.9 1.1-3.3 2.3-6.8 3.8-10.3 1.1 2 2.2 4.1 3.4 6.1 1.2 2.2 2.4 4.1 3.6 6.1zm-7-25.5c-1.5-3.5-2.7-6.9-3.8-10.3 3.4-.8 7-1.4 10.8-1.9-1.2 1.9-2.5 3.9-3.6 6-1.2 2.1-2.3 4.2-3.4 6.2zM64 30.2c2.4 2.6 4.7 5.4 6.9 8.3-2.3-.1-4.6-.2-6.9-.2-2.3 0-4.6.1-6.9.2 2.2-2.9 4.5-5.7 6.9-8.3zm22.2 21l-3.6-6c3.8.5 7.4 1.1 10.8 1.9-1.1 3.3-2.3 6.8-3.8 10.3-1.1-2.1-2.2-4.2-3.4-6.2zM31.7 35c-1.7-10.5-.3-17.9 3.8-20.3 1-.6 2.2-.9 3.5-.9 6 0 13.5 4.9 21 12.3-3.5 3.8-7 8.2-10.4 13-5.8.5-11.3 1.4-16.5 2.5-.6-2.3-1-4.5-1.4-6.6zM7 64c0-4.7 5.7-9.7 15.7-13.4 2-.8 4.2-1.5 6.4-2.1 1.6 5 3.6 10.3 6 15.6-2.4 5.3-4.5 10.5-6 15.5C15.3 75.6 7 69.6 7 64zm28.5 49.3c-4.1-2.4-5.5-9.8-3.8-20.3.3-2.1.8-4.3 1.4-6.6 5.2 1.2 10.7 2 16.5 2.5 3.4 4.8 6.9 9.1 10.4 13-7.4 7.3-14.9 12.3-21 12.3-1.3 0-2.5-.3-3.5-.9zM96.3 93c1.7 10.5.3 17.9-3.8 20.3-1 .6-2.2.9-3.5.9-6 0-13.5-4.9-21-12.3 3.5-3.8 7-8.2 10.4-13 5.8-.5 11.3-1.4 16.5-2.5.6 2.3 1 4.5 1.4 6.6zm9-15.6c-2 .8-4.2 1.5-6.4 2.1-1.6-5-3.6-10.3-6-15.6 2.4-5.3 4.5-10.5 6-15.5 13.8 4 22.1 10 22.1 15.6 0 4.7-5.8 9.7-15.7 13.4z\" />\n </g>\n </svg>\n )\n }\n\n if (language === 'javascript') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <path fill=\"#F0DB4F\" d=\"M1.408 1.408h125.184v125.185H1.408z\" />\n <path\n fill=\"#323330\"\n d=\"M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581zM69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237z\"\n />\n </svg>\n )\n }\n\n if (language === 'php') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 400\">\n <g transform=\"translate(-44.632 -141.55)\">\n <g transform=\"matrix(8.3528 0 0 8.3119 -727.13 -3759.5)\">\n <path d=\"m99.974 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79504 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21198 0.0353 0.42398 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053\" />\n <path d=\"m133.49 469.36h7.314l-2.067 10.123h6.572c3.604 0.0707 6.2893 0.81269 8.056 2.226 1.802 1.4134 2.332 4.0987 1.59 8.056l-3.551 17.649h-7.42l3.392-16.854c0.35328-1.7666 0.2473-3.021-0.318-3.763-0.56536-0.74198-1.7844-1.113-3.657-1.113l-5.883-0.053-4.346 21.783h-7.314l7.632-38.054\" />\n <path d=\"m162.81 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79503 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21199 0.0353 0.42399 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053\" />\n </g>\n </g>\n </svg>\n )\n }\n\n if (language === 'json') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 160 160\"\n >\n <defs>\n <linearGradient id=\"a\">\n <stop offset=\"0\" />\n <stop offset=\"1\" stopColor=\"#fff\" />\n </linearGradient>\n <linearGradient\n x1=\"-553.27\"\n y1=\"525.908\"\n x2=\"-666.116\"\n y2=\"413.045\"\n id=\"c\"\n xlinkHref=\"#a\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"matrix(.99884 0 0 .9987 689.008 -388.844)\"\n />\n <linearGradient\n x1=\"-666.117\"\n y1=\"413.045\"\n x2=\"-553.27\"\n y2=\"525.908\"\n id=\"b\"\n xlinkHref=\"#a\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"matrix(.99884 0 0 .9987 689.008 -388.844)\"\n />\n </defs>\n <path\n d=\"M79.865 119.1c35.397 48.255 70.04-13.469 69.988-50.587-.06-43.886-44.54-68.414-70.017-68.414C38.943.1 0 33.895 0 80.135 0 131.531 44.64 160 79.836 160c-7.965-1.147-34.507-6.834-34.863-67.967-.24-41.346 13.487-57.865 34.805-50.599.477.177 23.514 9.265 23.514 38.95 0 29.56-23.427 38.716-23.427 38.716z\"\n style={{marker: 'none'}}\n color=\"#000\"\n fill=\"url(#b)\"\n fillRule=\"evenodd\"\n overflow=\"visible\"\n />\n <path\n d=\"M79.823 41.4C56.433 33.34 27.78 52.618 27.78 91.23c0 63.048 46.72 68.77 52.384 68.77C121.057 160 160 126.204 160 79.964 160 28.568 115.36.1 80.164.1c9.749-1.35 52.541 10.55 52.541 69.037 0 38.141-31.953 58.905-52.735 50.033-.478-.177-23.514-9.264-23.514-38.95 0-29.56 23.367-38.818 23.367-38.818z\"\n style={{marker: 'none'}}\n color=\"#000\"\n fill=\"url(#c)\"\n fillRule=\"evenodd\"\n overflow=\"visible\"\n />\n </svg>\n )\n }\n\n return undefined\n}\n","import {definePlugin} from 'sanity'\n\nimport {codeSchema, codeTypeName, CodeDefinition} from './schema'\nimport PreviewCode, {PreviewCodeProps} from './PreviewCode'\nexport type {CodeInputProps, CodeSchemaType, CodeOptions} from './CodeInput'\n\nexport type {CodeInputLanguage, CodeInputValue} from './types'\n\nexport {PreviewCode, type PreviewCodeProps}\nexport {codeSchema, codeTypeName}\nexport type {CodeDefinition}\n/**\n * @public\n */\nexport const codeInput = definePlugin({\n name: '@sanity/code-input',\n schema: {types: [codeSchema]},\n})\n"],"names":["highlightMarkersCSS","css","_templateObject","_taggedTemplateLiteral","_ref","theme","sanity","color","solid","primary","enabled","bg","createHighlightMarkers","rows","map","row","startRow","Number","startCol","endRow","endCol","Infinity","className","type","inFront","SUPPORTED_LANGUAGES","title","value","LANGUAGE_ALIASES","js","SUPPORTED_THEMES","ACE_SET_OPTIONS","useSoftTabs","navigateWithinSoftTabs","ACE_EDITOR_PROPS","$blockScrolling","PATH_CODE","AceEditorLazy","React","lazy","import","useAceEditor","mounted","setMounted","useState","useEffect","requestAnimationFrame","EditorContainer","styled","Card","_templateObject2","_ref2","fonts","code","family","_ref3","sizes","_ref4","base","focusRing","_ref5","_ref6","PreviewContainer","Box","_templateObject3","PreviewInner","_templateObject4","PreviewCode","props","_a","aceEditorRef","useRef","current","editor","renderer","$cursorLayer","element","style","opacity","textInput","getElement","disabled","handleEditorChange","useCallback","fixedLanguage","options","language","selection","mode","AceEditor","jsx","children","padding","Suspense","fallback","ref","focus","width","onChange","maxLines","readOnly","wrapEnabled","showPrintMargin","highlightActiveLine","cursorStart","markers","highlightedLines","tabSize","showGutter","setOptions","editorProps","codeTypeName","codeSchema","defineType","_objectSpread","name","components","input","_b","members","elementProps","renderField","renderInput","renderItem","renderPreview","schemaType","onPathFocus","fieldMembers","useMemo","filter","member","kind","languageFieldMember","find","filenameMember","codeFieldMember","useImperativeHandle","handleCodeFocus","scheme","useColorScheme","isLight","preferredTheme","darkTheme","defaultTheme","t","handleToggleSelectLine","lineNumber","editorSession","getSession","backgroundMarkers","getMarkers","currentHighlightedLines","Object","keys","key","range","start","currentIndex","indexOf","splice","push","sort","set","line","handleGutterMouseDown","event","domEvent","target","classList","contains","getDocumentPosition","session","removeListener","handleEditorLoad","on","getLanguageAlternatives","languageAlternatives","Array","isArray","Error","concat","reduce","acc","_ref7","val","alias","console","warn","lang","handleCodeChange","path","setIfMissing","_type","unset","languages","slice","configured","entry","supported","isSupportedLanguage","renderLanguageInput","inputProps","Select","e","newValue","currentTarget","renderCodeInput","radius","shadow","id","onLoad","onFocus","onBlur","jsxs","Stack","space","MemberField","withFilename","preview","icon","CodeBlockIcon","fields","of","select","filename","prepare","toUpperCase","media","xmlns","viewBox","fill","cx","cy","r","d","transform","xmlnsXlink","offset","stopColor","x1","y1","x2","y2","xlinkHref","gradientUnits","gradientTransform","marker","fillRule","overflow","codeInput","definePlugin","schema","types"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/createHighlightMarkers.ts","../src/config.ts","../src/ace-editor/AceEditorLazy.tsx","../src/CodeInput.tsx","../src/PreviewCode.tsx","../src/getMedia.tsx"],"sourcesContent":["import type {IMarker} from 'react-ace'\nimport {css} from 'styled-components'\n\nexport const highlightMarkersCSS = css`\n .ace_editor_markers_highlight {\n position: absolute;\n background-color: ${({theme}) => theme.sanity.color.solid.primary.enabled.bg};\n opacity: 0.2;\n width: 100% !important;\n border-radius: 0 !important;\n }\n`\n\nexport default function createHighlightMarkers(rows: number[]): IMarker[] {\n return rows.map((row) => ({\n startRow: Number(row) - 1,\n startCol: 0,\n endRow: Number(row) - 1,\n endCol: +Infinity,\n className: 'ace_editor_markers_highlight',\n type: 'screenLine',\n inFront: true,\n }))\n}\n","import {CodeInputLanguage} from './types'\n\n// NOTE: MAKE SURE THESE ALIGN WITH IMPORTS IN ./ace-editor/editorSupport\nexport const SUPPORTED_LANGUAGES: CodeInputLanguage[] = [\n {title: 'Batch file', value: 'batchfile'},\n {title: 'C#', value: 'csharp'},\n {title: 'CSS', value: 'css'},\n {title: 'Go', value: 'golang'},\n {title: 'GROQ', value: 'groq'},\n {title: 'HTML', value: 'html'},\n {title: 'Java', value: 'java'},\n {title: 'JavaScript', value: 'javascript'},\n {title: 'JSON', value: 'json'},\n {title: 'JSX', value: 'jsx'},\n {title: 'Markdown', value: 'markdown'},\n {title: 'MySQL', value: 'mysql'},\n {title: 'PHP', value: 'php'},\n {title: 'Plain text', value: 'text'},\n {title: 'Python', value: 'python'},\n {title: 'Ruby', value: 'ruby'},\n {title: 'SASS', value: 'sass'},\n {title: 'SCSS', value: 'scss'},\n {title: 'sh', value: 'sh'},\n {title: 'TSX', value: 'tsx'},\n {title: 'TypeScript', value: 'typescript'},\n {title: 'XML', value: 'xml'},\n {title: 'YAML', value: 'yaml'},\n]\n\nexport const LANGUAGE_ALIASES: Record<string, string | undefined> = {js: 'javascript'}\n\nexport const SUPPORTED_THEMES = ['github', 'monokai', 'terminal', 'tomorrow']\n\nexport const DEFAULT_THEME = 'tomorrow'\nexport const DEFAULT_DARK_THEME = 'monokai'\n\nexport const ACE_SET_OPTIONS = {\n useSoftTabs: true,\n navigateWithinSoftTabs: true /* note only supported by ace v1.2.7 or higher */,\n}\n\nexport const ACE_EDITOR_PROPS = {$blockScrolling: true}\n\nexport const PATH_LANGUAGE = ['language']\nexport const PATH_CODE = ['code']\nexport const PATH_FILENAME = ['filename']\n","import React, {useEffect, useState} from 'react'\n\n/**\n * AceEditor loads window global directly when imported, which crashes in node envs.\n * This works around the issue by only importing ace-dependencies when window is defined.\n *\n * We only set the ace lazy component after mounting, to allow us to render null on the server,\n * and use suspense on the client. This will make hydration work correctly.\n */\nexport const AceEditorLazy = React.lazy(() => import('./editorSupport'))\n\nexport function useAceEditor() {\n const [mounted, setMounted] = useState(false)\n useEffect(() => {\n requestAnimationFrame(() => setMounted(true))\n }, [])\n\n return mounted ? AceEditorLazy : null\n}\n","/* eslint-disable react/jsx-handler-names */\nimport React, {Suspense, useCallback, useEffect, useImperativeHandle, useMemo, useRef} from 'react'\nimport {\n InputProps,\n ObjectSchemaType,\n StringInputProps,\n useColorScheme,\n FieldMember,\n MemberField,\n ObjectInputProps,\n set,\n setIfMissing,\n unset,\n RenderInputCallback,\n} from 'sanity'\nimport {Card, Select, Stack, ThemeColorSchemeKey} from '@sanity/ui'\nimport styled from 'styled-components'\nimport createHighlightMarkers, {highlightMarkersCSS} from './createHighlightMarkers'\nimport {CodeInputLanguage, CodeInputValue} from './types'\nimport {\n ACE_EDITOR_PROPS,\n ACE_SET_OPTIONS,\n DEFAULT_DARK_THEME,\n DEFAULT_THEME,\n LANGUAGE_ALIASES,\n PATH_CODE,\n SUPPORTED_LANGUAGES,\n SUPPORTED_THEMES,\n} from './config'\nimport {useAceEditor} from './ace-editor/AceEditorLazy'\n\nexport type {CodeInputLanguage, CodeInputValue} from './types'\n\nconst EditorContainer = styled(Card)`\n position: relative;\n box-sizing: border-box;\n overflow: hidden;\n z-index: 0;\n\n .ace_editor {\n font-family: ${({theme}) => theme.sanity.fonts.code.family};\n font-size: ${({theme}) => theme.sanity.fonts.code.sizes[1]};\n line-height: inherit;\n }\n\n ${highlightMarkersCSS}\n\n &:not([disabled]):not([readonly]) {\n &:focus,\n &:focus-within {\n box-shadow: 0 0 0 2px ${({theme}) => theme.sanity.color.base.focusRing};\n background-color: ${({theme}) => theme.sanity.color.base.bg};\n border-color: ${({theme}) => theme.sanity.color.base.focusRing};\n }\n }\n`\n\n/**\n * @public\n */\nexport interface CodeOptions {\n theme?: string\n darkTheme?: string\n languageAlternatives?: CodeInputLanguage[]\n language?: string\n withFilename?: boolean\n}\n\n/**\n * @public\n */\nexport type CodeSchemaType = Omit<ObjectSchemaType, 'options'> & {\n options?: CodeOptions\n}\n\n/**\n * @public\n */\nexport type CodeInputProps = ObjectInputProps<CodeInputValue, CodeSchemaType> & {\n /** @internal */\n colorScheme?: ThemeColorSchemeKey\n}\n\n// Returns a string with the mode name if supported (because aliases), otherwise false\nfunction isSupportedLanguage(mode: string) {\n const alias = LANGUAGE_ALIASES[mode]\n\n if (alias) {\n return alias\n }\n\n const isSupported = SUPPORTED_LANGUAGES.find((lang) => lang.value === mode)\n if (isSupported) {\n return mode\n }\n\n return false\n}\n\nexport function CodeInput(props: CodeInputProps) {\n const {\n members,\n elementProps,\n onChange,\n readOnly,\n renderField,\n renderInput,\n renderItem,\n renderPreview,\n schemaType: type,\n value,\n onPathFocus,\n } = props\n\n const aceEditorRef = useRef<any>()\n\n const fieldMembers = useMemo(\n () => members.filter((member) => member.kind === 'field') as FieldMember[],\n [members]\n )\n\n const languageFieldMember = fieldMembers.find((member) => member.name === 'language')\n const filenameMember = fieldMembers.find((member) => member.name === 'filename')\n const codeFieldMember = fieldMembers.find((member) => member.name === 'code')\n\n useImperativeHandle(elementProps.ref, () => ({\n focus: () => {\n aceEditorRef?.current?.editor?.focus()\n },\n }))\n\n const handleCodeFocus = useCallback(() => {\n onPathFocus(PATH_CODE)\n }, [onPathFocus])\n\n const {scheme} = useColorScheme()\n\n const theme = useMemo(() => {\n const isLight = scheme === 'light'\n const preferredTheme = isLight ? type.options?.theme : type.options?.darkTheme\n const defaultTheme = isLight ? DEFAULT_THEME : DEFAULT_DARK_THEME\n return preferredTheme && SUPPORTED_THEMES.find((t) => t === preferredTheme)\n ? preferredTheme\n : defaultTheme\n }, [type, scheme])\n\n const handleToggleSelectLine = useCallback(\n (lineNumber: number) => {\n const editorSession = aceEditorRef.current?.editor?.getSession()\n const backgroundMarkers = editorSession?.getMarkers(true)\n const currentHighlightedLines = Object.keys(backgroundMarkers)\n .filter((key) => backgroundMarkers[key].type === 'screenLine')\n .map((key) => backgroundMarkers[key].range.start.row)\n const currentIndex = currentHighlightedLines.indexOf(lineNumber)\n if (currentIndex > -1) {\n // toggle remove\n currentHighlightedLines.splice(currentIndex, 1)\n } else {\n // toggle add\n currentHighlightedLines.push(lineNumber)\n currentHighlightedLines.sort()\n }\n onChange(\n set(\n currentHighlightedLines.map(\n (line) =>\n // ace starts at line (row) 0, but we store it starting at line 1\n line + 1\n ),\n ['highlightedLines']\n )\n )\n },\n [aceEditorRef, onChange]\n )\n\n const handleGutterMouseDown = useCallback(\n (event: any) => {\n const target = event.domEvent.target\n if (target.classList.contains('ace_gutter-cell')) {\n const row = event.getDocumentPosition().row\n handleToggleSelectLine(row)\n }\n },\n [handleToggleSelectLine]\n )\n\n useEffect(() => {\n const editor = aceEditorRef?.current?.editor\n return () => {\n editor?.session?.removeListener('guttermousedown', handleGutterMouseDown)\n }\n }, [aceEditorRef, handleGutterMouseDown])\n\n const handleEditorLoad = useCallback(\n (editor: any) => {\n editor?.on('guttermousedown', handleGutterMouseDown)\n },\n [handleGutterMouseDown]\n )\n\n const getLanguageAlternatives = useCallback((): {\n title: string\n value: string\n mode?: string\n }[] => {\n const languageAlternatives = type.options?.languageAlternatives\n if (!languageAlternatives) {\n return SUPPORTED_LANGUAGES\n }\n\n if (!Array.isArray(languageAlternatives)) {\n throw new Error(\n `'options.languageAlternatives' should be an array, got ${typeof languageAlternatives}`\n )\n }\n\n return languageAlternatives.reduce((acc: CodeInputLanguage[], {title, value: val, mode}) => {\n const alias = LANGUAGE_ALIASES[val]\n if (alias) {\n // eslint-disable-next-line no-console\n console.warn(\n `'options.languageAlternatives' lists a language with value \"%s\", which is an alias of \"%s\" - please replace the value to read \"%s\"`,\n val,\n alias,\n alias\n )\n\n return acc.concat({title, value: alias, mode: mode})\n }\n\n if (!mode && !SUPPORTED_LANGUAGES.find((lang) => lang.value === val)) {\n // eslint-disable-next-line no-console\n console.warn(\n `'options.languageAlternatives' lists a language which is not supported: \"%s\", syntax highlighting will be disabled.`,\n val\n )\n }\n\n return acc.concat({title, value: val, mode})\n }, [])\n }, [type])\n\n const handleCodeChange = useCallback(\n (code: string) => {\n const path = PATH_CODE\n const fixedLanguage = type.options?.language\n\n onChange([\n setIfMissing({_type: type.name, language: fixedLanguage}),\n code ? set(code, path) : unset(path),\n ])\n },\n [onChange, type]\n )\n\n const languages = getLanguageAlternatives().slice()\n\n const fixedLanguage = type.options?.language\n\n const language = value?.language || fixedLanguage\n\n // the language config from the schema\n const configured = languages.find((entry) => entry.value === language)\n\n // is the language officially supported (e.g. we import the mode by default)\n const supported = language && isSupportedLanguage(language)\n\n const mode = configured?.mode || (supported ? language : 'text')\n\n const renderLanguageInput = useCallback(\n (inputProps: Omit<InputProps, 'renderDefault'>) => {\n return (\n <Select\n {...(inputProps as StringInputProps)}\n onChange={(e) => {\n const newValue = e.currentTarget.value\n inputProps.onChange(newValue ? set(newValue) : unset())\n }}\n >\n {languages.map((lang: {title: string; value: string}) => (\n <option key={lang.value} value={lang.value}>\n {lang.title}\n </option>\n ))}\n </Select>\n )\n },\n [languages]\n )\n\n const AceEditor = useAceEditor()\n\n const renderCodeInput: RenderInputCallback = useCallback(\n (inputProps) => {\n return (\n <EditorContainer radius={1} shadow={1} readOnly={readOnly}>\n {AceEditor && (\n <Suspense fallback={<div>Loading code editor...</div>}>\n <AceEditor\n ref={aceEditorRef}\n mode={mode}\n theme={theme}\n width=\"100%\"\n onChange={handleCodeChange}\n name={inputProps.id}\n value={inputProps.value as string}\n markers={\n value && value.highlightedLines\n ? createHighlightMarkers(value.highlightedLines)\n : undefined\n }\n onLoad={handleEditorLoad}\n readOnly={readOnly}\n tabSize={2}\n wrapEnabled\n setOptions={ACE_SET_OPTIONS}\n editorProps={ACE_EDITOR_PROPS}\n onFocus={handleCodeFocus}\n onBlur={elementProps.onBlur}\n />\n </Suspense>\n )}\n </EditorContainer>\n )\n },\n [\n AceEditor,\n theme,\n handleCodeChange,\n handleCodeFocus,\n handleEditorLoad,\n mode,\n elementProps.onBlur,\n readOnly,\n value,\n ]\n )\n\n return (\n <Stack space={4}>\n {languageFieldMember && (\n <MemberField\n member={languageFieldMember}\n renderItem={renderItem}\n renderField={renderField}\n renderInput={renderLanguageInput}\n renderPreview={renderPreview}\n />\n )}\n\n {type.options?.withFilename && filenameMember && (\n <MemberField\n member={filenameMember}\n renderItem={renderItem}\n renderField={renderField}\n renderInput={renderInput}\n renderPreview={renderPreview}\n />\n )}\n\n {codeFieldMember && (\n <MemberField\n member={codeFieldMember}\n renderInput={renderCodeInput}\n renderItem={renderItem}\n renderField={renderField}\n renderPreview={renderPreview}\n />\n )}\n </Stack>\n )\n}\n","import React, {Suspense, useCallback, useEffect, useRef} from 'react'\nimport styled from 'styled-components'\nimport {Box} from '@sanity/ui'\nimport {ACE_EDITOR_PROPS, ACE_SET_OPTIONS} from './config'\nimport createHighlightMarkers from './createHighlightMarkers'\nimport {CodeInputValue} from './types'\nimport {useAceEditor} from './ace-editor/AceEditorLazy'\nimport {PreviewProps} from 'sanity'\n\nconst PreviewContainer = styled(Box)`\n position: relative;\n`\n\nconst PreviewInner = styled(Box)`\n background-color: #272822;\n\n .ace_editor {\n box-sizing: border-box;\n cursor: default;\n pointer-events: none;\n }\n\n .ace_content {\n box-sizing: border-box;\n overflow: hidden;\n }\n`\n\n/**\n * @public\n */\nexport interface PreviewCodeProps extends PreviewProps {\n selection?: CodeInputValue\n}\n\n/**\n * @public\n */\nexport default function PreviewCode(props: PreviewCodeProps) {\n const aceEditorRef = useRef<any>()\n\n useEffect(() => {\n if (!aceEditorRef?.current) return\n\n const editor = aceEditorRef.current?.editor\n\n if (editor) {\n // Avoid cursor and focus tracking by Ace\n editor.renderer.$cursorLayer.element.style.opacity = 0\n editor.textInput.getElement().disabled = true\n }\n }, [])\n\n const handleEditorChange = useCallback(() => {\n // do nothing when the editor changes\n }, [])\n\n const {selection, schemaType: type} = props\n const fixedLanguage = type?.options?.language\n\n const mode = selection?.language || fixedLanguage || 'text'\n\n const AceEditor = useAceEditor()\n return (\n <PreviewContainer>\n <PreviewInner padding={4}>\n {AceEditor && (\n <Suspense fallback={<div>Loading code preview...</div>}>\n <AceEditor\n ref={aceEditorRef}\n focus={false}\n mode={mode}\n theme=\"monokai\"\n width=\"100%\"\n onChange={handleEditorChange}\n maxLines={200}\n readOnly\n wrapEnabled\n showPrintMargin={false}\n highlightActiveLine={false}\n cursorStart={-1}\n value={selection?.code || ''}\n markers={\n selection?.highlightedLines\n ? createHighlightMarkers(selection.highlightedLines)\n : undefined\n }\n tabSize={2}\n showGutter={false}\n setOptions={ACE_SET_OPTIONS}\n editorProps={ACE_EDITOR_PROPS}\n />\n </Suspense>\n )}\n </PreviewInner>\n </PreviewContainer>\n )\n}\n","import React from 'react'\n\nexport function getMedia(language?: string) {\n if (language === 'jsx') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <g fill=\"#61DAFB\">\n <circle cx=\"64\" cy=\"64\" r=\"11.4\" />\n <path d=\"M107.3 45.2c-2.2-.8-4.5-1.6-6.9-2.3.6-2.4 1.1-4.8 1.5-7.1 2.1-13.2-.2-22.5-6.6-26.1-1.9-1.1-4-1.6-6.4-1.6-7 0-15.9 5.2-24.9 13.9-9-8.7-17.9-13.9-24.9-13.9-2.4 0-4.5.5-6.4 1.6-6.4 3.7-8.7 13-6.6 26.1.4 2.3.9 4.7 1.5 7.1-2.4.7-4.7 1.4-6.9 2.3C8.2 50 1.4 56.6 1.4 64s6.9 14 19.3 18.8c2.2.8 4.5 1.6 6.9 2.3-.6 2.4-1.1 4.8-1.5 7.1-2.1 13.2.2 22.5 6.6 26.1 1.9 1.1 4 1.6 6.4 1.6 7.1 0 16-5.2 24.9-13.9 9 8.7 17.9 13.9 24.9 13.9 2.4 0 4.5-.5 6.4-1.6 6.4-3.7 8.7-13 6.6-26.1-.4-2.3-.9-4.7-1.5-7.1 2.4-.7 4.7-1.4 6.9-2.3 12.5-4.8 19.3-11.4 19.3-18.8s-6.8-14-19.3-18.8zM92.5 14.7c4.1 2.4 5.5 9.8 3.8 20.3-.3 2.1-.8 4.3-1.4 6.6-5.2-1.2-10.7-2-16.5-2.5-3.4-4.8-6.9-9.1-10.4-13 7.4-7.3 14.9-12.3 21-12.3 1.3 0 2.5.3 3.5.9zM81.3 74c-1.8 3.2-3.9 6.4-6.1 9.6-3.7.3-7.4.4-11.2.4-3.9 0-7.6-.1-11.2-.4-2.2-3.2-4.2-6.4-6-9.6-1.9-3.3-3.7-6.7-5.3-10 1.6-3.3 3.4-6.7 5.3-10 1.8-3.2 3.9-6.4 6.1-9.6 3.7-.3 7.4-.4 11.2-.4 3.9 0 7.6.1 11.2.4 2.2 3.2 4.2 6.4 6 9.6 1.9 3.3 3.7 6.7 5.3 10-1.7 3.3-3.4 6.6-5.3 10zm8.3-3.3c1.5 3.5 2.7 6.9 3.8 10.3-3.4.8-7 1.4-10.8 1.9 1.2-1.9 2.5-3.9 3.6-6 1.2-2.1 2.3-4.2 3.4-6.2zM64 97.8c-2.4-2.6-4.7-5.4-6.9-8.3 2.3.1 4.6.2 6.9.2 2.3 0 4.6-.1 6.9-.2-2.2 2.9-4.5 5.7-6.9 8.3zm-18.6-15c-3.8-.5-7.4-1.1-10.8-1.9 1.1-3.3 2.3-6.8 3.8-10.3 1.1 2 2.2 4.1 3.4 6.1 1.2 2.2 2.4 4.1 3.6 6.1zm-7-25.5c-1.5-3.5-2.7-6.9-3.8-10.3 3.4-.8 7-1.4 10.8-1.9-1.2 1.9-2.5 3.9-3.6 6-1.2 2.1-2.3 4.2-3.4 6.2zM64 30.2c2.4 2.6 4.7 5.4 6.9 8.3-2.3-.1-4.6-.2-6.9-.2-2.3 0-4.6.1-6.9.2 2.2-2.9 4.5-5.7 6.9-8.3zm22.2 21l-3.6-6c3.8.5 7.4 1.1 10.8 1.9-1.1 3.3-2.3 6.8-3.8 10.3-1.1-2.1-2.2-4.2-3.4-6.2zM31.7 35c-1.7-10.5-.3-17.9 3.8-20.3 1-.6 2.2-.9 3.5-.9 6 0 13.5 4.9 21 12.3-3.5 3.8-7 8.2-10.4 13-5.8.5-11.3 1.4-16.5 2.5-.6-2.3-1-4.5-1.4-6.6zM7 64c0-4.7 5.7-9.7 15.7-13.4 2-.8 4.2-1.5 6.4-2.1 1.6 5 3.6 10.3 6 15.6-2.4 5.3-4.5 10.5-6 15.5C15.3 75.6 7 69.6 7 64zm28.5 49.3c-4.1-2.4-5.5-9.8-3.8-20.3.3-2.1.8-4.3 1.4-6.6 5.2 1.2 10.7 2 16.5 2.5 3.4 4.8 6.9 9.1 10.4 13-7.4 7.3-14.9 12.3-21 12.3-1.3 0-2.5-.3-3.5-.9zM96.3 93c1.7 10.5.3 17.9-3.8 20.3-1 .6-2.2.9-3.5.9-6 0-13.5-4.9-21-12.3 3.5-3.8 7-8.2 10.4-13 5.8-.5 11.3-1.4 16.5-2.5.6 2.3 1 4.5 1.4 6.6zm9-15.6c-2 .8-4.2 1.5-6.4 2.1-1.6-5-3.6-10.3-6-15.6 2.4-5.3 4.5-10.5 6-15.5 13.8 4 22.1 10 22.1 15.6 0 4.7-5.8 9.7-15.7 13.4z\" />\n </g>\n </svg>\n )\n }\n\n if (language === 'javascript') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <path fill=\"#F0DB4F\" d=\"M1.408 1.408h125.184v125.185H1.408z\" />\n <path\n fill=\"#323330\"\n d=\"M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581zM69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237z\"\n />\n </svg>\n )\n }\n\n if (language === 'php') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 400\">\n <g transform=\"translate(-44.632 -141.55)\">\n <g transform=\"matrix(8.3528 0 0 8.3119 -727.13 -3759.5)\">\n <path d=\"m99.974 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79504 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21198 0.0353 0.42398 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053\" />\n <path d=\"m133.49 469.36h7.314l-2.067 10.123h6.572c3.604 0.0707 6.2893 0.81269 8.056 2.226 1.802 1.4134 2.332 4.0987 1.59 8.056l-3.551 17.649h-7.42l3.392-16.854c0.35328-1.7666 0.2473-3.021-0.318-3.763-0.56536-0.74198-1.7844-1.113-3.657-1.113l-5.883-0.053-4.346 21.783h-7.314l7.632-38.054\" />\n <path d=\"m162.81 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79503 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21199 0.0353 0.42399 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053\" />\n </g>\n </g>\n </svg>\n )\n }\n\n if (language === 'json') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 160 160\"\n >\n <defs>\n <linearGradient id=\"a\">\n <stop offset=\"0\" />\n <stop offset=\"1\" stopColor=\"#fff\" />\n </linearGradient>\n <linearGradient\n x1=\"-553.27\"\n y1=\"525.908\"\n x2=\"-666.116\"\n y2=\"413.045\"\n id=\"c\"\n xlinkHref=\"#a\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"matrix(.99884 0 0 .9987 689.008 -388.844)\"\n />\n <linearGradient\n x1=\"-666.117\"\n y1=\"413.045\"\n x2=\"-553.27\"\n y2=\"525.908\"\n id=\"b\"\n xlinkHref=\"#a\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"matrix(.99884 0 0 .9987 689.008 -388.844)\"\n />\n </defs>\n <path\n d=\"M79.865 119.1c35.397 48.255 70.04-13.469 69.988-50.587-.06-43.886-44.54-68.414-70.017-68.414C38.943.1 0 33.895 0 80.135 0 131.531 44.64 160 79.836 160c-7.965-1.147-34.507-6.834-34.863-67.967-.24-41.346 13.487-57.865 34.805-50.599.477.177 23.514 9.265 23.514 38.95 0 29.56-23.427 38.716-23.427 38.716z\"\n style={{marker: 'none'}}\n color=\"#000\"\n fill=\"url(#b)\"\n fillRule=\"evenodd\"\n overflow=\"visible\"\n />\n <path\n d=\"M79.823 41.4C56.433 33.34 27.78 52.618 27.78 91.23c0 63.048 46.72 68.77 52.384 68.77C121.057 160 160 126.204 160 79.964 160 28.568 115.36.1 80.164.1c9.749-1.35 52.541 10.55 52.541 69.037 0 38.141-31.953 58.905-52.735 50.033-.478-.177-23.514-9.264-23.514-38.95 0-29.56 23.367-38.818 23.367-38.818z\"\n style={{marker: 'none'}}\n color=\"#000\"\n fill=\"url(#c)\"\n fillRule=\"evenodd\"\n overflow=\"visible\"\n />\n </svg>\n )\n }\n\n return undefined\n}\n"],"names":["highlightMarkersCSS","theme","createHighlightMarkers","startRow","startCol","endRow","endCol","className","type","inFront","SUPPORTED_LANGUAGES","title","value","include","regex","token","push","next","SUPPORTED_THEMES","DEFAULT_THEME","DEFAULT_DARK_THEME","ACE_SET_OPTIONS","useSoftTabs","navigateWithinSoftTabs","ACE_EDITOR_PROPS","$blockScrolling","defaultToken","useEffect","isSupportedLanguage","CodeInput","_a","members","readOnly","renderField","renderPreview","schemaType","onPathFocus","aceEditorRef","focus","_b","scheme","currentHighlightedLines","onChange","handleGutterMouseDown","target","editor","getLanguageAlternatives","Error","mode","val","acc","console","concat","path","setIfMissing","language","fixedLanguage","languages","inputProps","lang","AceEditor","radius","children","fallback","ref","width","markers","onLoad","tabSize","wrapEnabled","onFocus","space","member","renderInput","renderItem","styled","PreviewCode","handleEditorChange","selection","padding","maxLines","showPrintMargin","highlightActiveLine","editorProps","oop","acequire","TextHighlightRules","GroqHighlightRules","this","$rules","rules","normalizeRules","getMedia","exports","viewBox","_module","fill","Mode","cx","cy","FoldMode","r","highlighter","d","$tokenizer","Tokenizer","getRules","$keywordList","inherits","TextMode","lineCommentStart","jsxs","xmlns","prototype"],"mappings":"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"}
package/lib/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var e,t,n,r;function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Object.defineProperty(exports,"__esModule",{value:!0});var s=require("sanity"),c=require("@sanity/icons"),u=require("react/jsx-runtime"),d=require("react"),h=require("@sanity/ui"),v=require("styled-components");function g(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=g(d),m=g(v);const f=v.css(e||(e=a(["\n .ace_editor_markers_highlight {\n position: absolute;\n background-color: ",";\n opacity: 0.2;\n width: 100% !important;\n border-radius: 0 !important;\n }\n"])),(e=>{let{theme:t}=e;return t.sanity.color.solid.primary.enabled.bg}));function b(e){return e.map((e=>({startRow:Number(e)-1,startCol:0,endRow:Number(e)-1,endCol:1/0,className:"ace_editor_markers_highlight",type:"screenLine",inFront:!0})))}const x=[{title:"Batch file",value:"batchfile"},{title:"C#",value:"csharp"},{title:"CSS",value:"css"},{title:"Go",value:"golang"},{title:"GROQ",value:"groq"},{title:"HTML",value:"html"},{title:"Java",value:"java"},{title:"JavaScript",value:"javascript"},{title:"JSON",value:"json"},{title:"JSX",value:"jsx"},{title:"Markdown",value:"markdown"},{title:"MySQL",value:"mysql"},{title:"PHP",value:"php"},{title:"Plain text",value:"text"},{title:"Python",value:"python"},{title:"Ruby",value:"ruby"},{title:"SASS",value:"sass"},{title:"SCSS",value:"scss"},{title:"sh",value:"sh"},{title:"TSX",value:"tsx"},{title:"TypeScript",value:"typescript"},{title:"XML",value:"xml"},{title:"YAML",value:"yaml"}],y={js:"javascript"},w=["github","monokai","terminal","tomorrow"],j={useSoftTabs:!0,navigateWithinSoftTabs:!0},k={$blockScrolling:!0},O=["code"],S=p.default.lazy((()=>Promise.resolve().then((function(){return require("./_chunks/editorSupport-bda3d360.js")}))));function C(){const[e,t]=d.useState(!1);return d.useEffect((()=>{requestAnimationFrame((()=>t(!0)))}),[]),e?S:null}const z=m.default(h.Card)(t||(t=a(["\n position: relative;\n box-sizing: border-box;\n overflow: hidden;\n z-index: 0;\n\n .ace_editor {\n font-family: ",";\n font-size: ",";\n line-height: inherit;\n }\n\n ","\n\n &:not([disabled]):not([readonly]) {\n &:focus,\n &:focus-within {\n box-shadow: 0 0 0 2px ",";\n background-color: ",";\n border-color: ",";\n }\n }\n"])),(e=>{let{theme:t}=e;return t.sanity.fonts.code.family}),(e=>{let{theme:t}=e;return t.sanity.fonts.code.sizes[1]}),f,(e=>{let{theme:t}=e;return t.sanity.color.base.focusRing}),(e=>{let{theme:t}=e;return t.sanity.color.base.bg}),(e=>{let{theme:t}=e;return t.sanity.color.base.focusRing}));const P=m.default(h.Box)(n||(n=a(["\n position: relative;\n"]))),M=m.default(h.Box)(r||(r=a(["\n background-color: #272822;\n\n .ace_editor {\n box-sizing: border-box;\n cursor: default;\n pointer-events: none;\n }\n\n .ace_content {\n box-sizing: border-box;\n overflow: hidden;\n }\n"])));function L(e){var t;const n=d.useRef();d.useEffect((()=>{var e;if(!(null==n?void 0:n.current))return;const t=null==(e=n.current)?void 0:e.editor;t&&(t.renderer.$cursorLayer.element.style.opacity=0,t.textInput.getElement().disabled=!0)}),[]);const r=d.useCallback((()=>{}),[]),{value:i,type:l}=e,o=null==(t=null==l?void 0:l.options)?void 0:t.language,a=null==i?void 0:i.selection,s=(null==a?void 0:a.language)||o||"text",c=C();return u.jsx(P,{children:u.jsx(M,{padding:4,children:c&&u.jsx(d.Suspense,{fallback:u.jsx("div",{children:"Loading code preview..."}),children:u.jsx(c,{ref:n,focus:!1,mode:s,theme:"monokai",width:"100%",onChange:r,maxLines:200,readOnly:!0,wrapEnabled:!0,showPrintMargin:!1,highlightActiveLine:!1,cursorStart:-1,value:(null==a?void 0:a.code)||"",markers:(null==a?void 0:a.highlightedLines)?b(a.highlightedLines):void 0,tabSize:2,showGutter:!1,setOptions:j,editorProps:k})})})})}const F=s.defineType(l(l({name:"code",type:"object",title:"Code"},{components:{input:function(e){var t,n;const{members:r,elementProps:i,onChange:o,readOnly:a,renderField:c,renderInput:v,renderItem:g,renderPreview:p,schemaType:m,value:f,onPathFocus:S}=e,P=d.useRef(),M=d.useMemo((()=>r.filter((e=>"field"===e.kind))),[r]),L=M.find((e=>"language"===e.name)),F=M.find((e=>"filename"===e.name)),_=M.find((e=>"code"===e.name));d.useImperativeHandle(i.ref,(()=>({focus:()=>{var e,t;null==(t=null==(e=null==P?void 0:P.current)?void 0:e.editor)||t.focus()}})));const B=d.useCallback((()=>{S(O)}),[S]),{scheme:I}=s.useColorScheme(),T=d.useMemo((()=>{var e,t;const n="light"===I,r=n?null==(e=m.options)?void 0:e.theme:null==(t=m.options)?void 0:t.darkTheme,i=n?"tomorrow":"monokai";return r&&w.find((e=>e===r))?r:i}),[m,I]),A=d.useCallback((e=>{var t,n;const r=null==(n=null==(t=P.current)?void 0:t.editor)?void 0:n.getSession(),i=null==r?void 0:r.getMarkers(!0),l=Object.keys(i).filter((e=>"screenLine"===i[e].type)).map((e=>i[e].range.start.row)),a=l.indexOf(e);a>-1?l.splice(a,1):(l.push(e),l.sort()),o(s.set(l.map((e=>e+1)),["highlightedLines"]))}),[P,o]),q=d.useCallback((e=>{if(e.domEvent.target.classList.contains("ace_gutter-cell")){const t=e.getDocumentPosition().row;A(t)}}),[A]);d.useEffect((()=>{var e;const t=null==(e=null==P?void 0:P.current)?void 0:e.editor;return()=>{var e;null==(e=null==t?void 0:t.session)||e.removeListener("guttermousedown",q)}}),[P,q]);const E=d.useCallback((e=>{null==e||e.on("guttermousedown",q)}),[q]),R=d.useCallback((()=>{var e;const t=null==(e=m.options)?void 0:e.languageAlternatives;if(!t)return x;if(!Array.isArray(t))throw new Error("'options.languageAlternatives' should be an array, got ".concat(typeof t));return t.reduce(((e,t)=>{let{title:n,value:r,mode:i}=t;const l=y[r];return l?(console.warn('\'options.languageAlternatives\' lists a language with value "%s", which is an alias of "%s" - please replace the value to read "%s"',r,l,l),e.concat({title:n,value:l,mode:i})):(i||x.find((e=>e.value===r))||console.warn("'options.languageAlternatives' lists a language which is not supported: \"%s\", syntax highlighting will be disabled.",r),e.concat({title:n,value:r,mode:i}))}),[])}),[m]),H=d.useCallback((e=>{var t;const n=O,r=null==(t=m.options)?void 0:t.language;o([s.setIfMissing({_type:m.name,language:r}),e?s.set(e,n):s.unset(n)])}),[o,m]),D=R().slice(),G=null==(t=m.options)?void 0:t.language,N=(null==f?void 0:f.language)||G,U=D.find((e=>e.value===N)),J=N&&function(e){const t=y[e];return t||!!x.find((t=>t.value===e))&&e}(N),X=(null==U?void 0:U.mode)||(J?N:"text"),Q=d.useCallback((e=>u.jsx(h.Select,l(l({},e),{},{onChange:t=>{const n=t.currentTarget.value;e.onChange(n?s.set(n):s.unset())},children:D.map((e=>u.jsx("option",{value:e.value,children:e.title},e.value)))}))),[D]),$=C(),W=d.useCallback((e=>u.jsx(z,{radius:1,shadow:1,readOnly:a,children:$&&u.jsx(d.Suspense,{fallback:u.jsx("div",{children:"Loading code editor..."}),children:u.jsx($,{ref:P,mode:X,theme:T,width:"100%",onChange:H,name:e.id,value:e.value,markers:f&&f.highlightedLines?b(f.highlightedLines):void 0,onLoad:E,readOnly:a,tabSize:2,wrapEnabled:!0,setOptions:j,editorProps:k,onFocus:B,onBlur:i.onBlur})})})),[$,T,H,B,E,X,i.onBlur,a,f]);return u.jsxs(h.Stack,{space:4,children:[L&&u.jsx(s.MemberField,{member:L,renderItem:g,renderField:c,renderInput:Q,renderPreview:p}),(null==(n=m.options)?void 0:n.withFilename)&&F&&u.jsx(s.MemberField,{member:F,renderItem:g,renderField:c,renderInput:v,renderPreview:p}),_&&u.jsx(s.MemberField,{member:_,renderInput:W,renderItem:g,renderField:c,renderPreview:p})]})},preview:L}}),{},{icon:c.CodeBlockIcon,fields:[{name:"language",title:"Language",type:"string"},{name:"filename",title:"Filename",type:"string"},{title:"Code",name:"code",type:"text"},{title:"Highlighted lines",name:"highlightedLines",type:"array",of:[{type:"number",title:"Highlighted line"}]}],preview:{select:{language:"language",code:"code",filename:"filename",highlightedLines:"highlightedLines"},prepare:e=>{return{title:e.filename||(e.language||"unknown").toUpperCase(),media:(t=null==e?void 0:e.language,"jsx"===t?u.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",children:u.jsxs("g",{fill:"#61DAFB",children:[u.jsx("circle",{cx:"64",cy:"64",r:"11.4"}),u.jsx("path",{d:"M107.3 45.2c-2.2-.8-4.5-1.6-6.9-2.3.6-2.4 1.1-4.8 1.5-7.1 2.1-13.2-.2-22.5-6.6-26.1-1.9-1.1-4-1.6-6.4-1.6-7 0-15.9 5.2-24.9 13.9-9-8.7-17.9-13.9-24.9-13.9-2.4 0-4.5.5-6.4 1.6-6.4 3.7-8.7 13-6.6 26.1.4 2.3.9 4.7 1.5 7.1-2.4.7-4.7 1.4-6.9 2.3C8.2 50 1.4 56.6 1.4 64s6.9 14 19.3 18.8c2.2.8 4.5 1.6 6.9 2.3-.6 2.4-1.1 4.8-1.5 7.1-2.1 13.2.2 22.5 6.6 26.1 1.9 1.1 4 1.6 6.4 1.6 7.1 0 16-5.2 24.9-13.9 9 8.7 17.9 13.9 24.9 13.9 2.4 0 4.5-.5 6.4-1.6 6.4-3.7 8.7-13 6.6-26.1-.4-2.3-.9-4.7-1.5-7.1 2.4-.7 4.7-1.4 6.9-2.3 12.5-4.8 19.3-11.4 19.3-18.8s-6.8-14-19.3-18.8zM92.5 14.7c4.1 2.4 5.5 9.8 3.8 20.3-.3 2.1-.8 4.3-1.4 6.6-5.2-1.2-10.7-2-16.5-2.5-3.4-4.8-6.9-9.1-10.4-13 7.4-7.3 14.9-12.3 21-12.3 1.3 0 2.5.3 3.5.9zM81.3 74c-1.8 3.2-3.9 6.4-6.1 9.6-3.7.3-7.4.4-11.2.4-3.9 0-7.6-.1-11.2-.4-2.2-3.2-4.2-6.4-6-9.6-1.9-3.3-3.7-6.7-5.3-10 1.6-3.3 3.4-6.7 5.3-10 1.8-3.2 3.9-6.4 6.1-9.6 3.7-.3 7.4-.4 11.2-.4 3.9 0 7.6.1 11.2.4 2.2 3.2 4.2 6.4 6 9.6 1.9 3.3 3.7 6.7 5.3 10-1.7 3.3-3.4 6.6-5.3 10zm8.3-3.3c1.5 3.5 2.7 6.9 3.8 10.3-3.4.8-7 1.4-10.8 1.9 1.2-1.9 2.5-3.9 3.6-6 1.2-2.1 2.3-4.2 3.4-6.2zM64 97.8c-2.4-2.6-4.7-5.4-6.9-8.3 2.3.1 4.6.2 6.9.2 2.3 0 4.6-.1 6.9-.2-2.2 2.9-4.5 5.7-6.9 8.3zm-18.6-15c-3.8-.5-7.4-1.1-10.8-1.9 1.1-3.3 2.3-6.8 3.8-10.3 1.1 2 2.2 4.1 3.4 6.1 1.2 2.2 2.4 4.1 3.6 6.1zm-7-25.5c-1.5-3.5-2.7-6.9-3.8-10.3 3.4-.8 7-1.4 10.8-1.9-1.2 1.9-2.5 3.9-3.6 6-1.2 2.1-2.3 4.2-3.4 6.2zM64 30.2c2.4 2.6 4.7 5.4 6.9 8.3-2.3-.1-4.6-.2-6.9-.2-2.3 0-4.6.1-6.9.2 2.2-2.9 4.5-5.7 6.9-8.3zm22.2 21l-3.6-6c3.8.5 7.4 1.1 10.8 1.9-1.1 3.3-2.3 6.8-3.8 10.3-1.1-2.1-2.2-4.2-3.4-6.2zM31.7 35c-1.7-10.5-.3-17.9 3.8-20.3 1-.6 2.2-.9 3.5-.9 6 0 13.5 4.9 21 12.3-3.5 3.8-7 8.2-10.4 13-5.8.5-11.3 1.4-16.5 2.5-.6-2.3-1-4.5-1.4-6.6zM7 64c0-4.7 5.7-9.7 15.7-13.4 2-.8 4.2-1.5 6.4-2.1 1.6 5 3.6 10.3 6 15.6-2.4 5.3-4.5 10.5-6 15.5C15.3 75.6 7 69.6 7 64zm28.5 49.3c-4.1-2.4-5.5-9.8-3.8-20.3.3-2.1.8-4.3 1.4-6.6 5.2 1.2 10.7 2 16.5 2.5 3.4 4.8 6.9 9.1 10.4 13-7.4 7.3-14.9 12.3-21 12.3-1.3 0-2.5-.3-3.5-.9zM96.3 93c1.7 10.5.3 17.9-3.8 20.3-1 .6-2.2.9-3.5.9-6 0-13.5-4.9-21-12.3 3.5-3.8 7-8.2 10.4-13 5.8-.5 11.3-1.4 16.5-2.5.6 2.3 1 4.5 1.4 6.6zm9-15.6c-2 .8-4.2 1.5-6.4 2.1-1.6-5-3.6-10.3-6-15.6 2.4-5.3 4.5-10.5 6-15.5 13.8 4 22.1 10 22.1 15.6 0 4.7-5.8 9.7-15.7 13.4z"})]})}):"javascript"===t?u.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",children:[u.jsx("path",{fill:"#F0DB4F",d:"M1.408 1.408h125.184v125.185H1.408z"}),u.jsx("path",{fill:"#323330",d:"M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581zM69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237z"})]}):"php"===t?u.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 800 400",children:u.jsx("g",{transform:"translate(-44.632 -141.55)",children:u.jsxs("g",{transform:"matrix(8.3528 0 0 8.3119 -727.13 -3759.5)",children:[u.jsx("path",{d:"m99.974 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79504 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21198 0.0353 0.42398 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053"}),u.jsx("path",{d:"m133.49 469.36h7.314l-2.067 10.123h6.572c3.604 0.0707 6.2893 0.81269 8.056 2.226 1.802 1.4134 2.332 4.0987 1.59 8.056l-3.551 17.649h-7.42l3.392-16.854c0.35328-1.7666 0.2473-3.021-0.318-3.763-0.56536-0.74198-1.7844-1.113-3.657-1.113l-5.883-0.053-4.346 21.783h-7.314l7.632-38.054"}),u.jsx("path",{d:"m162.81 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79503 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21199 0.0353 0.42399 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053"})]})})}):"json"===t?u.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:"0 0 160 160",children:[u.jsxs("defs",{children:[u.jsxs("linearGradient",{id:"a",children:[u.jsx("stop",{offset:"0"}),u.jsx("stop",{offset:"1",stopColor:"#fff"})]}),u.jsx("linearGradient",{x1:"-553.27",y1:"525.908",x2:"-666.116",y2:"413.045",id:"c",xlinkHref:"#a",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(.99884 0 0 .9987 689.008 -388.844)"}),u.jsx("linearGradient",{x1:"-666.117",y1:"413.045",x2:"-553.27",y2:"525.908",id:"b",xlinkHref:"#a",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(.99884 0 0 .9987 689.008 -388.844)"})]}),u.jsx("path",{d:"M79.865 119.1c35.397 48.255 70.04-13.469 69.988-50.587-.06-43.886-44.54-68.414-70.017-68.414C38.943.1 0 33.895 0 80.135 0 131.531 44.64 160 79.836 160c-7.965-1.147-34.507-6.834-34.863-67.967-.24-41.346 13.487-57.865 34.805-50.599.477.177 23.514 9.265 23.514 38.95 0 29.56-23.427 38.716-23.427 38.716z",style:{marker:"none"},color:"#000",fill:"url(#b)",fillRule:"evenodd",overflow:"visible"}),u.jsx("path",{d:"M79.823 41.4C56.433 33.34 27.78 52.618 27.78 91.23c0 63.048 46.72 68.77 52.384 68.77C121.057 160 160 126.204 160 79.964 160 28.568 115.36.1 80.164.1c9.749-1.35 52.541 10.55 52.541 69.037 0 38.141-31.953 58.905-52.735 50.033-.478-.177-23.514-9.264-23.514-38.95 0-29.56 23.367-38.818 23.367-38.818z",style:{marker:"none"},color:"#000",fill:"url(#c)",fillRule:"evenodd",overflow:"visible"})]}):void 0),selection:e};var t}}})),_=s.definePlugin({name:"@sanity/code-input",schema:{types:[F]}});exports.PreviewCode=L,exports.codeInput=_,exports.codeSchema=F,exports.codeTypeName="code";
1
+ "use strict";var e,t,n,r;function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}Object.defineProperty(exports,"__esModule",{value:!0});var s=require("sanity"),c=require("@sanity/icons"),u=require("react/jsx-runtime"),d=require("react"),h=require("@sanity/ui"),g=require("styled-components");function v(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=v(d),m=v(g);const f=g.css(e||(e=a(["\n .ace_editor_markers_highlight {\n position: absolute;\n background-color: ",";\n opacity: 0.2;\n width: 100% !important;\n border-radius: 0 !important;\n }\n"])),(e=>{let{theme:t}=e;return t.sanity.color.solid.primary.enabled.bg}));function b(e){return e.map((e=>({startRow:Number(e)-1,startCol:0,endRow:Number(e)-1,endCol:1/0,className:"ace_editor_markers_highlight",type:"screenLine",inFront:!0})))}const x=[{title:"Batch file",value:"batchfile"},{title:"C#",value:"csharp"},{title:"CSS",value:"css"},{title:"Go",value:"golang"},{title:"GROQ",value:"groq"},{title:"HTML",value:"html"},{title:"Java",value:"java"},{title:"JavaScript",value:"javascript"},{title:"JSON",value:"json"},{title:"JSX",value:"jsx"},{title:"Markdown",value:"markdown"},{title:"MySQL",value:"mysql"},{title:"PHP",value:"php"},{title:"Plain text",value:"text"},{title:"Python",value:"python"},{title:"Ruby",value:"ruby"},{title:"SASS",value:"sass"},{title:"SCSS",value:"scss"},{title:"sh",value:"sh"},{title:"TSX",value:"tsx"},{title:"TypeScript",value:"typescript"},{title:"XML",value:"xml"},{title:"YAML",value:"yaml"}],y={js:"javascript"},w=["github","monokai","terminal","tomorrow"],j={useSoftTabs:!0,navigateWithinSoftTabs:!0},k={$blockScrolling:!0},O=["code"],S=p.default.lazy((()=>Promise.resolve().then((function(){return require("./_chunks/editorSupport-bda3d360.js")}))));function C(){const[e,t]=d.useState(!1);return d.useEffect((()=>{requestAnimationFrame((()=>t(!0)))}),[]),e?S:null}const z=m.default(h.Card)(t||(t=a(["\n position: relative;\n box-sizing: border-box;\n overflow: hidden;\n z-index: 0;\n\n .ace_editor {\n font-family: ",";\n font-size: ",";\n line-height: inherit;\n }\n\n ","\n\n &:not([disabled]):not([readonly]) {\n &:focus,\n &:focus-within {\n box-shadow: 0 0 0 2px ",";\n background-color: ",";\n border-color: ",";\n }\n }\n"])),(e=>{let{theme:t}=e;return t.sanity.fonts.code.family}),(e=>{let{theme:t}=e;return t.sanity.fonts.code.sizes[1]}),f,(e=>{let{theme:t}=e;return t.sanity.color.base.focusRing}),(e=>{let{theme:t}=e;return t.sanity.color.base.bg}),(e=>{let{theme:t}=e;return t.sanity.color.base.focusRing}));const P=m.default(h.Box)(n||(n=a(["\n position: relative;\n"]))),M=m.default(h.Box)(r||(r=a(["\n background-color: #272822;\n\n .ace_editor {\n box-sizing: border-box;\n cursor: default;\n pointer-events: none;\n }\n\n .ace_content {\n box-sizing: border-box;\n overflow: hidden;\n }\n"])));function L(e){var t;const n=d.useRef();d.useEffect((()=>{var e;if(!(null==n?void 0:n.current))return;const t=null==(e=n.current)?void 0:e.editor;t&&(t.renderer.$cursorLayer.element.style.opacity=0,t.textInput.getElement().disabled=!0)}),[]);const r=d.useCallback((()=>{}),[]),{selection:i,schemaType:l}=e,o=null==(t=null==l?void 0:l.options)?void 0:t.language,a=(null==i?void 0:i.language)||o||"text",s=C();return u.jsx(P,{children:u.jsx(M,{padding:4,children:s&&u.jsx(d.Suspense,{fallback:u.jsx("div",{children:"Loading code preview..."}),children:u.jsx(s,{ref:n,focus:!1,mode:a,theme:"monokai",width:"100%",onChange:r,maxLines:200,readOnly:!0,wrapEnabled:!0,showPrintMargin:!1,highlightActiveLine:!1,cursorStart:-1,value:(null==i?void 0:i.code)||"",markers:(null==i?void 0:i.highlightedLines)?b(i.highlightedLines):void 0,tabSize:2,showGutter:!1,setOptions:j,editorProps:k})})})})}const F=s.defineType({name:"code",type:"object",title:"Code",components:{input:function(e){var t,n;const{members:r,elementProps:i,onChange:o,readOnly:a,renderField:c,renderInput:g,renderItem:v,renderPreview:p,schemaType:m,value:f,onPathFocus:S}=e,P=d.useRef(),M=d.useMemo((()=>r.filter((e=>"field"===e.kind))),[r]),L=M.find((e=>"language"===e.name)),F=M.find((e=>"filename"===e.name)),_=M.find((e=>"code"===e.name));d.useImperativeHandle(i.ref,(()=>({focus:()=>{var e,t;null==(t=null==(e=null==P?void 0:P.current)?void 0:e.editor)||t.focus()}})));const B=d.useCallback((()=>{S(O)}),[S]),{scheme:I}=s.useColorScheme(),T=d.useMemo((()=>{var e,t;const n="light"===I,r=n?null==(e=m.options)?void 0:e.theme:null==(t=m.options)?void 0:t.darkTheme,i=n?"tomorrow":"monokai";return r&&w.find((e=>e===r))?r:i}),[m,I]),A=d.useCallback((e=>{var t,n;const r=null==(n=null==(t=P.current)?void 0:t.editor)?void 0:n.getSession(),i=null==r?void 0:r.getMarkers(!0),l=Object.keys(i).filter((e=>"screenLine"===i[e].type)).map((e=>i[e].range.start.row)),a=l.indexOf(e);a>-1?l.splice(a,1):(l.push(e),l.sort()),o(s.set(l.map((e=>e+1)),["highlightedLines"]))}),[P,o]),q=d.useCallback((e=>{if(e.domEvent.target.classList.contains("ace_gutter-cell")){const t=e.getDocumentPosition().row;A(t)}}),[A]);d.useEffect((()=>{var e;const t=null==(e=null==P?void 0:P.current)?void 0:e.editor;return()=>{var e;null==(e=null==t?void 0:t.session)||e.removeListener("guttermousedown",q)}}),[P,q]);const E=d.useCallback((e=>{null==e||e.on("guttermousedown",q)}),[q]),R=d.useCallback((()=>{var e;const t=null==(e=m.options)?void 0:e.languageAlternatives;if(!t)return x;if(!Array.isArray(t))throw new Error("'options.languageAlternatives' should be an array, got ".concat(typeof t));return t.reduce(((e,t)=>{let{title:n,value:r,mode:i}=t;const l=y[r];return l?(console.warn('\'options.languageAlternatives\' lists a language with value "%s", which is an alias of "%s" - please replace the value to read "%s"',r,l,l),e.concat({title:n,value:l,mode:i})):(i||x.find((e=>e.value===r))||console.warn("'options.languageAlternatives' lists a language which is not supported: \"%s\", syntax highlighting will be disabled.",r),e.concat({title:n,value:r,mode:i}))}),[])}),[m]),H=d.useCallback((e=>{var t;const n=O,r=null==(t=m.options)?void 0:t.language;o([s.setIfMissing({_type:m.name,language:r}),e?s.set(e,n):s.unset(n)])}),[o,m]),D=R().slice(),G=null==(t=m.options)?void 0:t.language,N=(null==f?void 0:f.language)||G,U=D.find((e=>e.value===N)),J=N&&function(e){const t=y[e];return t||!!x.find((t=>t.value===e))&&e}(N),X=(null==U?void 0:U.mode)||(J?N:"text"),Q=d.useCallback((e=>u.jsx(h.Select,l(l({},e),{},{onChange:t=>{const n=t.currentTarget.value;e.onChange(n?s.set(n):s.unset())},children:D.map((e=>u.jsx("option",{value:e.value,children:e.title},e.value)))}))),[D]),$=C(),W=d.useCallback((e=>u.jsx(z,{radius:1,shadow:1,readOnly:a,children:$&&u.jsx(d.Suspense,{fallback:u.jsx("div",{children:"Loading code editor..."}),children:u.jsx($,{ref:P,mode:X,theme:T,width:"100%",onChange:H,name:e.id,value:e.value,markers:f&&f.highlightedLines?b(f.highlightedLines):void 0,onLoad:E,readOnly:a,tabSize:2,wrapEnabled:!0,setOptions:j,editorProps:k,onFocus:B,onBlur:i.onBlur})})})),[$,T,H,B,E,X,i.onBlur,a,f]);return u.jsxs(h.Stack,{space:4,children:[L&&u.jsx(s.MemberField,{member:L,renderItem:v,renderField:c,renderInput:Q,renderPreview:p}),(null==(n=m.options)?void 0:n.withFilename)&&F&&u.jsx(s.MemberField,{member:F,renderItem:v,renderField:c,renderInput:g,renderPreview:p}),_&&u.jsx(s.MemberField,{member:_,renderInput:W,renderItem:v,renderField:c,renderPreview:p})]})},preview:L},icon:c.CodeBlockIcon,fields:[{name:"language",title:"Language",type:"string"},{name:"filename",title:"Filename",type:"string"},{title:"Code",name:"code",type:"text"},{title:"Highlighted lines",name:"highlightedLines",type:"array",of:[{type:"number",title:"Highlighted line"}]}],preview:{select:{language:"language",code:"code",filename:"filename",highlightedLines:"highlightedLines"},prepare:e=>{return{title:e.filename||(e.language||"unknown").toUpperCase(),media:(t=null==e?void 0:e.language,"jsx"===t?u.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",children:u.jsxs("g",{fill:"#61DAFB",children:[u.jsx("circle",{cx:"64",cy:"64",r:"11.4"}),u.jsx("path",{d:"M107.3 45.2c-2.2-.8-4.5-1.6-6.9-2.3.6-2.4 1.1-4.8 1.5-7.1 2.1-13.2-.2-22.5-6.6-26.1-1.9-1.1-4-1.6-6.4-1.6-7 0-15.9 5.2-24.9 13.9-9-8.7-17.9-13.9-24.9-13.9-2.4 0-4.5.5-6.4 1.6-6.4 3.7-8.7 13-6.6 26.1.4 2.3.9 4.7 1.5 7.1-2.4.7-4.7 1.4-6.9 2.3C8.2 50 1.4 56.6 1.4 64s6.9 14 19.3 18.8c2.2.8 4.5 1.6 6.9 2.3-.6 2.4-1.1 4.8-1.5 7.1-2.1 13.2.2 22.5 6.6 26.1 1.9 1.1 4 1.6 6.4 1.6 7.1 0 16-5.2 24.9-13.9 9 8.7 17.9 13.9 24.9 13.9 2.4 0 4.5-.5 6.4-1.6 6.4-3.7 8.7-13 6.6-26.1-.4-2.3-.9-4.7-1.5-7.1 2.4-.7 4.7-1.4 6.9-2.3 12.5-4.8 19.3-11.4 19.3-18.8s-6.8-14-19.3-18.8zM92.5 14.7c4.1 2.4 5.5 9.8 3.8 20.3-.3 2.1-.8 4.3-1.4 6.6-5.2-1.2-10.7-2-16.5-2.5-3.4-4.8-6.9-9.1-10.4-13 7.4-7.3 14.9-12.3 21-12.3 1.3 0 2.5.3 3.5.9zM81.3 74c-1.8 3.2-3.9 6.4-6.1 9.6-3.7.3-7.4.4-11.2.4-3.9 0-7.6-.1-11.2-.4-2.2-3.2-4.2-6.4-6-9.6-1.9-3.3-3.7-6.7-5.3-10 1.6-3.3 3.4-6.7 5.3-10 1.8-3.2 3.9-6.4 6.1-9.6 3.7-.3 7.4-.4 11.2-.4 3.9 0 7.6.1 11.2.4 2.2 3.2 4.2 6.4 6 9.6 1.9 3.3 3.7 6.7 5.3 10-1.7 3.3-3.4 6.6-5.3 10zm8.3-3.3c1.5 3.5 2.7 6.9 3.8 10.3-3.4.8-7 1.4-10.8 1.9 1.2-1.9 2.5-3.9 3.6-6 1.2-2.1 2.3-4.2 3.4-6.2zM64 97.8c-2.4-2.6-4.7-5.4-6.9-8.3 2.3.1 4.6.2 6.9.2 2.3 0 4.6-.1 6.9-.2-2.2 2.9-4.5 5.7-6.9 8.3zm-18.6-15c-3.8-.5-7.4-1.1-10.8-1.9 1.1-3.3 2.3-6.8 3.8-10.3 1.1 2 2.2 4.1 3.4 6.1 1.2 2.2 2.4 4.1 3.6 6.1zm-7-25.5c-1.5-3.5-2.7-6.9-3.8-10.3 3.4-.8 7-1.4 10.8-1.9-1.2 1.9-2.5 3.9-3.6 6-1.2 2.1-2.3 4.2-3.4 6.2zM64 30.2c2.4 2.6 4.7 5.4 6.9 8.3-2.3-.1-4.6-.2-6.9-.2-2.3 0-4.6.1-6.9.2 2.2-2.9 4.5-5.7 6.9-8.3zm22.2 21l-3.6-6c3.8.5 7.4 1.1 10.8 1.9-1.1 3.3-2.3 6.8-3.8 10.3-1.1-2.1-2.2-4.2-3.4-6.2zM31.7 35c-1.7-10.5-.3-17.9 3.8-20.3 1-.6 2.2-.9 3.5-.9 6 0 13.5 4.9 21 12.3-3.5 3.8-7 8.2-10.4 13-5.8.5-11.3 1.4-16.5 2.5-.6-2.3-1-4.5-1.4-6.6zM7 64c0-4.7 5.7-9.7 15.7-13.4 2-.8 4.2-1.5 6.4-2.1 1.6 5 3.6 10.3 6 15.6-2.4 5.3-4.5 10.5-6 15.5C15.3 75.6 7 69.6 7 64zm28.5 49.3c-4.1-2.4-5.5-9.8-3.8-20.3.3-2.1.8-4.3 1.4-6.6 5.2 1.2 10.7 2 16.5 2.5 3.4 4.8 6.9 9.1 10.4 13-7.4 7.3-14.9 12.3-21 12.3-1.3 0-2.5-.3-3.5-.9zM96.3 93c1.7 10.5.3 17.9-3.8 20.3-1 .6-2.2.9-3.5.9-6 0-13.5-4.9-21-12.3 3.5-3.8 7-8.2 10.4-13 5.8-.5 11.3-1.4 16.5-2.5.6 2.3 1 4.5 1.4 6.6zm9-15.6c-2 .8-4.2 1.5-6.4 2.1-1.6-5-3.6-10.3-6-15.6 2.4-5.3 4.5-10.5 6-15.5 13.8 4 22.1 10 22.1 15.6 0 4.7-5.8 9.7-15.7 13.4z"})]})}):"javascript"===t?u.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",children:[u.jsx("path",{fill:"#F0DB4F",d:"M1.408 1.408h125.184v125.185H1.408z"}),u.jsx("path",{fill:"#323330",d:"M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581zM69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237z"})]}):"php"===t?u.jsx("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 800 400",children:u.jsx("g",{transform:"translate(-44.632 -141.55)",children:u.jsxs("g",{transform:"matrix(8.3528 0 0 8.3119 -727.13 -3759.5)",children:[u.jsx("path",{d:"m99.974 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79504 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21198 0.0353 0.42398 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053"}),u.jsx("path",{d:"m133.49 469.36h7.314l-2.067 10.123h6.572c3.604 0.0707 6.2893 0.81269 8.056 2.226 1.802 1.4134 2.332 4.0987 1.59 8.056l-3.551 17.649h-7.42l3.392-16.854c0.35328-1.7666 0.2473-3.021-0.318-3.763-0.56536-0.74198-1.7844-1.113-3.657-1.113l-5.883-0.053-4.346 21.783h-7.314l7.632-38.054"}),u.jsx("path",{d:"m162.81 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79503 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21199 0.0353 0.42399 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053"})]})})}):"json"===t?u.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",viewBox:"0 0 160 160",children:[u.jsxs("defs",{children:[u.jsxs("linearGradient",{id:"a",children:[u.jsx("stop",{offset:"0"}),u.jsx("stop",{offset:"1",stopColor:"#fff"})]}),u.jsx("linearGradient",{x1:"-553.27",y1:"525.908",x2:"-666.116",y2:"413.045",id:"c",xlinkHref:"#a",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(.99884 0 0 .9987 689.008 -388.844)"}),u.jsx("linearGradient",{x1:"-666.117",y1:"413.045",x2:"-553.27",y2:"525.908",id:"b",xlinkHref:"#a",gradientUnits:"userSpaceOnUse",gradientTransform:"matrix(.99884 0 0 .9987 689.008 -388.844)"})]}),u.jsx("path",{d:"M79.865 119.1c35.397 48.255 70.04-13.469 69.988-50.587-.06-43.886-44.54-68.414-70.017-68.414C38.943.1 0 33.895 0 80.135 0 131.531 44.64 160 79.836 160c-7.965-1.147-34.507-6.834-34.863-67.967-.24-41.346 13.487-57.865 34.805-50.599.477.177 23.514 9.265 23.514 38.95 0 29.56-23.427 38.716-23.427 38.716z",style:{marker:"none"},color:"#000",fill:"url(#b)",fillRule:"evenodd",overflow:"visible"}),u.jsx("path",{d:"M79.823 41.4C56.433 33.34 27.78 52.618 27.78 91.23c0 63.048 46.72 68.77 52.384 68.77C121.057 160 160 126.204 160 79.964 160 28.568 115.36.1 80.164.1c9.749-1.35 52.541 10.55 52.541 69.037 0 38.141-31.953 58.905-52.735 50.033-.478-.177-23.514-9.264-23.514-38.95 0-29.56 23.367-38.818 23.367-38.818z",style:{marker:"none"},color:"#000",fill:"url(#c)",fillRule:"evenodd",overflow:"visible"})]}):void 0),selection:e};var t}}}),_=s.definePlugin({name:"@sanity/code-input",schema:{types:[F]}});exports.PreviewCode=L,exports.codeInput=_,exports.codeSchema=F,exports.codeTypeName="code";
2
2
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/createHighlightMarkers.ts","../src/config.ts","../src/ace-editor/AceEditorLazy.tsx","../src/CodeInput.tsx","../src/PreviewCode.tsx","../src/schema.tsx","../src/getMedia.tsx","../src/index.ts"],"sourcesContent":["import type {IMarker} from 'react-ace'\nimport {css} from 'styled-components'\n\nexport const highlightMarkersCSS = css`\n .ace_editor_markers_highlight {\n position: absolute;\n background-color: ${({theme}) => theme.sanity.color.solid.primary.enabled.bg};\n opacity: 0.2;\n width: 100% !important;\n border-radius: 0 !important;\n }\n`\n\nexport default function createHighlightMarkers(rows: number[]): IMarker[] {\n return rows.map((row) => ({\n startRow: Number(row) - 1,\n startCol: 0,\n endRow: Number(row) - 1,\n endCol: +Infinity,\n className: 'ace_editor_markers_highlight',\n type: 'screenLine',\n inFront: true,\n }))\n}\n","import {CodeInputLanguage} from './types'\n\n// NOTE: MAKE SURE THESE ALIGN WITH IMPORTS IN ./ace-editor/editorSupport\nexport const SUPPORTED_LANGUAGES: CodeInputLanguage[] = [\n {title: 'Batch file', value: 'batchfile'},\n {title: 'C#', value: 'csharp'},\n {title: 'CSS', value: 'css'},\n {title: 'Go', value: 'golang'},\n {title: 'GROQ', value: 'groq'},\n {title: 'HTML', value: 'html'},\n {title: 'Java', value: 'java'},\n {title: 'JavaScript', value: 'javascript'},\n {title: 'JSON', value: 'json'},\n {title: 'JSX', value: 'jsx'},\n {title: 'Markdown', value: 'markdown'},\n {title: 'MySQL', value: 'mysql'},\n {title: 'PHP', value: 'php'},\n {title: 'Plain text', value: 'text'},\n {title: 'Python', value: 'python'},\n {title: 'Ruby', value: 'ruby'},\n {title: 'SASS', value: 'sass'},\n {title: 'SCSS', value: 'scss'},\n {title: 'sh', value: 'sh'},\n {title: 'TSX', value: 'tsx'},\n {title: 'TypeScript', value: 'typescript'},\n {title: 'XML', value: 'xml'},\n {title: 'YAML', value: 'yaml'},\n]\n\nexport const LANGUAGE_ALIASES: Record<string, string | undefined> = {js: 'javascript'}\n\nexport const SUPPORTED_THEMES = ['github', 'monokai', 'terminal', 'tomorrow']\n\nexport const DEFAULT_THEME = 'tomorrow'\nexport const DEFAULT_DARK_THEME = 'monokai'\n\nexport const ACE_SET_OPTIONS = {\n useSoftTabs: true,\n navigateWithinSoftTabs: true /* note only supported by ace v1.2.7 or higher */,\n}\n\nexport const ACE_EDITOR_PROPS = {$blockScrolling: true}\n\nexport const PATH_LANGUAGE = ['language']\nexport const PATH_CODE = ['code']\nexport const PATH_FILENAME = ['filename']\n","import React, {useEffect, useState} from 'react'\n\n/**\n * AceEditor loads window global directly when imported, which crashes in node envs.\n * This works around the issue by only importing ace-dependencies when window is defined.\n *\n * We only set the ace lazy component after mounting, to allow us to render null on the server,\n * and use suspense on the client. This will make hydration work correctly.\n */\nexport const AceEditorLazy = React.lazy(() => import('./editorSupport'))\n\nexport function useAceEditor() {\n const [mounted, setMounted] = useState(false)\n useEffect(() => {\n requestAnimationFrame(() => setMounted(true))\n }, [])\n\n return mounted ? AceEditorLazy : null\n}\n","/* eslint-disable react/jsx-handler-names */\nimport React, {Suspense, useCallback, useEffect, useImperativeHandle, useMemo, useRef} from 'react'\nimport {\n InputProps,\n ObjectSchemaType,\n StringInputProps,\n useColorScheme,\n FieldMember,\n MemberField,\n ObjectInputProps,\n set,\n setIfMissing,\n unset,\n RenderInputCallback,\n} from 'sanity'\nimport {Card, Select, Stack, ThemeColorSchemeKey} from '@sanity/ui'\nimport styled from 'styled-components'\nimport createHighlightMarkers, {highlightMarkersCSS} from './createHighlightMarkers'\nimport {CodeInputLanguage, CodeInputValue} from './types'\nimport {\n ACE_EDITOR_PROPS,\n ACE_SET_OPTIONS,\n DEFAULT_DARK_THEME,\n DEFAULT_THEME,\n LANGUAGE_ALIASES,\n PATH_CODE,\n SUPPORTED_LANGUAGES,\n SUPPORTED_THEMES,\n} from './config'\nimport {useAceEditor} from './ace-editor/AceEditorLazy'\n\nexport type {CodeInputLanguage, CodeInputValue} from './types'\n\nconst EditorContainer = styled(Card)`\n position: relative;\n box-sizing: border-box;\n overflow: hidden;\n z-index: 0;\n\n .ace_editor {\n font-family: ${({theme}) => theme.sanity.fonts.code.family};\n font-size: ${({theme}) => theme.sanity.fonts.code.sizes[1]};\n line-height: inherit;\n }\n\n ${highlightMarkersCSS}\n\n &:not([disabled]):not([readonly]) {\n &:focus,\n &:focus-within {\n box-shadow: 0 0 0 2px ${({theme}) => theme.sanity.color.base.focusRing};\n background-color: ${({theme}) => theme.sanity.color.base.bg};\n border-color: ${({theme}) => theme.sanity.color.base.focusRing};\n }\n }\n`\n\n/**\n * @public\n */\nexport interface CodeOptions {\n theme?: string\n darkTheme?: string\n languageAlternatives?: CodeInputLanguage[]\n language?: string\n withFilename?: boolean\n}\n\n/**\n * @public\n */\nexport type CodeSchemaType = Omit<ObjectSchemaType, 'options'> & {\n options?: CodeOptions\n}\n\n/**\n * @public\n */\nexport type CodeInputProps = ObjectInputProps<CodeInputValue, CodeSchemaType> & {\n /** @internal */\n colorScheme?: ThemeColorSchemeKey\n}\n\n// Returns a string with the mode name if supported (because aliases), otherwise false\nfunction isSupportedLanguage(mode: string) {\n const alias = LANGUAGE_ALIASES[mode]\n\n if (alias) {\n return alias\n }\n\n const isSupported = SUPPORTED_LANGUAGES.find((lang) => lang.value === mode)\n if (isSupported) {\n return mode\n }\n\n return false\n}\n\nexport function CodeInput(props: CodeInputProps) {\n const {\n members,\n elementProps,\n onChange,\n readOnly,\n renderField,\n renderInput,\n renderItem,\n renderPreview,\n schemaType: type,\n value,\n onPathFocus,\n } = props\n\n const aceEditorRef = useRef<any>()\n\n const fieldMembers = useMemo(\n () => members.filter((member) => member.kind === 'field') as FieldMember[],\n [members]\n )\n\n const languageFieldMember = fieldMembers.find((member) => member.name === 'language')\n const filenameMember = fieldMembers.find((member) => member.name === 'filename')\n const codeFieldMember = fieldMembers.find((member) => member.name === 'code')\n\n useImperativeHandle(elementProps.ref, () => ({\n focus: () => {\n aceEditorRef?.current?.editor?.focus()\n },\n }))\n\n const handleCodeFocus = useCallback(() => {\n onPathFocus(PATH_CODE)\n }, [onPathFocus])\n\n const {scheme} = useColorScheme()\n\n const theme = useMemo(() => {\n const isLight = scheme === 'light'\n const preferredTheme = isLight ? type.options?.theme : type.options?.darkTheme\n const defaultTheme = isLight ? DEFAULT_THEME : DEFAULT_DARK_THEME\n return preferredTheme && SUPPORTED_THEMES.find((t) => t === preferredTheme)\n ? preferredTheme\n : defaultTheme\n }, [type, scheme])\n\n const handleToggleSelectLine = useCallback(\n (lineNumber: number) => {\n const editorSession = aceEditorRef.current?.editor?.getSession()\n const backgroundMarkers = editorSession?.getMarkers(true)\n const currentHighlightedLines = Object.keys(backgroundMarkers)\n .filter((key) => backgroundMarkers[key].type === 'screenLine')\n .map((key) => backgroundMarkers[key].range.start.row)\n const currentIndex = currentHighlightedLines.indexOf(lineNumber)\n if (currentIndex > -1) {\n // toggle remove\n currentHighlightedLines.splice(currentIndex, 1)\n } else {\n // toggle add\n currentHighlightedLines.push(lineNumber)\n currentHighlightedLines.sort()\n }\n onChange(\n set(\n currentHighlightedLines.map(\n (line) =>\n // ace starts at line (row) 0, but we store it starting at line 1\n line + 1\n ),\n ['highlightedLines']\n )\n )\n },\n [aceEditorRef, onChange]\n )\n\n const handleGutterMouseDown = useCallback(\n (event: any) => {\n const target = event.domEvent.target\n if (target.classList.contains('ace_gutter-cell')) {\n const row = event.getDocumentPosition().row\n handleToggleSelectLine(row)\n }\n },\n [handleToggleSelectLine]\n )\n\n useEffect(() => {\n const editor = aceEditorRef?.current?.editor\n return () => {\n editor?.session?.removeListener('guttermousedown', handleGutterMouseDown)\n }\n }, [aceEditorRef, handleGutterMouseDown])\n\n const handleEditorLoad = useCallback(\n (editor: any) => {\n editor?.on('guttermousedown', handleGutterMouseDown)\n },\n [handleGutterMouseDown]\n )\n\n const getLanguageAlternatives = useCallback((): {\n title: string\n value: string\n mode?: string\n }[] => {\n const languageAlternatives = type.options?.languageAlternatives\n if (!languageAlternatives) {\n return SUPPORTED_LANGUAGES\n }\n\n if (!Array.isArray(languageAlternatives)) {\n throw new Error(\n `'options.languageAlternatives' should be an array, got ${typeof languageAlternatives}`\n )\n }\n\n return languageAlternatives.reduce((acc: CodeInputLanguage[], {title, value: val, mode}) => {\n const alias = LANGUAGE_ALIASES[val]\n if (alias) {\n // eslint-disable-next-line no-console\n console.warn(\n `'options.languageAlternatives' lists a language with value \"%s\", which is an alias of \"%s\" - please replace the value to read \"%s\"`,\n val,\n alias,\n alias\n )\n\n return acc.concat({title, value: alias, mode: mode})\n }\n\n if (!mode && !SUPPORTED_LANGUAGES.find((lang) => lang.value === val)) {\n // eslint-disable-next-line no-console\n console.warn(\n `'options.languageAlternatives' lists a language which is not supported: \"%s\", syntax highlighting will be disabled.`,\n val\n )\n }\n\n return acc.concat({title, value: val, mode})\n }, [])\n }, [type])\n\n const handleCodeChange = useCallback(\n (code: string) => {\n const path = PATH_CODE\n const fixedLanguage = type.options?.language\n\n onChange([\n setIfMissing({_type: type.name, language: fixedLanguage}),\n code ? set(code, path) : unset(path),\n ])\n },\n [onChange, type]\n )\n\n const languages = getLanguageAlternatives().slice()\n\n const fixedLanguage = type.options?.language\n\n const language = value?.language || fixedLanguage\n\n // the language config from the schema\n const configured = languages.find((entry) => entry.value === language)\n\n // is the language officially supported (e.g. we import the mode by default)\n const supported = language && isSupportedLanguage(language)\n\n const mode = configured?.mode || (supported ? language : 'text')\n\n const renderLanguageInput = useCallback(\n (inputProps: Omit<InputProps, 'renderDefault'>) => {\n return (\n <Select\n {...(inputProps as StringInputProps)}\n onChange={(e) => {\n const newValue = e.currentTarget.value\n inputProps.onChange(newValue ? set(newValue) : unset())\n }}\n >\n {languages.map((lang: {title: string; value: string}) => (\n <option key={lang.value} value={lang.value}>\n {lang.title}\n </option>\n ))}\n </Select>\n )\n },\n [languages]\n )\n\n const AceEditor = useAceEditor()\n\n const renderCodeInput: RenderInputCallback = useCallback(\n (inputProps) => {\n return (\n <EditorContainer radius={1} shadow={1} readOnly={readOnly}>\n {AceEditor && (\n <Suspense fallback={<div>Loading code editor...</div>}>\n <AceEditor\n ref={aceEditorRef}\n mode={mode}\n theme={theme}\n width=\"100%\"\n onChange={handleCodeChange}\n name={inputProps.id}\n value={inputProps.value as string}\n markers={\n value && value.highlightedLines\n ? createHighlightMarkers(value.highlightedLines)\n : undefined\n }\n onLoad={handleEditorLoad}\n readOnly={readOnly}\n tabSize={2}\n wrapEnabled\n setOptions={ACE_SET_OPTIONS}\n editorProps={ACE_EDITOR_PROPS}\n onFocus={handleCodeFocus}\n onBlur={elementProps.onBlur}\n />\n </Suspense>\n )}\n </EditorContainer>\n )\n },\n [\n AceEditor,\n theme,\n handleCodeChange,\n handleCodeFocus,\n handleEditorLoad,\n mode,\n elementProps.onBlur,\n readOnly,\n value,\n ]\n )\n\n return (\n <Stack space={4}>\n {languageFieldMember && (\n <MemberField\n member={languageFieldMember}\n renderItem={renderItem}\n renderField={renderField}\n renderInput={renderLanguageInput}\n renderPreview={renderPreview}\n />\n )}\n\n {type.options?.withFilename && filenameMember && (\n <MemberField\n member={filenameMember}\n renderItem={renderItem}\n renderField={renderField}\n renderInput={renderInput}\n renderPreview={renderPreview}\n />\n )}\n\n {codeFieldMember && (\n <MemberField\n member={codeFieldMember}\n renderInput={renderCodeInput}\n renderItem={renderItem}\n renderField={renderField}\n renderPreview={renderPreview}\n />\n )}\n </Stack>\n )\n}\n","import React, {Suspense, useCallback, useEffect, useRef} from 'react'\nimport styled from 'styled-components'\nimport {Box} from '@sanity/ui'\nimport {ACE_EDITOR_PROPS, ACE_SET_OPTIONS} from './config'\nimport createHighlightMarkers from './createHighlightMarkers'\nimport {CodeInputValue} from './types'\nimport {useAceEditor} from './ace-editor/AceEditorLazy'\nimport {CodeSchemaType} from './CodeInput'\n\nconst PreviewContainer = styled(Box)`\n position: relative;\n`\n\nconst PreviewInner = styled(Box)`\n background-color: #272822;\n\n .ace_editor {\n box-sizing: border-box;\n cursor: default;\n pointer-events: none;\n }\n\n .ace_content {\n box-sizing: border-box;\n overflow: hidden;\n }\n`\n\n/**\n * @public\n */\nexport interface PreviewCodeProps {\n type?: CodeSchemaType\n value?: {selection?: CodeInputValue}\n}\n\n/**\n * @public\n */\nexport default function PreviewCode(props: PreviewCodeProps) {\n const aceEditorRef = useRef<any>()\n\n useEffect(() => {\n if (!aceEditorRef?.current) return\n\n const editor = aceEditorRef.current?.editor\n\n if (editor) {\n // Avoid cursor and focus tracking by Ace\n editor.renderer.$cursorLayer.element.style.opacity = 0\n editor.textInput.getElement().disabled = true\n }\n }, [])\n\n const handleEditorChange = useCallback(() => {\n // do nothing when the editor changes\n }, [])\n\n const {value, type} = props\n const fixedLanguage = type?.options?.language\n\n const selection = value?.selection\n const mode = selection?.language || fixedLanguage || 'text'\n\n const AceEditor = useAceEditor()\n return (\n <PreviewContainer>\n <PreviewInner padding={4}>\n {AceEditor && (\n <Suspense fallback={<div>Loading code preview...</div>}>\n <AceEditor\n ref={aceEditorRef}\n focus={false}\n mode={mode}\n theme=\"monokai\"\n width=\"100%\"\n onChange={handleEditorChange}\n maxLines={200}\n readOnly\n wrapEnabled\n showPrintMargin={false}\n highlightActiveLine={false}\n cursorStart={-1}\n value={selection?.code || ''}\n markers={\n selection?.highlightedLines\n ? createHighlightMarkers(selection.highlightedLines)\n : undefined\n }\n tabSize={2}\n showGutter={false}\n setOptions={ACE_SET_OPTIONS}\n editorProps={ACE_EDITOR_PROPS}\n />\n </Suspense>\n )}\n </PreviewInner>\n </PreviewContainer>\n )\n}\n","import {CodeBlockIcon} from '@sanity/icons'\nimport {CodeInput, CodeOptions} from './CodeInput'\nimport PreviewCode, {PreviewCodeProps} from './PreviewCode'\nimport {getMedia} from './getMedia'\nimport {defineType, ObjectDefinition} from 'sanity'\n\nexport type {CodeInputProps, CodeSchemaType} from './CodeInput'\n\nexport type {CodeInputLanguage, CodeInputValue} from './types'\nexport type {PreviewCode, PreviewCodeProps, CodeInput}\n\n/**\n * @public\n */\nexport const codeTypeName = 'code' as const\n\n/**\n * @public\n */\nexport interface CodeDefinition extends Omit<ObjectDefinition, 'type' | 'fields' | 'options'> {\n type: typeof codeTypeName\n options?: CodeOptions\n}\n\ndeclare module '@sanity/types' {\n // makes type: 'code' narrow correctly when using defineType/defineField/defineArrayMember\n export interface IntrinsicDefinitions {\n code: CodeDefinition\n }\n}\n\n/**\n * @public\n */\nexport const codeSchema = defineType({\n name: 'code',\n type: 'object',\n title: 'Code',\n ...({components: {input: CodeInput, preview: PreviewCode}} as {}), //TODO rollback change when rc.1 is released\n icon: CodeBlockIcon,\n fields: [\n {\n name: 'language',\n title: 'Language',\n type: 'string',\n },\n {\n name: 'filename',\n title: 'Filename',\n type: 'string',\n },\n {\n title: 'Code',\n name: 'code',\n type: 'text',\n },\n {\n title: 'Highlighted lines',\n name: 'highlightedLines',\n type: 'array',\n of: [\n {\n type: 'number',\n title: 'Highlighted line',\n },\n ],\n },\n ],\n preview: {\n select: {\n language: 'language',\n code: 'code',\n filename: 'filename',\n highlightedLines: 'highlightedLines',\n },\n prepare: (value: {\n language?: string\n code?: string\n filename?: string\n highlightedLines?: number[]\n }) => {\n return {\n title: value.filename || (value.language || 'unknown').toUpperCase(),\n media: getMedia(value?.language),\n selection: value,\n }\n },\n },\n})\n","import React from 'react'\n\nexport function getMedia(language?: string) {\n if (language === 'jsx') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <g fill=\"#61DAFB\">\n <circle cx=\"64\" cy=\"64\" r=\"11.4\" />\n <path d=\"M107.3 45.2c-2.2-.8-4.5-1.6-6.9-2.3.6-2.4 1.1-4.8 1.5-7.1 2.1-13.2-.2-22.5-6.6-26.1-1.9-1.1-4-1.6-6.4-1.6-7 0-15.9 5.2-24.9 13.9-9-8.7-17.9-13.9-24.9-13.9-2.4 0-4.5.5-6.4 1.6-6.4 3.7-8.7 13-6.6 26.1.4 2.3.9 4.7 1.5 7.1-2.4.7-4.7 1.4-6.9 2.3C8.2 50 1.4 56.6 1.4 64s6.9 14 19.3 18.8c2.2.8 4.5 1.6 6.9 2.3-.6 2.4-1.1 4.8-1.5 7.1-2.1 13.2.2 22.5 6.6 26.1 1.9 1.1 4 1.6 6.4 1.6 7.1 0 16-5.2 24.9-13.9 9 8.7 17.9 13.9 24.9 13.9 2.4 0 4.5-.5 6.4-1.6 6.4-3.7 8.7-13 6.6-26.1-.4-2.3-.9-4.7-1.5-7.1 2.4-.7 4.7-1.4 6.9-2.3 12.5-4.8 19.3-11.4 19.3-18.8s-6.8-14-19.3-18.8zM92.5 14.7c4.1 2.4 5.5 9.8 3.8 20.3-.3 2.1-.8 4.3-1.4 6.6-5.2-1.2-10.7-2-16.5-2.5-3.4-4.8-6.9-9.1-10.4-13 7.4-7.3 14.9-12.3 21-12.3 1.3 0 2.5.3 3.5.9zM81.3 74c-1.8 3.2-3.9 6.4-6.1 9.6-3.7.3-7.4.4-11.2.4-3.9 0-7.6-.1-11.2-.4-2.2-3.2-4.2-6.4-6-9.6-1.9-3.3-3.7-6.7-5.3-10 1.6-3.3 3.4-6.7 5.3-10 1.8-3.2 3.9-6.4 6.1-9.6 3.7-.3 7.4-.4 11.2-.4 3.9 0 7.6.1 11.2.4 2.2 3.2 4.2 6.4 6 9.6 1.9 3.3 3.7 6.7 5.3 10-1.7 3.3-3.4 6.6-5.3 10zm8.3-3.3c1.5 3.5 2.7 6.9 3.8 10.3-3.4.8-7 1.4-10.8 1.9 1.2-1.9 2.5-3.9 3.6-6 1.2-2.1 2.3-4.2 3.4-6.2zM64 97.8c-2.4-2.6-4.7-5.4-6.9-8.3 2.3.1 4.6.2 6.9.2 2.3 0 4.6-.1 6.9-.2-2.2 2.9-4.5 5.7-6.9 8.3zm-18.6-15c-3.8-.5-7.4-1.1-10.8-1.9 1.1-3.3 2.3-6.8 3.8-10.3 1.1 2 2.2 4.1 3.4 6.1 1.2 2.2 2.4 4.1 3.6 6.1zm-7-25.5c-1.5-3.5-2.7-6.9-3.8-10.3 3.4-.8 7-1.4 10.8-1.9-1.2 1.9-2.5 3.9-3.6 6-1.2 2.1-2.3 4.2-3.4 6.2zM64 30.2c2.4 2.6 4.7 5.4 6.9 8.3-2.3-.1-4.6-.2-6.9-.2-2.3 0-4.6.1-6.9.2 2.2-2.9 4.5-5.7 6.9-8.3zm22.2 21l-3.6-6c3.8.5 7.4 1.1 10.8 1.9-1.1 3.3-2.3 6.8-3.8 10.3-1.1-2.1-2.2-4.2-3.4-6.2zM31.7 35c-1.7-10.5-.3-17.9 3.8-20.3 1-.6 2.2-.9 3.5-.9 6 0 13.5 4.9 21 12.3-3.5 3.8-7 8.2-10.4 13-5.8.5-11.3 1.4-16.5 2.5-.6-2.3-1-4.5-1.4-6.6zM7 64c0-4.7 5.7-9.7 15.7-13.4 2-.8 4.2-1.5 6.4-2.1 1.6 5 3.6 10.3 6 15.6-2.4 5.3-4.5 10.5-6 15.5C15.3 75.6 7 69.6 7 64zm28.5 49.3c-4.1-2.4-5.5-9.8-3.8-20.3.3-2.1.8-4.3 1.4-6.6 5.2 1.2 10.7 2 16.5 2.5 3.4 4.8 6.9 9.1 10.4 13-7.4 7.3-14.9 12.3-21 12.3-1.3 0-2.5-.3-3.5-.9zM96.3 93c1.7 10.5.3 17.9-3.8 20.3-1 .6-2.2.9-3.5.9-6 0-13.5-4.9-21-12.3 3.5-3.8 7-8.2 10.4-13 5.8-.5 11.3-1.4 16.5-2.5.6 2.3 1 4.5 1.4 6.6zm9-15.6c-2 .8-4.2 1.5-6.4 2.1-1.6-5-3.6-10.3-6-15.6 2.4-5.3 4.5-10.5 6-15.5 13.8 4 22.1 10 22.1 15.6 0 4.7-5.8 9.7-15.7 13.4z\" />\n </g>\n </svg>\n )\n }\n\n if (language === 'javascript') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <path fill=\"#F0DB4F\" d=\"M1.408 1.408h125.184v125.185H1.408z\" />\n <path\n fill=\"#323330\"\n d=\"M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581zM69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237z\"\n />\n </svg>\n )\n }\n\n if (language === 'php') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 400\">\n <g transform=\"translate(-44.632 -141.55)\">\n <g transform=\"matrix(8.3528 0 0 8.3119 -727.13 -3759.5)\">\n <path d=\"m99.974 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79504 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21198 0.0353 0.42398 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053\" />\n <path d=\"m133.49 469.36h7.314l-2.067 10.123h6.572c3.604 0.0707 6.2893 0.81269 8.056 2.226 1.802 1.4134 2.332 4.0987 1.59 8.056l-3.551 17.649h-7.42l3.392-16.854c0.35328-1.7666 0.2473-3.021-0.318-3.763-0.56536-0.74198-1.7844-1.113-3.657-1.113l-5.883-0.053-4.346 21.783h-7.314l7.632-38.054\" />\n <path d=\"m162.81 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79503 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21199 0.0353 0.42399 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053\" />\n </g>\n </g>\n </svg>\n )\n }\n\n if (language === 'json') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 160 160\"\n >\n <defs>\n <linearGradient id=\"a\">\n <stop offset=\"0\" />\n <stop offset=\"1\" stopColor=\"#fff\" />\n </linearGradient>\n <linearGradient\n x1=\"-553.27\"\n y1=\"525.908\"\n x2=\"-666.116\"\n y2=\"413.045\"\n id=\"c\"\n xlinkHref=\"#a\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"matrix(.99884 0 0 .9987 689.008 -388.844)\"\n />\n <linearGradient\n x1=\"-666.117\"\n y1=\"413.045\"\n x2=\"-553.27\"\n y2=\"525.908\"\n id=\"b\"\n xlinkHref=\"#a\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"matrix(.99884 0 0 .9987 689.008 -388.844)\"\n />\n </defs>\n <path\n d=\"M79.865 119.1c35.397 48.255 70.04-13.469 69.988-50.587-.06-43.886-44.54-68.414-70.017-68.414C38.943.1 0 33.895 0 80.135 0 131.531 44.64 160 79.836 160c-7.965-1.147-34.507-6.834-34.863-67.967-.24-41.346 13.487-57.865 34.805-50.599.477.177 23.514 9.265 23.514 38.95 0 29.56-23.427 38.716-23.427 38.716z\"\n style={{marker: 'none'}}\n color=\"#000\"\n fill=\"url(#b)\"\n fillRule=\"evenodd\"\n overflow=\"visible\"\n />\n <path\n d=\"M79.823 41.4C56.433 33.34 27.78 52.618 27.78 91.23c0 63.048 46.72 68.77 52.384 68.77C121.057 160 160 126.204 160 79.964 160 28.568 115.36.1 80.164.1c9.749-1.35 52.541 10.55 52.541 69.037 0 38.141-31.953 58.905-52.735 50.033-.478-.177-23.514-9.264-23.514-38.95 0-29.56 23.367-38.818 23.367-38.818z\"\n style={{marker: 'none'}}\n color=\"#000\"\n fill=\"url(#c)\"\n fillRule=\"evenodd\"\n overflow=\"visible\"\n />\n </svg>\n )\n }\n\n return undefined\n}\n","import {definePlugin} from 'sanity'\n\nimport {codeSchema, codeTypeName, CodeDefinition} from './schema'\nimport PreviewCode, {PreviewCodeProps} from './PreviewCode'\nexport type {CodeInputProps, CodeSchemaType, CodeOptions} from './CodeInput'\n\nexport type {CodeInputLanguage, CodeInputValue} from './types'\n\nexport {PreviewCode, type PreviewCodeProps}\nexport {codeSchema, codeTypeName}\nexport type {CodeDefinition}\n/**\n * @public\n */\nexport const codeInput = definePlugin({\n name: '@sanity/code-input',\n schema: {types: [codeSchema]},\n})\n"],"names":["highlightMarkersCSS","css","_templateObject","_taggedTemplateLiteral","_ref","theme","sanity","color","solid","primary","enabled","bg","createHighlightMarkers","rows","map","row","startRow","Number","startCol","endRow","endCol","Infinity","className","type","inFront","SUPPORTED_LANGUAGES","title","value","LANGUAGE_ALIASES","js","SUPPORTED_THEMES","ACE_SET_OPTIONS","useSoftTabs","navigateWithinSoftTabs","ACE_EDITOR_PROPS","$blockScrolling","PATH_CODE","AceEditorLazy","React","lazy","Promise","resolve","then","require","useAceEditor","mounted","setMounted","useState","useEffect","requestAnimationFrame","EditorContainer","styled","Card","_templateObject2","_ref2","fonts","code","family","_ref3","sizes","_ref4","base","focusRing","_ref5","_ref6","PreviewContainer","Box","_templateObject3","PreviewInner","_templateObject4","PreviewCode","props","_a","aceEditorRef","useRef","current","editor","renderer","$cursorLayer","element","style","opacity","textInput","getElement","disabled","handleEditorChange","useCallback","fixedLanguage","options","language","selection","mode","AceEditor","jsx","children","padding","Suspense","fallback","ref","focus","width","onChange","maxLines","readOnly","wrapEnabled","showPrintMargin","highlightActiveLine","cursorStart","markers","highlightedLines","tabSize","showGutter","setOptions","editorProps","codeSchema","defineType","_objectSpread","name","components","input","_b","members","elementProps","renderField","renderInput","renderItem","renderPreview","schemaType","onPathFocus","fieldMembers","useMemo","filter","member","kind","languageFieldMember","find","filenameMember","codeFieldMember","useImperativeHandle","handleCodeFocus","scheme","useColorScheme","isLight","preferredTheme","darkTheme","defaultTheme","t","handleToggleSelectLine","lineNumber","editorSession","getSession","backgroundMarkers","getMarkers","currentHighlightedLines","Object","keys","key","range","start","currentIndex","indexOf","splice","push","sort","set","line","handleGutterMouseDown","event","domEvent","target","classList","contains","getDocumentPosition","session","removeListener","handleEditorLoad","on","getLanguageAlternatives","languageAlternatives","Array","isArray","Error","concat","reduce","acc","_ref7","val","alias","console","warn","lang","handleCodeChange","path","setIfMissing","_type","unset","languages","slice","configured","entry","supported","isSupportedLanguage","renderLanguageInput","inputProps","Select","e","newValue","currentTarget","renderCodeInput","radius","shadow","id","onLoad","onFocus","onBlur","jsxs","Stack","space","MemberField","withFilename","preview","icon","CodeBlockIcon","fields","of","select","filename","prepare","toUpperCase","media","xmlns","viewBox","fill","cx","cy","r","d","transform","xmlnsXlink","offset","stopColor","x1","y1","x2","y2","xlinkHref","gradientUnits","gradientTransform","marker","fillRule","overflow","codeInput","definePlugin","schema","types"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/createHighlightMarkers.ts","../src/config.ts","../src/ace-editor/AceEditorLazy.tsx","../src/CodeInput.tsx","../src/PreviewCode.tsx","../src/getMedia.tsx"],"sourcesContent":["import type {IMarker} from 'react-ace'\nimport {css} from 'styled-components'\n\nexport const highlightMarkersCSS = css`\n .ace_editor_markers_highlight {\n position: absolute;\n background-color: ${({theme}) => theme.sanity.color.solid.primary.enabled.bg};\n opacity: 0.2;\n width: 100% !important;\n border-radius: 0 !important;\n }\n`\n\nexport default function createHighlightMarkers(rows: number[]): IMarker[] {\n return rows.map((row) => ({\n startRow: Number(row) - 1,\n startCol: 0,\n endRow: Number(row) - 1,\n endCol: +Infinity,\n className: 'ace_editor_markers_highlight',\n type: 'screenLine',\n inFront: true,\n }))\n}\n","import {CodeInputLanguage} from './types'\n\n// NOTE: MAKE SURE THESE ALIGN WITH IMPORTS IN ./ace-editor/editorSupport\nexport const SUPPORTED_LANGUAGES: CodeInputLanguage[] = [\n {title: 'Batch file', value: 'batchfile'},\n {title: 'C#', value: 'csharp'},\n {title: 'CSS', value: 'css'},\n {title: 'Go', value: 'golang'},\n {title: 'GROQ', value: 'groq'},\n {title: 'HTML', value: 'html'},\n {title: 'Java', value: 'java'},\n {title: 'JavaScript', value: 'javascript'},\n {title: 'JSON', value: 'json'},\n {title: 'JSX', value: 'jsx'},\n {title: 'Markdown', value: 'markdown'},\n {title: 'MySQL', value: 'mysql'},\n {title: 'PHP', value: 'php'},\n {title: 'Plain text', value: 'text'},\n {title: 'Python', value: 'python'},\n {title: 'Ruby', value: 'ruby'},\n {title: 'SASS', value: 'sass'},\n {title: 'SCSS', value: 'scss'},\n {title: 'sh', value: 'sh'},\n {title: 'TSX', value: 'tsx'},\n {title: 'TypeScript', value: 'typescript'},\n {title: 'XML', value: 'xml'},\n {title: 'YAML', value: 'yaml'},\n]\n\nexport const LANGUAGE_ALIASES: Record<string, string | undefined> = {js: 'javascript'}\n\nexport const SUPPORTED_THEMES = ['github', 'monokai', 'terminal', 'tomorrow']\n\nexport const DEFAULT_THEME = 'tomorrow'\nexport const DEFAULT_DARK_THEME = 'monokai'\n\nexport const ACE_SET_OPTIONS = {\n useSoftTabs: true,\n navigateWithinSoftTabs: true /* note only supported by ace v1.2.7 or higher */,\n}\n\nexport const ACE_EDITOR_PROPS = {$blockScrolling: true}\n\nexport const PATH_LANGUAGE = ['language']\nexport const PATH_CODE = ['code']\nexport const PATH_FILENAME = ['filename']\n","import React, {useEffect, useState} from 'react'\n\n/**\n * AceEditor loads window global directly when imported, which crashes in node envs.\n * This works around the issue by only importing ace-dependencies when window is defined.\n *\n * We only set the ace lazy component after mounting, to allow us to render null on the server,\n * and use suspense on the client. This will make hydration work correctly.\n */\nexport const AceEditorLazy = React.lazy(() => import('./editorSupport'))\n\nexport function useAceEditor() {\n const [mounted, setMounted] = useState(false)\n useEffect(() => {\n requestAnimationFrame(() => setMounted(true))\n }, [])\n\n return mounted ? AceEditorLazy : null\n}\n","/* eslint-disable react/jsx-handler-names */\nimport React, {Suspense, useCallback, useEffect, useImperativeHandle, useMemo, useRef} from 'react'\nimport {\n InputProps,\n ObjectSchemaType,\n StringInputProps,\n useColorScheme,\n FieldMember,\n MemberField,\n ObjectInputProps,\n set,\n setIfMissing,\n unset,\n RenderInputCallback,\n} from 'sanity'\nimport {Card, Select, Stack, ThemeColorSchemeKey} from '@sanity/ui'\nimport styled from 'styled-components'\nimport createHighlightMarkers, {highlightMarkersCSS} from './createHighlightMarkers'\nimport {CodeInputLanguage, CodeInputValue} from './types'\nimport {\n ACE_EDITOR_PROPS,\n ACE_SET_OPTIONS,\n DEFAULT_DARK_THEME,\n DEFAULT_THEME,\n LANGUAGE_ALIASES,\n PATH_CODE,\n SUPPORTED_LANGUAGES,\n SUPPORTED_THEMES,\n} from './config'\nimport {useAceEditor} from './ace-editor/AceEditorLazy'\n\nexport type {CodeInputLanguage, CodeInputValue} from './types'\n\nconst EditorContainer = styled(Card)`\n position: relative;\n box-sizing: border-box;\n overflow: hidden;\n z-index: 0;\n\n .ace_editor {\n font-family: ${({theme}) => theme.sanity.fonts.code.family};\n font-size: ${({theme}) => theme.sanity.fonts.code.sizes[1]};\n line-height: inherit;\n }\n\n ${highlightMarkersCSS}\n\n &:not([disabled]):not([readonly]) {\n &:focus,\n &:focus-within {\n box-shadow: 0 0 0 2px ${({theme}) => theme.sanity.color.base.focusRing};\n background-color: ${({theme}) => theme.sanity.color.base.bg};\n border-color: ${({theme}) => theme.sanity.color.base.focusRing};\n }\n }\n`\n\n/**\n * @public\n */\nexport interface CodeOptions {\n theme?: string\n darkTheme?: string\n languageAlternatives?: CodeInputLanguage[]\n language?: string\n withFilename?: boolean\n}\n\n/**\n * @public\n */\nexport type CodeSchemaType = Omit<ObjectSchemaType, 'options'> & {\n options?: CodeOptions\n}\n\n/**\n * @public\n */\nexport type CodeInputProps = ObjectInputProps<CodeInputValue, CodeSchemaType> & {\n /** @internal */\n colorScheme?: ThemeColorSchemeKey\n}\n\n// Returns a string with the mode name if supported (because aliases), otherwise false\nfunction isSupportedLanguage(mode: string) {\n const alias = LANGUAGE_ALIASES[mode]\n\n if (alias) {\n return alias\n }\n\n const isSupported = SUPPORTED_LANGUAGES.find((lang) => lang.value === mode)\n if (isSupported) {\n return mode\n }\n\n return false\n}\n\nexport function CodeInput(props: CodeInputProps) {\n const {\n members,\n elementProps,\n onChange,\n readOnly,\n renderField,\n renderInput,\n renderItem,\n renderPreview,\n schemaType: type,\n value,\n onPathFocus,\n } = props\n\n const aceEditorRef = useRef<any>()\n\n const fieldMembers = useMemo(\n () => members.filter((member) => member.kind === 'field') as FieldMember[],\n [members]\n )\n\n const languageFieldMember = fieldMembers.find((member) => member.name === 'language')\n const filenameMember = fieldMembers.find((member) => member.name === 'filename')\n const codeFieldMember = fieldMembers.find((member) => member.name === 'code')\n\n useImperativeHandle(elementProps.ref, () => ({\n focus: () => {\n aceEditorRef?.current?.editor?.focus()\n },\n }))\n\n const handleCodeFocus = useCallback(() => {\n onPathFocus(PATH_CODE)\n }, [onPathFocus])\n\n const {scheme} = useColorScheme()\n\n const theme = useMemo(() => {\n const isLight = scheme === 'light'\n const preferredTheme = isLight ? type.options?.theme : type.options?.darkTheme\n const defaultTheme = isLight ? DEFAULT_THEME : DEFAULT_DARK_THEME\n return preferredTheme && SUPPORTED_THEMES.find((t) => t === preferredTheme)\n ? preferredTheme\n : defaultTheme\n }, [type, scheme])\n\n const handleToggleSelectLine = useCallback(\n (lineNumber: number) => {\n const editorSession = aceEditorRef.current?.editor?.getSession()\n const backgroundMarkers = editorSession?.getMarkers(true)\n const currentHighlightedLines = Object.keys(backgroundMarkers)\n .filter((key) => backgroundMarkers[key].type === 'screenLine')\n .map((key) => backgroundMarkers[key].range.start.row)\n const currentIndex = currentHighlightedLines.indexOf(lineNumber)\n if (currentIndex > -1) {\n // toggle remove\n currentHighlightedLines.splice(currentIndex, 1)\n } else {\n // toggle add\n currentHighlightedLines.push(lineNumber)\n currentHighlightedLines.sort()\n }\n onChange(\n set(\n currentHighlightedLines.map(\n (line) =>\n // ace starts at line (row) 0, but we store it starting at line 1\n line + 1\n ),\n ['highlightedLines']\n )\n )\n },\n [aceEditorRef, onChange]\n )\n\n const handleGutterMouseDown = useCallback(\n (event: any) => {\n const target = event.domEvent.target\n if (target.classList.contains('ace_gutter-cell')) {\n const row = event.getDocumentPosition().row\n handleToggleSelectLine(row)\n }\n },\n [handleToggleSelectLine]\n )\n\n useEffect(() => {\n const editor = aceEditorRef?.current?.editor\n return () => {\n editor?.session?.removeListener('guttermousedown', handleGutterMouseDown)\n }\n }, [aceEditorRef, handleGutterMouseDown])\n\n const handleEditorLoad = useCallback(\n (editor: any) => {\n editor?.on('guttermousedown', handleGutterMouseDown)\n },\n [handleGutterMouseDown]\n )\n\n const getLanguageAlternatives = useCallback((): {\n title: string\n value: string\n mode?: string\n }[] => {\n const languageAlternatives = type.options?.languageAlternatives\n if (!languageAlternatives) {\n return SUPPORTED_LANGUAGES\n }\n\n if (!Array.isArray(languageAlternatives)) {\n throw new Error(\n `'options.languageAlternatives' should be an array, got ${typeof languageAlternatives}`\n )\n }\n\n return languageAlternatives.reduce((acc: CodeInputLanguage[], {title, value: val, mode}) => {\n const alias = LANGUAGE_ALIASES[val]\n if (alias) {\n // eslint-disable-next-line no-console\n console.warn(\n `'options.languageAlternatives' lists a language with value \"%s\", which is an alias of \"%s\" - please replace the value to read \"%s\"`,\n val,\n alias,\n alias\n )\n\n return acc.concat({title, value: alias, mode: mode})\n }\n\n if (!mode && !SUPPORTED_LANGUAGES.find((lang) => lang.value === val)) {\n // eslint-disable-next-line no-console\n console.warn(\n `'options.languageAlternatives' lists a language which is not supported: \"%s\", syntax highlighting will be disabled.`,\n val\n )\n }\n\n return acc.concat({title, value: val, mode})\n }, [])\n }, [type])\n\n const handleCodeChange = useCallback(\n (code: string) => {\n const path = PATH_CODE\n const fixedLanguage = type.options?.language\n\n onChange([\n setIfMissing({_type: type.name, language: fixedLanguage}),\n code ? set(code, path) : unset(path),\n ])\n },\n [onChange, type]\n )\n\n const languages = getLanguageAlternatives().slice()\n\n const fixedLanguage = type.options?.language\n\n const language = value?.language || fixedLanguage\n\n // the language config from the schema\n const configured = languages.find((entry) => entry.value === language)\n\n // is the language officially supported (e.g. we import the mode by default)\n const supported = language && isSupportedLanguage(language)\n\n const mode = configured?.mode || (supported ? language : 'text')\n\n const renderLanguageInput = useCallback(\n (inputProps: Omit<InputProps, 'renderDefault'>) => {\n return (\n <Select\n {...(inputProps as StringInputProps)}\n onChange={(e) => {\n const newValue = e.currentTarget.value\n inputProps.onChange(newValue ? set(newValue) : unset())\n }}\n >\n {languages.map((lang: {title: string; value: string}) => (\n <option key={lang.value} value={lang.value}>\n {lang.title}\n </option>\n ))}\n </Select>\n )\n },\n [languages]\n )\n\n const AceEditor = useAceEditor()\n\n const renderCodeInput: RenderInputCallback = useCallback(\n (inputProps) => {\n return (\n <EditorContainer radius={1} shadow={1} readOnly={readOnly}>\n {AceEditor && (\n <Suspense fallback={<div>Loading code editor...</div>}>\n <AceEditor\n ref={aceEditorRef}\n mode={mode}\n theme={theme}\n width=\"100%\"\n onChange={handleCodeChange}\n name={inputProps.id}\n value={inputProps.value as string}\n markers={\n value && value.highlightedLines\n ? createHighlightMarkers(value.highlightedLines)\n : undefined\n }\n onLoad={handleEditorLoad}\n readOnly={readOnly}\n tabSize={2}\n wrapEnabled\n setOptions={ACE_SET_OPTIONS}\n editorProps={ACE_EDITOR_PROPS}\n onFocus={handleCodeFocus}\n onBlur={elementProps.onBlur}\n />\n </Suspense>\n )}\n </EditorContainer>\n )\n },\n [\n AceEditor,\n theme,\n handleCodeChange,\n handleCodeFocus,\n handleEditorLoad,\n mode,\n elementProps.onBlur,\n readOnly,\n value,\n ]\n )\n\n return (\n <Stack space={4}>\n {languageFieldMember && (\n <MemberField\n member={languageFieldMember}\n renderItem={renderItem}\n renderField={renderField}\n renderInput={renderLanguageInput}\n renderPreview={renderPreview}\n />\n )}\n\n {type.options?.withFilename && filenameMember && (\n <MemberField\n member={filenameMember}\n renderItem={renderItem}\n renderField={renderField}\n renderInput={renderInput}\n renderPreview={renderPreview}\n />\n )}\n\n {codeFieldMember && (\n <MemberField\n member={codeFieldMember}\n renderInput={renderCodeInput}\n renderItem={renderItem}\n renderField={renderField}\n renderPreview={renderPreview}\n />\n )}\n </Stack>\n )\n}\n","import React, {Suspense, useCallback, useEffect, useRef} from 'react'\nimport styled from 'styled-components'\nimport {Box} from '@sanity/ui'\nimport {ACE_EDITOR_PROPS, ACE_SET_OPTIONS} from './config'\nimport createHighlightMarkers from './createHighlightMarkers'\nimport {CodeInputValue} from './types'\nimport {useAceEditor} from './ace-editor/AceEditorLazy'\nimport {PreviewProps} from 'sanity'\n\nconst PreviewContainer = styled(Box)`\n position: relative;\n`\n\nconst PreviewInner = styled(Box)`\n background-color: #272822;\n\n .ace_editor {\n box-sizing: border-box;\n cursor: default;\n pointer-events: none;\n }\n\n .ace_content {\n box-sizing: border-box;\n overflow: hidden;\n }\n`\n\n/**\n * @public\n */\nexport interface PreviewCodeProps extends PreviewProps {\n selection?: CodeInputValue\n}\n\n/**\n * @public\n */\nexport default function PreviewCode(props: PreviewCodeProps) {\n const aceEditorRef = useRef<any>()\n\n useEffect(() => {\n if (!aceEditorRef?.current) return\n\n const editor = aceEditorRef.current?.editor\n\n if (editor) {\n // Avoid cursor and focus tracking by Ace\n editor.renderer.$cursorLayer.element.style.opacity = 0\n editor.textInput.getElement().disabled = true\n }\n }, [])\n\n const handleEditorChange = useCallback(() => {\n // do nothing when the editor changes\n }, [])\n\n const {selection, schemaType: type} = props\n const fixedLanguage = type?.options?.language\n\n const mode = selection?.language || fixedLanguage || 'text'\n\n const AceEditor = useAceEditor()\n return (\n <PreviewContainer>\n <PreviewInner padding={4}>\n {AceEditor && (\n <Suspense fallback={<div>Loading code preview...</div>}>\n <AceEditor\n ref={aceEditorRef}\n focus={false}\n mode={mode}\n theme=\"monokai\"\n width=\"100%\"\n onChange={handleEditorChange}\n maxLines={200}\n readOnly\n wrapEnabled\n showPrintMargin={false}\n highlightActiveLine={false}\n cursorStart={-1}\n value={selection?.code || ''}\n markers={\n selection?.highlightedLines\n ? createHighlightMarkers(selection.highlightedLines)\n : undefined\n }\n tabSize={2}\n showGutter={false}\n setOptions={ACE_SET_OPTIONS}\n editorProps={ACE_EDITOR_PROPS}\n />\n </Suspense>\n )}\n </PreviewInner>\n </PreviewContainer>\n )\n}\n","import React from 'react'\n\nexport function getMedia(language?: string) {\n if (language === 'jsx') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <g fill=\"#61DAFB\">\n <circle cx=\"64\" cy=\"64\" r=\"11.4\" />\n <path d=\"M107.3 45.2c-2.2-.8-4.5-1.6-6.9-2.3.6-2.4 1.1-4.8 1.5-7.1 2.1-13.2-.2-22.5-6.6-26.1-1.9-1.1-4-1.6-6.4-1.6-7 0-15.9 5.2-24.9 13.9-9-8.7-17.9-13.9-24.9-13.9-2.4 0-4.5.5-6.4 1.6-6.4 3.7-8.7 13-6.6 26.1.4 2.3.9 4.7 1.5 7.1-2.4.7-4.7 1.4-6.9 2.3C8.2 50 1.4 56.6 1.4 64s6.9 14 19.3 18.8c2.2.8 4.5 1.6 6.9 2.3-.6 2.4-1.1 4.8-1.5 7.1-2.1 13.2.2 22.5 6.6 26.1 1.9 1.1 4 1.6 6.4 1.6 7.1 0 16-5.2 24.9-13.9 9 8.7 17.9 13.9 24.9 13.9 2.4 0 4.5-.5 6.4-1.6 6.4-3.7 8.7-13 6.6-26.1-.4-2.3-.9-4.7-1.5-7.1 2.4-.7 4.7-1.4 6.9-2.3 12.5-4.8 19.3-11.4 19.3-18.8s-6.8-14-19.3-18.8zM92.5 14.7c4.1 2.4 5.5 9.8 3.8 20.3-.3 2.1-.8 4.3-1.4 6.6-5.2-1.2-10.7-2-16.5-2.5-3.4-4.8-6.9-9.1-10.4-13 7.4-7.3 14.9-12.3 21-12.3 1.3 0 2.5.3 3.5.9zM81.3 74c-1.8 3.2-3.9 6.4-6.1 9.6-3.7.3-7.4.4-11.2.4-3.9 0-7.6-.1-11.2-.4-2.2-3.2-4.2-6.4-6-9.6-1.9-3.3-3.7-6.7-5.3-10 1.6-3.3 3.4-6.7 5.3-10 1.8-3.2 3.9-6.4 6.1-9.6 3.7-.3 7.4-.4 11.2-.4 3.9 0 7.6.1 11.2.4 2.2 3.2 4.2 6.4 6 9.6 1.9 3.3 3.7 6.7 5.3 10-1.7 3.3-3.4 6.6-5.3 10zm8.3-3.3c1.5 3.5 2.7 6.9 3.8 10.3-3.4.8-7 1.4-10.8 1.9 1.2-1.9 2.5-3.9 3.6-6 1.2-2.1 2.3-4.2 3.4-6.2zM64 97.8c-2.4-2.6-4.7-5.4-6.9-8.3 2.3.1 4.6.2 6.9.2 2.3 0 4.6-.1 6.9-.2-2.2 2.9-4.5 5.7-6.9 8.3zm-18.6-15c-3.8-.5-7.4-1.1-10.8-1.9 1.1-3.3 2.3-6.8 3.8-10.3 1.1 2 2.2 4.1 3.4 6.1 1.2 2.2 2.4 4.1 3.6 6.1zm-7-25.5c-1.5-3.5-2.7-6.9-3.8-10.3 3.4-.8 7-1.4 10.8-1.9-1.2 1.9-2.5 3.9-3.6 6-1.2 2.1-2.3 4.2-3.4 6.2zM64 30.2c2.4 2.6 4.7 5.4 6.9 8.3-2.3-.1-4.6-.2-6.9-.2-2.3 0-4.6.1-6.9.2 2.2-2.9 4.5-5.7 6.9-8.3zm22.2 21l-3.6-6c3.8.5 7.4 1.1 10.8 1.9-1.1 3.3-2.3 6.8-3.8 10.3-1.1-2.1-2.2-4.2-3.4-6.2zM31.7 35c-1.7-10.5-.3-17.9 3.8-20.3 1-.6 2.2-.9 3.5-.9 6 0 13.5 4.9 21 12.3-3.5 3.8-7 8.2-10.4 13-5.8.5-11.3 1.4-16.5 2.5-.6-2.3-1-4.5-1.4-6.6zM7 64c0-4.7 5.7-9.7 15.7-13.4 2-.8 4.2-1.5 6.4-2.1 1.6 5 3.6 10.3 6 15.6-2.4 5.3-4.5 10.5-6 15.5C15.3 75.6 7 69.6 7 64zm28.5 49.3c-4.1-2.4-5.5-9.8-3.8-20.3.3-2.1.8-4.3 1.4-6.6 5.2 1.2 10.7 2 16.5 2.5 3.4 4.8 6.9 9.1 10.4 13-7.4 7.3-14.9 12.3-21 12.3-1.3 0-2.5-.3-3.5-.9zM96.3 93c1.7 10.5.3 17.9-3.8 20.3-1 .6-2.2.9-3.5.9-6 0-13.5-4.9-21-12.3 3.5-3.8 7-8.2 10.4-13 5.8-.5 11.3-1.4 16.5-2.5.6 2.3 1 4.5 1.4 6.6zm9-15.6c-2 .8-4.2 1.5-6.4 2.1-1.6-5-3.6-10.3-6-15.6 2.4-5.3 4.5-10.5 6-15.5 13.8 4 22.1 10 22.1 15.6 0 4.7-5.8 9.7-15.7 13.4z\" />\n </g>\n </svg>\n )\n }\n\n if (language === 'javascript') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 128 128\">\n <path fill=\"#F0DB4F\" d=\"M1.408 1.408h125.184v125.185H1.408z\" />\n <path\n fill=\"#323330\"\n d=\"M116.347 96.736c-.917-5.711-4.641-10.508-15.672-14.981-3.832-1.761-8.104-3.022-9.377-5.926-.452-1.69-.512-2.642-.226-3.665.821-3.32 4.784-4.355 7.925-3.403 2.023.678 3.938 2.237 5.093 4.724 5.402-3.498 5.391-3.475 9.163-5.879-1.381-2.141-2.118-3.129-3.022-4.045-3.249-3.629-7.676-5.498-14.756-5.355l-3.688.477c-3.534.893-6.902 2.748-8.877 5.235-5.926 6.724-4.236 18.492 2.975 23.335 7.104 5.332 17.54 6.545 18.873 11.531 1.297 6.104-4.486 8.08-10.234 7.378-4.236-.881-6.592-3.034-9.139-6.949-4.688 2.713-4.688 2.713-9.508 5.485 1.143 2.499 2.344 3.63 4.26 5.795 9.068 9.198 31.76 8.746 35.83-5.176.165-.478 1.261-3.666.38-8.581zM69.462 58.943H57.753l-.048 30.272c0 6.438.333 12.34-.714 14.149-1.713 3.558-6.152 3.117-8.175 2.427-2.059-1.012-3.106-2.451-4.319-4.485-.333-.584-.583-1.036-.667-1.071l-9.52 5.83c1.583 3.249 3.915 6.069 6.902 7.901 4.462 2.678 10.459 3.499 16.731 2.059 4.082-1.189 7.604-3.652 9.448-7.401 2.666-4.915 2.094-10.864 2.07-17.444.06-10.735.001-21.468.001-32.237z\"\n />\n </svg>\n )\n }\n\n if (language === 'php') {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 800 400\">\n <g transform=\"translate(-44.632 -141.55)\">\n <g transform=\"matrix(8.3528 0 0 8.3119 -727.13 -3759.5)\">\n <path d=\"m99.974 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79504 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21198 0.0353 0.42398 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053\" />\n <path d=\"m133.49 469.36h7.314l-2.067 10.123h6.572c3.604 0.0707 6.2893 0.81269 8.056 2.226 1.802 1.4134 2.332 4.0987 1.59 8.056l-3.551 17.649h-7.42l3.392-16.854c0.35328-1.7666 0.2473-3.021-0.318-3.763-0.56536-0.74198-1.7844-1.113-3.657-1.113l-5.883-0.053-4.346 21.783h-7.314l7.632-38.054\" />\n <path d=\"m162.81 479.48h14.204c4.1693 0.0354 7.1903 1.2367 9.063 3.604 1.8726 2.3674 2.491 5.6004 1.855 9.699-0.24737 1.8727-0.79503 3.71-1.643 5.512-0.8127 1.802-1.9434 3.4273-3.392 4.876-1.7667 1.8373-3.657 3.0033-5.671 3.498-2.014 0.49467-4.0987 0.742-6.254 0.742h-6.36l-2.014 10.07h-7.367l7.579-38.001m6.201 6.042-3.18 15.9c0.21199 0.0353 0.42399 0.053 0.636 0.053h0.742c3.392 0.0353 6.2186-0.30033 8.48-1.007 2.2613-0.74199 3.7806-3.3213 4.558-7.738 0.63597-3.71-0.00003-5.8476-1.908-6.413-1.8727-0.56531-4.2224-0.83031-7.049-0.795-0.42402 0.0353-0.83035 0.053-1.219 0.053-0.35335 0.00002-0.72435 0.00002-1.113 0l0.053-0.053\" />\n </g>\n </g>\n </svg>\n )\n }\n\n if (language === 'json') {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 160 160\"\n >\n <defs>\n <linearGradient id=\"a\">\n <stop offset=\"0\" />\n <stop offset=\"1\" stopColor=\"#fff\" />\n </linearGradient>\n <linearGradient\n x1=\"-553.27\"\n y1=\"525.908\"\n x2=\"-666.116\"\n y2=\"413.045\"\n id=\"c\"\n xlinkHref=\"#a\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"matrix(.99884 0 0 .9987 689.008 -388.844)\"\n />\n <linearGradient\n x1=\"-666.117\"\n y1=\"413.045\"\n x2=\"-553.27\"\n y2=\"525.908\"\n id=\"b\"\n xlinkHref=\"#a\"\n gradientUnits=\"userSpaceOnUse\"\n gradientTransform=\"matrix(.99884 0 0 .9987 689.008 -388.844)\"\n />\n </defs>\n <path\n d=\"M79.865 119.1c35.397 48.255 70.04-13.469 69.988-50.587-.06-43.886-44.54-68.414-70.017-68.414C38.943.1 0 33.895 0 80.135 0 131.531 44.64 160 79.836 160c-7.965-1.147-34.507-6.834-34.863-67.967-.24-41.346 13.487-57.865 34.805-50.599.477.177 23.514 9.265 23.514 38.95 0 29.56-23.427 38.716-23.427 38.716z\"\n style={{marker: 'none'}}\n color=\"#000\"\n fill=\"url(#b)\"\n fillRule=\"evenodd\"\n overflow=\"visible\"\n />\n <path\n d=\"M79.823 41.4C56.433 33.34 27.78 52.618 27.78 91.23c0 63.048 46.72 68.77 52.384 68.77C121.057 160 160 126.204 160 79.964 160 28.568 115.36.1 80.164.1c9.749-1.35 52.541 10.55 52.541 69.037 0 38.141-31.953 58.905-52.735 50.033-.478-.177-23.514-9.264-23.514-38.95 0-29.56 23.367-38.818 23.367-38.818z\"\n style={{marker: 'none'}}\n color=\"#000\"\n fill=\"url(#c)\"\n fillRule=\"evenodd\"\n overflow=\"visible\"\n />\n </svg>\n )\n }\n\n return undefined\n}\n"],"names":["createHighlightMarkers","rows","e","startRow","endRow","require","theme","endCol","_interopDefaultLegacy","ReactAce","className","type","inFront","include","SUPPORTED_LANGUAGES","title","value","token","regex","push","SUPPORTED_THEMES","DEFAULT_THEME","DEFAULT_DARK_THEME","useSoftTabs","$blockScrolling","useEffect","requestAnimationFrame","EditorContainer","isSupportedLanguage","CodeInput","members","elementProps","renderField","renderInput","schemaType","fieldMembers","focus","_a","_b","next","scheme","useColorScheme","currentIndex","currentHighlightedLines","aceEditorRef","event","target","editor","handleGutterMouseDown","defaultToken","mode","acc","console","PATH_CODE","language","jsx","inputProps","unset","children","AceEditor","radius","shadow","readOnly","fallback","ref","width","onChange","handleCodeChange","markers","onLoad","tabSize","wrapEnabled","setOptions","onFocus","jsxs","space","languageFieldMember","member","renderItem","renderPreview","PreviewContainer","PreviewInner","PreviewCode","handleEditorChange","selection","fixedLanguage","padding","maxLines","highlightActiveLine","acequire","exports","_module","showGutter","editorProps","ACE_EDITOR_PROPS","GroqHighlightRules","define","oop","TextMode","Mode","getMedia","Tokenizer","FoldMode","xmlns","viewBox","fill","highlighter","getRules","$keywordList","cx","cy","r","lineCommentStart","d","prototype","Object","defineProperty","enumerable","get"],"mappings":"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"}
@@ -5,6 +5,7 @@ import {ObjectInputProps} from 'sanity'
5
5
  import {ObjectSchemaType} from 'sanity'
6
6
  import {Plugin as Plugin_2} from 'sanity'
7
7
  import {PreviewConfig} from 'sanity'
8
+ import {PreviewProps} from 'sanity'
8
9
  import {ThemeColorSchemeKey} from '@sanity/ui'
9
10
 
10
11
  /**
@@ -100,17 +101,14 @@ export declare function PreviewCode(props: PreviewCodeProps): JSX.Element
100
101
  /**
101
102
  * @public
102
103
  */
103
- export declare interface PreviewCodeProps {
104
- type?: CodeSchemaType
105
- value?: {
106
- selection?: CodeInputValue
107
- }
104
+ export declare interface PreviewCodeProps extends PreviewProps {
105
+ selection?: CodeInputValue
108
106
  }
109
107
 
110
108
  export {}
111
109
 
112
110
  declare module '@sanity/types' {
113
- interface IntrinsicDefinitions {
114
- code: CodeDefinition;
115
- }
116
- }
111
+ interface IntrinsicDefinitions {
112
+ code: CodeDefinition
113
+ }
114
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/code-input",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "Ace editor for editing code",
5
5
  "keywords": [
6
6
  "sanity",
@@ -67,8 +67,8 @@
67
67
  "@babel/preset-react": "^7.18.6",
68
68
  "@commitlint/cli": "^17.2.0",
69
69
  "@commitlint/config-conventional": "^17.2.0",
70
- "@sanity/pkg-utils": "^1.17.2",
71
- "@sanity/plugin-kit": "^2.1.2",
70
+ "@sanity/pkg-utils": "^1.20.2",
71
+ "@sanity/plugin-kit": "^2.1.19",
72
72
  "@sanity/semantic-release-preset": "^2.0.2",
73
73
  "@testing-library/jest-dom": "^5.16.5",
74
74
  "@testing-library/react": "^13.4.0",
@@ -91,7 +91,7 @@
91
91
  "react": "^18",
92
92
  "react-dom": "^18",
93
93
  "rimraf": "^3.0.2",
94
- "sanity": "^3.0.0",
94
+ "sanity": "^3.0.1",
95
95
  "styled-components": "^5.2.0",
96
96
  "ts-jest": "^28.0.7",
97
97
  "typescript": "^4.8.4"
@@ -5,7 +5,7 @@ import {ACE_EDITOR_PROPS, ACE_SET_OPTIONS} from './config'
5
5
  import createHighlightMarkers from './createHighlightMarkers'
6
6
  import {CodeInputValue} from './types'
7
7
  import {useAceEditor} from './ace-editor/AceEditorLazy'
8
- import {CodeSchemaType} from './CodeInput'
8
+ import {PreviewProps} from 'sanity'
9
9
 
10
10
  const PreviewContainer = styled(Box)`
11
11
  position: relative;
@@ -29,9 +29,8 @@ const PreviewInner = styled(Box)`
29
29
  /**
30
30
  * @public
31
31
  */
32
- export interface PreviewCodeProps {
33
- type?: CodeSchemaType
34
- value?: {selection?: CodeInputValue}
32
+ export interface PreviewCodeProps extends PreviewProps {
33
+ selection?: CodeInputValue
35
34
  }
36
35
 
37
36
  /**
@@ -56,10 +55,9 @@ export default function PreviewCode(props: PreviewCodeProps) {
56
55
  // do nothing when the editor changes
57
56
  }, [])
58
57
 
59
- const {value, type} = props
58
+ const {selection, schemaType: type} = props
60
59
  const fixedLanguage = type?.options?.language
61
60
 
62
- const selection = value?.selection
63
61
  const mode = selection?.language || fixedLanguage || 'text'
64
62
 
65
63
  const AceEditor = useAceEditor()
package/src/schema.tsx CHANGED
@@ -36,7 +36,7 @@ export const codeSchema = defineType({
36
36
  name: 'code',
37
37
  type: 'object',
38
38
  title: 'Code',
39
- ...({components: {input: CodeInput, preview: PreviewCode}} as {}), //TODO rollback change when rc.1 is released
39
+ components: {input: CodeInput, preview: PreviewCode},
40
40
  icon: CodeBlockIcon,
41
41
  fields: [
42
42
  {