Created
December 7, 2023 21:45
-
-
Save kwhinnery/913ef783c4e4315610b7873ac9f67523 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{"uuid":"91af22b0-9548-11ee-bd8a-f77d23459a43","page":{"id":216600679,"data":{"appState":"[\"~#iR\",[\"^ \",\"n\",\"appTemplate\",\"v\",[\"^ \",\"isFetching\",false,\"plugins\",[\"~#iOM\",[\"$main\",[\"^0\",[\"^ \",\"n\",\"pluginTemplate\",\"v\",[\"^ \",\"id\",\"$main\",\"uuid\",null,\"type\",\"frame\",\"subtype\",\"Frame\",\"namespace\",null,\"resourceName\",null,\"resourceDisplayName\",null,\"template\",[\"^3\",[\"type\",\"main\",\"sticky\",null,\"paddingType\",\"normal\",\"enableFullBleed\",false,\"isHiddenOnDesktop\",false,\"isHiddenOnMobile\",false]],\"style\",[\"^3\",[]],\"position2\",null,\"mobilePosition2\",null,\"mobileAppPosition\",null,\"tabIndex\",null,\"container\",\"\",\"createdAt\",\"~m1701984946485\",\"updatedAt\",\"~m1701984946485\",\"folder\",\"\",\"screen\",null]]],\"codeEditor\",[\"^0\",[\"^ \",\"n\",\"pluginTemplate\",\"v\",[\"^ \",\"id\",\"codeEditor\",\"^4\",\"39a68fb8-220c-4d42-be4b-e9a532d355bb\",\"^5\",\"widget\",\"^6\",\"CustomComponentWidget\",\"^7\",null,\"^8\",null,\"^9\",null,\"^:\",[\"^3\",[\"allowTopNavigation\",false,\"heightType\",\"fixed\",\"allowDownloads\",false,\"allowFullscreen\",false,\"allowForms\",false,\"model\",\"{\\n \\\"code\\\": \\\"Deno.serve(req => new Response(\\\\\\\"Hello, world!\\\\\\\"));\\\",\\n}\",\"allowCamera\",false,\"allowModals\",false,\"allowPopups\",false,\"iframeCode\",\"<script \\n src=\\\"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.11/codemirror.min.js\\\" \\n integrity=\\\"sha512-rdFIN28+neM8H8zNsjRClhJb1fIYby2YCNmoqwnqBDEvZgpcp7MJiX8Wd+Oi6KcJOMOuvGztjrsI59rly9BsVQ==\\\" \\n crossorigin=\\\"anonymous\\\" \\n referrerpolicy=\\\"no-referrer\\\">\\n</script>\\n<script \\n src=\\\"https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.11/mode/javascript/javascript.min.js\\\" \\n integrity=\\\"sha512-Cbz+kvn+l5pi5HfXsEB/FYgZVKjGIhOgYNBwj4W2IHP2y8r3AdyDCQRnEUqIQ+6aJjygKPTyaNT2eIihaykJlw==\\\" \\n crossorigin=\\\"anonymous\\\" \\n referrerpolicy=\\\"no-referrer\\\">\\n</script>\\n\\n<style>\\n@import url('https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.11/codemirror.min.css');\\n@import url('https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.11/theme/eclipse.min.css');\\n\\nhtml, body {\\n height: 100%;\\n width: 100%;\\n overflow: hidden;\\n padding: 0;\\n margin: 0;\\n box-sizing: border-box;\\n}\\n\\nhtml {\\n border: 1px solid #d1d1d1;\\n border-radius: 4px;\\n}\\n\\nbody {\\n padding: 0 4px;\\n}\\n\\n.CodeMirror {\\n height: auto;\\n}\\n</style>\\n\\n<script>\\nlet codeEditor = null;\\nlet mostRecentCode = \\\"\\\";\\n\\n// Init a CodeMirror editor (with timeouts to ensure scripts are loaded first)\\nfunction createEditor() {\\n if (!CodeMirror) {\\n setTimeout(createEditor, 50);\\n } else {\\n // Initialize code editor\\n codeEditor = CodeMirror(document.body, {\\n value: \\\"// Initializing...\\\",\\n mode: \\\"javascript\\\",\\n tabSize: 2,\\n lineNumbers: true\\n });\\n \\n codeEditor.on(\\\"change\\\", () => {\\n mostRecentCode = codeEditor.getValue();\\n window.Retool.modelUpdate({\\n code: mostRecentCode\\n });\\n });\\n }\\n}\\n\\n// Set the contents of the CodeMirror editor (with timeouts to ensure the\\n// editor has been created first)\\nfunction setCode(code) {\\n if (!codeEditor) {\\n // If code editor is not initialized, wait and retry\\n setTimeout(() => {\\n setCode(code);\\n }, 60);\\n } else {\\n codeEditor.setValue(code);\\n }\\n}\\n\\n// Subscribe for updates from the Retool host page\\nwindow.Retool.subscribe(function(model) {\\n // If the model hasn't been initialized yet, ignore\\n if (!model) return;\\n \\n // Set code in editor if available\\n if (model.code !== mostRecentCode) {\\n mostRecentCode = model.code;\\n setCode(model.code);\\n }\\n});\\n\\n// Run initial load for the code editor\\ncreateEditor();\\n</script>\",\"allowMicrophone\",false,\"allowSameOrigin\",false,\"allowPopupsToEscapeSandbox\",false,\"allowPayment\",false,\"allowGeolocation\",false]],\"^;\",[\"^3\",[]],\"^<\",[\"^0\",[\"^ \",\"n\",\"position2\",\"v\",[\"^ \",\"^@\",\"\",\"rowGroup\",\"body\",\"subcontainer\",\"\",\"row\",0,\"col\",0,\"height\",10,\"width\",7,\"tabNum\",0]]],\"^=\",null,\"^>\",null,\"^?\",null,\"^@\",\"\",\"^A\",\"~m1701984954087\",\"^B\",\"~m1701984971530\",\"^C\",\"\",\"^D\",null]]],\"html1\",[\"^0\",[\"^ \",\"n\",\"pluginTemplate\",\"v\",[\"^ \",\"id\",\"html1\",\"^4\",\"65d72108-4ab8-4fd0-8cbe-4bf49baf2d05\",\"^5\",\"widget\",\"^6\",\"HTMLWidget\",\"^7\",null,\"^8\",null,\"^9\",null,\"^:\",[\"^3\",[\"clickable\",false,\"css\",\"\",\"marginType\",\"normal\",\"hidden\",false,\"html\",\"<h4>Editor code</h4>\\n<pre>{{ codeEditor.model.code }}</pre>\",\"showInEditor\",false,\"tooltipText\",\"\",\"events\",[\"^3\",[]],\"maintainSpaceWhenHidden\",false]],\"^;\",[\"^3\",[]],\"^<\",[\"^0\",[\"^ \",\"n\",\"position2\",\"v\",[\"^ \",\"^@\",\"\",\"^E\",\"body\",\"^F\",\"\",\"row\",1.1999999999999975,\"col\",7,\"^G\",0.2,\"^H\",5,\"^I\",0]]],\"^=\",null,\"^>\",null,\"^?\",null,\"^@\",\"\",\"^A\",\"~m1701985047674\",\"^B\",\"~m1701985150545\",\"^C\",\"\",\"^D\",null]]],\"button1\",[\"^0\",[\"^ \",\"n\",\"pluginTemplate\",\"v\",[\"^ \",\"id\",\"button1\",\"^4\",\"42faeddd-2e81-4b19-84fc-8b1b88ae8b4c\",\"^5\",\"widget\",\"^6\",\"ButtonWidget2\",\"^7\",null,\"^8\",null,\"^9\",null,\"^:\",[\"^3\",[\"horizontalAlign\",\"stretch\",\"clickable\",false,\"iconAfter\",\"\",\"submitTargetId\",null,\"marginType\",\"normal\",\"hidden\",false,\"text\",\"Reset Code\",\"showInEditor\",false,\"tooltipText\",\"\",\"styleVariant\",\"solid\",\"submit\",false,\"iconBefore\",\"\",\"events\",[\"~#iL\",[[\"^3\",[\"event\",\"click\",\"type\",\"widget\",\"method\",\"updateModel\",\"pluginId\",\"codeEditor\",\"targetId\",null,\"params\",[\"^3\",[\"model\",\"{ code: 'Deno.serve(req => new Response(\\\"Hello, world!\\\"));' }\"]],\"waitType\",\"debounce\",\"waitMs\",\"0\"]]]],\"loading\",false,\"loaderPosition\",\"auto\",\"disabled\",false,\"maintainSpaceWhenHidden\",false]],\"^;\",[\"^3\",[]],\"^<\",[\"^0\",[\"^ \",\"n\",\"position2\",\"v\",[\"^ \",\"^@\",\"\",\"^E\",\"body\",\"^F\",\"\",\"row\",0.1999999999999993,\"col\",7,\"^G\",1,\"^H\",2,\"^I\",0]]],\"^=\",null,\"^>\",null,\"^?\",null,\"^@\",\"\",\"^A\",\"~m1701985210297\",\"^B\",\"~m1701985360220\",\"^C\",\"\",\"^D\",null]]]]],\"^A\",null,\"version\",\"3.25.0\",\"appThemeId\",null,\"appThemeName\",null,\"appMaxWidth\",\"100%\",\"preloadedAppJavaScript\",null,\"preloadedAppJSLinks\",[],\"testEntities\",[],\"tests\",[],\"appStyles\",\"\",\"responsiveLayoutDisabled\",false,\"loadingIndicatorsDisabled\",false,\"urlFragmentDefinitions\",[\"^J\",[]],\"pageLoadValueOverrides\",[\"^J\",[]],\"customDocumentTitle\",\"\",\"customDocumentTitleEnabled\",false,\"customShortcuts\",[],\"isGlobalWidget\",false,\"isMobileApp\",false,\"isFormApp\",false,\"shortlink\",false,\"multiScreenMobileApp\",false,\"mobileAppSettings\",[\"^ \",\"mobileOfflineModeEnabled\",false,\"mobileOfflineModeDelaySync\",false,\"mobileOfflineModeBannerMode\",\"default\",\"displaySetting\",[\"^ \",\"landscapeMode\",false,\"tabletMode\",false]],\"folders\",[\"^J\",[]],\"queryStatusVisibility\",false,\"markdownLinkBehavior\",\"auto\",\"inAppRetoolPillAppearance\",\"NO_OVERRIDE\",\"rootScreen\",null,\"instrumentationEnabled\",false,\"experimentalFeatures\",[\"^ \",\"sourceControlTemplateDehydration\",false,\"multiplayerEditingEnabled\",false,\"disableMultiplayerEditing\",false],\"experimentalDataTabEnabled\",true,\"customComponentCollections\",[],\"savePlatform\",\"web\"]]]"},"changesRecord":[{"type":"WIDGET_REPOSITION2","payload":{"moves":[{"move":{"col":7,"row":-49,"width":0,"height":0,"rowGroup":"body","container":"","subcontainer":""},"screen":{"descendentIds":[]},"moveType":"drag","widgetIds":["button1"],"widgetTypes":["ButtonWidget2"]},{"move":{"row":5,"height":0},"widgetIds":["html1"]}],"largeScreen":true},"hideChangelogEntry":false}],"gitSha":null,"checksum":null,"createdAt":"2023-12-07T21:43:30.613Z","updatedAt":"2023-12-07T21:43:30.613Z","pageId":2678880,"userId":647494,"branchId":null,"page":{"name":"Code Editor Demo"}},"modules":{}} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script | |
src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.11/codemirror.min.js" | |
integrity="sha512-rdFIN28+neM8H8zNsjRClhJb1fIYby2YCNmoqwnqBDEvZgpcp7MJiX8Wd+Oi6KcJOMOuvGztjrsI59rly9BsVQ==" | |
crossorigin="anonymous" | |
referrerpolicy="no-referrer"> | |
</script> | |
<script | |
src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.11/mode/javascript/javascript.min.js" | |
integrity="sha512-Cbz+kvn+l5pi5HfXsEB/FYgZVKjGIhOgYNBwj4W2IHP2y8r3AdyDCQRnEUqIQ+6aJjygKPTyaNT2eIihaykJlw==" | |
crossorigin="anonymous" | |
referrerpolicy="no-referrer"> | |
</script> | |
<style> | |
@import url('https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.11/codemirror.min.css'); | |
@import url('https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.65.11/theme/eclipse.min.css'); | |
html, body { | |
height: 100%; | |
width: 100%; | |
overflow: hidden; | |
padding: 0; | |
margin: 0; | |
box-sizing: border-box; | |
} | |
html { | |
border: 1px solid #d1d1d1; | |
border-radius: 4px; | |
} | |
body { | |
padding: 0 4px; | |
} | |
.CodeMirror { | |
height: auto; | |
} | |
</style> | |
<script> | |
let codeEditor = null; | |
let mostRecentCode = ""; | |
// Init a CodeMirror editor (with timeouts to ensure scripts are loaded first) | |
function createEditor() { | |
if (!CodeMirror) { | |
setTimeout(createEditor, 50); | |
} else { | |
// Initialize code editor | |
codeEditor = CodeMirror(document.body, { | |
value: "// Initializing...", | |
mode: "javascript", | |
tabSize: 2, | |
lineNumbers: true | |
}); | |
codeEditor.on("change", () => { | |
mostRecentCode = codeEditor.getValue(); | |
window.Retool.modelUpdate({ | |
code: mostRecentCode | |
}); | |
}); | |
} | |
} | |
// Set the contents of the CodeMirror editor (with timeouts to ensure the | |
// editor has been created first) | |
function setCode(code) { | |
if (!codeEditor) { | |
// If code editor is not initialized, wait and retry | |
setTimeout(() => { | |
setCode(code); | |
}, 60); | |
} else { | |
codeEditor.setValue(code); | |
} | |
} | |
// Subscribe for updates from the Retool host page | |
window.Retool.subscribe(function(model) { | |
// If the model hasn't been initialized yet, ignore | |
if (!model) return; | |
// Set code in editor if available | |
if (model.code !== mostRecentCode) { | |
mostRecentCode = model.code; | |
setCode(model.code); | |
} | |
}); | |
// Run initial load for the code editor | |
createEditor(); | |
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"code": "Deno.serve(req => new Response(\"Hello, world!\"));", | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment