TYPO3 v15 dev-main snapshot ()

This commit is contained in:
wappler committed 2026-08-10 22:31:00 +02:00
commit f9941541b7
1178 files changed
+135377

No files matched your search

@@ -0,0 +1,13 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
class d{constructor(t,n){this.tsRef=t,this.tsTreeNode=n}getType(){const t=this.tsTreeNode.getValue();return this.tsRef.isType(t)?this.tsRef.getType(t):null}getFilteredProposals(t){const n={},r=[],o=this.tsTreeNode.getChildNodes(),u=this.tsTreeNode.getValue();for(const e in o)if(typeof o[e].value<"u"&&o[e].value!==null){const s={};s.word=e,this.tsRef.typeHasProperty(u,o[e].name)?(this.tsRef.cssClass="definedTSREFProperty",s.type=o[e].value):(s.cssClass="userProperty",this.tsRef.isType(o[e].value)?s.type=o[e].value:s.type=""),r.push(s),n[e]=!0}const i=this.tsRef.getPropertiesFromTypeId(this.tsTreeNode.getValue());for(const e in i)if(typeof i[e].value<"u"&&n[e]!==!0){const s={word:e,cssClass:"undefinedTSREFProperty",type:i[e].value};r.push(s)}const l=[];let p="";for(let e=0;e<r.length;e++){if(t.length===0){l.push(r[e]);continue}p=r[e].word.substring(0,t.length),p.toLowerCase()===t.toLowerCase()&&l.push(r[e])}return l}}export{d as CompletionResult};
@@ -0,0 +1,13 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
import i from"@typo3/core/ajax/ajax-request.js";import{TsRef as l}from"@typo3/backend/code-editor/autocomplete/ts-ref.js";import{TsParser as n}from"@typo3/backend/code-editor/autocomplete/ts-parser.js";import{CompletionResult as p}from"@typo3/backend/code-editor/autocomplete/completion-result.js";class a{constructor(e){this.extTsObjTree={},this.parser=null,this.proposals=null,this.compResult=null,this.tsRef=new l,this.parser=new n(this.tsRef,this.extTsObjTree),this.tsRef.loadTsrefAsync(),this.loadExtTemplatesAsync(e)}refreshCodeCompletion(e){const t=this.getFilter(e),s=this.parser.buildTsObjTree(e);this.compResult=new p(this.tsRef,s),this.proposals=this.compResult.getFilteredProposals(t);const r=[];for(let o=0;o<this.proposals.length;o++)r[o]=this.proposals[o].word;return r}loadExtTemplatesAsync(e){if(Number.isNaN(e)||e===0)return null;new i(TYPO3.settings.ajaxUrls.codeeditor_codecompletion_loadtemplates).withQueryArguments({pageId:e}).get().then(async t=>{this.extTsObjTree.c=await t.resolve(),this.resolveExtReferencesRec(this.extTsObjTree.c)})}resolveExtReferencesRec(e){for(const t of Object.keys(e)){let s;if(e[t].v&&e[t].v.startsWith("<")&&!e[t].v.includes(">")){const r=e[t].v.replace(/</,"").trim();r.indexOf(" ")===-1&&(s=this.getExtChildNode(r),s!==null&&(e[t]=s))}!s&&e[t].c&&this.resolveExtReferencesRec(e[t].c)}}getExtChildNode(e){let t=this.extTsObjTree;const s=e.split(".");for(let r=0;r<s.length;r++){const o=s[r];if(typeof t.c>"u"||typeof t.c[o]>"u")return null;t=t.c[o]}return t}getFilter(e){return e.completingAfterDot?"":e.token.string.replace(".","").replace(/\s/g,"")}}export{a as TsCodeCompletion};
@@ -0,0 +1,13 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
class c{constructor(t,s){this.childNodes={},this.extPath="",this.parent=null,this.name=t,this.childNodes={},this.extPath="",this.value="",this.isExternal=!1,this.tsParser=s}getChildNodes(){const t=this.getExtNode();if(t!==null&&typeof t.c=="object")for(const s of Object.keys(t.c)){const e=new c(s,this.tsParser);e.global=!0,e.value=t.c[s].v?t.c[s].v:"",e.isExternal=!0,this.childNodes[s]=e}return this.childNodes}getValue(){if(this.value)return this.value;const t=this.getExtNode();if(t&&t.v)return t.v;const s=this.getNodeTypeFromTsref();return s||""}getNodeTypeFromTsref(){const t=this.extPath.split("."),s=t.pop(),e=this.parent.getValue();return e&&this.tsParser.tsRef.typeHasProperty(e,s)?this.tsParser.tsRef.getType(e).properties[s].value:""}getExtNode(){let t=this.tsParser.extTsObjTree;if(this.extPath==="")return t;const s=this.extPath.split(".");for(let e=0;e<s.length;e++){const r=s[e];if(typeof t.c>"u"||typeof t.c[r]>"u")return null;t=t.c[r]}return t}}class g extends Array{lastElementEquals(t){return this.length>0&&this[this.length-1]===t}popIfLastElementEquals(t){return this.lastElementEquals(t)?(this.pop(),!0):!1}}class E{constructor(t,s){this.tsRef=t,this.extTsObjTree=s,this.tsTree=new c("_L_",this)}getOperator(t){const s=[":=","=<","<",">","="];for(let e=0;e<s.length;e++){const r=s[e];if(t.indexOf(r)!==-1)return(r==="=<"||r==="<")&&t.indexOf(">")>-1?"=":r}return-1}buildTsObjTree(t){this.tsTree=new c("",this),this.tsTree.value="TLO";let s=1,e="",r=!1,o=!1;const n=new g,l=[];let i;for(;s<=t.currentLineNumber;){e="";const h=t.lineTokens[s-1];for(let f=0;f<=h.length;++f)if(f<h.length&&h[f].string.length>0){const a=h[f].string;a.startsWith("#")?n.push("#"):a==="("?n.push("("):a.startsWith("/*")?n.push("/*"):a==="{"&&this.getOperator(e)===-1&&(n.push("{"),l.push(e.trim()),r=!0),a.search(/^\s*\[.*\]/)!==-1&&e.search(/\S/)===-1&&a.search(/^\s*\[(global|end|GLOBAL|END)\]/)===-1&&!n.lastElementEquals("#")&&!n.lastElementEquals("/*")&&!n.lastElementEquals("{")&&!n.lastElementEquals("(")&&(o=!0,r=!0),e.search(/\S/)===-1&&!n.lastElementEquals("#")&&!n.lastElementEquals("/*")&&!n.lastElementEquals("(")&&(a.search(/^\s*\[(global|end|GLOBAL|END)\]/)!==-1&&!n.lastElementEquals("{")||a.search(/^\s*\[(global|GLOBAL)\]/)!==-1)&&(o=!1,r=!0),a===")"&&n.popIfLastElementEquals("("),a.startsWith("*/")&&(n.popIfLastElementEquals("/*"),r=!0),a==="}"&&e.replace(/\s/g,"")===""&&(n.popIfLastElementEquals("{"),l.length>0&&l.pop(),r=!0),n.lastElementEquals("#")||(e+=a)}else{if(!n.lastElementEquals("/*")&&!n.lastElementEquals("(")&&!r&&!o){e=e.trim();const a=this.getOperator(e);if(a!==-1){const d=e.indexOf(a);i=e.substring(0,d),l.length>0&&(i=l.join(".")+"."+i);let u=e.substring(d+a.length,e.length).trim();switch(i=i.trim(),a){case"=":i.search(/\s/g)===-1&&i.length>0&&this.setTreeNodeValue(i,u);break;case"=<":l.length>0&&u.substr(0,1)==="."&&(u=l.join(".")+u),i.search(/\s/g)===-1&&i.length>0&&u.search(/\s/g)===-1&&u.length>0&&this.setReference(i,u);break;case"<":l.length>0&&u.substr(0,1)==="."&&(u=l.join(".")+u),i.search(/\s/g)===-1&&i.length>0&&u.search(/\s/g)===-1&&u.length>0&&this.setCopy(i,u);break;case">":this.deleteTreeNodeValue(i);break;case":=":break;default:break}}}n.popIfLastElementEquals("#"),r=!1}s++}if(!n.lastElementEquals("/*")&&!n.lastElementEquals("(")&&!r){const h=e.indexOf("<");h!==-1?(i=e.substring(h+1,e.length).trim(),l.length>0&&i.substr(0,1)==="."&&(i=l.join(".")+i)):(i=e,l.length>0&&(i=l.join(".")+"."+i,i=i.replace(/\s/g,"")));const f=i.lastIndexOf(".");i=i.substring(0,f)}return this.getTreeNode(i)}getTreeNode(t){if(t=t.trim(),t.length===0)return this.tsTree;const s=t.split(".");let e=this.tsTree.childNodes,r,o=this.tsTree;for(let n=0;n<s.length;n++){if(r=s[n],typeof e[r]>"u"||typeof e[r].childNodes>"u"){e[r]=new c(r,this),e[r].parent=o;let l=o.extPath;l&&(l+="."),l+=r,e[r].extPath=l}if(n===s.length-1)return e[r];o=e[r],e=e[r].childNodes}}setTreeNodeValue(t,s){const e=this.getTreeNode(t);e.parent!==null&&e.parent.value==="GIFBUILDER"&&s==="TEXT"&&(s="GB_TEXT"),e.parent!==null&&e.parent.value==="GIFBUILDER"&&s==="IMAGE"&&(s="GB_IMAGE"),this.tsRef.isType(s)&&(e.value=s)}deleteTreeNodeValue(t){const s=this.getTreeNode(t);s.value=null,s.childNodes={}}setReference(t,s){const e=t.split("."),r=e[e.length-1],o=this.getTreeNode(t),n=this.getTreeNode(s);o.parent!==null?o.parent.childNodes[r]=n:this.tsTree.childNodes[r]=n}setCopy(t,s){this.clone=l=>{if(typeof l!="object")return l;const i={};for(const h in l)h!=="tsParser"&&(h!=="parent"?typeof l[h]=="object"?i[h]=this.clone(l[h]):i[h]=l[h]:"parent"in l&&(i.parent=l.parent));return i};const e=t.split("."),r=e[e.length-1],o=this.getTreeNode(t),n=this.getTreeNode(s);o.parent!==null?o.parent.childNodes[r]=this.clone(n):this.tsTree.childNodes[r]=this.clone(n)}}export{c as TreeNode,E as TsParser};
@@ -0,0 +1,13 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
import h from"@typo3/core/ajax/ajax-request.js";class d{constructor(e,s,t){this.properties={},this.typeId=e,this.extends=s,this.properties=t}}class o{constructor(e,s,t){this.parentType=e,this.name=s,this.value=t}}class f{constructor(){this.typeTree={},this.doc=null}async loadTsrefAsync(){const e=await new h(TYPO3.settings.ajaxUrls.codeeditor_tsref).get();this.doc=await e.resolve(),this.buildTree()}buildTree(){for(const e of Object.keys(this.doc)){const s=this.doc[e];this.typeTree[e]=new d(e,s.extends||void 0,Object.fromEntries(Object.entries(s.properties).map(([t,r])=>[t,new o(e,t,r.type)])))}for(const e of Object.keys(this.typeTree))typeof this.typeTree[e].extends<"u"&&this.addPropertiesToType(this.typeTree[e],this.typeTree[e].extends,100)}addPropertiesToType(e,s,t){if(t<0)throw"Maximum recursion depth exceeded while trying to resolve the extends in the TSREF!";const r=s.split(",");for(let i=0;i<r.length;i++)if(typeof this.typeTree[r[i]]<"u"){typeof this.typeTree[r[i]].extends<"u"&&this.addPropertiesToType(this.typeTree[r[i]],this.typeTree[r[i]].extends,t-1);const y=this.typeTree[r[i]].properties;for(const p in y)typeof e.properties[p]>"u"&&(e.properties[p]=y[p])}}getPropertiesFromTypeId(e){return typeof this.typeTree[e]<"u"?(this.typeTree[e].properties.clone=function(){const s={};for(const t of Object.keys(this))s[t]=new o(this[t].parentType,this[t].name,this[t].value);return s},this.typeTree[e].properties):{}}typeHasProperty(e,s){return typeof this.typeTree[e]<"u"&&typeof this.typeTree[e].properties[s]<"u"}getType(e){return this.typeTree[e]}isType(e){return typeof this.typeTree[e]<"u"}}export{f as TsRef,o as TsRefProperty,d as TsRefType};
@@ -0,0 +1,13 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
import{LitElement as g,css as b,html as h}from"lit";import{property as l,state as u,customElement as v}from"lit/decorators.js";import{EditorView as c,lineNumbers as w,highlightSpecialChars as k,drawSelection as E,placeholder as S,keymap as M}from"@codemirror/view";import{Compartment as C,EditorState as m}from"@codemirror/state";import{syntaxHighlighting as x,defaultHighlightStyle as D}from"@codemirror/language";import{defaultKeymap as V,indentWithTab as z}from"@codemirror/commands";import{oneDark as K}from"@codemirror/theme-one-dark";import{executeJavaScriptModuleInstruction as f,loadModule as O,resolveSubjectRef as R}from"@typo3/core/java-script-item-processor.js";import"@typo3/backend/element/spinner-element.js";var i=function(p,e,o,r){var n=arguments.length,a=n<3?e:r===null?r=Object.getOwnPropertyDescriptor(e,o):r,s;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")a=Reflect.decorate(p,e,o,r);else for(var d=p.length-1;d>=0;d--)(s=p[d])&&(a=(n<3?s(a):n>3?s(e,o,a):s(e,o))||a);return n>3&&a&&Object.defineProperty(e,o,a),a};let t=class extends g{constructor(){super(...arguments),this.mode=null,this.addons=[],this.keymaps=[],this.lineDigits=0,this.autoheight=!1,this.nolazyload=!1,this.readonly=!1,this.lineWrapping=!1,this.fullscreen=!1,this.panel="bottom",this.editorTheme=null,this.editorView=null}static{this.styles=b`:host{position:relative;display:block}:host([fullscreen]){position:fixed;inset:64px 0 0;z-index:9}:host([fullscreen]) .cm-scroller{min-height:auto;max-height:100%}:host([autoheight]) .cm-scroller{max-height:none}.codemirror-label{font-size:.875em;opacity:.75}.codemirror-label-top{margin-bottom:.25rem}.codemirror-label-bottom{margin-top:.25rem}typo3-backend-spinner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.cm-editor{overflow:hidden;border-radius:var(--typo3-input-border-radius);border:var(--typo3-input-border-width) solid var(--typo3-input-border-color);transition:outline-color .15s ease-in-out,box-shadow .15s ease-in-out}.cm-focused{border-color:var(--typo3-input-focus-border-color);outline-offset:0;outline:.25rem solid color-mix(in srgb,var(--typo3-form-control-focus-border-color),transparent 25%)}.cm-gutters{height:auto!important;position:relative!important}.cm-content{min-height:calc(8px + 16.8px*var(--rows, 18))!important}.cm-scroller{min-height:100%;max-height:calc(100dvh - 10rem)}`}setContent(e){this.editorView!==null&&this.editorView.dispatch({changes:{from:0,to:this.editorView.state.doc.length,insert:e}})}getContent(){return this.editorView.state.doc.toString()}render(){return h`${this.label&&this.panel==="top"?h`<div class="codemirror-label codemirror-label-top">${this.label}</div>`:""}<div id=codemirror-parent @keydown=${e=>this.onKeydown(e)}></div>${this.label&&this.panel==="bottom"?h`<div class="codemirror-label codemirror-label-bottom">${this.label}</div>`:""} ${this.editorView===null?h`<typo3-backend-spinner size=large></typo3-backend-spinner>`:""}`}firstUpdated(){if(this.nolazyload){this.initializeEditor(this.firstElementChild);return}const e={root:document.body},o=new IntersectionObserver(r=>{r.forEach(n=>{n.intersectionRatio>0&&(o.unobserve(n.target),this.firstElementChild&&this.firstElementChild.nodeName.toLowerCase()==="textarea"&&this.initializeEditor(this.firstElementChild))})},e);o.observe(this)}onKeydown(e){e.ctrlKey&&e.altKey&&e.key==="f"&&(e.preventDefault(),this.fullscreen=!0),e.key==="Escape"&&this.fullscreen&&(e.preventDefault(),this.fullscreen=!1)}async initializeEditor(e){const o=c.updateListener.of(s=>{s.docChanged&&(e.value=s.state.doc.toString(),e.dispatchEvent(new CustomEvent("change",{bubbles:!0})))});this.lineDigits>0?this.style.setProperty("--rows",this.lineDigits.toString()):e.getAttribute("rows")&&this.style.setProperty("--rows",e.getAttribute("rows")),this.editorTheme=new C;const r=[this.editorTheme.of([]),o,w(),k(),E(),m.allowMultipleSelections.of(!0),x(D,{fallback:!0})];if(this.lineWrapping&&r.push(c.lineWrapping),this.readonly&&r.push(m.readOnly.of(!0)),this.placeholder&&r.push(S(this.placeholder)),this.mode){const s=await f(this.mode);r.push(...s)}this.addons.length>0&&r.push(...await Promise.all(this.addons.map(s=>f(s))));const n=[...V,z];this.keymaps.length>0&&(await Promise.all(this.keymaps.map(d=>O(d).then(y=>R(y,d))))).forEach(d=>n.push(...d)),r.push(M.of(n)),this.editorView=new c({state:m.create({doc:e.value,extensions:r}),parent:this.renderRoot.querySelector("#codemirror-parent"),root:this.renderRoot}),this.toggleDarkMode(this.darkModeEnabled()),window.matchMedia("(prefers-color-scheme: dark)").addEventListener("change",()=>{this.toggleDarkMode(this.darkModeEnabled())})}darkModeEnabled(){const o=window.getComputedStyle(this).colorScheme;return o==="light only"||o==="light"?!1:o==="dark only"||o==="dark"?!0:window.matchMedia("(prefers-color-scheme: dark)").matches}toggleDarkMode(e){this.editorView.dispatch({effects:this.editorTheme.reconfigure(e?K:[])})}};i([l({type:Object})],t.prototype,"mode",void 0),i([Line truncated
@@ -0,0 +1,13 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
import f from"@typo3/core/document-service.js";import{StreamLanguage as g,LanguageSupport as d,syntaxTree as p}from"@codemirror/language";import{TypoScriptStreamParserFactory as y}from"@typo3/backend/code-editor/stream-parser/typoscript.js";import{TsCodeCompletion as h}from"@typo3/backend/code-editor/autocomplete/ts-code-completion.js";function C(){const e=g.define(new y().create()),t=e.data.of({autocomplete:u});return new d(e,[t])}const D=(async()=>{await f.ready();const e=parseInt(document.querySelector('input[name="effectivePid"]')?.value,10);return new h(e)})();async function u(e){if(!e.explicit)return null;const t=k(e),s=e.pos-(t.completingAfterDot?1:0),n=p(e.state).resolveInner(s,-1),r=n.name==="Document"||t.completingAfterDot?"":e.state.sliceDoc(n.from,s),o=n.name==="Document"||t.completingAfterDot?e.pos:n.from;let i={start:n.from,end:s,string:r,type:n.name};/^[\w$_]*$/.test(r)||(i={start:e.pos,end:e.pos,string:"",type:r==="."?"property":null}),t.token=i;const l=(await D).refreshCodeCompletion(t);if((n.name==="string"||n.name==="comment")&&w(r,l))return null;const m=T(r,l);return{from:o,options:m.map(a=>({label:a,type:"keyword"}))}}function k(e){const t=e.state.sliceDoc().split(e.state.lineBreak).length,s=e.state.sliceDoc(0,e.pos).split(e.state.lineBreak).length,n=e.state.sliceDoc().split(e.state.lineBreak)[s-1],o=e.state.sliceDoc(e.pos-1,e.pos)===".";return{lineTokens:S(t,e),currentLineNumber:s,currentLine:n,lineCount:t,completingAfterDot:o}}function S(e,t){const s=Array(e).fill("").map(()=>[]);let n=0,r=1;return p(t.state).cursor().iterate(o=>{const i=o.type.name||o.name;if(i==="Document")return;const c=o.from,l=o.to;n<c&&t.state.sliceDoc(n,c).split(t.state.lineBreak).forEach(a=>{a&&(s[Math.min(r-1,e-1)].push({type:null,string:a,start:n,end:n+a.length}),r++,n+=a.length)});const m=t.state.sliceDoc(o.from,o.to);r=t.state.sliceDoc(0,o.from).split(t.state.lineBreak).length,s[r-1].push({type:i,string:m,start:c,end:l}),n=l}),n<t.state.doc.length&&s[r-1].push({type:null,string:t.state.sliceDoc(n),start:n,end:t.state.doc.length}),s}function w(e,t){const s=e.length;for(let n=0;n<t.length;++n)if(e===t[n].substr(s))return!0;return!1}function T(e,t){const s=new Set,n=o=>{o.lastIndexOf(e,0)===0&&!s.has(o)&&s.add(o)};for(let o=0,i=t.length;o<i;++o)n(t[o]);const r=Array.from(s);return r.sort(),r}export{u as complete,C as typoscript};
@@ -0,0 +1,14 @@
/*
* This file is part of the TYPO3 CMS project.
*
* It is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License, either version 2
* of the License, or any later version.
*
* For the full copyright and license information, please read the
* LICENSE.txt file that was distributed with this source code.
*
* The TYPO3 project - inspiring people to share!
*/
class j{constructor(g,N,b,I,h,T){this.indented=g,this.column=N,this.type=b,this.prev=h,this.info=T,I!=null&&(this.align=I)}}function V(F,g){return/^(?:operator|sof|keyword c|case|new|export|default|[\[{}\(,;:]|=>)$/.test(g.lastType)}class oe{create(){const g=/[\w$\xa1-\uffff]/,b={name:"typoscript",localVars:void 0,doubleIndentSwitch:!1},I=function(){function e(a){return{type:a,style:"keyword"}}const r=e("keyword a"),t=e("keyword b");return{_CSS_DEFAULT_STYLE:e("_CSS_DEFAULT_STYLE"),_LOCAL_LANG:e("_LOCAL_LANG"),_offset:e("_offset"),absRefPrefix:e("absRefPrefix"),accessibility:e("accessibility"),ACT:t,ACTIFSUB:t,ACTIFSUBRO:e("ACTIFSUBRO"),ACTRO:t,addAttributes:e("addAttributes"),addExtUrlsAndShortCuts:e("addExtUrlsAndShortCuts"),addItems:e("addItems"),additionalHeaders:e("additionalHeaders"),additionalParams:e("additionalParams"),addQueryString:e("addQueryString"),adjustItemsH:e("adjustItemsH"),adjustSubItemsH:e("adjustSubItemsH"),admPanel:r,after:e("after"),afterImg:e("afterImg"),afterImgLink:e("afterImgLink"),afterImgTagParams:e("afterImgTagParams"),afterROImg:e("afterROImg"),afterWrap:e("afterWrap"),age:e("age"),alertPopups:e("alertPopups"),align:e("align"),all:t,allow:e("allow"),allowCaching:e("allowCaching"),allowedAttribs:e("allowedAttribs"),allowedClasses:e("allowedClasses"),allowedCols:e("allowedCols"),allowedNewTables:e("allowedNewTables"),allowTags:e("allowTags"),allStdWrap:e("allStdWrap"),allWrap:e("allWrap"),alt_print:r,alternativeSortingField:e("alternativeSortingField"),altIcons:e("altIcons"),altImgResource:e("altImgResource"),altLabels:e("altLabels"),altTarget:e("altTarget"),altText:e("altText"),altUrl:e("altUrl"),altUrl_noDefaultParams:e("altUrl_noDefaultParams"),altWrap:e("altWrap"),always:e("always"),alwaysActivePIDlist:e("alwaysActivePIDlist"),alwaysLink:e("alwaysLink"),andWhere:e("andWhere"),angle:e("angle"),antiAlias:e("antiAlias"),append:e("append"),applyTotalH:e("applyTotalH"),applyTotalW:e("applyTotalW"),archive:e("archive"),ascii:t,ATagAfterWrap:e("ATagAfterWrap"),ATagBeforeWrap:e("ATagBeforeWrap"),ATagParams:e("ATagParams"),ATagTitle:e("ATagTitle"),atLeast:t,atMost:t,attribute:e("attribute"),auth:r,autoLevels:e("autoLevels"),autonumber:e("autonumber"),backColor:e("backColor"),background:e("background"),baseURL:e("baseURL"),BE:t,be_groups:t,be_users:t,before:e("before"),beforeImg:e("beforeImg"),beforeImgLink:e("beforeImgLink"),beforeImgTagParams:e("beforeImgTagParams"),beforeROImg:e("beforeROImg"),beforeWrap:e("beforeWrap"),begin:e("begin"),bgCol:e("bgCol"),bgImg:e("bgImg"),blur:e("blur"),bm:e("bm"),bodyTag:e("bodyTag"),bodyTagAdd:e("bodyTagAdd"),bodyTagCObject:e("bodyTagCObject"),bodytext:e("bodytext"),borderCol:e("borderCol"),borderThick:e("borderThick"),bottomBackColor:e("bottomBackColor"),bottomContent:e("bottomContent"),bottomHeight:e("bottomHeight"),bottomImg:e("bottomImg"),bottomImg_mask:e("bottomImg_mask"),BOX:t,br:e("br"),browse:t,browser:r,brTag:e("brTag"),bullet:e("bullet"),bulletlist:e("bulletlist"),bullets:t,bytes:e("bytes"),cache:r,cache_clearAtMidnight:e("cache_clearAtMidnight"),cache_period:e("cache_period"),caption:e("caption"),caption_stdWrap:e("caption_stdWrap"),captionHeader:e("captionHeader"),captionSplit:e("captionSplit"),CARRAY:e("CARRAY"),CASE:e("CASE"),case:e("case"),casesensitiveComp:e("casesensitiveComp"),cellpadding:e("cellpadding"),cellspacing:e("cellspacing"),char:e("char"),charcoal:e("charcoal"),charMapConfig:e("charMapConfig"),CHECK:r,check:e("check"),class:e("class"),classesAnchor:e("classesAnchor"),classesCharacter:e("classesCharacter"),classesImage:e("classesImage"),classesParagraph:e("classesParagraph"),clear:e("clear"),clearCache:e("clearCache"),clearCache_disable:e("clearCache_disable"),clearCache_pageGrandParent:e("clearCache_pageGrandParent"),clearCache_pageSiblingChildren:e("clearCache_pageSiblingChildren"),clearCacheCmd:e("clearCacheCmd"),clearCacheLevels:e("clearCacheLevels"),clearCacheOfPages:e("clearCacheOfPages"),clickTitleMode:e("clickTitleMode"),clipboardNumberPads:e("clipboardNumberPads"),cMargins:e("cMargins"),COA:e("COA"),COA_INT:e("COA_INT"),cObj:r,COBJ_ARRAY:e("COBJ_ARRAY"),cObject:r,cObjNum:e("cObjNum"),collapse:e("collapse"),collections:e("collections"),color:e("color"),color1:e("color1"),color2:e("color2"),color3:e("color3"),color4:e("color4"),colors:e("colors"),colour:e("colour"),colPos_list:e("colPos_list"),colRelations:e("colRelations"),cols:e("cols"),colSpace:e("colSpace"),COMMENT:r,comment_auto:e("comment_auto"),commentWrap:e("commentWrap"),compX:e("compX"),compY:e("compY"),conf:e("conf"),CONFIG:e("CONFIG"),config:r,CONSTANTS:e("CONSTANTS"),constants:e("constants"),CONTENT:e("CONTENT"),content:r,contextMenu:e("contextMenu"),copy:r,copyLevels:e("copyLevels"),count_HMENU_MENUOBJ:e("count_HMENU_MENUOBJ"),count_menuItems:e("count_menuItems"),count_MENUOBJ:e("count_MENUOBJ"),create:e("create"),crop:e("crop"),csConv:e("csConv"),CType:e("CType"),CUR:t,CURIFSUB:t,CURIFSUBRO:t,current:e("current"),CURRO:t,curUid:e("curUid"),cut:r,cWLine truncated
`&&(T=!1),t==="."&&e.match(/^\d+(?:[eE][+\-]?\d+)?/))return s("number","number");if(t==="."&&e.match(".."))return s("spread","meta");if(t&&/[\[\]{}\(\),;\:\.]/.test(t))return s(t);if(t==="<"||t===">"||t==="."||t==="="&&e.peek()!=="<")return T=!0,s(t,"operator");if(!T&&t&&/[\[\]\(\),;\:\.\<\>\=]/.test(t))return s(t,"operator");if(t==="0"&&e.eat(/x/i))return e.eatWhile(/[\da-f]/i),s("number","number");if(t==="0"&&e.eat(/o/i))return e.eatWhile(/[0-7]/i),s("number","number");if(t==="0"&&e.eat(/b/i))return e.eatWhile(/[01]/i),s("number","number");if(t&&/\d/.test(t))return e.match(/^\d*(?:\.\d+)?(?:[eE][+\-]?\d+)?/),s("number","number");if(t==="/")return e.eat("*")?(r.tokenize=L,L(e,r)):e.eat("/")?(e.skipToEnd(),s("comment","comment")):V(e,r)?(z(e),e.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/),s("regexp","string-2")):(e.eatWhile(h),s("operator","operator",e.current()));if(t==="#")return e.skipToEnd(),s("comment","comment");if(h.test(t))return(t!==">"||!r.lexical||r.lexical.type!==">")&&e.eatWhile(h),s("operator","operator",e.current());if(g.test(t)){e.eatWhile(g);const a=e.current();if(I.propertyIsEnumerable(a)){const o=I[a];return s(o.type,o.style,a)}return T?s("string","string",a):s("variable",void 0,a)}}}function L(e,r){let t=!1,a;for(;(a=e.next())!==void 0;){if(a==="/"&&t){r.tokenize=P;break}t=a==="*"}return s("comment","comment")}const Y={atom:!0,number:!0,variable:!0,string:!0,regexp:!0};function J(e,r){for(let t=e.localVars;t;t=t.next)if(t.name==r)return!0;for(let t=e.context;t;t=t.prev)for(let a=t.vars;a;a=a.next)if(a.name==r)return!0}const l={state:null,column:null,marked:null,cc:null};function q(e,r,t,a,o){const n=e.cc;for(l.state=e,l.stream=o,l.marked=null,l.cc=n,l.style=r,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;){const p=n.length?n.pop():C;if(typeof p=="function"&&p(t,a)){for(;n.length&&n[n.length-1]&&n[n.length-1].lex;)n.pop()();return l.marked?l.marked:t==="variable"&&J(e,a)?"variable-2":r}}}function d(...e){for(let r=e.length-1;r>=0;r--)l.cc.push(e[r])}function i(...e){return d(...e),!0}function v(e){function r(a){for(let o=a;o;o=o.next)if(o.name==e)return!0;return!1}const t=l.state;if(l.marked="def",t.context){if(r(t.localVars))return;t.localVars={name:e,next:t.localVars}}}function u(e,r){const t=function(){const a=l.state;let o=a.indented;if(a.lexical.type==="stat")o=a.lexical.indented;else for(let n=a.lexical;n&&n.type===")"&&n.align;n=n.prev)o=n.indented;a.lexical=new j(o,l.stream.column(),e,null,a.lexical,r)};return t.lex=!0,t}function c(){const e=l.state;e.lexical.prev&&(e.lexical.type===")"&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}c.lex=!0;function f(e){function r(t){return t==e?i():e===";"?d():i(r)}return r}function C(e,r){return e==="keyword a"?i(u("form"),X,C,c):e==="keyword b"?i(u("form"),C,c):e==="{"?i(u("}"),D,c):e===";"?i():e==="variable"?i(u("stat"),$):e==="import"?i(u("stat"),te,c):r==="@"?i(m,C):d(u("stat"),m,f(";"),c)}function m(e){return U(e,!1)}function y(e){return U(e,!0)}function X(e){return e!=="("?d():i(u(")"),m,f(")"),c)}function U(e,r){const t=r?A:E;return Y.hasOwnProperty(e)?i(t):e==="keyword c"?i(r?Q:W):e==="("?i(u(")"),W,f(")"),c,t):e==="operator"?i(r?y:m):e==="{"?k(O,"}",null,t):i()}function W(e){return e.match(/[;\}\)\],]/)?d():d(m)}function Q(e){return e.match(/[;\}\)\],]/)?d():d(y)}function E(e,r){return e===","?i(m):A(e,r,!1)}function A(e,r,t){const a=t==!1?E:A,o=t==!1?m:y;if(e==="operator")return/\+\+|--/.test(r)?i(a):r==="?"?i(m,f(":"),o):i(o);if(e!==";"){if(e==="(")return k(y,")","call",a);if(e===".")return i(K,a);if(e==="[")return i(u("]"),W,f("]"),c,a)}}function $(e){return e===":"?i(c,C):d(E,f(";"),c)}function K(e){if(e==="variable")return l.marked="property",i()}function O(e){if(e==="async")return l.marked="property",i(O);if(e==="variable"||l.style==="keyword")return l.marked="property",i(M);if(e==="number"||e==="string")return l.marked=l.style+" property",i(M);if(e==="modifier")return i(O);if(e===":")return d(M)}function M(e){if(e===":")return i(y)}function Z(e,r,t){function a(o,n){if(t?t.indexOf(o)>-1:o===","){const p=l.state.lexical;return p.info==="call"&&(p.pos=(p.pos||0)+1),i(function(x,S){return x==r||S==r?d():d(e)},a)}return o==r||n==r?i():i(f(r))}return function(o,n){return o==r||n==r?i():d(e,a)}}function k(e,r,t,...a){for(const o of a)l.cc.push(o);return i(u(r,t),Z(e,r),c)}function D(e){return e==="}"?i():d(C,D)}function B(e,r){if(e==="modifier")return i(B);if(e==="variable")return v(r),i();if(e==="{")return k(ee,"}")}function ee(e,r){return e==="variable"&&!l.stream.match(/^\s*:/,!1)?(v(r),i(H)):(e==="variable"&&(l.marked="property"),e==="}"?d():i(f(":"),B,H))}function H(e,r){if(r==="=")return i(y)}function te(e){return e==="string"?i():d(R,G,ae)}function R(e,r){return e==="{"?k(R,"}"):(e==="variable"&&v(r),r==="*"&&(l.marked="keyword"),i(re))}function G(e){if(e===",")return i(R,G)}function re(e,r){if(r==="as")return l.marked="keyword",i(R)}function ae(e,r){if(r==="from")return l.marked="keyword",i(m)}function ie(e Line truncated