Libraryless. Click here for Pure Java version (5239L/30K).
1 | // requires JQuery |
2 | sclass HTMLAceEditor implements Htmlable {
|
3 | S text; |
4 | S name = "text"; |
5 | S id; |
6 | Map divParams = litmap(style := "width: 80ch; height: 20em"); |
7 | S onKeyDown; |
8 | |
9 | *() {}
|
10 | *(S *text) {}
|
11 | |
12 | // only needed once (call on any instance) |
13 | public S headStuff() {
|
14 | ret hscriptsrc("https://botcompany.de/ace-builds/src-noconflict/ace.js")
|
15 | + hscriptsrc("https://botcompany.de/ace-builds/src-noconflict/ext-language_tools.js");
|
16 | } |
17 | |
18 | // for each editor |
19 | public S html() {
|
20 | id = "ace_" + name; |
21 | |
22 | ret div(htmlEncode2(text), params_stylePlus("display: none", paramsPlus(mapToParams(divParams), +id)))
|
23 | + hhiddenWithIDAndName(name) |
24 | + hscript(replaceDollarVars([[ (function() {
|
25 | ace.require("ace/ext/language_tools");
|
26 | var editor = ace.edit($id); |
27 | editor.setTheme("ace/theme/ambience");
|
28 | editor.getSession().setTabSize(2); |
29 | editor.getSession().setUseSoftTabs(true); |
30 | editor.getSession().setUseWrapMode(true); |
31 | document.getElementById($id).style.fontSize='15px'; |
32 | editor.setOptions({
|
33 | enableBasicAutocompletion: true |
34 | }); |
35 | |
36 | var div = $("#" + $id);
|
37 | var hiddenVal = document.getElementById($name); |
38 | function updateHidden() {
|
39 | div.trigger('input'); // for auto-expand
|
40 | //hiddenVal.value = editor.getValue(); |
41 | var newVal = editor.getValue(); |
42 | if (hiddenVal.value != newVal) |
43 | $(hiddenVal).val(newVal).trigger('change');
|
44 | } |
45 | updateHidden(); |
46 | |
47 | editor.session.on('change', updateHidden);
|
48 | $onKeyDown |
49 | |
50 | div.show(); |
51 | //editor.focus(); |
52 | })() ]], id := jsQuote(id), name := jsQuote(name), |
53 | onKeyDown := empty(onKeyDown) ? "" : "editor.textInput.getElement().onkeydown = " + onKeyDown + ";"); |
54 | } |
55 | |
56 | S complete() { ret linesLL(headStuff(), html()); }
|
57 | } |
Began life as a copy of #1030234
download show line numbers debug dex old transpilations
Travelled to 5 computer(s): bhatertpkbcr, ekrmjmnbrukm, mqqgnosmbjvj, pyentgdyhuwx, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1031627 |
| Snippet name: | HTMLAceEditor [better version of hAceEditor that can put multiple editors on one page] |
| Eternal ID of this version: | #1031627/13 |
| Text MD5: | ae82dc1837feba86cbef70080b2ae566 |
| Transpilation MD5: | daa911624c575215f77aa7cda2f73ef6 |
| Author: | stefan |
| Category: | javax / html |
| Type: | JavaX fragment (include) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2021-10-04 03:51:51 |
| Source code size: | 1944 bytes / 57 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 431 / 690 |
| Version history: | 12 change(s) |
| Referenced in: | [show references] |