@hyperfixi/core 2.0.0 → 2.1.0

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.
Files changed (62) hide show
  1. package/dist/api/hyperscript-api.d.ts +2 -0
  2. package/dist/ast-utils/index.d.ts +1 -1
  3. package/dist/ast-utils/index.js +11 -1
  4. package/dist/ast-utils/index.mjs +11 -1
  5. package/dist/ast-utils/interchange/index.d.ts +1 -1
  6. package/dist/ast-utils/interchange/lsp.d.ts +4 -1
  7. package/dist/behaviors/index.js +13 -5
  8. package/dist/behaviors/index.mjs +13 -5
  9. package/dist/bundle-generator/index.js +9 -0
  10. package/dist/bundle-generator/index.mjs +9 -0
  11. package/dist/chunks/{bridge-I6ceoWxV.js → bridge-CZfeDyEz.js} +2 -2
  12. package/dist/chunks/browser-modular-CwTpxqdt.js +2 -0
  13. package/dist/chunks/feature-eventsource-B5F2-H1r.js +2 -0
  14. package/dist/chunks/feature-sockets-ClOH7vk7.js +2 -0
  15. package/dist/chunks/feature-webworker-3bAp0ac9.js +2 -0
  16. package/dist/commands/index.js +27 -6
  17. package/dist/commands/index.mjs +27 -6
  18. package/dist/debug/debug-controller.d.ts +62 -0
  19. package/dist/debug/index.d.ts +5 -0
  20. package/dist/expressions/index.js +16 -52
  21. package/dist/expressions/index.mjs +16 -52
  22. package/dist/hyperfixi-classic-i18n.js +1 -1
  23. package/dist/hyperfixi-hx.js +1 -1
  24. package/dist/hyperfixi-hybrid-complete.js +1 -1
  25. package/dist/hyperfixi-minimal.js +1 -1
  26. package/dist/hyperfixi-multilingual.js +1 -1
  27. package/dist/hyperfixi-standard.js +1 -1
  28. package/dist/hyperfixi.js +1 -1
  29. package/dist/hyperfixi.mjs +1 -1
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.js +10112 -6941
  32. package/dist/index.min.js +1 -1
  33. package/dist/index.mjs +10111 -6942
  34. package/dist/lokascript-browser-classic-i18n.js +1 -1
  35. package/dist/lokascript-browser-minimal.js +1 -1
  36. package/dist/lokascript-browser-standard.js +1 -1
  37. package/dist/lokascript-browser.js +1 -1
  38. package/dist/lokascript-hybrid-complete.js +1 -1
  39. package/dist/lokascript-hybrid-hx.js +1 -1
  40. package/dist/lokascript-multilingual.js +1 -1
  41. package/dist/metadata.d.ts +4 -4
  42. package/dist/metadata.js +4 -4
  43. package/dist/metadata.mjs +4 -4
  44. package/dist/parser/full-parser.js +12 -31
  45. package/dist/parser/full-parser.mjs +12 -31
  46. package/dist/parser/hybrid/index.js +35 -2
  47. package/dist/parser/hybrid/index.mjs +35 -2
  48. package/dist/parser/hybrid/parser-core.d.ts +1 -0
  49. package/dist/parser/hybrid/parser-core.js +35 -2
  50. package/dist/parser/hybrid/parser-core.mjs +35 -2
  51. package/dist/parser/hybrid/tokenizer.js +5 -0
  52. package/dist/parser/hybrid/tokenizer.mjs +5 -0
  53. package/dist/parser/hybrid-parser.js +35 -2
  54. package/dist/parser/hybrid-parser.mjs +35 -2
  55. package/dist/registry/index.js +16 -52
  56. package/dist/registry/index.mjs +16 -52
  57. package/dist/runtime/runtime-base.d.ts +1 -0
  58. package/package.json +5 -5
  59. package/dist/chunks/browser-modular-Dv6PAV3c.js +0 -2
  60. package/dist/chunks/feature-eventsource-DWb514fy.js +0 -2
  61. package/dist/chunks/feature-sockets-3PFuvCVY.js +0 -2
  62. package/dist/chunks/feature-webworker-DTm_eh-E.js +0 -2
@@ -1,2 +1,2 @@
1
- var hyperfixi=function(){"use strict";const e="then",t="else",r="end",n="and",s="for",i="while",a="until",o="forever",l="times",c="index",u="in",d="to",m="from",p="with",h="of",f="on",y="event",g="behavior",v="global",b="the",w="start",k=new Set(["add","append","async","beep","break","call","continue","copy","decrement","default","exit","fetch","for","get","go","halt","hide","if","increment","install","js","log","make","measure","morph","pick","process","push","put","remove","render","repeat","replace","return","send","set","settle","show","swap","take","tell","throw","toggle","transition","trigger","unless","wait"]),E=new Set(["put","trigger","send","remove","take","toggle","set","show","hide","add","halt","measure","js","tell","swap","morph","push","replace","process"]),x=(new Set(["if","unless","repeat","wait","for","while"]),"at start of"),C="at end of",A=["into","before","after","at",x,C,"at the start of","at the end of"],S=new Set(["if","else","unless","for","while","until","end","and","or","not","in","to","from","into","with","without","as","matches","contains","then","on","when","every","init","def","behavior","the","of","first","last"]),T=e=>k.has(e.toLowerCase()),O=e=>E.has(e.toLowerCase()),L=e=>S.has(e.toLowerCase()),P=e=>N.has(e.toLowerCase()),N=new Set(["hsl","hsla","rgb","rgba","hwb","lab","lch","oklch","oklab","color","color-mix","calc","min","max","clamp","var","url","linear-gradient","radial-gradient","conic-gradient","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient"]),I=new Set(["me","it","you","result","my","its","your"]),R=new Set(["and","or","not","no"]),j=new Set(["==","!=","===","!==","<",">","<=",">=","is","is not","is a","is an","is not a","is not an","contains","has","have","does not contain","include","includes","does not include","match","matches","exists","does not exist","is empty","is not empty","is in","is not in","equals","in","is equal to","is really equal to","is not equal to","is not really equal to","is greater than","is less than","is greater than or equal to","is less than or equal to","really equals"]),_=new Set(["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","focus","blur","change","input","submit","reset","select","load","unload","resize","scroll","keydown","keyup","keypress","touchstart","touchend","touchmove","touchcancel","drag","drop","dragover","dragenter","dragleave","cut","copy","paste","toggle"]),q=new Set(["on","init","behavior","def","if","else","unless","for","while","until","end","and","or","not","in","to","from","into","with","as","then","when","where","after","before","by","at","between","async","no","start","of","the","new","global","local","equal","equals","greater","less","than","really","catch","finally","throw","return"]);var M,$;function V(e){switch(e){case $.KEYWORD:case $.COMMAND:case $.EXPRESSION:case $.CONTEXT_VAR:case $.GLOBAL_VAR:case $.EVENT:case $.IDENTIFIER:return M.IDENTIFIER;case $.STRING:return M.STRING;case $.NUMBER:return M.NUMBER;case $.BOOLEAN:return M.IDENTIFIER;case $.TEMPLATE_LITERAL:return M.TEMPLATE;case $.CSS_SELECTOR:case $.ID_SELECTOR:case $.CLASS_SELECTOR:case $.QUERY_REFERENCE:return M.SELECTOR;case $.OPERATOR:case $.LOGICAL_OPERATOR:case $.COMPARISON_OPERATOR:return M.OPERATOR;case $.TIME_EXPRESSION:return M.TIME;case $.COMMENT:return M.COMMENT;case $.SYMBOL:return M.SYMBOL;default:return M.UNKNOWN}}!function(e){e.IDENTIFIER="identifier",e.STRING="string",e.NUMBER="number",e.SELECTOR="selector",e.OPERATOR="operator",e.TIME="time",e.TEMPLATE="template",e.COMMENT="comment",e.SYMBOL="symbol",e.UNKNOWN="unknown"}(M||(M={})),function(e){e.KEYWORD="keyword",e.COMMAND="command",e.EXPRESSION="expression",e.STRING="string",e.NUMBER="number",e.BOOLEAN="boolean",e.TEMPLATE_LITERAL="template_literal",e.CSS_SELECTOR="css_selector",e.ID_SELECTOR="id_selector",e.CLASS_SELECTOR="class_selector",e.QUERY_REFERENCE="query_reference",e.CONTEXT_VAR="context_var",e.GLOBAL_VAR="global_var",e.EVENT="event",e.OPERATOR="operator",e.LOGICAL_OPERATOR="logical_operator",e.COMPARISON_OPERATOR="comparison_operator",e.TIME_EXPRESSION="time_expression",e.OBJECT_LITERAL="object_literal",e.ARRAY_LITERAL="array_literal",e.SYMBOL="symbol",e.COMMENT="comment",e.IDENTIFIER="identifier",e.UNKNOWN="unknown"}($||($={}));const D=q,B=new Set(["+","-","*","/","mod"]),F=new Set(["ms","s","seconds","minutes","hours","days"]);function z(e,t=1){const r=e.position+t;return e.input.length>r?e.input[r]:""}function H(e){const t=e.input[e.position];return e.position++,"\n"===t?(e.line++,e.column=1):"\r"===t?("\n"===(e.input.length>e.position?e.input[e.position]:"")&&e.position++,e.line++,e.column=1):e.column++,t}function U(e){const t=e.input,r=t.length;for(;r>e.position;){const r=t[e.position];if(" "!==r&&"\t"!==r&&"\r"!==r&&"\n"!==r)break;H(e)}}function W(e,t,r,n,s){const i=n??e.position-r.length,a=e.position;let o=e.column-r.length;if(void 0!==n){o=1;let t=-1;for(let r=0;n>r;r++)"\n"!==e.input[r]&&"\r"!==e.input[r]||(t=r);o=n-t}const l={kind:V(t),value:r,start:i,end:a,line:J(e,i),column:o};e.tokens.push(l)}function J(e,t){let r=1;for(let n=0;t>n&&e.input.length>n;n++){const t=e.input[n];"\n"===t?r++:"\r"===t&&(r++,e.input.length>n+1&&"\n"===e.input[n+1]&&n++)}return r}function K(e){const t=e.position;let r="";for(H(e),H(e);e.input.length>e.position&&"\n"!==e.input[e.position];)r+=H(e);W(e,$.COMMENT,"--"+r,t)}function Y(e){const t=e.position,r=H(e);let n=r;for(;e.input.length>e.position;){const t=H(e);if(n+=t,t===r)break;"\\"===t&&e.input.length>e.position&&(n+=H(e))}W(e,$.STRING,n,t)}function G(e){const t=e.position;H(e);let r="";for(;e.input.length>e.position;){const t=e.input[e.position];if("`"===t){H(e);break}if("\\"===t){if(H(e),e.input.length>e.position){const t=H(e);switch(t){case"n":r+="\n";break;case"t":r+="\t";break;case"r":r+="\r";break;case"\\":r+="\\";break;case"`":r+="`";break;default:r+=t}}}else r+=H(e)}if(e.position>=e.input.length&&!e.input.endsWith("`"))throw Error(`Unterminated template literal at line ${e.line}, column ${e.column-r.length}`);W(e,$.TEMPLATE_LITERAL,r,t)}function X(e){const t=e.position,r=H(e);let n=r;for(;e.input.length>e.position;){const t=e.input[e.position];if(!ie(t)&&"-"!==t&&"_"!==t&&":"!==t)break;n+=H(e)}W(e,"#"===r?$.ID_SELECTOR:$.CLASS_SELECTOR,n,t)}function Z(e){const t=e.position;let r="";for(r+=H(e);e.input.length-1>e.position;){const t=e.input[e.position],n=e.input[e.position+1];if(r+=H(e),"/"===t&&">"===n){r+=H(e);break}}W(e,$.QUERY_REFERENCE,r,t)}function Q(e){const t=e.position;let r=H(e);for(;e.input.length>e.position;){const t=e.input[e.position];if(!ie(t)&&"_"!==t&&"-"!==t)break;r+=H(e)}W(e,$.SYMBOL,r,t)}function ee(e){const t=e.position;let r="";const n=e.input[e.position];if(("'"===n||"'"===n)&&"s"===z(e,1))return r="'s",H(e),H(e),void W(e,$.OPERATOR,r,t);const s=e.input.substring(e.position,e.position+2),i=e.input.substring(e.position,e.position+3);["===","!=="].includes(i)?(r=i,H(e),H(e),H(e)):["==","!=","<=",">=","&&","||","**","~=","|=","^=","$=","*=","?."].includes(s)?(r=s,H(e),H(e)):r=H(e);let a=$.OPERATOR;j.has(r)?a=$.COMPARISON_OPERATOR:["&&","||"].includes(r)?a=$.LOGICAL_OPERATOR:B.has(r)&&(a=$.OPERATOR),W(e,a,r,t)}function te(e){const t=e.position,r=e.input,n=r.length;let s="";for(;n>e.position;){const t=r[e.position];if("0">t||t>"9")break;s+=H(e)}if(n>e.position&&"."===r[e.position]&&(e.position+1>=n||"."!==r[e.position+1]))for(s+=H(e);n>e.position;){const t=r[e.position];if("0">t||t>"9")break;s+=H(e)}if(n>e.position){const t=r[e.position];if("e"===t||"E"===t){const t=n>e.position+1?r[e.position+1]:"",i=n>e.position+2?r[e.position+2]:"";if(t>="0"&&"9">=t||!("+"!==t&&"-"!==t||"0">i||i>"9"))for(s+=H(e),"+"!==r[e.position]&&"-"!==r[e.position]||(s+=H(e));n>e.position;){const t=r[e.position];if("0">t||t>"9")break;s+=H(e)}}}const i=e.position;let a="";for(;n>e.position;){const t=r[e.position];if(("a">t||t>"z")&&("A">t||t>"Z"))break;a+=H(e)}F.has(a)?W(e,$.TIME_EXPRESSION,s+a,t):(e.position=i,W(e,$.NUMBER,s,t))}function re(e){const t=e.position,r=e.input,n=r.length;let s="";for(;n>e.position;){const t=r[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;s+=H(e)}const i=function(e,t,r){const n=t.toLowerCase(),s=e.position;if("'s"===t||"'s"===t)return!1;const i=e.tokens[e.tokens.length-1];if(i&&("identifier"===i.kind||"id_selector"===i.kind||"class_selector"===i.kind||"context_var"===i.kind)){const t=e.input.length>e.position?e.input[e.position]:"";if("'"===t||"'"===t)return!1}U(e);let a="";for(;e.input.length>e.position;){const t=e.input[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;a+=H(e)}if(a){const t=a.toLowerCase(),s=`${n} ${t}`,i=function(e,t,r,n){const s=t.toLowerCase(),i=r.toLowerCase();if("at"===s){const t=e.position;if("the"===i){U(e);let r="";for(;e.input.length>e.position;){const t=e.input[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;r+=H(e)}const s=r.toLowerCase();if("start"===s||"end"===s){U(e);let t="";for(;e.input.length>e.position;){const r=e.input[e.position];if(("a">r||r>"z")&&("A">r||r>"Z")&&("0">r||r>"9")&&"_"!==r&&"-"!==r)break;t+=H(e)}if("of"===t.toLowerCase())return W(e,$.KEYWORD,`at the ${s} of`,n),!0}return e.position=t,!1}if("start"===i||"end"===i){U(e);let r="";for(;e.input.length>e.position;){const t=e.input[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;r+=H(e)}return"of"===r.toLowerCase()?(W(e,$.KEYWORD,`at ${i} of`,n),!0):(e.position=t,!1)}}return!1}(e,n,t,r);if(i)return!0;const o=function(e,t,r){const n=e.position;let s=`${t} ${r}`,i=e.position;const a=[t,r];for(;8>a.length&&(U(e),e.input.length>e.position);){let t="";for(;e.input.length>e.position;){const r=e.input[e.position];if(("a">r||r>"z")&&("A">r||r>"Z"))break;t+=H(e)}if(!t)break;a.push(t.toLowerCase());const r=a.join(" ");j.has(r)&&(s=r,i=e.position)}return j.has(s)&&s!==`${t} ${r}`?(e.position=i,s):(e.position=n,null)}(e,n,t);if(o)return W(e,$.COMPARISON_OPERATOR,o,r),!0;if(j.has(s))return W(e,$.COMPARISON_OPERATOR,s,r),!0}return j.has(n)?(e.position=s,W(e,$.COMPARISON_OPERATOR,t,r),!0):(e.position=s,!1)}(e,s,t);if(i)return;const a=function(e){const t=e.toLowerCase();return"include"===t||"includes"===t?$.COMPARISON_OPERATOR:R.has(t)?$.LOGICAL_OPERATOR:B.has(e)||B.has(t)?$.OPERATOR:j.has(t)?$.COMPARISON_OPERATOR:"I"===e||I.has(t)?$.CONTEXT_VAR:k.has(t)?$.COMMAND:_.has(t)?$.EVENT:["true","false","null","undefined"].includes(t)?$.BOOLEAN:D.has(t)?$.KEYWORD:$.IDENTIFIER}(s);W(e,a,s,t)}function ne(e){const t=e.position,r=e.input,n=r.length;H(e);let s="$";for(;n>e.position;){const t=r[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t)break;s+=H(e)}W(e,$.GLOBAL_VAR,s,t)}function se(e){return/[a-zA-Z]/.test(e)}function ie(e){return/[a-zA-Z0-9]/.test(e)}function ae(e){let t=e.position+1,r=!1;for(;e.input.length>t;){const n=e.input[t];if("/"===n&&e.input.length>t+1&&">"===e.input[t+1])return r;if(ie(n)||"."===n||"#"===n||"["===n||"]"===n||":"===n||"-"===n||"_"===n||" "===n||"="===n||'"'===n||"'"===n||"("===n||")"===n||"*"===n||"^"===n||"$"===n||"~"===n||"|"===n||">"===n||"+"===n||","===n)r=!0,t++;else{if(" "!==n&&"\t"!==n)return!1;t++}if(t-e.position>50)return!1}return!1}function oe(e){return"+-*/^%=!<>&|(){}[],.;:?''~$".includes(e)}const le=function(){if("undefined"!=typeof localStorage)try{const e=localStorage,t=e.getItem("hyperfixi:debug")||e.getItem("lokascript:debug");if("*"===t||"true"===t)return!0}catch{}return!("undefined"==typeof window||!window.__HYPERFIXI_DEBUG__)||"undefined"!=typeof process&&"true"===process.env?.HYPERFIXI_DEBUG}(),ce=le,ue=le,de=le,me=le,pe=le,he=(...e)=>{ce&&console.log("🔧",...e)},fe=(...e)=>{ue&&console.log("🎯",...e)},ye=(...e)=>{de&&console.log("📝",...e)},ge=(...e)=>{me&&console.log("🔍",...e)},ve=(...e)=>{pe&&console.log("🚀",...e)};let be=!1,we=null;if("undefined"!=typeof window&&"undefined"!=typeof URLSearchParams)try{"semantic"===new URLSearchParams(window.location.search).get("debug")&&(be=!0,we=window,console.log("%c[HyperFixi] Semantic debug auto-enabled via URL param","color: #667eea; font-weight: bold"))}catch{}let ke={totalParses:0,semanticSuccesses:0,semanticFallbacks:0,traditionalParses:0,averageConfidence:0,confidenceHistory:[]};class Ee{constructor(e){this.analyzer=e.analyzer,this.language=e.language,this.confidenceThreshold=e.confidenceThreshold??.5,this.debugEnabled=e.debug??!1}isAvailable(){return this.analyzer.supportsLanguage(this.language)}shouldSkipSemantic(e){const t=e.trim().split(/\s+/)[0]?.toLowerCase();if(Ee.SKIP_SEMANTIC_COMMANDS.has(t))return!0;const r=e.toLowerCase();return!!/\bjs\b/.test(r)||!!/\btell\b/.test(r)}trySemanticParse(e){const t=performance.now();if(this.shouldSkipSemantic(e))return{success:!1,confidence:0,errors:["Command skipped for semantic parsing - using traditional parser"]};if(!this.isAvailable())return{success:!1,confidence:0,errors:[`Semantic parsing not available for language '${this.language}'`]};try{const n=this.analyzer.analyze(e,this.language),s=performance.now()-t;this.debugEnabled&&console.log("[SemanticIntegration] Analysis result:",{input:e,language:this.language,confidence:n.confidence,command:n.command?.name,threshold:this.confidenceThreshold});const i=n.confidence>=this.confidenceThreshold&&!!n.command,a=!i&&n.confidence>0;if(be){const t={};if(n.command?.roles)for(const[e,r]of n.command.roles)t[e]=r.value;const o={input:e.substring(0,100),language:this.language,confidence:n.confidence,threshold:this.confidenceThreshold,semanticSuccess:i,fallbackTriggered:a,command:n.command?.name,roles:Object.keys(t).length>0?t:void 0,errors:n.errors,timestamp:Date.now(),duration:s};!function(e){if(!be)return;const t=e.semanticSuccess?"semantic":e.fallbackTriggered?"fallback":"traditional",r=Math.round(100*e.confidence),n=Math.round(100*e.threshold),s=e.semanticSuccess?"color: #4caf50; font-weight: bold":e.fallbackTriggered?"color: #ff9800; font-weight: bold":"color: #9e9e9e";if(console.groupCollapsed(`%c[Semantic] ${t.toUpperCase()} %c${e.input.substring(0,50)}${e.input.length>50?"...":""}`,s,"color: #888"),console.log(`Confidence: ${r}% (threshold: ${n}%)`),e.command&&console.log("Command: "+e.command),e.roles&&Object.keys(e.roles).length>0&&console.log("Roles:",e.roles),e.duration&&console.log(`Duration: ${e.duration.toFixed(2)}ms`),e.errors?.length&&console.log("Errors:",e.errors),console.groupEnd(),we){const t=new CustomEvent("lokascript:semantic:parse",{detail:e,bubbles:!0});we.dispatchEvent(t)}}(o),r=o,ke.totalParses++,r.semanticSuccess?ke.semanticSuccesses++:r.fallbackTriggered?ke.semanticFallbacks++:ke.traditionalParses++,ke.confidenceHistory.push(r.confidence),ke.confidenceHistory.length>100&&ke.confidenceHistory.shift(),ke.averageConfidence=ke.confidenceHistory.reduce((e,t)=>e+t,0)/ke.confidenceHistory.length}return i?{success:!0,node:this.buildCommandNode(n),confidence:n.confidence,tokensConsumed:n.tokensConsumed}:{success:!1,confidence:n.confidence,tokensConsumed:n.tokensConsumed,errors:n.errors}}catch(e){return{success:!1,confidence:0,errors:[e instanceof Error?e.message:e+""]}}var r}buildCommandNode(e){const{command:t}=e;if(!t)throw Error("Cannot build command node without command data");if("repeat"===t.name)return this.buildRepeatCommandNode(t);if("for"===t.name)return this.buildRepeatCommandNode(t);if("set"===t.name)return this.buildSetCommandNode(t);if("if"===t.name||"unless"===t.name)return this.buildIfCommandNode(t);const r=[],n={};for(const[e,s]of t.roles){const i=this.semanticValueToExpression(s);switch(e){case"patient":case"event":r.push(i);break;case"destination":"put"===t.name?n.into=i:"add"===t.name||"append"===t.name||"prepend"===t.name?n.to=i:n.on=i;break;case"source":"fetch"===t.name?r.push(i):n.from=i;break;case"quantity":n.by=i;break;case"duration":n.over=i;break;case"responseType":n.as=i;break;case"method":n.method=i;break;case"style":n.with=i;break;case"condition":n.when=i;break;default:n[e]=i}}return{type:"command",name:t.name,args:r,modifiers:Object.keys(n).length>0?n:void 0,isBlocking:!1,start:0,end:0,line:1,column:0}}buildRepeatCommandNode(e){const t=[],r={},n=e.roles.get("loopType");n&&t.push({type:"identifier",name:n.value+"",start:0,end:0,line:1,column:0});const s=e.roles.get("patient");"for"==(n?n.value+"":"")&&s&&t.push({type:"identifier",name:"expression"===s.type&&s.raw||s.value+"",start:0,end:0,line:1,column:0});const i=e.roles.get("event");i&&t.push({type:"string",value:i.value+"",start:0,end:0,line:1,column:0});const a=e.roles.get("source");a&&t.push(this.semanticValueToExpression(a));const o=e.roles.get("quantity");o&&t.push(this.semanticValueToExpression(o));const l=e.roles.get("condition");return l&&(r.condition=this.semanticValueToExpression(l)),{type:"command",name:"repeat",args:t,modifiers:Object.keys(r).length>0?r:void 0,isBlocking:!1,start:0,end:0,line:1,column:0}}buildSetCommandNode(e){const t=[],r=e.roles.get("destination");if(r)if("property-path"===r.type){const e=r;t.push({type:"possessiveExpression",object:this.semanticValueToExpression(e.object),property:this.createPropertyNode(e.property),start:0,end:0,line:1,column:0})}else t.push(this.semanticValueToExpression(r));t.push({type:"identifier",name:"to",start:0,end:0,line:1,column:0});const n=e.roles.get("patient");return n&&t.push(this.semanticValueToExpression(n)),{type:"command",name:"set",args:t,isBlocking:!1,start:0,end:0,line:1,column:0}}createPropertyNode(e){return e.startsWith("*")?{type:"cssProperty",name:e.substring(1),start:0,end:0,line:1,column:0}:{type:"identifier",name:e,start:0,end:0,line:1,column:0}}buildIfCommandNode(e){const t=[],r=e.roles.get("condition");return r&&t.push(this.semanticValueToExpression(r)),{type:"command",name:e.name,args:t,isBlocking:!1,start:0,end:0,line:1,column:0}}semanticValueToExpression(e){switch(e.type){case"selector":return{type:"selector",value:e.value,start:0,end:0,line:1,column:0};case"reference":return{type:"identifier",name:e.value,start:0,end:0,line:1,column:0};case"literal":return"string"==typeof e.value&&e.value.includes("${")&&e.value.includes("}")?{type:"templateLiteral",value:e.value,start:0,end:0,line:1,column:0}:{type:"literal",value:e.value,raw:e.raw??e.value,start:0,end:0,line:1,column:0};case"property-path":{const t=e;return{type:"memberExpression",object:this.semanticValueToExpression(t.object),property:{type:"identifier",name:t.property,start:0,end:0,line:1,column:0},computed:!1,start:0,end:0,line:1,column:0}}default:return this.parseExpressionString(e.raw||"")}}parseExpressionString(e){let t=0;const r=()=>{for(;e.length>t&&/\s/.test(e[t]);)t++},n=()=>{r();const n=t;for(;e.length>t&&/[a-zA-Z0-9_$]/.test(e[t]);)t++;return e.slice(n,t)},s=()=>{const n=[];if(t++,r(),")"!==e[t])for(n.push(i()),r();","===e[t];)t++,r(),n.push(i()),r();return")"===e[t]&&t++,n},i=()=>{r();const i=n();if(!i)return{type:"identifier",name:e.trim(),start:0,end:0,line:1,column:0};let a={type:"identifier",name:i,start:0,end:0,line:1,column:0};for(;e.length>t;){r();const i=e[t];if("."===i){t++;const e=n();e&&(a={type:"memberExpression",object:a,property:{type:"identifier",name:e,start:0,end:0,line:1,column:0},computed:!1,start:0,end:0,line:1,column:0})}else{if("("!==i)break;a={type:"callExpression",callee:a,arguments:s(),start:0,end:0,line:1,column:0}}}return a};return i()}getLanguage(){return this.language}getConfidenceThreshold(){return this.confidenceThreshold}}function xe(e){return e.kind===M.IDENTIFIER&&k.has(e.value.toLowerCase())}function Ce(e){return e.kind===M.IDENTIFIER&&q.has(e.value.toLowerCase())}function Ae(e){return e.kind===M.IDENTIFIER&&_.has(e.value.toLowerCase())}function Se(e){return e.kind===M.IDENTIFIER&&I.has(e.value.toLowerCase())}function Te(e){return j.has(e.value.toLowerCase())}function Oe(e){return e.kind===M.IDENTIFIER}function Le(e){return e.kind===M.SELECTOR}function Pe(e){return e.kind===M.SELECTOR&&!e.value.startsWith("<")}function Ne(e){return e.kind===M.STRING||e.kind===M.NUMBER||e.kind===M.TEMPLATE}function Ie(e){return e.kind===M.IDENTIFIER}function Re(e){return e.kind===M.TIME}function je(e){return e.kind===M.SYMBOL}function _e(e){return e.kind===M.COMMENT}function qe(e){if(e.kind!==M.IDENTIFIER)return!1;const t=e.value.toLowerCase();return!(k.has(t)||q.has(t)||_.has(t)||I.has(t))}function Me(e){return e.kind===M.STRING}function $e(e){return e.kind===M.NUMBER}function Ve(e){if(e.kind===M.IDENTIFIER){const t=e.value;return"true"===t||"false"===t||"null"===t||"undefined"===t}return!1}function De(e){return e.kind===M.TEMPLATE}function Be(e){return e.kind===M.SELECTOR&&e.value.startsWith("<")}function Fe(e){return e.kind===M.SELECTOR&&e.value.startsWith("#")}function ze(e){return e.kind===M.SELECTOR&&e.value.startsWith(".")}function He(e){return e.kind===M.SELECTOR&&!e.value.startsWith("#")&&!e.value.startsWith(".")}function Ue(e){if(e.kind!==M.OPERATOR)return!1;const t=e.value.toLowerCase();return!R.has(t)&&!j.has(t)}function We(e){const t=e.value.toLowerCase();return"then"===t||"and"===t||"else"===t||"end"===t||"on"===t}function Je(e,t,r){return{type:"literal",value:e,raw:t,start:r.start,end:r.end,line:r.line,column:r.column}}function Ke(e,t){return{type:"identifier",name:e,start:t.start,end:t.end,line:t.line,column:t.column}}function Ye(e,t,r,n){return{type:"binaryExpression",operator:e,left:t,right:r,start:n.start,end:n.end,line:n.line,column:n.column}}function Ge(e,t){return{type:"block",commands:e,start:t.start,end:t.end,line:t.line,column:t.column}}function Xe(e,t){return{type:"string",value:e,start:t.start,end:t.end,line:t.line,column:t.column}}function Ze(e,t){return{type:"objectLiteral",properties:e,start:t.start,end:t.end,line:t.line,column:t.column}}function Qe(e,t){return{type:"arrayLiteral",elements:e,start:t.start,end:t.end,line:t.line,column:t.column}}Ee.SKIP_SEMANTIC_COMMANDS=new Set(["swap","morph","js","tell"]);const et=[{command:"append",keywords:["to"],syntax:"append <value> [to <target>]"},{command:"make",keywords:["a","an"],syntax:"make (a|an) <type>"},{command:"send",keywords:["to"],syntax:"send <event> to <target>"},{command:"throw",keywords:[],syntax:"throw <error>"}];function tt(e,t){return!!e&&t.some(t=>e.value===t||e.value.toLowerCase()===t)}const rt=[e,n,t,r];function nt(e,t=[]){if(e.isAtEnd())return!0;for(const t of rt)if(e.check(t))return!0;for(const r of t)if(e.check(r))return!0;return!!e.checkIsCommand()}function st(e,t=[]){if(!nt(e,t))return e.parseExpression()}function it(e,t,r){return!!e.check(t)&&(e.advance(),r.push(e.createIdentifier(t)),!0)}function at(e,t,r){for(const n of t)if(e.check(n))return e.advance(),r.push(e.createIdentifier(n)),n;return null}function ot(e,t){return!!e.check(t)&&(e.advance(),!0)}class lt{constructor(e){this.args=[],this.isBlocking=!1,this.name=e}static from(e){const t=new lt(e.value);return t.startPos={start:e.start??0,end:e.end??0,line:e.line??1,column:e.column??1},t}static fromIdentifier(e){const t=new lt(e.name);return void 0!==e.start&&(t.startPos={start:e.start,end:e.end??0,line:e.line??1,column:e.column??1}),t}static named(e){return new lt(e)}withArgs(...e){return this.args.push(...e),this}withBody(e){return this.body=e,this}withImplicitTarget(e){return this.implicitTarget=e,this}withModifier(e,t){return this.modifiers||(this.modifiers={}),this.modifiers[e]=t,this}withModifiers(e){return this.modifiers={...this.modifiers,...e},this}withName(e){return this.name=e,this}withOriginalCommand(e){return this.originalCmd=e,this}blocking(e=!0){return this.isBlocking=e,this}startingAt(e){return this.startPos={start:e.start??0,end:e.end??0,line:e.line??1,column:e.column??1},this}endingAt(e){return this.endPos={start:e.start??this.startPos?.start??0,end:e.end,line:e.line??this.startPos?.line??1,column:e.column??this.startPos?.column??1},this}build(){const e={type:"command",name:this.name,args:this.args,isBlocking:this.isBlocking,start:this.startPos?.start??0,end:this.endPos?.end??this.startPos?.end??0,line:this.startPos?.line??1,column:this.startPos?.column??1};return this.body&&(e.body=this.body),this.implicitTarget&&(e.implicitTarget=this.implicitTarget),this.modifiers&&(e.modifiers=this.modifiers),this.originalCmd&&(e.originalCommand=this.originalCmd),e}clone(){const e=new lt(this.name);return e.args=[...this.args],e.body=this.body?[...this.body]:void 0,e.implicitTarget=this.implicitTarget,e.isBlocking=this.isBlocking,e.modifiers=this.modifiers?{...this.modifiers}:void 0,e.originalCmd=this.originalCmd,e.startPos=this.startPos?{...this.startPos}:void 0,e.endPos=this.endPos?{...this.endPos}:void 0,e}}function ct(e,t){const r=[];let n="";const s=e.peek().start||0,i=e.peek().line||1,a=e.peek().column||1;if(e.checkIdentifierLike()){for(n=e.advance().value;e.check(":")&&!e.isAtEnd();)e.advance(),n+=":",e.checkIdentifierLike()&&(n+=e.advance().value);if(e.check("(")){e.advance();const t=[];for(;!e.isAtEnd()&&!e.check(")");){const r=e.savePosition();let n;if(e.checkIdentifierLike()){const t=e.peek().value;e.advance(),e.check(":")?(e.advance(),n=t):e.restorePosition(r)}const s=e.parseExpression();if(t.push(void 0!==n?{type:"objectLiteral",properties:[{key:{type:"identifier",name:n},value:s}],start:s.start,end:s.end,line:s.line,column:s.column}:s),e.check(","))e.advance();else if(!e.check(")"))break}e.check(")")&&e.advance(),r.push({type:"functionCall",name:n,args:t,start:s,end:e.getPosition().end,line:i,column:a})}else r.push({type:"string",value:n,start:s,end:e.getPosition().end,line:i,column:a})}for(;!nt(e);)r.push(e.parsePrimary());let o=-1,l="on";for(let e=0;r.length>e;e++){const t=r[e],n=t.name||t.value;if(!("identifier"!==t.type&&"literal"!==t.type&&"keyword"!==t.type||"on"!==n&&"to"!==n)){o=e,l=n;break}}const c=[];if(-1===o)c.push(...r);else{const t=r.slice(0,o),n=r.slice(o+1);c.push(...t),c.push(e.createIdentifier(l)),c.push(...n)}return lt.fromIdentifier(t).withArgs(...c).endingAt(e.getPosition()).build()}function ut(e,t){const r=[];if(e.check(b)){const t=e.advance();if(r.push({type:"identifier",name:b,start:t.start,end:t.end,line:t.line,column:t.column}),e.check(y)){const t=e.advance();r.push({type:"identifier",name:y,start:t.start,end:t.end,line:t.line,column:t.column})}}return lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function dt(n,s){const i=[];let a=!1;const o=n.savePosition();for(let t=0;500>t&&!n.isAtEnd();t++){const t=n.peek();if(t.value===e){a=!0;break}if(t.value===r||t.value===g||"def"===t.value||t.value===f)break;n.advance()}n.restorePosition(o);let l=!1;if(!a){const e=n.savePosition(),i=s.line,a=100;for(;!n.isAtEnd()&&a>n.current-e;){const e=n.peek(),s=e.value?.toLowerCase();if(s===g||"def"===s||s===f)break;if(s===t||s===r){e.line===i&&(l=!0);break}if((n.checkIsCommand()||n.isCommand(s))&&void 0!==e.line&&e.line!==i){l=!0;break}n.advance()}n.restorePosition(e)}const c=a||l;let u;if(c)u=n.parseExpression();else{const t=[],r=20;let i=0;for(;!n.isAtEnd()&&!n.checkIsCommand()&&!n.isCommand(n.peek().value)&&!n.check(e)&&r>i;){const e=n.savePosition();t.push(n.parseLogicalAnd()),n.savePosition()===e&&n.advance(),i++}if(0===t.length)throw Error("Expected condition after if/unless");u=1===t.length?t[0]:{type:"expression",tokens:t,start:t[0].start,end:t[t.length-1].end,line:s.line,column:s.column}}if(i.push(u),c){a&&n.advance();const e=[];for(;!n.isAtEnd()&&!n.check(t)&&!n.check(r)&&(n.checkIsCommand()||n.isCommand(n.peek().value));){n.advance();const t=n.parseCommand();t&&e.push(t)}if(0===e.length&&n.isAtEnd())throw Error("Expected command after 'then' in if statement - incomplete conditional");i.push(Ge(e,{start:s.start,end:n.getPosition().end,line:s.line,column:s.column}));let o=!1;if(n.check(t))if(n.advance(),n.check("if")){const e=n.peek();n.advance();const t=dt(n,e);i.push(Ge([t],{start:e.start,end:n.getPosition().end,line:e.line,column:e.column})),o=!0}else{const e=[];for(;!n.isAtEnd()&&!n.check(r)&&(n.checkIsCommand()||n.isCommand(n.peek().value));){n.advance();const t=n.parseCommand();t&&e.push(t)}i.push(Ge(e,{start:s.start,end:n.getPosition().end,line:s.line,column:s.column}))}o||n.consume(r,"Expected 'end' after if block")}else{if(!n.checkIsCommand()&&!n.isCommand(n.peek().value))throw Error("Expected command after if condition in single-line form");{n.advance();const e=n.parseCommand();i.push(Ge([e],{start:s.start,end:n.getPosition().end,line:s.line,column:s.column}))}}return lt.from(s).withArgs(...i).endingAt(n.getPosition()).build()}function mt(e,t){const r=[],n={};if(e.checkAnySelector()||e.checkContextVar()||e.match("<")){const t=e.parsePrimary();if(r.push(t),e.match("*")){if(e.checkIdentifierLike()){const t=e.advance();r.push({type:"identifier",name:"*"+t.value,start:t.start-1,end:t.end,line:t.line,column:t.column})}}else if(e.checkIdentifierLike()){const t=e.parsePrimary();r.push(t)}}else if(e.checkIdentifierLike()){const t=e.parsePrimary();r.push(t)}if(e.match("and")&&e.match("set")&&e.checkIdentifierLike()){const t=e.advance();n.set={type:"identifier",name:t.value,start:t.start,end:t.end,line:t.line,column:t.column}}const s=lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition());return Object.keys(n).length>0&&s.withModifiers(n),s.build()}function pt(e,t){const r=[],n=st(e,[m]);n&&r.push(n),it(e,m,r);const s=st(e);return s&&r.push(s),lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function ht(e,t){const r=[];if(e.check("between")){e.advance(),r.push(e.createIdentifier("between"));const i=st(e,[n]);i&&r.push(i),it(e,n,r);const a=st(e,[m,f,s]);if(a&&r.push(a),at(e,[m,f],r)){const t=st(e);t&&r.push(t)}return lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}const i=st(e,[m,f]);if(i&&r.push(i),at(e,[m,f],r)){const t=st(e);t&&r.push(t)}return lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function ft(e,t){const n=e.parseExpression();if(!n)return e.addError("Put command requires content expression"),null;const s=e.peek();if(!s||!A.includes(s.value))return e.addError(`Expected operation keyword (${A.join(", ")}) after put expression, got: ${s?.value}`),null;let i=e.advance().value;const a=i.toLowerCase();"at start of"===a||"at the start of"===a?i=x:"at end of"===a||"at the end of"===a?i=C:"at"===i&&(e.check(w)||e.check(b)?(ot(e,b),e.check(w)&&(e.advance(),e.check(h)&&(e.advance(),i=x))):e.check(r)&&(e.advance(),e.check(h)&&(e.advance(),i=C)));const o=e.parseExpression();return o?lt.fromIdentifier(t).withArgs(n,e.createIdentifier(i),o).endingAt(e.getPosition()).build():(e.addError("Put command requires target expression after operation keyword"),null)}const yt=["innerhtml","outerhtml","into","over","delete","morph","morphouter"];function gt(s,i){const a=s.savePosition();let o=null,l=[];try{o=function(e){if(!e.check(":"))return null;if(e.advance(),e.check(":")){e.advance();const t=e.advance();return{type:"identifier",name:t.value,scope:"global",start:t.start-2,end:t.end}}const t=e.advance();return{type:"identifier",name:t.value,scope:"local",start:t.start-1,end:t.end}}(s)??function(e){if(!e.check(v)&&!e.check("local"))return null;const t=e.advance(),r=e.advance();return{type:"identifier",name:r.value,scope:t.value,start:t.start,end:r.end}}(s)??function(e,t){if(!e.check(b))return null;const r=e.savePosition();e.advance();const n=e.peek(),s=e.peekAt(1);if(n&&s&&s.value===h){const r=e.advance();if(e.check(h)){e.advance();const n=e.advance(),s=n.value.startsWith("#");return{type:"propertyOfExpression",property:{type:"identifier",name:r.value,start:r.start,end:r.end},target:{type:s?"idSelector":"cssSelector",value:n.value,start:n.start,end:n.end},start:t,end:e.savePosition()}}return e.restorePosition(t),null}if(n&&s&&s.value===d){const t=e.advance();return{type:"identifier",name:t.value,start:t.start,end:t.end}}return e.restorePosition(r),null}(s,a),o||(o=s.parseExpression())}catch{s.restorePosition(a),o=null}if(!o){const i=function(s){if(s.match(":")){const e=s.advance();return{expression:{type:"identifier",name:e.value,scope:"local",start:e.start,end:e.end},tokens:[]}}const i=[];for(;!(s.isAtEnd()||s.check(d)||s.check(e)||s.check(n)||s.check(t)||s.check(r));)i.push(s.parsePrimary());if(0===i.length)return{expression:null,tokens:[]};if(i.length>=4){const e=(e,t)=>e[t];if(e(i[0],"value")===b&&e(i[2],"value")===h){const t=i[1],r=i[3];return{expression:(a=Ke(e(t,"value")||e(t,"name")||"",{start:t.start??0,end:t.end??0,line:t.line??1,column:t.column??1}),o={type:"idSelector"===r.type?"idSelector":"cssSelector",value:e(r,"value")||e(r,"name")||"",start:r.start??0,end:r.end??0,line:r.line,column:r.column},l={start:i[0].start??0,end:r.end??0,line:i[0].line??1,column:i[0].column??1},{type:"propertyOfExpression",property:a,target:o,start:l.start,end:l.end,line:l.line,column:l.column}),tokens:[]}}}var a,o,l;return 1===i.length?{expression:i[0],tokens:[]}:{expression:null,tokens:i}}(s);o=i.expression,l=i.tokens}if(!s.check(d)){const e=s.isAtEnd()?"end of input":s.peek().value;throw Error("Expected 'to' in set command, found: "+e)}s.advance();const c=s.parseExpression()??s.parsePrimary(),u=[];return o?u.push(o):l.length>0&&u.push(...l),u.push(s.createIdentifier(d)),c&&u.push(c),lt.fromIdentifier(i).withArgs(...u).endingAt(s.getPosition()).build()}function vt(e,t){const r=[];for(;!nt(e,["catch","finally"])&&(e.checkIdentifierLike()||e.checkSelector()||e.checkLiteral()||e.checkTimeExpression()||e.match("<"));)r.push(e.parsePrimary());return lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function bt(e){if(e.isAtEnd())return!0;const t=e.peek().value;return["as","with","{","then","end","else","otherwise",")"].includes(t)||nt(e)}function wt(e){if(e.check("{"))return!1;if(!e.checkIdentifierLike())return!1;const t=e.peekAt(1);return null!==t&&":"===t.value}function kt(e){const t=[],r=e.getPosition();do{if(!e.checkIdentifierLike())break;const r=e.advance(),n={type:"identifier",name:r.value,start:r.start,end:r.end,line:r.line,column:r.column};e.consume(":","Expected ':' after property name in fetch named arguments");const s=e.parsePrimary();s&&t.push({key:n,value:s})}while(e.match(",")&&!e.isAtEnd());const n=e.getPosition();return{type:"objectLiteral",properties:t,start:r.start,end:n.end,line:r.line,column:r.column}}class Et{constructor(e,t,r){this.current=0,this.warnings=[],this.tokens=e,this.keywordResolver=t?.keywords,this.registryIntegration=t?.registryIntegration,t?.semanticAnalyzer&&t?.language&&(this.semanticAdapter=new Ee({analyzer:t.semanticAnalyzer,language:t.language,confidenceThreshold:t.semanticConfidenceThreshold??.5})),this.originalInput=r||e.map(e=>e.value).join(" ")}resolveKeyword(e){return this.keywordResolver?this.keywordResolver.resolve(e)??e:e}addWarning(e){this.warnings.push(e)}parse(){try{if(0===this.tokens.length)return this.addError("Cannot parse empty input"),{success:!1,node:this.createErrorNode(),tokens:this.tokens,error:this.error,warnings:this.warnings};if(this.check("behavior")){const e=[];for(;this.check("behavior");){this.advance();const t=this.parseBehaviorDefinition();if(t&&e.push(t),this.error)break}return this.error?{success:!1,node:1===e.length?e[0]:this.createProgramNode(e),tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:1===e.length?e[0]:this.createProgramNode(e),tokens:this.tokens,warnings:this.warnings}}if(this.check("init")||this.check("on")||this.check("def")||this.checkComment()){const e=[];for(;!this.isAtEnd();)if(this.checkComment())this.advance();else if(this.check("init")){this.advance();const t=this.parseTopLevelInitBlock();t&&e.push(t)}else if(this.check("on")){this.advance();const t=this.parseEventHandler();t&&e.push(t)}else{if(!this.check("def"))break;{this.advance();const t=this.parseDefFeature();t&&e.push(t)}}return this.isAtEnd()?this.error?{success:!1,node:this.createProgramNode(e),tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:this.createProgramNode(e),tokens:this.tokens,warnings:this.warnings}:(this.addError("Unexpected token: "+this.peek().value),{success:!1,node:this.createProgramNode(e),tokens:this.tokens,error:this.error,warnings:this.warnings})}if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value)){const e=this.parseCommandSequence();if(e){if(!this.isAtEnd()&&this.check("on")){ye("✅ PARSER: Found event handlers after command sequence, parsing as program");const t=[e];ye(`✅ PARSER: Starting with ${t.length} statement(s) from command sequence`);let r=0;for(;!this.isAtEnd()&&this.check("on");){ye(`✅ PARSER: Parsing event handler #${r+1}, current token: ${this.peek().value}`),this.advance();const e=this.parseEventHandler();if(ye("✅ PARSER: parseEventHandler returned:",e?`type=${e.type}, event=${e.event}`:"null"),e&&(t.push(e),r++,ye(`✅ PARSER: Added event handler, now have ${t.length} statements total`)),ye(`✅ PARSER: After parsing event handler, current token: ${this.isAtEnd()?"END":this.peek().value}, isAtEnd=${this.isAtEnd()}, check('on')=${this.check("on")}`),!this.isAtEnd()&&!this.check("on")){if(!this.isAtEnd())return ye("⚠️ PARSER: Unexpected token after event handlers: "+this.peek().value),this.addError("Unexpected token after event handlers: "+this.peek().value),{success:!1,node:this.createProgramNode(t),tokens:this.tokens,error:this.error};ye("✅ PARSER: No more event handlers, at end of input");break}}return ye(`✅ PARSER: Finished parsing, creating Program node with ${t.length} statements`),this.error?{success:!1,node:this.createProgramNode(t),tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:this.createProgramNode(t),tokens:this.tokens,warnings:this.warnings}}return this.isAtEnd()?this.error?{success:!1,node:e,tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:e,tokens:this.tokens,warnings:this.warnings}:(this.addError("Unexpected token: "+this.peek().value),{success:!1,node:e||this.createErrorNode(),tokens:this.tokens,error:this.error})}}const e=this.parseExpression();return this.error?{success:!1,node:e||this.createErrorNode(),tokens:this.tokens,error:this.error}:this.isAtEnd()?{success:!0,node:e,tokens:this.tokens,warnings:this.warnings}:(this.addError("Unexpected token: "+this.peek().value),{success:!1,node:e||this.createErrorNode(),tokens:this.tokens,error:this.error,warnings:this.warnings})}catch(e){return this.addError(e instanceof Error?e.message:"Unknown parsing error"),{success:!1,node:this.createErrorNode(),tokens:this.tokens,error:this.error,warnings:this.warnings}}}parseExpression(){return this.parseAssignment()}parseAssignment(){let e=this.parseLogicalOr();if(this.match("=")){if(this.check(">")){if(this.advance(),this.addError('Arrow functions (=>) are not supported in hyperscript. Use "js ... end" blocks for JavaScript callbacks.'),!this.isAtEnd())try{this.parseExpression()}catch{}return this.createErrorNode()}const t=this.previous().value,r=this.parseAssignment();e=this.createBinaryExpression(t,e,r)}return e}parseLogicalOr(){let e=this.parseLogicalAnd();for(;this.match("or");){const t=this.previous().value,r=this.parseLogicalAnd();e=this.createBinaryExpression(t,e,r)}return e}parseLogicalAnd(){let e=this.parseEquality();for(;this.match("and");){const t=this.previous().value,r=this.parseEquality();e=this.createBinaryExpression(t,e,r)}return e}parseEquality(){let e=this.parseComparison();for(;this.matchComparisonOperator()||this.match("is","match","matches","contains","include","includes","in","of","as","really");){const t=this.previous().value;if(Et.POSTFIX_UNARY_OPERATORS.has(t)){e=this.createUnaryExpression(t,e,!1);continue}const r=this.parseComparison();e=this.createBinaryExpression(t,e,r)}return e}parseComparison(){let e=this.parseAddition();for(;this.matchComparisonOperator();){const t=this.previous().value;if(Et.POSTFIX_UNARY_OPERATORS.has(t)){e=this.createUnaryExpression(t,e,!1);continue}const r=this.parseAddition();e=this.createBinaryExpression(t,e,r)}return e}parseAddition(){let e=this.parseMultiplication();for(;this.match("+","-")||this.matchOperator("+")||this.matchOperator("-");){const t=this.previous().value;if(this.check("+")||this.check("-"))return this.addError(`Invalid operator combination: ${t}${this.peek().value}`),e;if(this.isAtEnd())return this.addError(`Expected expression after '${t}' operator`),e;const r=this.parseMultiplication();e=this.createBinaryExpression(t,e,r)}return e}parseMultiplication(){let e=this.parseUnary();for(;this.match("*","/","%","mod");){const t=this.previous().value;if(this.check("*")||this.check("/")||this.check("%")||this.check("+")||this.check("-")){const r=this.peek().value;return this.addError("*"===t&&"*"===r?"Unexpected token: "+r:`Invalid operator combination: ${t}${r}`),e}if(this.isAtEnd())return this.addError(`Expected expression after '${t}' operator`),e;const r=this.parseUnary();e=this.createBinaryExpression(t,e,r)}return e}parseUnary(){if(this.match("not","no","exists","some","-","+")){const e=this.previous().value;if(this.isAtEnd())return this.addError(`Expected expression after '${e}' operator`),this.createErrorNode();const t=this.parseUnary();return this.createUnaryExpression(e,t,!0)}if(this.check("does")&&this.tokens.length>this.current+1&&"not"===this.tokens[this.current+1].value&&this.tokens.length>this.current+2&&"exist"===this.tokens[this.current+2].value){if(this.advance(),this.advance(),this.advance(),this.isAtEnd())return this.addError("Expected expression after 'does not exist' operator"),this.createErrorNode();const e=this.parseUnary();return this.createUnaryExpression("does not exist",e,!0)}return this.parseImplicitBinary()}parseImplicitBinary(){let e=this.parseCall();for(;!(this.isAtEnd()||this.checkBasicOperator()||this.check("then")||this.check("and")||this.check("else")||this.check(")")||this.check("]")||this.check(","));){if("identifier"!==e.type){if("literal"===e.type&&(this.checkNumber()||this.checkIdentifier())){const t=this.peek();return this.addError(`Missing operator between '${e.raw||e.value}' and '${t.value}'`),e}break}if(this.isCommand(e.name))if(this.isCompoundCommand(e.name.toLowerCase())){if(!(this.checkCssSelector()||this.checkIdSelector()||this.checkClassSelector()||this.checkTimeExpression()||this.checkString()||this.checkNumber()||this.checkContextVar()||this.checkIdentifier()||this.checkKeyword()))break;{const t=this.createCommandFromIdentifier(e);t&&(e=t)}}else if("wait"===e.name.toLowerCase()&&this.checkTimeExpression()){const t=this.createCommandFromIdentifier(e);t&&(e=t)}else{if(!this.checkSelector())break;{const t=this.parseCall();e=this.createBinaryExpression(" ",e,t)}}else{if(!this.checkSelector())break;{const t=this.parseCall();e=this.createBinaryExpression(" ",e,t)}}}return e}isCommand(e){return this.keywordResolver?this.keywordResolver.isCommand(e):T(e)}isKeyword(e){return this.keywordResolver?this.keywordResolver.isKeyword(e):L(e)}createCommandFromIdentifier(e){const t=[],r=this.resolveKeyword(e.name.toLowerCase());if(this.isCompoundCommand(r))return this.parseCompoundCommand(e);for(;!(this.isAtEnd()||this.check("then")||this.check("and")||this.check("else")||this.checkIsCommand())&&(this.checkContextVar()||this.checkIdentifier()||this.checkKeyword()||this.checkEvent()||this.checkCssSelector()||this.checkIdSelector()||this.checkClassSelector()||this.checkString()||this.checkNumber()||this.checkTimeExpression()||this.match("<"));)t.push(this.parsePrimary());return{type:"command",name:e.name,args:t,isBlocking:!1,...void 0!==e.start&&{start:e.start},end:this.getPosition().end,...void 0!==e.line&&{line:e.line},...void 0!==e.column&&{column:e.column}}}isCompoundCommand(e){return O(e)}parseCompoundCommand(s){return function(s,i){switch(i.name.toLowerCase()){case"put":return ft(s,i);case"trigger":case"send":return ct(s,i);case"remove":return pt(s,i);case"toggle":return ht(s,i);case"set":return gt(s,i);case"halt":return ut(s,i);case"measure":return mt(s,i);case"js":return function(e,t){const n=[];if(e.match("(")){for(;!e.check(")")&&!e.isAtEnd();)e.checkIdentifierLike()&&n.push(e.advance().value),e.match(",");e.consume(")","Expected ) after js parameters")}const s=e.peek().start;for(;!e.check(r)&&!e.isAtEnd();)e.advance();const i=e.peek().start;e.consume(r,"Expected end after js code body");const a={type:"literal",value:e.getInputSlice(s,i).trim(),start:t.start,end:e.getPosition().end},o={type:"arrayLiteral",elements:n.map(e=>({type:"literal",value:e,start:t.start,end:t.end})),start:t.start,end:e.getPosition().end};return lt.fromIdentifier(t).withArgs(a,o).endingAt(e.getPosition()).build()}(s,i);case"tell":return function(s,i){const a=s.parseExpression();if(!a)throw Error("tell command requires a target expression");const o=[];for(;!s.isAtEnd();){if(s.checkIsCommand()){try{s.advance();const e=s.parseCommand();if(!e)break;o.push(e)}catch{break}if(s.match(n))continue;if(s.check(e)||s.check(t)||s.check(r))break;if(s.checkIsCommand())continue;break}break}if(0===o.length)throw Error("tell command requires at least one command after the target");return lt.fromIdentifier(i).withArgs(a,...o).endingAt(s.getPosition()).build()}(s,i);case"swap":case"morph":return function(e,t){console.log("[PARSER DEBUG] parseSwapCommand called");const r=[];let n=null;if(!e.isAtEnd()){const t=e.peek();if(t&&t.value){const s=t.value.toLowerCase();yt.includes(s)&&(n=s,e.advance(),r.push(e.createIdentifier(n)))}}if("delete"===n){const n=e.parseExpression();return n&&r.push(n),lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}!e.isAtEnd()&&e.check(h)&&(e.advance(),r.push(e.createIdentifier("of")));const s=e.parseExpression();if(s&&r.push(s),!e.isAtEnd()&&e.check(p)){e.advance(),r.push(e.createIdentifier("with"));const t=e.parseExpression();t&&r.push(t)}return lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}(s,i);default:return vt(s,i)}}(this.getContext(),s)}parsePutCommand(e){return ft(this.getContext(),e)}parseSetCommand(e){return gt(this.getContext(),e)}parseHaltCommand(e){return ut(this.getContext(),e)}parseMeasureCommand(e){return mt(this.getContext(),e)}parseTriggerCommand(e){return ct(this.getContext(),e)}parseCommandListUntilEnd(){const e=[];for(ye("🔄 parseCommandListUntilEnd: Starting to parse command list");!this.isAtEnd()&&!this.check("end");){ye("📍 Loop iteration, current token:",this.peek().value,"kind:",this.peek().kind);let t=!1;const r=this.checkIsCommand(),n=!r&&this.checkIdentifier()&&this.isCommand(this.peek().value);if(r||n){ye(r?"✅ Found COMMAND token:":"✅ Found IDENTIFIER that is a command:",this.peek().value),this.advance();const n=this.error;try{const r=this.parseCommand();this.error&&this.error!==n&&(ye("⚠️ parseCommandListUntilEnd: Command parsing added error, restoring error state. Error was:",this.error.message),this.error=n),r&&(ye("✅ Parsed command:",r.name),e.push(r),t=!0)}catch(e){ye("⚠️ parseCommandListUntilEnd: Command parsing threw exception, restoring error state:",e instanceof Error?e.message:e+""),this.error=n}}else this.checkIdentifier()&&ye("❌ IDENTIFIER is not a command:",this.peek().value);if(!t){ye("❌ No command parsed, breaking. Current token:",this.peek().value);break}for(ye("📍 After parsing command, current token:",this.peek().value);!(this.isAtEnd()||this.check("end")||this.checkIsCommand()||this.isCommand(this.peek().value)||this.check("then")||this.check("and")||this.check(","));)ye("⚠️ Skipping unexpected token:",this.peek().value),this.advance();if(this.match("then","and",","))ye("✅ Found separator, continuing");else{if(!this.checkIsCommand()&&!this.isCommand(this.peek().value)){ye("📍 No separator and no command, breaking. Current token:",this.peek().value);break}ye("✅ Next token is a command, continuing without separator")}}if(ye('🔍 After loop, checking for "end". Current token:',this.peek().value),!this.check("end"))throw ye('❌ ERROR: Expected "end" but got:',this.peek().value,"at position:",this.peek().start),Error('Expected "end" to close repeat block');return ye('✅ Found "end", consuming it'),this.advance(),ye("✅ parseCommandListUntilEnd: Successfully parsed",e.length,"commands"),e}parseRepeatCommand(e){return function(e,t){const r=[];let n="forever",d=null,h=null,f=null,g=null,v=null,w=null;if(e.check(s)){e.advance(),n=s;const t=e.peek();Oe(t)&&(v=t.value,e.advance()),e.check(u)&&(e.advance(),g=e.parseExpression())}else if(e.check(u))e.advance(),n=s,v="it",g=e.parseExpression();else if(e.check(i))e.advance(),n=i,f=e.parseExpression();else if(e.check(a))if(e.advance(),n=a,e.check(y)){e.advance(),n="until-event";const t=e.peek();if(ye("📍 Parsing event name, current token:",{value:t.value,kind:t.kind}),!Oe(t)&&!Ae(t))throw Error('Expected event name after "event"');if(d=t.value,e.advance(),ye("✅ Got event name:",d,"Next token:",e.peek().value),ye('🔍 Checking for "from", current token:',e.peek().value),e.check(m)){ye('✅ Found "from", advancing...'),e.advance(),ye('📍 After consuming "from", current token:',e.peek().value),ot(e,b)&&ye('✅ Found "the", advancing...');const t=e.peek();ye("🔍 Before parsePrimary for event target:",{value:t.value,kind:t.kind,position:t.start}),h=e.parsePrimary(),ye("✅ After parsePrimary, eventTarget:",h)}else ye('❌ No "from" found, skipping target parsing')}else f=e.parseExpression();else e.check(o)?(e.advance(),n=o):(w=e.parseExpression(),e.check(l)&&(e.advance(),n=l));let k=null;if(e.check(p)){const t=e.peekAt(1);t&&t.value.toLowerCase()===c&&(e.advance(),e.advance(),k=c)}else if(e.check(c)){e.advance();const t=e.peek();Oe(t)?(k=t.value,e.advance()):k=c}const E=e.parseCommandListUntilEnd();r.push({type:"identifier",name:n,start:t.start,end:t.end,line:t.line,column:t.column});const x={start:t.start,end:t.end,line:t.line,column:t.column};return v&&r.push(Xe(v,x)),g&&r.push(g),f&&r.push(f),w&&r.push(w),d&&r.push(Xe(d,x)),h&&r.push(h),k&&r.push(Xe(k,x)),r.push(Ge(E,{...x,end:x.end||0})),lt.from(t).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseForCommand(e){return function(e,t){const r=[];let n=null,s=null;e.check("each")&&e.advance();const i=e.peek();if(!Oe(i))throw Error('Expected variable name after "for"');if(n=i.value,e.advance(),!e.check(u))throw Error('Expected "in" after variable name in for loop');if(e.advance(),s=e.parseExpression(),!s)throw Error('Expected collection expression after "in"');let a=null;if(e.check(p)){const t=e.peekAt(1);t&&t.value.toLowerCase()===c&&(e.advance(),e.advance(),a=c)}else if(e.check(c)){e.advance();const t=e.peek();Oe(t)?(a=t.value,e.advance()):a=c}const o=e.parseCommandListUntilEnd();r.push({type:"identifier",name:"for",start:t.start,end:t.end,line:t.line,column:t.column});const l={start:t.start,end:t.end,line:t.line,column:t.column};return r.push(Xe(n,l)),r.push(s),a&&r.push(Xe(a,l)),r.push(Ge(o,{...l,end:l.end||0})),lt.from({...t,value:"repeat"}).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseWaitCommand(e){return function(e,t){const r=[];if(e.checkTimeExpression()||e.checkLiteral()){const n=e.parsePrimary();return r.push(n),lt.from(t).withArgs(...r).blocking().endingAt(e.getPosition()).build()}if(e.check("for")){e.advance();const n=[];do{const t=e.peek();if(!Oe(t))throw Error('Expected event name after "for"');const r=t.value;e.advance();const s=[];if(e.check("(")){for(e.advance();!e.isAtEnd()&&!e.check(")");){const t=e.peek();if(!Oe(t))break;s.push(t.value),e.advance(),e.check(",")&&e.advance()}if(!e.check(")"))throw Error('Expected ")" after event parameters');e.advance()}if(n.push({name:r,params:s}),!e.check("or"))break;e.advance()}while(!e.isAtEnd());let s=null;e.check(m)&&(e.advance(),ot(e,b),s=e.parsePrimary());const i={start:t.start,end:e.getPosition().end,line:t.line,column:t.column};r.push(Qe(n.map(e=>Ze([{key:Ke("name",i),value:Je(e.name,`"${e.name}"`,i)},{key:Ke("args",i),value:Qe(e.params.map(e=>Je(e,`"${e}"`,i)),i)}],i)),i)),s&&r.push(s)}return lt.from(t).withArgs(...r).blocking().endingAt(e.getPosition()).build()}(this.getContext(),e)}parseInstallCommand(e){return function(e,t){const r=[];if(!e.checkIdentifierLike())throw Error('Expected behavior name after "install"');const n=e.advance().value,s=e.previous();if(r.push(Ke(n,{start:s.start,end:s.end,line:s.line,column:s.column})),e.check("(")){e.advance();const n=[];for(;!e.isAtEnd()&&!e.check(")");){const t=e.savePosition();let r;if(e.checkIdentifierLike()){const n=e.peek().value;e.advance(),e.check(":")?(e.advance(),r=n):e.restorePosition(t)}const s=e.parseExpression();if(n.push(void 0!==r?{name:r,value:s}:{value:s}),e.check(","))e.advance();else if(!e.check(")"))break}if(!e.check(")"))throw Error('Expected ")" after behavior parameters');if(e.advance(),n.length>0){const s={start:t.start,end:e.getPosition().end,line:t.line,column:t.column};r.push(Ze(n.map(e=>({key:e.name?Ke(e.name,s):Je("_positional","_positional",s),value:e.value})),s))}}return lt.from(t).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseTransitionCommand(e){return function(e,t){const r=[],n={};let s=null;const i=e.peek();if(Oe(i)||"*"===i.value){let t="";e.check("*")&&(t="*",e.advance());const r=function(e){if(!e.checkIdentifierLike())return"";let t=e.advance().value;for(;e.check("-")&&!e.isAtEnd();)t+="-",e.advance(),e.checkIdentifierLike()&&(t+=e.advance().value);return t}(e);r&&(t+=r,s={type:"string",value:t,start:i.start||0,end:e.getPosition().end,line:i.line,column:i.column})}if(!s)throw Error("Transition command requires a CSS property");if(r.push(s),!e.check(d))throw Error('Expected "to" keyword after property in transition command');e.advance();const a=e.parsePrimary();if(n.to=a,e.check("over")){e.advance();const t=e.parsePrimary();n.over=t}if(e.check(p)){e.advance();const t=e.parsePrimary();n.with=t}return lt.from(t).withArgs(...r).withModifiers(n).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseAddCommand(e){return function(e,t){const r=[];if(e.match("{"))r.push(e.parseCSSObjectLiteral());else{const t=st(e,[d]);t&&r.push(t)}if(e.check(d)){e.advance();const t=st(e);t&&r.push(t)}return lt.from(t).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseIfCommand(e){return dt(this.getContext(),e)}parseRemoveCommand(e){return pt(this.getContext(),e)}parseToggleCommand(e){return ht(this.getContext(),e)}parseRegularCommand(e){return vt(this.getContext(),e)}parseCall(){let e=this.parsePrimary();for(;;)if(this.match("("))e=this.finishCall(e);else if(this.match(".")){const t=this.consumeIdentifier("Expected property name after '.' - malformed member access");e=this.createMemberExpression(e,this.createIdentifier(t.value),!1)}else if(this.match("[")){const t=this.parseExpression();this.consume("]","Expected ']' after array index"),e=this.createMemberExpression(e,t,!0)}else{if(!this.check("'s"))break;{let t;this.advance(),this.check("*")?(this.advance(),t="*"+this.consumeIdentifier("Expected property name after * in CSS property syntax").value):t=je(this.peek())&&this.peek().value.startsWith("@")?this.advance().value:this.consumeIdentifier("Expected property name after possessive").value,e=this.createPossessiveExpression(e,this.createIdentifier(t))}}return e}parsePrimary(){if(this.check("*")){const e=this.current;if(this.advance(),!this.isAtEnd()&&Oe(this.peek())){const e=this.advance().value;return this.createSelector("*"+e)}this.current=e}if(this.check("*")||this.check("/")||this.check("%")||this.check("mod")){const e=this.peek();return this.addError(`Binary operator '${e.value}' requires a left operand`),this.createErrorNode()}if(this.matchNumber()){const e=parseFloat(this.previous().value);return this.createLiteral(e,this.previous().value)}if(this.matchString()){const e=this.previous().value;if(2>e.length||e.startsWith('"')&&!e.endsWith('"')||e.startsWith("'")&&!e.endsWith("'"))return this.addError("Unclosed string literal - string not properly closed"),this.createErrorNode();const t=e.slice(1,-1),r=this.processEscapeSequences(t);return this.createLiteral(r,e)}if(this.matchTemplateLiteral()){const e=this.previous();return{type:"templateLiteral",value:e.value,start:e.start||0,end:e.end||0,line:e.line,column:e.column}}if(this.matchBoolean()){const e=this.previous().value;let t;switch(e){case"true":t=!0;break;case"false":t=!1;break;case"null":t=null;break;case"undefined":t=void 0;break;default:t="true"===e}return this.createLiteral(t,e)}if(this.matchTimeExpression()){const e=this.previous().value;return this.createLiteral(e,e)}if(this.matchQueryReference()){const e=this.previous().value.slice(1,-2).trim();return this.createSelector(e)}if(this.matchSelector())return this.createSelector(this.previous().value);if(this.match("<"))return this.parseHyperscriptSelector();if(this.match("(")){if(this.isAtEnd())return this.addError("Expected expression inside parentheses"),this.createErrorNode();const e=this.parseExpression();return this.consume(")","Expected closing parenthesis ')' after expression - unclosed parentheses"),e}if(this.match("{"))return this.parseObjectLiteral();if(this.match("["))return this.parseAttributeOrArrayLiteral();if(this.check(":")){if(this.advance(),this.check(":")){this.advance();const e=this.advance();return{type:"identifier",name:e.value,scope:"global",start:e.start-2,end:e.end,line:e.line,column:e.column}}{const e=this.advance();return{type:"identifier",name:e.value,scope:"local",start:e.start-1,end:e.end,line:e.line,column:e.column}}}if(this.matchBasicOperator()){const e=this.previous();return this.createIdentifier(e.value)}const e=this.peek();if((!e||"end"!==e.value&&"else"!==e.value&&"then"!==e.value)&&(this.matchPredicate(qe)||this.matchPredicate(Ce)||this.matchPredicate(Se)||this.matchPredicate(xe)||this.matchPredicate(Ae))){const e=this.previous();if("new"===e.value)return this.parseConstructorCall();if("on"===e.value)return this.parseEventHandler();if("if"===e.value)return this.parseConditional();if("closest"===e.value||"first"===e.value||"last"===e.value||"previous"===e.value||"next"===e.value){if(this.check("(")||this.checkCssSelector()||this.checkClassSelector()||this.checkIdSelector()||this.check("<")||this.checkQueryReference())return this.parseNavigationFunction(e.value);if(this.check(".")){const t=this.current;if(this.advance(),this.checkIdentifier()){const t=this.advance().value,r=this.createSelector("."+t);return this.createCallExpression(this.createIdentifier(e.value),[r])}this.current=t}if(this.check("#")){const t=this.current;if(this.advance(),this.checkIdentifier()){const t=this.advance().value,r=this.createSelector("#"+t);return this.createCallExpression(this.createIdentifier(e.value),[r])}this.current=t}return this.createIdentifier(e.value)}return"my"!==e.value||this.check(".")?"its"!==e.value||this.check(".")?"your"!==e.value||this.check(".")?"the"===e.value?this.parseTheXofY():this.createIdentifier(e.value):this.parseContextPropertyAccess("you"):this.parseContextPropertyAccess("it"):this.parseContextPropertyAccess("me")}if(this.match("$"))return this.parseDollarExpression();if(je(this.peek())&&this.peek().value.startsWith("@")){const e=this.advance();return{type:"attributeAccess",attributeName:e.value.substring(1),start:e.start,end:e.end,line:e.line,column:e.column}}const t=this.peek();return this.addError(`Unexpected token: ${t.value} at line ${t.line}, column ${t.column}`),this.advance(),this.createErrorNode()}parseDollarExpression(){if(this.checkNumber()){const e=this.advance().value;return this.createLiteral(e,"$"+e)}if(this.checkIdentifier()){const e=this.advance();let t=this.createIdentifier(e.value);for(;this.match(".");){if(!this.checkIdentifier())return this.addError("Expected property name after '.' in dollar expression"),this.createErrorNode();{const e=this.advance();t=this.createMemberExpression(t,this.createIdentifier(e.value),!1)}}return{type:"dollarExpression",expression:t,raw:`$${e.value}${this.previous().value||""}`,line:e.line,column:e.column-1}}return this.addError("Expected identifier or number after '$'"),this.createErrorNode()}parseHyperscriptSelector(){let e="";for(;!this.check("/")&&!this.isAtEnd();)e+=this.advance().value;return this.consume("/","Expected '/' in hyperscript selector"),this.consume(">","Expected '>' after '/' in hyperscript selector"),this.createSelector(e)}parseObjectLiteral(){const e=[],t=this.getPosition();if(this.check("}"))return this.advance(),{type:"objectLiteral",properties:e,start:t.start,end:this.getPosition().end,line:t.line,column:t.column};do{let t;if(this.matchPredicate(qe))t=this.createIdentifier(this.previous().value);else{if(!this.matchString())return this.addError("Expected property name in object literal"),this.createErrorNode();{const e=this.previous().value,r=e.slice(1,-1);t=this.createLiteral(r,e)}}this.consume(":","Expected ':' after property name in object literal");const r=this.parseExpression();if(e.push({key:t,value:r}),!this.match(","))break;if(this.check("}"))break}while(!this.isAtEnd());return this.consume("}","Expected '}' after object literal properties"),{type:"objectLiteral",properties:e,start:t.start,end:this.getPosition().end,line:t.line,column:t.column}}parseCSSObjectLiteral(){const e=this.getPosition(),t=[];do{if(this.check("}"))break;let r;if(this.matchPredicate(qe))r=this.createIdentifier(this.previous().value);else{if(!this.matchString())return this.addError("Expected CSS property name"),this.createErrorNode();{const e=this.previous().value,t=e.slice(1,-1);r=this.createLiteral(t,e)}}if(!this.consume(":","Expected ':' after CSS property name"))return this.createErrorNode();const n=[];let s=!1,i=0;for(;!this.isAtEnd()&&(0!==i||!this.check(";")&&!this.check("}"));){const e=this.advance();n.push(e.value),"$"===e.value&&this.check("{")&&(s=!0),"{"===e.value&&i++,"}"===e.value&&i--}const a=n.join(""),o=s?{type:"templateLiteral",value:a,start:e.start,end:this.getPosition().end,line:e.line,column:e.column}:this.createLiteral(a,a);if(t.push({key:r,value:o}),this.check(";")&&this.advance(),this.check("}"))break}while(!this.isAtEnd());return this.consume("}","Expected '}' after CSS object literal properties"),{type:"objectLiteral",properties:t,start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseConstructorCall(){const e=this.previous();if(!this.checkIdentifier())return this.addError('Expected constructor name after "new"'),this.createErrorNode();const t=this.advance(),r=t.value;if(!this.check("("))return this.addError('Expected "(" after constructor name'),this.createErrorNode();if(this.advance(),this.check(")"))this.advance();else{let e=1;for(;e>0&&!this.isAtEnd();){const t=this.advance();"("===t.value&&e++,")"===t.value&&e--}}return{type:"callExpression",callee:{type:"identifier",name:r,start:t.start,end:t.end,line:t.line,column:t.column},arguments:[],isConstructor:!0,start:e.start,end:this.previous().end,line:e.line,column:e.column}}parseTopLevelInitBlock(){const e=this.getPosition(),t=this.parseCommandBlock(["end"]);return this.consume("end","Expected 'end' after init block"),{type:"initBlock",commands:t,start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseDefFeature(){const e=this.getPosition();let t="";if(!this.checkIdentifier())return this.addError("Expected function name after 'def'"),{type:"def",name:"",params:[],body:[],start:e.start,end:this.getPosition().end,line:e.line,column:e.column};for(t=this.advance().value;this.check(".");)this.advance(),this.checkIdentifier()&&(t+="."+this.advance().value);const r=[];if(this.check("(")){if(this.advance(),!this.check(")"))for(this.checkIdentifier()&&r.push(this.advance().value);this.check(",");)this.advance(),this.checkIdentifier()&&r.push(this.advance().value);this.consume(")","Expected ')' after parameter list")}const n=this.parseCommandBlock(["end","catch","finally"]);let s,i,a;return this.check("catch")&&(this.advance(),this.checkIdentifier()&&(s=this.advance().value),i=this.parseCommandBlock(["end","finally"])),this.check("finally")&&(this.advance(),a=this.parseCommandBlock(["end"])),this.consume("end","Expected 'end' after function definition"),{type:"def",name:t,params:r,body:n,...void 0!==s&&{errorSymbol:s},...void 0!==i&&{errorHandler:i},...void 0!==a&&{finallyHandler:a},start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseEventNameWithNamespace(e){let t;t=this.checkEvent()||this.checkIdentifier()||this.checkIsCommand()||this.checkIdentifierLike()?this.advance():this.consumeEvent(e);let r=t.value;return this.check(":")&&(this.advance(),r=`${r}:${this.advance().value}`),r}callExprToCommandNode(e,t){return{type:"command",name:e.callee.name,args:e.arguments,isBlocking:!1,...void 0!==t.start&&{start:t.start},...void 0!==t.end&&{end:t.end},...void 0!==t.line&&{line:t.line},...void 0!==t.column&&{column:t.column}}}createPseudoCommandNode(e,t,r,n,s){return{type:"command",name:"pseudo-command",args:[{type:"objectLiteral",properties:[{key:{type:"identifier",name:"methodName"},value:{type:"literal",value:e,raw:`"${e}"`}},{key:{type:"identifier",name:"methodArgs"},value:{type:"literal",value:t.arguments,raw:JSON.stringify(t.arguments)}},...r?[{key:{type:"identifier",name:"preposition"},value:{type:"literal",value:r,raw:`"${r}"`}}]:[],{key:{type:"identifier",name:"targetExpression"},value:n}]}],isBlocking:!1,...void 0!==s.start&&{start:s.start},...void 0!==s.end&&{end:s.end},...void 0!==s.line&&{line:s.line},...void 0!==s.column&&{column:s.column}}}tryParsePseudoCommand(e,t){const r=e.callee.name,n=this.peek();if(!(Et.PSEUDO_COMMAND_PREPOSITIONS.includes(n.value.toLowerCase())||qe(n)&&!this.isCommand(n.value)||Se(n)))return{node:this.callExprToCommandNode(e,t),isPseudo:!1,targetFailed:!1};let s,i;this.isCommand(r)&&this.addWarning({type:"command-shadow",message:`Method '${r}' shadows hyperscript command`,suggestions:[`Rename method to avoid confusion (e.g., '${r}Fn', 'my${r.charAt(0).toUpperCase()+r.slice(1)}')`,`Use 'call' command instead: call ${r}(...)`,"This works but may cause ambiguity"],severity:"warning",code:"PSEUDO_CMD_SHADOW",...void 0!==t.line&&{line:t.line},...void 0!==t.column&&{column:t.column}}),Et.PSEUDO_COMMAND_PREPOSITIONS.includes(this.peek().value.toLowerCase())&&(s=this.advance().value.toLowerCase());try{i=this.parseExpression()}catch{return{node:this.callExprToCommandNode(e,t),isPseudo:!1,targetFailed:!0}}return{node:this.createPseudoCommandNode(r,e,s,i,t),isPseudo:!0,targetFailed:!1}}parseCommandWithErrorRecovery(){this.advance();const e=this.error;try{const t=this.parseCommand();return this.error&&this.error!==e&&(ye("⚠️ Command parsing added error, restoring error state. Error was:",this.error.message),this.error=e),t}catch(t){return ye("⚠️ Command parsing threw exception, restoring error state:",t instanceof Error?t.message:t+""),this.error=e,null}}parseEventHandler(){ye("🔧 parseEventHandler: ENTRY - parsing event handler");const e=[],t=this.parseEventNameWithNamespace("Expected event name after 'on'");for(e.push(t),ye("🔧 parseEventHandler: Parsed first event name: "+t);this.check("or");){this.advance(),ye("🔧 parseEventHandler: Found 'or', parsing additional event name");const t=this.parseEventNameWithNamespace("Expected event name after 'or'");e.push(t),ye("🔧 parseEventHandler: Parsed additional event name: "+t)}let r;if(ye("🔧 parseEventHandler: Total events parsed: "+e.join(", ")),this.registryIntegration){const t=e[0];if(this.registryIntegration.hasEventSource(t)){const e=this.registryIntegration.getEventSource(t);r=e?.name,ye(`🔧 parseEventHandler: Detected custom event source '${r}' for event '${t}'`)}}const n=[];if(this.match("(")){if(!this.check(")"))do{const e=this.advance();n.push(e.value)}while(this.match(","));this.consume(")","Expected ')' after event parameters"),ye("🔧 parseEventHandler: Parsed event parameters: "+n.join(", "))}const s={};for(;this.check(".");){this.advance();const e=this.advance().value.toLowerCase();if("once"===e)s.once=!0,ye("🔧 parseEventHandler: Parsed modifier '.once'");else if("prevent"===e)s.prevent=!0,ye("🔧 parseEventHandler: Parsed modifier '.prevent'");else if("stop"===e)s.stop=!0,ye("🔧 parseEventHandler: Parsed modifier '.stop'");else if("debounce"===e||"throttle"===e){if(!this.check("("))throw Error(`Expected '(' after '.${e}'`);{this.advance();const t=this.advance(),r=parseInt(t.value,10);if(isNaN(r))throw Error(`Expected number for ${e} delay, got: ${t.value}`);"debounce"===e?(s.debounce=r,ye(`🔧 parseEventHandler: Parsed modifier '.debounce(${r})'`)):(s.throttle=r,ye(`🔧 parseEventHandler: Parsed modifier '.throttle(${r})'`)),this.consume(")",`Expected ')' after ${e} delay`)}}else ye(`🔧 parseEventHandler: Warning - unknown modifier '.${e}'`)}if(this.check("debounced")||this.check("throttled")){const e=this.advance().value.toLowerCase(),t="debounced"===e?"debounce":"throttle";if(this.match("at"))if(this.checkTimeExpression()){const r=this.advance(),n=(i=r.value).endsWith("ms")?parseInt(i,10):i.endsWith("seconds")||i.endsWith("s")?1e3*parseFloat(i):i.endsWith("minutes")?6e4*parseFloat(i):i.endsWith("hours")?36e5*parseFloat(i):i.endsWith("days")?864e5*parseFloat(i):parseInt(i,10);s[t]=n,ye(`🔧 parseEventHandler: Parsed '${e} at ${r.value}' (${n}ms)`)}else if(this.matchNumber()){const r=parseInt(this.previous().value,10);s[t]=r,ye(`🔧 parseEventHandler: Parsed '${e} at ${r}'`)}else this.addError(`Expected time expression after '${e} at', got: ${this.peek().value}`);else this.addError(`Expected 'at' after '${e}'`)}var i;let a,o,l,c;if(Object.keys(s).length>0&&ye("🔧 parseEventHandler: Parsed modifiers:",s),this.match("[")&&(a=this.parseExpression(),this.consume("]","Expected ']' after event condition")),this.match("from")){const e=this.advance();o=e.value,ye(`🔧 parseEventHandler: Parsed 'from' target: ${o} (kind: ${e.kind})`)}if(this.match("of")){const e=this.advance();l=e.value.startsWith("@")?e.value.substring(1):e.value,ye("🔧 parseEventHandler: Parsed attribute name: "+l)}this.match("in")&&(ye("🔧 parseEventHandler: Found 'in' keyword, parsing watch target"),c=this.parseExpression(),ye("🔧 parseEventHandler: Parsed watch target expression"));const u=[];for(ye(`✅ parseEventHandler: About to parse commands, current token: ${this.isAtEnd()?"END":this.peek().value}, isAtEnd: ${this.isAtEnd()}`);!this.isAtEnd();){if(ye(`✅ parseEventHandler: Loop iteration, current token: ${this.peek().value}, kind: ${this.peek().kind}`),this.check("on")){ye("✅ parseEventHandler: Stopping command parsing, found next event handler 'on'");break}if(this.checkComment())ye("✅ parseEventHandler: Skipping comment token: "+this.peek().value),this.advance();else{if(this.check("end")){ye("✅ parseEventHandler: Stopping command parsing, found 'end' keyword"),this.advance();break}if(this.checkIsCommand()){const e="("===this.tokens[this.current+1]?.value,t=this.peek().value.toLowerCase();if(e&&"js"!==t&&"tell"!==t){let e;const t=this.error;try{e=this.parseExpression()}catch(e){this.error=t,this.advance();const r=this.parseCommand();u.push(r);continue}if(e&&"callExpression"===e.type){const t=this.tryParsePseudoCommand(e,e);if(u.push(t.node),t.isPseudo||t.targetFailed)continue}}else{const e=this.parseCommandWithErrorRecovery();e&&(u.push(e),ye("✅ parseEventHandler: Parsed command, next token: "+(this.isAtEnd()?"END":this.peek().value)))}}else{if(!this.checkIdentifier())break;{const e=this.peek();if(this.isCommand(e.value)){const e=this.parseCommandWithErrorRecovery();e&&u.push(e)}else{let e;const t=this.error;try{e=this.parseExpression()}catch(e){ye("⚠️ Expression parsing error, restoring error state:",e instanceof Error?e.message:e+""),this.error=t;break}if(e&&"callExpression"===e.type){const t=this.tryParsePseudoCommand(e,e);if(u.push(t.node),t.targetFailed)continue}else{if(!e||"binaryExpression"!==e.type||" "!==e.operator)break;{const t=e;if(!t.left||"identifier"!==t.left.type||!this.isCommand(t.left.name))break;{const r={type:"command",name:t.left.name,args:[t.right],isBlocking:!1,...void 0!==e.start&&{start:e.start},...void 0!==e.end&&{end:e.end},...void 0!==e.line&&{line:e.line},...void 0!==e.column&&{column:e.column}};u.push(r)}}}}}}for(;!(this.isAtEnd()||this.checkIsCommand()||this.isCommand(this.peek().value)||this.check("then")||this.check("and")||this.check(",")||this.check("on"));)this.advance();if(!this.match("then","and",",")&&!this.checkIsCommand()&&!this.isCommand(this.peek().value))break}}const d=this.getPosition(),m={type:"eventHandler",event:1===e.length?e[0]:e.join("|"),events:e,commands:u,...n.length>0&&{params:n},...a&&{condition:a},...o&&{target:o},...l&&{attributeName:l},...c&&{watchTarget:c},...r&&{customEventSource:r},...Object.keys(s).length>0&&{modifiers:s},start:d.start,end:d.end,line:d.line,column:d.column};return ye(`🔧 parseEventHandler: Created node with events: ${e.join(", ")}, attributeName: ${l||"none"}, watchTarget: ${c?"yes":"none"}`),m}parseBehaviorDefinition(){const e=this.getPosition(),t=this.consumeIdentifier("Expected behavior name after 'behavior' keyword").value;/^[A-Z]/.test(t)||this.addError(`Behavior name must start with uppercase letter (got "${t}")`);const r=[];if(this.match("(")){if(!this.check(")"))do{const e=this.consumeIdentifierLike("Expected parameter name");r.push(e.value)}while(this.match(","));this.consume(")","Expected ')' after behavior parameters")}const n=new Set(r),s=[];let i;for(;!this.isAtEnd()&&!this.check("end");)if(this.match("on")){const e=this.getPosition(),t=this.peek().value;this.advance();const r=[];if(this.check("(")){for(this.advance();!this.isAtEnd()&&!this.check(")");){const e=this.peek();qe(e)?(r.push(e.value),this.advance(),this.check(",")&&this.advance()):this.advance()}this.check(")")&&this.advance()}let i;if(this.check("from")){this.advance();const e=[];if(this.check("the")&&this.advance(),!this.isAtEnd()){const t=this.peek(),r=n.has(t.value);this.checkIsCommand()&&!r||(e.push(t.value),i=t.value,this.advance())}}const a=[];for(;!this.isAtEnd()&&!this.check("end");){if(!this.checkIsCommand()&&!this.isCommand(this.peek().value)){this.check("end")||this.addError("Unexpected token in event handler: "+this.peek().value);break}{this.advance();const e=this.error;try{const t=this.parseCommand();for(this.error&&this.error!==e&&(this.error=e),a.push(t);!(this.isAtEnd()||this.check("end")||this.checkIsCommand()||this.isCommand(this.peek().value));)this.advance()}catch(t){this.error=e;break}}}const o={type:"eventHandler",event:t,commands:a,...void 0!==i&&{target:i},...r.length>0&&{args:r},start:e.start,end:this.getPosition().end,line:e.line,column:e.column};s.push(o),this.consume("end","Expected 'end' after event handler body")}else{if(!this.match("init")){this.addError("Unexpected token in behavior body: "+this.peek().value);break}i={type:"initBlock",commands:this.parseCommandBlock(["end"]),start:e.start,end:this.getPosition().end,line:e.line,column:e.column},this.consume("end","Expected 'end' after init block")}return this.consume("end","Expected 'end' to close behavior definition"),{type:"behavior",name:t,parameters:r,eventHandlers:s,...void 0!==i?{initBlock:i}:{},start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseCommandSequence(){const e=[];for(;!this.isAtEnd();){if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value)){this.advance();const t=this.error,r=this.parseCommand();for(this.error&&this.error!==t&&(this.error.message.includes("Expected closing parenthesis")||this.error.message.includes("Expected ')'")||this.error.message.includes("unclosed parenthes")||this.error.message.includes("Unclosed parenthes")||(ye("⚠️ parseCommandSequence: Command parsing added non-critical error, restoring error state. Error was:",this.error.message),this.error=t)),e.push(r);!(this.isAtEnd()||this.checkIsCommand()||this.isCommand(this.peek().value)||this.check("then")||this.check("on"));)ye("⚠️ parseCommandSequence: Skipping unexpected token:",this.peek().value),this.advance();if(this.check("on")){ye('✅ parseCommandSequence: Found "on" token, stopping command sequence to allow event handler parsing');break}if(this.match("then"))continue;if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value))continue;break}this.addError("Expected command, got: "+this.peek().value);break}return 1===e.length?e[0]:function(e){return{type:"CommandSequence",commands:e,start:e[0]?.start||0,end:e[e.length-1]?.end||0,line:e[0]?.line||1,column:e[0]?.column||1}}(e)}getMultiWordPattern(e){return function(e){return et.find(t=>t.command===e.toLowerCase())||null}(e)}isTokenKeyword(e,t){return tt(e,t)}parseMultiWordCommand(e,t){return function(e,t,r){const n=e.getMultiWordPattern(r);if(!n)return null;const s=[],i={};for(;!nt(e,["catch","finally",...n.keywords])&&!tt(e.peek(),n.keywords);){const t=e.parsePrimary();if(!t)break;if(s.push(t),!e.match(",")&&tt(e.peek(),n.keywords))break}for(;!e.isAtEnd()&&tt(e.peek(),n.keywords);){const t=e.advance().value,r=e.parseExpression();if(r&&(i[t]=r),!tt(e.peek(),n.keywords))break}const a=lt.from(t).withArgs(...s).endingAt(e.getPosition());return Object.keys(i).length>0&&a.withModifiers(i),a.build()}(this.getContext(),e,t)}parseCommandBlock(e){const t=[];for(;!this.isAtEnd()&&!e.some(e=>this.check(e));)if(this.checkComment())this.advance();else{if(!this.checkIsCommand()&&!this.isCommand(this.peek().value))break;{this.advance();const e=this.parseCommand();t.push(e)}}return t}trySemanticParse(e){if(!this.semanticAdapter||!this.semanticAdapter.isAvailable())return null;try{const t=this.semanticAdapter.trySemanticParse(e);return t.success&&t.node?(ye(`[Semantic] Successfully parsed with confidence ${t.confidence}:`,t.node.name),t.node):(ye(`[Semantic] Low confidence (${t.confidence}), falling back to traditional parser`),null)}catch(e){return ye("[Semantic] Error during semantic parse:",e),null}}getRemainingInput(){if(!this.originalInput)return this.tokens.slice(this.current>0?this.current-1:0).map(e=>e.value).join(" ");const e=this.current>0?this.tokens[this.current-1]:this.tokens[0];return e&&void 0!==e.start?this.originalInput.slice(e.start):this.originalInput}skipToCommandBoundary(){const e=["then","and","else","end"];for(;!this.isAtEnd();){const t=this.peek(),r=t.value.toLowerCase();if(e.includes(r))break;if(xe(t))break;this.advance()}}parseCommand(){const e=this.previous();let t=e.value;if(this.semanticAdapter&&!["install","wait","repeat","for","set","put","increment","decrement","add","if","unless","make","measure","trigger","halt","remove","exit","return","closest","js","tell"].includes(t.toLowerCase())){const e=this.getRemainingInput(),t=this.trySemanticParse(e);if(t)return this.skipToCommandBoundary(),t}if("beep"===t&&this.check("!")&&(this.advance(),t="beep!"),"fetch"===t)return function(e,t){const r={};let n=null;if(!e.isAtEnd()&&e.check("/")&&(n=function(e){const t=e.savePosition();let r="";for(;!e.isAtEnd()&&!bt(e);)r+=e.advance().value;return r&&"/"!==r?{type:"literal",value:r,raw:r,start:t,end:e.savePosition()}:(e.restorePosition(t),null)}(e)),n||(n=e.parsePrimary()),!n)return e.addError("fetch requires a URL"),lt.from(t).endingAt(e.getPosition()).build();!e.isAtEnd()&&e.check("{")&&(r.with=e.parsePrimary());for(let t=0;2>t&&!e.isAtEnd();t++)if(!e.check("as")||r.as){if(!e.check("with")||r.with)break;e.advance(),r.with=wt(e)?kt(e):e.parsePrimary()}else e.advance(),e.isAtEnd()||ot(e,"a")||ot(e,"an"),r.as=e.parsePrimary();const s=lt.from(t).withArgs(n).endingAt(e.getPosition());return Object.keys(r).length>0&&s.withModifiers(r),s.build()}(this.getContext(),e);const r=this.parseMultiWordCommand(e,t);if(r)return r;const n=t.toLowerCase();if("repeat"===n)return this.parseRepeatCommand(e);if("for"===n)return this.parseForCommand(e);if("if"===n||"unless"===n)return this.parseIfCommand(e);if("wait"===n)return this.parseWaitCommand(e);if("install"===n)return this.parseInstallCommand(e);if("transition"===n)return this.parseTransitionCommand(e);if("add"===n)return this.parseAddCommand(e);if(this.isCompoundCommand(n))return this.parseCompoundCommand({type:"identifier",name:n,start:e.start||0,end:e.end||0,line:e.line,column:e.column})||this.createErrorNode();const s=[];if(("increment"===t||"decrement"===t)&&!this.isAtEnd())return function(e,t){const r=t.value,n="increment"===r?"+":"-";let s=!1;e.check(v)&&(s=!0,e.advance());const i=e.parseExpression();if(!i)throw Error("Expected variable or expression after "+r);let a;if(e.check("by")){e.advance();const t=e.parseExpression();if(!t)throw Error(`Expected amount after 'by' in ${r} command`);a=t}else a=Je(1,"1",{start:t.start,end:e.previous().end,line:t.line,column:t.column});let o=i;s&&"identifier"===i.type&&(o={...i,scope:"global"});const l={start:t.start,end:e.previous().end,line:t.line,column:t.column},c=Ye(n,i,a,l),u=[o,Ke(d,l),c];return lt.from(t).withName("set").withArgs(...u).withOriginalCommand(r).endingAt({end:e.previous().end}).build()}(this.getContext(),e);for(;!(this.isAtEnd()||this.check("then")||this.check("and")||this.check("else")||this.check("end")||this.checkIsCommand());){const e=this.parseExpression();if(s.push(e||this.parsePrimary()),this.match(","))continue;const t=["into","from","to","with","by","at","before","after","over"];if(t.some(e=>this.check(e)))continue;const r=s[s.length-1];if(!r||"identifier"!==r.type&&"keyword"!==r.type||!t.includes(r.name??r.value))break}const i=this.getPosition();return{type:"command",name:t,args:s,isBlocking:!1,start:i.start,end:i.end,line:i.line,column:i.column}}parseConditional(){const e=this.parseExpression();this.consume("then","Expected 'then' after if condition");const t=this.parseConditionalBranch();let r;this.match("else")&&(r=this.parseConditionalBranch());const n=this.getPosition();return{type:"conditionalExpression",test:e,consequent:t,alternate:r,start:n.start,end:n.end,line:n.line,column:n.column}}parseConditionalBranch(){if(this.checkIsCommand()){const e=this.advance(),t=this.createIdentifier(e.value);return this.createCommandFromIdentifier(t)||t}if(this.checkIdentifier()||this.checkKeyword()){const e=this.peek();if(this.isCommand(e.value)){const e=this.advance(),t=this.createIdentifier(e.value);return this.createCommandFromIdentifier(t)||t}}return this.parseExpression()}parseNavigationFunction(e){const t=[];if(this.match("of"))t.push(this.parseExpression());else{if(this.check("("))return this.finishCall(this.createIdentifier(e));this.isAtEnd()||this.checkBasicOperator()||this.check("then")||this.check("else")||t.push(this.parsePrimary())}return this.createCallExpression(this.createIdentifier(e),t)}parseTheXofY(){if(!this.checkIdentifier())return this.createIdentifier("the");const e=this.peek(),t=e.value;return["first","last","next","previous","random","closest"].includes(t)?(this.advance(),this.parseNavigationFunction(t)):(this.advance(),this.check("of")?(this.advance(),{type:"propertyOfExpression",property:{type:"identifier",name:t},target:this.parsePrimary(),line:e.line,column:e.column}):this.createIdentifier(t))}parseContextPropertyAccess(e){if("me"===e&&this.match("*")){let t="";if(!this.checkIdentifier())return this.addError("Expected property name after 'my *'"),this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(""),!1);for(t=this.advance().value;this.check("-")&&!this.isAtEnd();){if(t+="-",this.advance(),!this.checkIdentifier()){this.addError("Expected identifier after hyphen in CSS property name");break}t+=this.advance().value}const r="computed-"+t;return this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(r),!1)}{if(je(this.peek())&&this.peek().value.startsWith("@")){const t=this.advance();return this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(t.value),!1)}const t=this.consumeIdentifier(`Expected property name after '${{me:"my",it:"its",you:"your"}[e]}'`);return this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(t.value),!1)}}parseMyPropertyAccess(){return this.parseContextPropertyAccess("me")}finishCall(e){const t=[];if(!this.check(")"))do{if(this.check(","))return this.addError("Unexpected token in function arguments"),this.createCallExpression(e,[this.createErrorNode()]);t.push(this.parseExpression())}while(this.match(","));if(!this.check(")")&&"identifier"===e.type){const t=e.name;P(t)&&ye(`💡 Tip: CSS functions like ${t}() should be quoted for clean parsing. Use '${t}(...)' or \`${t}(...)\` instead.`)}return this.consume(")","Expected ')' after arguments"),this.createCallExpression(e,t)}createLiteral(e,t){return Je(e,t,this.getPosition())}createIdentifier(e){return Ke(e,this.getPosition())}createBinaryExpression(e,t,r){return Ye(e,t,r,this.getPosition())}createUnaryExpression(e,t,r){return function(e,t,r,n){return{type:"unaryExpression",operator:e,argument:t,prefix:r,start:n.start,end:n.end,line:n.line,column:n.column}}(e,t,r,this.getPosition())}createCallExpression(e,t){return function(e,t,r){return{type:"callExpression",callee:e,arguments:t,start:r.start,end:r.end,line:r.line,column:r.column}}(e,t,this.getPosition())}createMemberExpression(e,t,r){return function(e,t,r,n){return{type:"memberExpression",object:e,property:t,computed:r,start:n.start,end:n.end,line:n.line,column:n.column}}(e,t,r,this.getPosition())}createSelector(e){return function(e,t){return{type:"selector",value:e,start:t.start,end:t.end,line:t.line,column:t.column}}(e,this.getPosition())}createPossessiveExpression(e,t){return function(e,t,r){return{type:"possessiveExpression",object:e,property:t,start:r.start,end:r.end,line:r.line,column:r.column}}(e,t,this.getPosition())}createErrorNode(){return{type:"identifier",name:"__ERROR__",start:(e=this.getPosition()).start,end:e.end,line:e.line,column:e.column};var e}processEscapeSequences(e){return e.replace(/\\(.)/g,(e,t)=>{switch(t){case"n":return"\n";case"t":return"\t";case"r":return"\r";case"b":return"\b";case"f":return"\f";case"v":return"\v";case"0":return"\0";case"\\":return"\\";case'"':return'"';case"'":return"'";default:return t}})}createProgramNode(e){return function(e){if(ye(`✅ createProgramNode: Called with ${e.length} statements`),0===e.length)return ye("✅ createProgramNode: Returning error node (0 statements)"),{type:"identifier",name:"__ERROR__",start:0,end:0,line:1,column:1};if(1===e.length)return ye(`✅ createProgramNode: Returning single statement (type=${e[0].type})`),e[0];const t={type:"Program",statements:e,start:e[0]?.start||0,end:e[e.length-1]?.end||0,line:e[0]?.line||1,column:e[0]?.column||1};return ye(`✅ createProgramNode: Returning Program node with ${e.length} statements, type=${t.type}`),t}(e)}match(...e){for(const t of e)if(this.check(t))return this.advance(),!0;return!1}matchOperator(e){if(this.isAtEnd())return!1;const t=this.peek();return!(!Ue(t)||t.value!==e||(this.advance(),0))}check(e){if(this.isAtEnd())return!1;const t=this.peek().value;return this.resolveKeyword(t)===e}checkPredicate(e){return!this.isAtEnd()&&e(this.peek())}matchPredicate(e){return!!this.checkPredicate(e)&&(this.advance(),!0)}checkSelector(){return this.checkPredicate(Pe)}matchSelector(){return this.matchPredicate(Pe)}checkAnySelector(){return this.checkPredicate(Le)}checkLiteral(){return this.checkPredicate(Ne)}checkIdentifierLike(){return this.checkPredicate(Oe)}checkIsCommand(){return this.checkPredicate(xe)}checkCommandTerminator(){return this.checkPredicate(We)}checkReference(){return this.checkPredicate(Ie)}checkTimeExpression(){return this.checkPredicate(Re)}checkEvent(){return this.checkPredicate(Ae)}checkContextVar(){return this.checkPredicate(Se)}checkComment(){return this.checkPredicate(_e)}checkIdentifier(){return this.checkPredicate(qe)}checkKeyword(){return this.checkPredicate(Ce)}checkString(){return this.checkPredicate(Me)}matchString(){return this.matchPredicate(Me)}checkNumber(){return this.checkPredicate($e)}matchNumber(){return this.matchPredicate($e)}checkBoolean(){return this.checkPredicate(Ve)}matchBoolean(){return this.matchPredicate(Ve)}checkTemplateLiteral(){return this.checkPredicate(De)}matchTemplateLiteral(){return this.matchPredicate(De)}checkQueryReference(){return this.checkPredicate(Be)}matchQueryReference(){return this.matchPredicate(Be)}checkIdSelector(){return this.checkPredicate(Fe)}checkClassSelector(){return this.checkPredicate(ze)}checkCssSelector(){return this.checkPredicate(He)}checkBasicOperator(){return this.checkPredicate(Ue)}matchBasicOperator(){return this.matchPredicate(Ue)}matchTimeExpression(){return this.matchPredicate(Re)}matchIdentifierLike(){return this.matchPredicate(Oe)}matchComparisonOperator(){return this.matchPredicate(Te)}consumePredicate(e,t){return this.checkPredicate(e)?this.advance():(this.addError(t),this.peek())}consumeIdentifier(e){return this.consumePredicate(qe,e)}consumeIdentifierLike(e){return this.consumePredicate(Oe,e)}consumeEvent(e){return this.consumePredicate(Ae,e)}advance(){return this.isAtEnd()||this.current++,this.previous()}isAtEnd(){return this.current>=this.tokens.length}peek(){return this.isAtEnd()?{kind:"unknown",value:"",start:0,end:0,line:1,column:1}:this.tokens[this.current]}previous(){return this.tokens[this.current-1]}consume(e,t){return this.check(e)?this.advance():(this.addError(t),this.peek())}addError(e){const t=this.peek();let r=t.start||0,n=t.line||1,s=t.column||1;if(e.includes("property name after '.'")){const e=this.current>0?this.previous():t;r=e.end||e.start||0,n=e.line||1,s=e.column||1}if(e.includes("parenthes")){const e=this.current>0?this.previous():t;r=e.end||e.start||0,n=e.line||1,s=e.column||1,0===r&&this.current>0&&(r=this.current)}if(e.includes("Expected expression after")){const e=this.current>0?this.previous():t;r=e.start||0,n=e.line||1,s=e.column||1,0===r&&(r=Math.max(1,this.current-1))}if(e.includes("Missing operand")){let e=t;for(let t=this.current-1;t>=0;t--){const r=this.tokens[t];if(r&&("+"===r.value||"-"===r.value)){e=r;break}}r=e.start||0,n=e.line||1,s=e.column||1}this.error={message:e,line:Math.max(1,n),column:Math.max(1,s),position:Math.max(0,r)}}parseAttributeOrArrayLiteral(){const e=this.previous().start,t=this.previous().line,r=this.previous().column;if(!this.isAtEnd()&&this.peek().value.startsWith("@")){const n=[];for(;!this.check("]")&&!this.isAtEnd();){const e=this.advance();n.push(e.value)}this.consume("]","Expected ']' after attribute literal");const s="["+n.join("")+"]";return{type:"literal",value:s,raw:s,start:e,end:this.previous().end,line:t,column:r}}const n=[];if(!this.check("]"))do{if(this.check("]"))break;n.push(this.parseExpression())}while(this.match(","));return this.consume("]","Expected ']' after array elements"),{type:"arrayLiteral",elements:n,start:e,end:this.previous().end,line:t,column:r}}getPosition(){const e=this.current>0?this.previous():this.peek();return{start:e.start||0,end:e.end||0,line:e.line||1,column:e.column||1}}getContext(){const e=this,t={tokens:this.tokens,advance:this.advance.bind(this),peek:this.peek.bind(this),previous:this.previous.bind(this),consume:this.consume.bind(this),check:this.check.bind(this),checkIdentifierLike:this.checkIdentifierLike.bind(this),checkSelector:this.checkSelector.bind(this),checkAnySelector:this.checkAnySelector.bind(this),checkLiteral:this.checkLiteral.bind(this),checkReference:this.checkReference.bind(this),checkTimeExpression:this.checkTimeExpression.bind(this),checkEvent:this.checkEvent.bind(this),checkIsCommand:this.checkIsCommand.bind(this),checkContextVar:this.checkContextVar.bind(this),match:this.match.bind(this),matchOperator:this.matchOperator.bind(this),isAtEnd:this.isAtEnd.bind(this),createIdentifier:this.createIdentifier.bind(this),createLiteral:this.createLiteral.bind(this),createSelector:this.createSelector.bind(this),createBinaryExpression:this.createBinaryExpression.bind(this),createUnaryExpression:this.createUnaryExpression.bind(this),createMemberExpression:this.createMemberExpression.bind(this),createPossessiveExpression:this.createPossessiveExpression.bind(this),createCallExpression:this.createCallExpression.bind(this),createErrorNode:this.createErrorNode.bind(this),createProgramNode:this.createProgramNode.bind(this),createCommandFromIdentifier:this.createCommandFromIdentifier.bind(this),parseExpression:this.parseExpression.bind(this),parsePrimary:this.parsePrimary.bind(this),parseCall:this.parseCall.bind(this),parseAssignment:this.parseAssignment.bind(this),parseLogicalOr:this.parseLogicalOr.bind(this),parseLogicalAnd:this.parseLogicalAnd.bind(this),parseEquality:this.parseEquality.bind(this),parseComparison:this.parseComparison.bind(this),parseAddition:this.parseAddition.bind(this),parseMultiplication:this.parseMultiplication.bind(this),parseImplicitBinary:this.parseImplicitBinary.bind(this),parseConditional:this.parseConditional.bind(this),parseConditionalBranch:this.parseConditionalBranch.bind(this),parseEventHandler:this.parseEventHandler.bind(this),parseBehaviorDefinition:this.parseBehaviorDefinition.bind(this),parseNavigationFunction:this.parseNavigationFunction.bind(this),parseMyPropertyAccess:this.parseMyPropertyAccess.bind(this),parseDollarExpression:this.parseDollarExpression.bind(this),parseHyperscriptSelector:this.parseHyperscriptSelector.bind(this),parseAttributeOrArrayLiteral:this.parseAttributeOrArrayLiteral.bind(this),parseObjectLiteral:this.parseObjectLiteral.bind(this),parseCSSObjectLiteral:this.parseCSSObjectLiteral.bind(this),parseCommand:this.parseCommand.bind(this),parseCommandSequence:this.parseCommandSequence.bind(this),parseCommandListUntilEnd:this.parseCommandListUntilEnd.bind(this),getPosition:this.getPosition.bind(this),addError:this.addError.bind(this),addWarning:this.addWarning.bind(this),isCommand:this.isCommand.bind(this),isCompoundCommand:this.isCompoundCommand.bind(this),isKeyword:this.isKeyword.bind(this),getMultiWordPattern:this.getMultiWordPattern.bind(this),resolveKeyword:this.resolveKeyword.bind(this),savePosition:()=>e.current,restorePosition:t=>{e.current=t},peekAt:t=>{const r=e.current+t;return r>=0&&e.tokens.length>r?e.tokens[r]:null},getInputSlice:(e,t)=>this.originalInput?0>e||e>=this.originalInput.length?"":void 0!==t?this.originalInput.slice(e,t):this.originalInput.slice(e):""};return Object.defineProperty(t,"current",{get:()=>e.current,set:t=>{e.current=t},enumerable:!0,configurable:!0}),t}}Et.POSTFIX_UNARY_OPERATORS=new Set(["exists","does not exist","is empty","is not empty"]),Et.PSEUDO_COMMAND_PREPOSITIONS=["from","on","with","into","at","to"];class xt{constructor(){this.hooks=new Map,this.beforeExecuteHooks=[],this.afterExecuteHooks=[],this.onErrorHooks=[],this.interceptCommandHooks=[]}register(e,t){this.unregister(e),this.hooks.set(e,t),t.beforeExecute&&this.beforeExecuteHooks.push(t.beforeExecute),t.afterExecute&&this.afterExecuteHooks.push(t.afterExecute),t.onError&&this.onErrorHooks.push(t.onError),t.interceptCommand&&this.interceptCommandHooks.push(t.interceptCommand)}unregister(e){const t=this.hooks.get(e);if(!t)return!1;if(t.beforeExecute){const e=this.beforeExecuteHooks.indexOf(t.beforeExecute);e>-1&&this.beforeExecuteHooks.splice(e,1)}if(t.afterExecute){const e=this.afterExecuteHooks.indexOf(t.afterExecute);e>-1&&this.afterExecuteHooks.splice(e,1)}if(t.onError){const e=this.onErrorHooks.indexOf(t.onError);e>-1&&this.onErrorHooks.splice(e,1)}if(t.interceptCommand){const e=this.interceptCommandHooks.indexOf(t.interceptCommand);e>-1&&this.interceptCommandHooks.splice(e,1)}return this.hooks.delete(e)}has(e){return this.hooks.has(e)}async runBeforeExecute(e){for(const t of this.beforeExecuteHooks)await t(e)}async runAfterExecute(e,t){for(const r of this.afterExecuteHooks)await r(e,t)}async runOnError(e,t){let r=t;for(const t of this.onErrorHooks){const n=await t(e,r);n instanceof Error&&(r=n)}return r}shouldIntercept(e,t){for(const r of this.interceptCommandHooks)if(r(e,t))return!0;return!1}getRegisteredNames(){return Array.from(this.hooks.keys())}clear(){this.hooks.clear(),this.beforeExecuteHooks=[],this.afterExecuteHooks=[],this.onErrorHooks=[],this.interceptCommandHooks=[]}}function Ct(e){return e instanceof Error&&("isHalt"in e||"isExit"in e||"isBreak"in e||"isContinue"in e||"isReturn"in e)?e:null}function At(e){return{ok:!0,value:e}}function St(e){return{ok:!1,error:e}}function Tt(e){return!0===e.ok}class Ot{constructor(e){this.elementCleanups=new WeakMap,this.elementCount=0,this.typeCounts={listener:0,observer:0,interval:0,timeout:0,custom:0},this.globalCleanups=[],this.debugMode=e?.debug??!1}registerListener(e,t,r,n,s){this.addCleanup(e,{type:"listener",target:t,eventName:r,cleanup:()=>{t.removeEventListener(r,n,s),this.debugMode&&ve(`CleanupRegistry: Removed listener '${r}'`)},description:r+" listener"})}registerObserver(e,t){this.addCleanup(e,{type:"observer",cleanup:()=>{t.disconnect(),this.debugMode&&ve("CleanupRegistry: Disconnected MutationObserver")},description:"MutationObserver"})}registerInterval(e,t){this.addCleanup(e,{type:"interval",cleanup:()=>{clearInterval(t),this.debugMode&&ve("CleanupRegistry: Cleared interval")},description:"Interval"})}registerTimeout(e,t){this.addCleanup(e,{type:"timeout",cleanup:()=>{clearTimeout(t),this.debugMode&&ve("CleanupRegistry: Cleared timeout")},description:"Timeout"})}registerCustom(e,t,r){this.addCleanup(e,{type:"custom",cleanup:t,description:r||"Custom cleanup"})}registerGlobal(e,t="custom",r){this.globalCleanups.push({type:t,cleanup:e,description:r||"Global cleanup"}),this.debugMode&&ve("CleanupRegistry: Registered global cleanup: "+(r||t))}addCleanup(e,t){const r=this.elementCleanups.get(e);r?r.push(t):(this.elementCleanups.set(e,[t]),this.elementCount++),this.typeCounts[t.type]++,this.debugMode&&ve(`CleanupRegistry: Registered ${t.type} for element`,e)}cleanupElement(e){const t=this.elementCleanups.get(e);if(!t||0===t.length)return 0;let r=0;for(const e of t){try{e.cleanup(),r++}catch(e){this.debugMode&&ve("CleanupRegistry: Error during cleanup:",e)}this.typeCounts[e.type]--}return this.elementCleanups.delete(e),this.elementCount--,this.debugMode&&ve(`CleanupRegistry: Cleaned up ${r} resources for element`),r}cleanupElementTree(e){let t=this.cleanupElement(e);const r=e.querySelectorAll("*");for(const e of r)t+=this.cleanupElement(e);return t}cleanupGlobal(){let e=0;for(const t of this.globalCleanups)try{t.cleanup(),e++}catch(e){this.debugMode&&ve("CleanupRegistry: Error during global cleanup:",e)}return this.globalCleanups=[],this.debugMode&&ve(`CleanupRegistry: Cleaned up ${e} global resources`),e}cleanupAll(){return this.cleanupGlobal()}hasCleanups(e){const t=this.elementCleanups.get(e);return void 0!==t&&t.length>0}getCleanupCount(e){const t=this.elementCleanups.get(e);return t?.length??0}getStats(){let e=0,t=0,r=0,n=0,s=0;for(const i of this.globalCleanups)switch(i.type){case"listener":e++;break;case"observer":t++;break;case"interval":r++;break;case"timeout":n++;break;case"custom":s++}return{elementsTracked:this.elementCount,listeners:this.typeCounts.listener+e,observers:this.typeCounts.observer+t,intervals:this.typeCounts.interval+r,timeouts:this.typeCounts.timeout+n,custom:this.typeCounts.custom+s,global:this.globalCleanups.length}}setDebugMode(e){this.debugMode=e}}const Lt=new Map;function Pt(e,t){return{me:e??null,it:null,you:null,result:null,locals:new Map,globals:t||Lt,flags:{halted:!1,breaking:!1,continuing:!1,returning:!1,async:!1}}}function Nt(e){if(!e)return Pt();if(e.locals instanceof Map&&e.globals instanceof Map&&e.flags)return e;const t=Pt(e.me instanceof Element?e.me:null);return void 0!==e.it&&(t.it=e.it),void 0!==e.you&&(t.you=e.you),void 0!==e.result&&(t.result=e.result),void 0!==e.event&&Object.assign(t,{event:e.event}),t}class It{constructor(){this.sources=new Map,this.subscriptions=new Map,this.nextId=1}register(e,t){const r=e.toLowerCase();this.sources.has(r)&&console.warn("[EventSourceRegistry] Overwriting existing event source: "+e),this.sources.set(r,t)}unregister(e){const t=e.toLowerCase(),r=this.sources.get(t);if(r){for(const[e,r]of this.subscriptions.entries())r.source===t&&(r.unsubscribe(),this.subscriptions.delete(e));return r.destroy?.(),this.sources.delete(t)}return!1}get(e){return this.sources.get(e.toLowerCase())}has(e){return this.sources.has(e.toLowerCase())}subscribe(e,t,r){const n=this.get(e);if(!n)return void console.warn("[EventSourceRegistry] Unknown event source: "+e);n.initialize?.();const s=n.subscribe(t,r);return this.subscriptions.set(s.id,s),s}unsubscribe(e){const t=this.subscriptions.get(e);return!!t&&(t.unsubscribe(),this.subscriptions.delete(e))}getSourceNames(){return Array.from(this.sources.keys())}getSubscriptions(){return Array.from(this.subscriptions.values())}findSourceForEvent(e){for(const[t,r]of this.sources.entries())if(r.supports?.(e)??r.supportedEvents?.includes(e))return t}generateId(){return`sub_${this.nextId++}_${Date.now().toString(36)}`}destroy(){for(const e of this.subscriptions.values())e.unsubscribe();this.subscriptions.clear();for(const e of this.sources.values())e.destroy?.();this.sources.clear()}}class Rt{constructor(){this.providers=new Map,this.globalProviders=new Map}register(e,t,r){const n=e.toLowerCase();this.providers.set(n,"function"==typeof t?{name:n,provide:t,cache:r?.cache??!0,description:r?.description,dependencies:r?.dependencies}:t)}registerGlobal(e,t,r){const n=e.toLowerCase();this.globalProviders.set(n,"function"==typeof t?{name:n,provide:t,cache:r?.cache??!0,description:r?.description,dependencies:r?.dependencies}:t)}unregister(e){return this.providers.delete(e.toLowerCase())}unregisterGlobal(e){return this.globalProviders.delete(e.toLowerCase())}get(e){const t=e.toLowerCase();return this.providers.get(t)??this.globalProviders.get(t)}has(e){const t=e.toLowerCase();return this.providers.has(t)||this.globalProviders.has(t)}async resolve(e,t,r){const n=this.get(e);if(!n)return;const s="__provider_"+n.name;if(n.cache&&r?.has(s))return r.get(s);if(n.dependencies)for(const e of n.dependencies)await this.resolve(e,t,r);const i=await n.provide(t);return n.cache&&r&&r.set(s,i),i}resolveSync(e,t,r){const n=this.get(e);if(!n)return;const s="__provider_"+n.name;if(n.cache&&r?.has(s))return r.get(s);const i=n.provide(t);if(i instanceof Promise)throw Error(`Context provider '${e}' is async. Use resolve() instead of resolveSync().`);return n.cache&&r&&r.set(s,i),i}enhance(e){const t=this,r=new Map;return new Proxy(e,{get(e,n,s){if("string"==typeof n&&t.get(n))try{return t.resolveSync(n,e,r)}catch{return t.resolve(n,e,r)}return Reflect.get(e,n,s)},has:(e,r)=>!("string"!=typeof r||!t.has(r))||Reflect.has(e,r)})}async resolveAll(e){const t=new Map,r={},n=[...this.globalProviders.entries(),...this.providers.entries()];for(const[s,i]of n)try{r[s]=await this.resolve(s,e,t)}catch(e){console.warn(`[ContextProviderRegistry] Failed to resolve '${s}':`,e),r[s]=void 0}return r}getProviderNames(){return[...new Set([...this.globalProviders.keys(),...this.providers.keys()])]}clear(){this.providers.clear(),this.globalProviders.clear()}}const jt=new class{constructor(e={}){this.types=new Map,this.coercionCache=new Map,this.config={strictMode:!1,cacheCoercions:!0,...e},this.registerBuiltinTypes()}register(e){this.types.has(e.name)&&console.warn(`ExpressionTypeRegistry: Overwriting existing type '${e.name}'`),this.types.set(e.name,e)}get(e){return this.types.get(e)}has(e){return this.types.has(e)}getTypeNames(){return Array.from(this.types.keys())}inferType(e){for(const[t,r]of this.types)if(r.isType(e))return t;return"Unknown"}getHyperScriptType(e){const t=this.inferType(e),r=this.types.get(t);return r?.hyperscriptType??"unknown"}coerce(e,t,r){const n=this.types.get(t);if(!n){if(this.config.strictMode)throw Error("Unknown target type: "+t);return null}if(n.isType(e))return e;if(this.config.cacheCoercions){const r=`${this.inferType(e)}:${t}:${JSON.stringify(e)}`;if(this.coercionCache.has(r))return this.coercionCache.get(r)}const s=this.inferType(e),i=n.coerceFrom?.[s];if(i){const n=i(e,r);if(this.config.cacheCoercions&&null!==n){const r=`${s}:${t}:${JSON.stringify(e)}`;this.coercionCache.set(r,n)}return n}return n.defaultValue}canCoerce(e,t){const r=this.types.get(t);if(!r)return!1;if(r.isType(e))return!0;const n=this.inferType(e);return void 0!==r.coerceFrom?.[n]}getCoercionInfo(e,t){const r=this.types.get(t);return r&&(e===t||r.coerceFrom?.[e])?{possible:!0,direct:!0}:{possible:!1,direct:!1}}clearCache(){this.coercionCache.clear()}getStats(){return{typeCount:this.types.size,cacheSize:this.coercionCache.size,typeNames:this.getTypeNames()}}registerBuiltinTypes(){this.register({name:"String",hyperscriptType:"string",tsType:"string",isType:e=>"string"==typeof e,defaultValue:"",description:"Text string value",examples:["hello","world",""],coerceFrom:{Number:e=>e+"",Boolean:e=>e+"",Null:()=>"",Undefined:()=>"",Array:e=>Array.isArray(e)?e.join(", "):null,Object:e=>{try{return JSON.stringify(e)}catch{return e+""}},Element:e=>e instanceof Element?e.textContent??e.outerHTML:null}}),this.register({name:"Number",hyperscriptType:"number",tsType:"number",isType:e=>"number"==typeof e&&!isNaN(e),defaultValue:0,description:"Numeric value (integer or float)",examples:[0,1,3.14,-42],coerceFrom:{String:e=>{const t=parseFloat(e);return isNaN(t)?null:t},Boolean:e=>e?1:0,Null:()=>0,Undefined:()=>null}}),this.register({name:"Boolean",hyperscriptType:"boolean",tsType:"boolean",isType:e=>"boolean"==typeof e,defaultValue:!1,description:"True or false value",examples:[!0,!1],coerceFrom:{String:e=>{const t=e.toLowerCase().trim();return"true"===t||"yes"===t||"1"===t||"false"!==t&&"no"!==t&&"0"!==t&&""!==t&&t.length>0},Number:e=>0!==e,Null:()=>!1,Undefined:()=>!1,Array:e=>!!Array.isArray(e)&&e.length>0,Element:e=>e instanceof Element,ElementList:e=>Array.isArray(e)&&e.length>0}}),this.register({name:"Element",hyperscriptType:"element",tsType:"Element | HTMLElement",isType:e=>e instanceof Element,defaultValue:null,description:"DOM Element",coerceFrom:{String:(e,t)=>{const r=e;if(r.startsWith("#")||r.startsWith(".")||r.match(/^[\w-]+$/))try{return document.querySelector(r)}catch{return null}return null},ElementList:e=>Array.isArray(e)&&e.length>0?e[0]:null,NodeList:e=>e.length>0?e[0]:null}}),this.register({name:"ElementList",hyperscriptType:"element-list",tsType:"Element[]",isType:e=>Array.isArray(e)&&e.length>0&&e.every(e=>e instanceof Element),defaultValue:[],description:"Array of DOM Elements",coerceFrom:{Element:e=>e instanceof Element?[e]:[],NodeList:e=>Array.from(e),String:e=>{try{return Array.from(document.querySelectorAll(e))}catch{return[]}},Array:e=>{const t=e;return t.every(e=>e instanceof Element)?t:[]}}}),this.register({name:"Array",hyperscriptType:"array",tsType:"unknown[]",isType:e=>Array.isArray(e),defaultValue:[],description:"Array of values",coerceFrom:{String:e=>{const t=e;try{const e=JSON.parse(t);if(Array.isArray(e))return e}catch{}return t.split(",").map(e=>e.trim())},ElementList:e=>e,NodeList:e=>Array.from(e),Object:e=>Object.values(e)}}),this.register({name:"Object",hyperscriptType:"object",tsType:"Record<string, unknown>",isType:e=>!("object"!=typeof e||null===e||Array.isArray(e)||e instanceof Element),defaultValue:{},description:"Plain JavaScript object",coerceFrom:{String:e=>{try{const t=JSON.parse(e);if("object"==typeof t&&null!==t&&!Array.isArray(t))return t}catch{}return null},Array:e=>{const t={};return e.forEach((e,r)=>{t[r+""]=e}),t}}}),this.register({name:"Null",hyperscriptType:"null",tsType:"null",isType:e=>null===e,defaultValue:null,description:"Null value"}),this.register({name:"Undefined",hyperscriptType:"undefined",tsType:"undefined",isType:e=>void 0===e,defaultValue:void 0,description:"Undefined value"}),this.register({name:"Function",hyperscriptType:"function",tsType:"Function",isType:e=>"function"==typeof e,defaultValue:null,description:"JavaScript function"}),this.register({name:"Event",hyperscriptType:"event",tsType:"Event",isType:e=>e instanceof Event,defaultValue:null,description:"DOM Event"}),this.register({name:"NodeList",hyperscriptType:"element-list",tsType:"NodeList",isType:e=>e instanceof NodeList,defaultValue:null,description:"DOM NodeList (typically from querySelectorAll)",coerceFrom:{Array:e=>null}}),this.register({name:"Unknown",hyperscriptType:"unknown",tsType:"unknown",isType:e=>!0,defaultValue:null,description:"Unknown/any value type"})}};function _t(e){const t=jt.get("String");return t?t.isType(e):"string"==typeof e}function qt(e){const t=jt.get("Number");return t?t.isType(e):"number"==typeof e}function Mt(e){const t=jt.get("Boolean");return t?t.isType(e):"boolean"==typeof e}function $t(e){const t=jt.get("Object");return t?t.isType(e):"object"==typeof e&&null!==e}function Vt(e){const t=jt.get("Function");return t?t.isType(e):"function"==typeof e}function Dt(e){if(null===e||"object"!=typeof e||!("tagName"in e))return!1;const t=e.tagName;return"INPUT"===t||"SELECT"===t||"TEXTAREA"===t}function Bt(e){return e instanceof Element}const Ft=new Set(["disabled","readonly","required","checked","selected","hidden","open","autofocus","autoplay","controls","loop","muted","multiple","reversed","defer","async","novalidate","formnovalidate","ismap"]);function zt(e,t){return Ft.has(t.toLowerCase())?e.hasAttribute(t):e.getAttribute(t)}const Ht={id:e=>e.id,classname:e=>e.className,class:e=>e.className,tagname:e=>e.tagName.toLowerCase(),innertext:e=>e.textContent?.trim(),innerHTML:e=>e.innerHTML,outerhtml:e=>e.outerHTML,value:e=>Dt(e)?e.value:void 0,checked:e=>function(e){return null!==e&&"object"==typeof e&&"tagName"in e&&"INPUT"===e.tagName}(e)?e.checked:void 0,disabled:e=>Dt(e)?e.disabled:void 0,selected:e=>function(e){return null!=e&&"object"==typeof e&&"tagName"in e&&"OPTION"===e.tagName}(e)?e.selected:void 0,hidden:e=>function(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType&&"style"in e}(e)?e.hidden:void 0,style:e=>getComputedStyle(e),children:e=>Array.from(e.children),parent:e=>e.parentElement,firstchild:e=>e.firstElementChild,lastchild:e=>e.lastElementChild,nextsibling:e=>e.nextElementSibling,previoussibling:e=>e.previousElementSibling};function Ut(e,t){if(t.startsWith("computed-")){const r=t.slice(9);return function(e){return e instanceof HTMLElement}(e)?getComputedStyle(e).getPropertyValue(r):void 0}if(t.startsWith("@"))return zt(e,t.slice(1));const r=Ht[t.toLowerCase()];if(r)return r(e);if(function(e,t){return e.hasAttribute(t)}(e,t))return zt(e,t);const n=e[t];return Vt(n)?n.bind(e):n}function Wt(e){if("string"==typeof e)return e;if(e&&"object"==typeof e){if("string"==typeof e.name)return e.name;if("string"==typeof e.value)return e.value}return e}function Jt(e){return e.me?.ownerDocument??("undefined"!=typeof document?document:null)}function Kt(e,t){return t.locals?.has(e)?t.locals.get(e):t.globals?.has(e)?t.globals.get(e):t.variables?.has(e)?t.variables.get(e):"me"===e?t.me:"it"===e?t.it:"result"===e?t.result:void 0}async function Yt(e,t){if(e.includes(".")){const r=e.split(".");let n=Kt(r[0],t);for(let e=1;r.length>e&&null!=n;e++)n=n[r[e]];return n}return Kt(e,t)}async function Gt(e,t){if(ge(`RESOLVE: Looking for '${e}' in context`,{hasInLocals:t.locals.has(e),localsKeys:Array.from(t.locals.keys()),value:t.locals.get(e)}),t.locals.has(e)){const r=t.locals.get(e);return ge(`RESOLVE: Found '${e}' in locals:`,r),r}if(t.globals&&t.globals.has(e)){const r=t.globals.get(e);return ge(`RESOLVE: Found '${e}' in globals:`,r),r}if(t.variables&&t.variables.has(e)){const r=t.variables.get(e);return ge(`RESOLVE: Found '${e}' in variables (legacy):`,r),r}const r=Number(e);if(!isNaN(r))return r;if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1);if(e.includes(".")){const r=e.split("."),n=r[0];let s=null;if(t.locals.has(n)?s=t.locals.get(n):t.globals&&t.globals.has(n)?s=t.globals.get(n):t.variables&&t.variables.has(n)&&(s=t.variables.get(n)),null!=s){for(let e=1;r.length>e;e++){if(null==s)return void ge(`RESOLVE: Property access failed at '${r[e-1]}'`);s=s[r[e]]}return ge(`RESOLVE: Property access '${e}' =`,s),s}}return e}async function Xt(e,t){ge("EVAL: Evaluating expression:",e);const r=e.match(/^(.+?)\s*\?(?![\.\[])\s*(.+?)\s*:\s*(.+)$/);if(r){const[,e,n,s]=r;ge("EVAL: Parsed ternary:",{conditionExpr:e,trueExpr:n,falseExpr:s});const i=await Gt(e.trim(),t);if(ge("EVAL: Ternary condition value:",i),i){const e=await Gt(n.trim(),t);return ge("EVAL: Ternary returned true branch:",e),e}{const e=await Gt(s.trim(),t);return ge("EVAL: Ternary returned false branch:",e),e}}const n=e.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*|\d+(?:\.\d+)?)\s*([\+\-\*\/\%])\s*([a-zA-Z_$][a-zA-Z0-9_$]*|\d+(?:\.\d+)?)$/);if(n){const[,e,r,s]=n;ge("EVAL: Parsed arithmetic:",{left:e,operator:r,right:s});const i=await Gt(e.trim(),t),a=await Gt(s.trim(),t);ge("EVAL: Resolved values:",{leftValue:i,rightValue:a});const o=Number(i),l=Number(a);if(!isNaN(o)&&!isNaN(l)){let e;switch(r){case"+":e=o+l;break;case"-":e=o-l;break;case"*":e=o*l;break;case"/":e=o/l;break;case"%":e=o%l;break;default:e=o}return ge("EVAL: Arithmetic result:",e),e}}const s=await Gt(e.trim(),t);return ge("EVAL: Fallback result:",s),s}function Zt(e){if(Array.isArray(e)&&1===e.length&&(e=e[0]),null!==e&&"object"==typeof e&&"string"==typeof e.textContent){const t=e.value??e.textContent;if(null!=t){const e=(t+"").trim();if(""===e)return 0;const r=parseFloat(e);return isNaN(r)?e:r}return 0}return e}async function Qt(e,t,r,n,s){try{const i=s(await n(e.object,r));if(null==i)throw Error("Cannot call method on null or undefined");const a=Wt(e.property);if(!a||"string"!=typeof a)throw Error("Invalid method name: "+a);const o=i[a];if("function"!=typeof o)throw Error(`Property "${a}" is not a function on ${i.constructor?.name||typeof i}`);const l=await Promise.all(t.map(e=>n(e,r)));return o.apply(i,l)}catch(e){if(e instanceof Error)throw e;throw Error("Failed to evaluate method call: "+e)}}class er{constructor(){this.expressionRegistry=new Map}registerCategory(e){Object.entries(e).forEach(([e,t])=>{this.expressionRegistry.set(e,t)})}unwrapSelectorResult(e){if(e instanceof NodeList&&e.length>0)return e[0];if(Array.isArray(e)&&e.length>0){const t=e[0];return"index"in e&&"input"in e?e:t instanceof Element||t instanceof Node?t:e}return e}async evaluate(e,t){if(!e)return ge("EVALUATOR: Received null/undefined node, returning null"),null;if(!e.type)throw console.error("EVALUATOR: Node missing type property:",e),Error("Node missing type property: "+JSON.stringify(e));switch(e.type){case"identifier":return this.evaluateIdentifier(e,t);case"literal":return this.evaluateLiteral(e,t);case"string":return e.value??"";case"memberExpression":return this.evaluateMemberExpression(e,t);case"binaryExpression":return this.evaluateBinaryExpression(e,t);case"unaryExpression":return this.evaluateUnaryExpression(e,t);case"callExpression":return this.evaluateCallExpression(e,t);case"selector":return this.evaluateSelector(e,t);case"dollarExpression":return this.evaluateDollarExpression(e,t);case"possessiveExpression":return this.evaluatePossessiveExpression(e,t);case"templateLiteral":return this.evaluateTemplateLiteral(e,t);case"arrayLiteral":return this.evaluateArrayLiteral(e,t);case"objectLiteral":return this.evaluateObjectLiteral(e,t);case"conditionalExpression":return this.evaluateConditionalExpression(e,t);case"cssSelector":return this.evaluateCSSSelector(e,t);case"propertyAccess":return this.evaluatePropertyAccess(e,t);case"propertyOfExpression":return this.evaluatePropertyOfExpression(e,t);case"contextReference":return this.evaluateContextReference(e,t);case"queryReference":return this.evaluateQueryReference(e,t);case"idSelector":return this.evaluateIdSelector(e,t);case"attributeAccess":return this.evaluateAttributeAccess(e,t);default:throw Error("Unsupported AST node type for evaluation: "+e.type)}}async evaluateWithResult(e,t){try{return At(await this.evaluate(e,t))}catch(e){if(e instanceof Error){const t=e;if(t.isHalt||"HALT_EXECUTION"===t.message)return St({type:"halt"});if(t.isExit||"EXIT_COMMAND"===t.message)return St({type:"exit",returnValue:t.returnValue});if(t.isBreak)return St({type:"break"});if(t.isContinue)return St({type:"continue"});if(t.isReturn)return St({type:"return",returnValue:t.returnValue})}throw e}}async evaluateArrayLiteral(e,t){const r=e.elements||[],n=[];for(const e of r){const r=await this.evaluate(e,t);n.push(r)}return n}async evaluateObjectLiteral(e,t){const r=e.properties||[],n={};for(const e of r){let r;r="identifier"===e.key.type?e.key.name:"literal"===e.key.type?e.key.value+"":await this.evaluate(e.key,t)+"";const s=await this.evaluate(e.value,t);n[r]=s}return n}async evaluateConditionalExpression(e,t){return await this.evaluate(e.test,t)?this.evaluate(e.consequent,t):e.alternate?this.evaluate(e.alternate,t):void 0}async evaluateTemplateLiteral(e,t){return async function(e,t){let r=e.value||"";ge("TEMPLATE LITERAL: Evaluating",{template:r,node:e});const n=/\$([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)/g,s=[];let i;for(;null!==(i=n.exec(r));)"{"!==r[i.index+1]&&s.push({match:i[0],varName:i[1],index:i.index});for(let e=s.length-1;e>=0;e--){const{match:n,varName:i,index:a}=s[e],o=await Yt(i,t);ge(`TEMPLATE: $${i} resolved to`,o),r=r.slice(0,a)+((o??"")+"")+r.slice(a+n.length)}let a="",o=0;for(;r.length>o;){const e=r.indexOf("${",o);if(-1===e){a+=r.slice(o);break}a+=r.slice(o,e);let n=1,s=e+2;for(;r.length>s&&n>0;)"{"===r[s]&&n++,"}"===r[s]&&n--,n>0&&s++;if(0!==n)throw Error("Unterminated template expression in: "+r);const i=r.slice(e+2,s);let l;ge("TEMPLATE: Evaluating expression:",i);const c=i.trim();t.locals.has(c)?(l=t.locals.get(c),ge(`TEMPLATE: Found in locals: ${c} =`,l)):t.globals&&t.globals.has(c)?(l=t.globals.get(c),ge(`TEMPLATE: Found in globals: ${c} =`,l)):t.variables&&t.variables.has(c)?(l=t.variables.get(c),ge(`TEMPLATE: Found in variables (legacy): ${c} =`,l)):(l=await Xt(i,t),ge(`TEMPLATE: Evaluated expression "${i}" =`,l)),a+=l+"",o=s+1}return a}(e,t)}async evaluateSimpleExpression(e,t){return Xt(e,t)}async resolveValue(e,t){return Gt(e,t)}async evaluateIdentifier(e,t){const{name:r,scope:n}=e;if("me"===r||"my"===r||"I"===r)return t.me;if("you"===r||"your"===r)return t.you;if("it"===r||"its"===r)return t.it;if("result"===r)return t.result;if("event"===r)return t.event;const s=this.expressionRegistry.get(r);return s?s.evaluate(t):"local"===n?t.locals?.has(r)?t.locals.get(r):void 0:"global"===n?t.globals?.has(r)?t.globals.get(r):"undefined"!=typeof window&&r in window?window[r]:void 0:t.locals?.has(r)?t.locals.get(r):t.globals?.has(r)?t.globals.get(r):t.variables?.has(r)?t.variables.get(r):"undefined"!=typeof globalThis&&r in globalThis?globalThis[r]:"undefined"!=typeof window&&r in window?window[r]:void 0}async evaluateLiteral(e,t){return e.value}async evaluateContextReference(e,t){const{contextType:r}=e;switch(r){case"me":return t.me;case"it":return t.result;case"you":return t.you;case"event":return t.event;case"body":return t.meta?.ownerDocument?.body||document?.body;case"detail":return t.event?.detail;case"target":return t.you||t.event?.target;case"sender":return t.event?.target;default:return t.locals&&t.locals.has(r)?t.locals.get(r):void ge("Unknown context reference type: "+r)}}async evaluateMemberExpression(e,t){const{object:r,property:n,computed:s}=e;if("identifier"===r.type&&["add","remove"].includes(r.name)){const e=r.name,s=Wt(n);if(!t.me)throw Error('Context element "me" is null');return void("add"===e?t.me.classList.add(s):"remove"===e&&t.me.classList.remove(s))}let i=await this.evaluate(r,t);if(s)return i[await this.evaluate(n,t)];{const e=Wt(n);if(Array.isArray(i)&&"string"==typeof e&&("length"===e||e in Array.prototype)||(i=this.unwrapSelectorResult(i)),"string"==typeof e){if(e.startsWith("computed-")){const t=e.substring(9);return i&&"undefined"!=typeof window&&i instanceof Element?window.getComputedStyle(i).getPropertyValue(t):void 0}if(e.startsWith("@")){const t=e.substring(1);return i&&"function"==typeof i.getAttribute?zt(i,t):void 0}if(i&&i instanceof Element){if("previous"===e||"prev"===e)return i.previousElementSibling;if("next"===e)return i.nextElementSibling}}const t=i?.[e];return"function"==typeof t?t.bind(i):t}}coerceArithmeticOperand(e){return Zt(e)}async evaluateBinaryExpression(e,t){return async function(e,t,r,n,s){const{operator:i,left:a,right:o}=e;if("in"===i&&"selector"===a.type){let e=a.value;e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());const s=n(await r(o,t));if(!s||"function"!=typeof s.querySelector)throw Error(`'in' operator requires a DOM element as the right operand (got: ${typeof s})`);const i=s.querySelectorAll(e);return Array.from(i)}if("in"===i&&"queryReference"===a.type){let e=a.selector;e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());const s=n(await r(o,t));if(!s||"function"!=typeof s.querySelector)throw Error(`'in' operator requires a DOM element as the right operand (got: ${typeof s})`);const i=s.querySelectorAll(e);return Array.from(i)}if("in"===i){let e=null,s=null;if("positionalExpression"===a.type){e=a.operator;const n=a.argument;"cssSelector"===n?.type?s=n.selector:"selector"===n?.type?s=n.value:"classSelector"===n?.type?s="."+n.className:"idSelector"===n?.type?s="#"+n.id:n&&(s=await r(n,t)+"")}else if("memberExpression"!==a.type||"identifier"!==a.object?.type||"first"!==a.object.name&&"last"!==a.object.name){if("callExpression"===a.type&&"identifier"===a.callee?.type&&("first"===a.callee.name||"last"===a.callee.name)){e=a.callee.name;const n=a.arguments?.[0];"selector"===n?.type?s=n.value:"cssSelector"===n?.type?s=n.selector:"classSelector"===n?.type?s="."+n.className:"idSelector"===n?.type?s="#"+n.id:n&&(s=await r(n,t)+"")}}else e=a.object.name,"identifier"===a.property?.type&&a.property.name&&(s="."+a.property.name);if(e&&s){const i=n(await r(o,t));if(!i||"function"!=typeof i.querySelectorAll)return;const a=i.querySelectorAll(s),l=Array.from(a);return"first"===e?l.length>0?l[0]:void 0:"last"===e?l.length>0?l[l.length-1]:void 0:l}}if("matches"===i&&("selector"===o.type||"cssSelector"===o.type||"classSelector"===o.type)){const e=await r(a,t),n=o.value||o.selector;if(e&&"function"==typeof e.matches)try{return e.matches(n)}catch{return!1}return!1}const l=await r(a,t),c=await r(o,t);if("has"===i||"have"===i){if(l instanceof Element){if("cssSelector"===o.type&&"class"===o.selectorType||"selector"===o.type&&o.value?.startsWith(".")){const e=o.selector?.slice(1)||o.value?.slice(1)||"";return l.classList.contains(e)}if("attributeAccess"===o.type||"attributeRef"===o.type){const e=o.attributeName||o.name||o.value?.replace(/^@/,"")||"";return l.hasAttribute(e)}if("cssSelector"===o.type&&"attribute"===o.selectorType){const e=(o.selector||o.value||"").replace(/^@/,"");return l.hasAttribute(e)}if("cssSelector"===o.type&&"id"===o.selectorType||"idSelector"===o.type){const e=(o.selector||o.value||"").replace(/^#/,"");return null!==l.querySelector("#"+CSS.escape(e))}if("selector"===o.type||"queryReference"===o.type){let e=o.value||o.selector||"";e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());try{return null!==l.querySelector(e)}catch{return!1}}if("cssSelector"===o.type){const e=o.selector||"";try{return null!==l.querySelector(e)}catch{return!1}}}return Array.isArray(l)?l.includes(c):"string"==typeof l&&l.includes(c+"")}switch(i){case">":case"is greater than":return l>c;case"<":case"is less than":return c>l;case">=":case"is greater than or equal to":return l>=c;case"<=":case"is less than or equal to":return c>=l;case"==":case"equals":case"is equal to":return l==c;case"===":case"is really equal to":case"really equals":return l===c;case"!=":case"is not equal to":return l!=c;case"!==":case"is not really equal to":return l!==c;case"+":{const e=Zt(l),r=Zt(c);if("string"==typeof e||"string"==typeof r){const n=s.get("stringConcatenation");if(n){ge("Using string concatenation for:",{leftValue:e,rightValue:r});const s=await n.evaluate(t,{left:e,right:r});return s.success?s.value:e+r}}else{const n=s.get("addition");if(n){ge("Using numeric addition for:",{leftValue:e,rightValue:r});const s=await n.evaluate(t,{left:e,right:r});return s.success?s.value:e+r}}return e+r}case"-":return Zt(l)-Zt(c);case"*":return Zt(l)*Zt(c);case"/":return Zt(l)/Zt(c);case"%":case"mod":return Zt(l)%Zt(c);case"as":const e="string"==typeof c?c:"identifier"===o.type?o.name:"literal"===o.type?o.value:c+"",r=s.get("as");return r?r.evaluate(t,l,e):l;case"&&":case"and":return l&&c;case"||":case"or":return l||c;case"is":return l===c;case"is not":return l!==c;case"is a":case"is an":switch("identifier"===o.type?o.name.toLowerCase():(c+"").toLowerCase()){case"string":return"string"==typeof l;case"number":return"number"==typeof l;case"boolean":return"boolean"==typeof l;case"object":return"object"==typeof l&&null!==l;case"array":return Array.isArray(l);case"function":return"function"==typeof l;case"null":return null===l;case"undefined":return void 0===l;default:const e="identifier"===o.type?o.name:c+"";return null!=l&&l.constructor?.name===e}case"is not a":case"is not an":switch("identifier"===o.type?o.name.toLowerCase():(c+"").toLowerCase()){case"string":return"string"!=typeof l;case"number":return"number"!=typeof l;case"boolean":return"boolean"!=typeof l;case"object":return!("object"==typeof l&&null!==l);case"array":return!Array.isArray(l);case"function":return"function"!=typeof l;case"null":return null!==l;case"undefined":return void 0!==l;default:const e="identifier"===o.type?o.name:c+"";return!(null!=l&&l.constructor?.name===e)}case"=":if("identifier"===a.type){const e=a.name;return"result"===e?t.result=c:"it"===e?t.it=c:"you"===e?t.you=c:t.locals.set(e,c),c}throw Error("Left side of assignment must be an identifier");case"contains":case"include":case"includes":return Array.isArray(l)?l.includes(c):"string"==typeof l?l.includes(c+""):!(!l||"function"!=typeof l.matches)&&l.matches(c+"");case"match":case"matches":if(l&&"function"==typeof l.matches){const e="string"==typeof c?c:c+"";try{return l.matches(e)}catch{return!1}}return!1;case"in":const n="string"==typeof l?l:l+"",u=c;if(!u||"function"!=typeof u.querySelector){if(Array.isArray(u))return u.includes(l);if("object"==typeof u&&null!==u)return n in u;throw Error(`'in' operator requires a DOM element, array, or object as the right operand (got: ${typeof u})`)}return u.querySelector(n);case" ":return"string"==typeof l&&"string"==typeof c?{command:l,selector:c}:"identifier"===a.type&&"selector"===o.type?{command:a.name,selector:o.value}:c;default:throw Error(`Unsupported binary operator: "${i}" (length: ${i.length})`)}}(e,t,this.evaluate.bind(this),this.unwrapSelectorResult.bind(this),this.expressionRegistry,this.evaluateSelector.bind(this))}async evaluateUnaryExpression(e,t){const{operator:r,argument:n}=e,s=await this.evaluate(n,t);switch(r){case"not":case"!":const e=this.expressionRegistry.get("not");return e?e.evaluate(t,s):!s;case"no":const n=this.expressionRegistry.get("no");return!!n&&n.evaluate(t,s);case"some":return null!=s&&("string"==typeof s||Array.isArray(s)||s instanceof NodeList||s instanceof HTMLCollection?s.length>0:"object"!=typeof s||Object.keys(s).length>0);case"exists":const i=this.expressionRegistry.get("exists");return i?i.evaluate(t,s):null!=s;case"does not exist":const a=this.expressionRegistry.get("doesNotExist");return a?a.evaluate(t,s):null==s;case"-":return-s;case"+":return+s;default:throw Error("Unsupported unary operator: "+r)}}async evaluateCallExpression(e,t){return async function(e,t,r,n,s,i){const{callee:a,arguments:o,isConstructor:l}=e;if(l){const e=a.name,n=t.globals?.get(e)||window[e];if("function"==typeof n)return new n(...await Promise.all(o.map(e=>r(e,t))));throw Error("Unknown constructor: "+e)}if("memberExpression"===a.type||"propertyAccess"===a.type)return Qt(a,o,t,r,n);const c=a.name||a,u=s.get(c);if(u){const e=["first","last","random","at"],n=["closest","previous","next"].includes(c),s=e.includes(c),a=await Promise.all(o.map(e=>n&&e&&"selector"===e.type&&"string"==typeof e.value?e.value:n&&e&&"identifier"===e.type&&"string"==typeof e.name?e.name:s&&e&&"selector"===e.type&&"string"==typeof e.value?i(e,t):r(e,t)));return u.evaluate(t,...a)}const d=t.globals?.get(c)||window[c];if("function"==typeof d)return d(...await Promise.all(o.map(e=>r(e,t))));throw Error("Unknown function: "+c)}(e,t,this.evaluate.bind(this),this.unwrapSelectorResult.bind(this),this.expressionRegistry,this.evaluateSelector.bind(this))}async evaluateMethodCall(e,t,r){return Qt(e,t,r,this.evaluate.bind(this),this.unwrapSelectorResult.bind(this))}async evaluateSelector(e,t){return function(e,t){let r=e.value;r.startsWith("<")&&r.endsWith("/>")&&(r=r.slice(1,-2).trim());const n=Jt(t);if(!n)return[];const s=n.querySelectorAll(r);return Array.from(s).filter(e=>e&&"object"==typeof e&&1===e.nodeType&&"string"==typeof e.tagName)}(e,t)}evaluateAttributeAccess(e,t){return t.me&&"function"==typeof t.me.getAttribute?zt(t.me,e.attributeName):"@"+e.attributeName}getAvailableExpressions(){return Array.from(this.expressionRegistry.keys())}async evaluateDollarExpression(e,t){const r=await this.evaluate(e.expression,t);if("identifier"===e.expression.type){const r=e.expression.name;return/^\d+$/.test(r)?r:t.locals?.has(r)?t.locals.get(r):"me"===r&&t.me?t.me:"you"===r&&t.you?t.you:"it"===r&&t.it?t.it:"result"===r&&t.result?t.result:"undefined"!=typeof window&&"window"===r?window:t.globals?.has(r)?t.globals.get(r):void 0}return r}async evaluatePossessiveExpression(e,t){const{object:r,property:n}=e,s=this.unwrapSelectorResult(await this.evaluate(r,t));if(!s)return;const i=Wt(n);return"string"==typeof i&&Bt(s)?Ut(s,i):s[i]}hasExpression(e){return this.expressionRegistry.has(e)}async evaluateCSSSelector(e,t){return function(e,t){let r=e.selector;r.startsWith("<")&&r.endsWith("/>")&&(r=r.slice(1,-2).trim());const n=Jt(t);if(!n)return"id"===e.selectorType?null:[];if("id"===e.selectorType){const e=r.startsWith("#")?r.slice(1):r;return n.getElementById(e)}if("class"===e.selectorType){const e=r.replace(/:/g,"\\:"),t=n.querySelectorAll(e);return Array.from(t).filter(e=>e instanceof HTMLElement)}const s=n.querySelectorAll(r);return Array.from(s).filter(e=>e instanceof HTMLElement)}(e,t)}async evaluateIdSelector(e,t){return function(e,t){const r=Jt(t);if(!r)return null;const n=e.value.startsWith("#")?e.value.slice(1):e.value;return r.getElementById(n)}(e,t)}async evaluateQueryReference(e,t){return function(e,t){let r=e.selector;r.startsWith("<")&&r.endsWith("/>")&&(r=r.slice(1,-2).trim());const n=Jt(t);if(!n)return[];try{return n.querySelectorAll(r)}catch{return n.createDocumentFragment().childNodes}}(e,t)}async evaluatePropertyAccess(e,t){const r=await this.evaluate(e.object,t),n=e.property;if(null==r)throw Error(`Cannot access property "${n.name||n.value}" of ${r}`);const s=n.name||n.value;if(!s)throw Error("Property name must be an identifier");try{let e;return e=Bt(r)?Ut(r,s):r[s],"function"==typeof e?e.bind(r):e}catch(e){throw Error(`Error accessing property "${s}": ${e}`)}}async evaluatePropertyOfExpression(e,t){const r=e.property,n=r.name||r.value;if(!n)throw Error('Property name must be an identifier in "the X of Y" pattern');const s=this.unwrapSelectorResult(await this.evaluate(e.target,t));if(null==s)throw Error(`Cannot access property "${n}" of ${s}`);try{let e;return e=Bt(s)?Ut(s,n):s[n],"function"==typeof e?e.bind(s):e}catch(e){throw Error(`Failed to access property "${n}" on target: ${e}`)}}}const tr={1:"one",2:"two",3:"three",4:"four",5:"five"};function rr(e,t,r,n){if(e.length!==t){return`${r} requires exactly ${s=t,tr[s]??s+""} argument${1===t?"":"s"}${n?` (${n})`:""}`}var s;return null}function nr(e,t,r,n){return"string"!=typeof e[t]?`${r} ${n||"argument "+(t+1)} must be a string`:null}function sr(e,t,r){return rr(e,1,t,r)??nr(e,0,t,r)}function ir(e,t){return rr(e,2,t,"left, right")}function ar(){return null}function or(e,t,r,n){return e.length>t?`${r} expression takes at most ${1===t?"one":t+""} argument${1===t?"":"s"}${n?` (${n})`:""}`:null}function lr(e,t,r,n,s){return t>e.length||e.length>r?`${n} requires ${t}-${r} arguments${s?` (${s})`:""}`:null}function cr(e,t,r,n=[]){return{type:e,message:t,suggestions:n,...r&&{path:r}}}const ur="undefined"!=typeof process&&"production"===process.env.NODE_ENV||"undefined"!=typeof process&&"true"===process.env.HYPERFIXI_SKIP_VALIDATION||"undefined"!=typeof globalThis&&"true"===globalThis.HYPERFIXI_SKIP_VALIDATION;let dr;function mr(){return dr({validate:e=>({success:!0,data:e})})}function pr(e,t){if(ur)return mr();const r=dr({validate:r=>{if("object"!=typeof r||null===r||Array.isArray(r))return{success:!1,error:cr("type-mismatch","Expected object, received "+typeof r)};const n=r,s={};if(t?.strict){const t=Object.keys(e),r=Object.keys(n).filter(e=>!t.includes(e));if(r.length>0)return{success:!1,error:cr("runtime-error","Unexpected properties: "+r.join(", "))}}for(const[t,r]of Object.entries(e)){const e=n[t];if(!(t in n)&&!r._isOptional)return{success:!1,error:cr("missing-argument",`Required field "${t}" is missing`,t)};const i=r.validate(e);if(!i.success)return{success:!1,error:cr("validation-error",i.error.message||`Field "${t}" validation failed`,i.error.path?`${t}.${i.error.path}`:t)};void 0!==i.data&&(s[t]=i.data)}return{success:!0,data:s}}});return r.strict=()=>pr(e,{strict:!0}),r}dr=function(e){return e.describe||(e.describe=function(e){return this.description=e,this}),e.safeParse||(e.safeParse=function(e){const t=this.validate(e);return t.success?{success:!0,data:t.data}:{success:!1,error:{errors:t.error?[t.error]:[]}}}),e.parse||(e.parse=function(e){const t=this.validate(e);if(t.success&&void 0!==t.data)return t.data;throw Error(t.error?.message||"Validation failed")}),e.optional||(e.optional=function(){const e=this.validate.bind(this),t={...this,_isOptional:!0,validate:t=>null==t?{success:!0,data:void 0}:e(t)};return dr(t)}),e.min||(e.min=function(e){const t=this.validate.bind(this),r={...this,validate:r=>{const n=t(r);return n.success&&"string"==typeof n.data&&e>n.data.length?{success:!1,error:cr("runtime-error",`String must be at least ${e} characters long`)}:n}};return dr(r)}),e.max||(e.max=function(e){const t=this.validate.bind(this),r={...this,validate:r=>{const n=t(r);return n.success&&"string"==typeof n.data&&n.data.length>e?{success:!1,error:cr("runtime-error",`String must be at most ${e} characters long`)}:n}};return dr(r)}),e.default||(e.default=function(e){const t=this.validate.bind(this),r={...this,_defaultValue:e,_hasDefault:!0,validate:r=>void 0===r?{success:!0,data:e}:t(r)};return dr(r)}),e.rest||(e.rest=function(e){return this}),e.refine||(e.refine=function(e,t){const r=this.validate.bind(this),n={...this,validate:n=>{const s=r(n);return s.success?e(s.data)?s:{success:!1,error:cr("runtime-error",t||"Refinement validation failed")}:s}};return dr(n)}),new Proxy(e,{get:(e,t,r)=>t in e||"string"!=typeof t||t.startsWith("_")||"constructor"===t||"validate"===t||"then"===t?Reflect.get(e,t,r):function(...e){return r}})};const hr=e=>function(e={}){return ur?mr():dr({validate:t=>e.optional&&null==t?{success:!0,data:void 0}:"string"!=typeof t?{success:!1,error:cr("type-mismatch","Expected string, received "+typeof t)}:void 0!==e.minLength&&e.minLength>t.length?{success:!1,error:cr("runtime-error",`String must be at least ${e.minLength} characters long`)}:void 0!==e.maxLength&&t.length>e.maxLength?{success:!1,error:cr("runtime-error",`String must be at most ${e.maxLength} characters long`)}:e.pattern&&!e.pattern.test(t)?e.pattern.source.startsWith("^")&&e.pattern.source.endsWith("$")?{success:!1,error:cr("runtime-error",`Expected "${e.pattern.source.slice(1,-1)}", received "${t}"`)}:{success:!1,error:cr("missing-argument","String does not match required pattern")}:{success:!0,data:t},...e.description&&{description:e.description}})}(e||{}),fr=e=>function(e={}){return ur?mr():dr({validate:t=>{const r=Number(t);return isNaN(r)?{success:!1,error:cr("type-mismatch","Expected number, received "+typeof t)}:void 0!==e.min&&e.min>r?{success:!1,error:cr("runtime-error","Number must be at least "+e.min)}:void 0!==e.max&&r>e.max?{success:!1,error:cr("runtime-error","Number must be at most "+e.max)}:{success:!0,data:r}}})}(e||{}),yr=()=>ur?mr():dr({validate:e=>"boolean"!=typeof e?{success:!1,error:cr("type-mismatch","Expected boolean, received "+typeof e)}:{success:!0,data:e}}),gr=e=>pr(e),vr=e=>function(e){return ur?mr():dr({validate:t=>{if(!Array.isArray(t))return{success:!1,error:cr("type-mismatch","Expected array, received "+typeof t)};if(t.length!==e.length)return{success:!1,error:cr("runtime-error",`Expected tuple of length ${e.length}, received length ${t.length}`)};const r=[];for(let n=0;e.length>n;n++){const s=e[n].validate(t[n]);if(!s.success)return{success:!1,error:cr("runtime-error",s.error.message,s.error.path?`${n}.${s.error.path}`:""+n)};r.push(s.data)}return{success:!0,data:r}}})}(e),br=()=>mr(),wr=()=>mr(),kr=()=>function(e,t="Custom validation failed"){return ur?mr():dr({validate:r=>e(r)?{success:!0,data:r}:{success:!1,error:cr("runtime-error",t)}})}(e=>void 0===e,"Expected undefined");class Er{trackPerformance(e,t,r,n){e.evaluationHistory&&e.evaluationHistory.push({expressionName:this.name,category:this.category,input:t,output:r.success?r.value:r.error,timestamp:n,duration:Date.now()-n,success:r.success})}trackSimple(e,t,r,n=(r?"success":"error")){e.evaluationHistory&&e.evaluationHistory.push({expressionName:this.name,category:this.category,input:"operation",output:n,timestamp:t,duration:Date.now()-t,success:r})}toBoolean(e){return!(!1===e||0===e||0n===e||""===e||null==e||qt(e)&&isNaN(e))}success(e,t){return{success:!0,value:e,type:t}}failure(e,t,r,n,s=[]){return{success:!1,error:{name:e,type:t,message:r,code:n,suggestions:s}}}validationSuccess(){return{isValid:!0,errors:[],suggestions:[]}}validationFailure(e,t,r=[]){return{isValid:!1,errors:[{type:e,message:t,suggestions:r}],suggestions:r}}isElement(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType&&"tagName"in e&&"string"==typeof e.tagName}inferType(e){return null===e?"null":void 0===e?"undefined":this.isElement(e)?"element":Array.isArray(e)?"array":$t(e)?"object":typeof e}inferEvaluationType(e){return void 0===e?"Undefined":null===e?"Null":_t(e)?"String":qt(e)?"Number":Mt(e)?"Boolean":Array.isArray(e)?"Array":this.isElement(e)?"Element":"Object"}normalizeCollection(e){return Array.isArray(e)?e:e instanceof NodeList?Array.from(e):_t(e)?e.split(""):null==e?[]:$t(e)&&Symbol.iterator in e?Array.from(e):[]}toNumber(e){if(qt(e)&&Number.isFinite(e))return e;if(_t(e)){const t=Number(e);return Number.isFinite(t)?t:null}return Mt(e)?e?1:0:null}}class xr extends Er{constructor(){super(...arguments),this.name="me",this.category="Reference",this.syntax="me",this.description="References the current element in the execution context",this.inputSchema=kr(),this.outputType="Element",this.metadata={category:"Reference",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=e.me,s=this.isElement(n)?n:null,i=this.success(s,"element");return this.trackPerformance(e,t,i,r),i}catch(n){const s=this.failure("MeExpressionError","runtime-error",n instanceof Error?n.message:'Failed to evaluate "me"',"ME_EVALUATION_FAILED",["Ensure element context is properly set",'Check if "me" is available in current scope']);return this.trackPerformance(e,t,s,r),s}}validate(e){return void 0!==e?this.validationFailure("type-mismatch",'"me" expression takes no arguments',['Use "me" without any parameters']):this.validationSuccess()}}class Cr extends Er{constructor(){super(...arguments),this.name="you",this.category="Reference",this.syntax="you",this.description="References the target element (usually event target or command target)",this.inputSchema=kr(),this.outputType="Element",this.metadata={category:"Reference",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=e.you,s=this.isElement(n)?n:null,i=this.success(s,"element");return this.trackPerformance(e,t,i,r),i}catch(n){const s=this.failure("YouExpressionError","runtime-error",n instanceof Error?n.message:'Failed to evaluate "you"',"YOU_EVALUATION_FAILED",["Ensure target element is available in context",'Check if "you" is set by event or command']);return this.trackPerformance(e,t,s,r),s}}validate(e){return void 0!==e?this.validationFailure("type-mismatch",'"you" expression takes no arguments',['Use "you" without any parameters']):this.validationSuccess()}}class Ar extends Er{constructor(){super(...arguments),this.name="it",this.category="Reference",this.syntax="it",this.description="References the current context variable (result of previous operation or loop item)",this.inputSchema=kr(),this.outputType="Any",this.metadata={category:"Reference",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=e.it,s={success:!0,value:n,type:this.inferType(n)};return this.trackPerformance(e,t,s,r),s}catch(n){const s=this.failure("ItExpressionError","runtime-error",n instanceof Error?n.message:'Failed to evaluate "it"',"IT_EVALUATION_FAILED",['Ensure "it" is set by previous operation',"Check if context variable is available"]);return this.trackPerformance(e,t,s,r),s}}validate(e){return void 0!==e?this.validationFailure("type-mismatch",'"it" expression takes no arguments',['Use "it" without any parameters']):this.validationSuccess()}}const Sr=gr({selector:hr().min(1),single:yr().optional().default(!1)});class Tr extends Er{constructor(){super(...arguments),this.name="css-selector",this.category="Reference",this.syntax="<selector/> or <selector/> (single)",this.description="Queries DOM elements using CSS selectors with validation",this.inputSchema=Sr,this.outputType="ElementList",this.metadata={category:"Reference",complexity:"medium"}}async evaluate(e,t){const r=Date.now();try{if(!this.isValidCSSSelector(t.selector)){const n=this.failure("CSSSelectorError","invalid-argument",`Invalid CSS selector: "${t.selector}"`,"INVALID_CSS_SELECTOR",["Check selector syntax","Use valid CSS selector patterns like .class, #id, tag[attr]","Avoid special characters that need escaping"]);return this.trackPerformance(e,t,n,r),n}let n;if(t.single)n=document.querySelector(t.selector);else{const e=Array.from(document.querySelectorAll(t.selector));n=e.length>0?e:null}const s={success:!0,value:n,type:Array.isArray(n)?"element-list":"element"};return this.trackPerformance(e,t,s,r),s}catch(n){const s=this.failure("CSSSelectorError","runtime-error",n instanceof Error?n.message:"CSS selector evaluation failed","CSS_SELECTOR_EVALUATION_FAILED",["Check if selector is valid CSS","Ensure DOM is ready when query executes","Verify elements exist in document"]);return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);if(!t.success)return{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid input: "+e.message,suggestions:this.getValidationSuggestion(e.code??"unknown")}))??[],suggestions:["Provide valid CSS selector string","Check selector syntax"]};const{selector:r}=t.data;return this.isValidCSSSelector(r)?this.validationSuccess():this.validationFailure("syntax-error",`Invalid CSS selector syntax: "${r}"`,["Use .class for class selectors","Use #id for ID selectors","Use tag for element selectors","Use [attr] for attribute selectors"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Ensure input matches expected format"])}}isValidCSSSelector(e){try{return document.querySelector(e),!0}catch{return!1}}getValidationSuggestion(e){return[{too_small:"CSS selector cannot be empty",invalid_type:"Selector must be a string",required:"CSS selector is required"}[e]||"Check input format and types"]}}new xr,new Cr,new Ar,new Tr;const Or={name:"me",category:"Reference",evaluatesTo:"Element",evaluate:async e=>e.me instanceof HTMLElement?e.me:null,validate:ar},Lr={name:"you",category:"Reference",evaluatesTo:"Element",evaluate:async e=>e.you instanceof HTMLElement?e.you:null,validate:ar},Pr={name:"it",category:"Reference",evaluatesTo:"Any",evaluate:async e=>e.it,validate:ar},Nr={name:"its",category:"Reference",evaluatesTo:"Any",evaluate:async e=>e.it,validate:ar},Ir={name:"result",category:"Reference",evaluatesTo:"Any",evaluate:async e=>e.result,validate:ar},Rr={name:"querySelector",category:"Reference",evaluatesTo:"Element",async evaluate(e,...t){const[r]=t;if("string"!=typeof r)throw Error("querySelector requires a string selector");return document.querySelector(r)},validate:e=>sr(e,"querySelector","selector")},jr={name:"querySelectorAll",category:"Reference",evaluatesTo:"Array",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("querySelectorAll requires a string selector");const n=document.querySelectorAll(r);return Array.from(n)},validate:e=>sr(e,"querySelectorAll","selector")},_r={name:"getElementById",category:"Reference",evaluatesTo:"Element",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("getElementById requires a string ID");return document.getElementById(r)},validate:e=>sr(e,"getElementById","ID")},qr={name:"getElementsByClassName",category:"Reference",evaluatesTo:"Array",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("getElementsByClassName requires a string class name");const n=document.getElementsByClassName(r);return Array.from(n)},validate:e=>sr(e,"getElementsByClassName","className")},Mr={name:"closest",category:"Reference",evaluatesTo:"Element",async evaluate(e,...t){let r=t[0];if(r&&"object"==typeof r&&"type"in r){const e=r;"identifier"===e.type&&e.name?r=e.name:"literal"===e.type&&"string"==typeof e.value&&(r=e.value)}if("string"!=typeof r)throw Error("closest requires a string selector");return e.me?e.me.closest(r):null},validate(e){if(1!==e.length)return"closest requires exactly 1 argument (selector)";const t=e[0];return"string"==typeof t||t&&"object"==typeof t&&"type"in t&&("identifier"===t.type||"literal"===t.type)?null:"closest selector must be a string or identifier"}},$r={name:"parent",category:"Reference",evaluatesTo:"Element",evaluate:async e=>e.me?e.me.parentElement:null,validate:ar},Vr={name:"window",category:"Reference",evaluatesTo:"Object",evaluate:async e=>window,validate:ar},Dr={name:"document",category:"Reference",evaluatesTo:"Object",evaluate:async e=>document,validate:ar},Br={name:"elementWithSelector",category:"Reference",evaluatesTo:"Array",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("Selector must be a string");const n=document.querySelectorAll(r);return Array.from(n)},validate:e=>sr(e,"elementWithSelector","selector")},Fr={name:"styleRef",category:"Reference",evaluatesTo:"String",async evaluate(e,...t){const r=t[0],n=t[1];if("string"!=typeof r)throw Error("StyleRef requires a string property name");const s=n||e.me;if(s&&s instanceof HTMLElement){if(r.startsWith("computed-")){const e=r.substring(9);return getComputedStyle(s).getPropertyValue(e)||""}return s.style.getPropertyValue(r)||void 0}},validate:e=>lr(e,1,2,"styleRef","property, optional element")??nr(e,0,"styleRef","property")??(2===e.length&&e[1]&&"object"!=typeof e[1]?"styleRef element must be an HTMLElement":null)},zr={name:"possessiveStyleRef",category:"Reference",evaluatesTo:"String",async evaluate(e,...t){const r=t[0],n=t[1];if("string"!=typeof r||"string"!=typeof n)throw Error("Possessive styleRef requires possessor and property strings");let s=null;if("my"===r&&e.me?s=e.me instanceof HTMLElement?e.me:null:"its"===r&&e.it&&(s=e.it instanceof HTMLElement?e.it:null),s){if(n.startsWith("computed-")){const e=n.substring(9);return getComputedStyle(s).getPropertyValue(e)||""}return s.style.getPropertyValue(n)||void 0}},validate:e=>rr(e,2,"possessiveStyleRef","possessor, property")??nr(e,0,"possessiveStyleRef","possessor")??nr(e,1,"possessiveStyleRef","property")},Hr={name:"ofStyleRef",category:"Reference",evaluatesTo:"String",async evaluate(e,...t){const r=t[0],n=t[1];if("string"!=typeof r||"string"!=typeof n)throw Error("Of styleRef requires property and reference strings");let s=null;if("me"===n&&e.me?s=e.me instanceof HTMLElement?e.me:null:"it"===n&&e.it&&(s=e.it instanceof HTMLElement?e.it:null),s){if(r.startsWith("computed-")){const e=r.substring(9);return getComputedStyle(s).getPropertyValue(e)||""}return s.style.getPropertyValue(r)||void 0}},validate:e=>rr(e,2,"ofStyleRef","property, reference")??nr(e,0,"ofStyleRef","property")??nr(e,1,"ofStyleRef","reference")},Ur={me:Or,you:Lr,it:Pr,its:Nr,result:Ir,querySelector:Rr,querySelectorAll:jr,getElementById:_r,getElementsByClassName:qr,closest:Mr,parent:$r,window:Vr,document:Dr,elementWithSelector:Br,styleRef:Fr,possessiveStyleRef:zr,ofStyleRef:Hr};var Wr=Object.freeze({__proto__:null,CSSSelectorExpression:Tr,ItExpression:Ar,MeExpression:xr,YouExpression:Cr,classExpression:qr,closestExpression:Mr,createItExpression:function(){return new Ar},createMeExpression:function(){return new xr},createYouExpression:function(){return new Cr},documentExpression:Dr,elementWithSelectorExpression:Br,idExpression:_r,itExpression:Pr,itsExpression:Nr,meExpression:Or,ofStyleRefExpression:Hr,parentExpression:$r,possessiveStyleRefExpression:zr,querySelectorAllExpression:jr,querySelectorExpression:Rr,referencesExpressions:Ur,resultExpression:Ir,styleRefExpression:Fr,windowExpression:Vr,youExpression:Lr});class Jr{constructor(e=100,t=5e3){this.maxSize=e,this.ttl=t,this.cache=new Map,this.accessOrder=new Map,this.accessCounter=0}get(e){const t=this.cache.get(e);if(t){if(Date.now()-t.timestamp<=this.ttl)return t.accessCount++,this.accessOrder.set(e,++this.accessCounter),t.result;this.delete(e)}}set(e,t){this.maxSize>this.cache.size||this.cache.has(e)||this.evictLRU();const r={result:t,timestamp:Date.now(),accessCount:1};this.cache.set(e,r),this.accessOrder.set(e,++this.accessCounter)}delete(e){return this.accessOrder.delete(e),this.cache.delete(e)}clear(){this.cache.clear(),this.accessOrder.clear(),this.accessCounter=0}size(){return this.cache.size}evictLRU(){let e,t=1/0;for(const[r,n]of this.accessOrder)t>n&&(t=n,e=r);void 0!==e&&this.delete(e)}getStats(){const e=Array.from(this.cache.values()),t=Date.now();return{size:this.cache.size,maxSize:this.maxSize,hitRate:e.length>0?e.filter(e=>e.accessCount>1).length/e.length:0,avgAge:e.length>0?e.reduce((e,r)=>e+(t-r.timestamp),0)/e.length:0,totalAccesses:e.reduce((e,t)=>e+t.accessCount,0)}}}const Kr=new class{constructor(){this.domQueryCache=new Jr(200,3e3),this.exprResultCache=new Jr(500,2e3),this.cssMatchCache=new Jr(100,5e3),this.formValueCache=new Jr(50,1e3),this.hits=0,this.misses=0}querySelector(e){const t="querySelector:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=document.querySelector(e);return this.domQueryCache.set(t,n),n}querySelectorAll(e){const t="querySelectorAll:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=Array.from(document.querySelectorAll(e));return this.domQueryCache.set(t,n),n}getElementById(e){const t="getElementById:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=document.getElementById(e);return this.domQueryCache.set(t,n),n}getElementsByClassName(e){const t="getElementsByClassName:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=Array.from(document.getElementsByClassName(e));return this.domQueryCache.set(t,n),n}matches(e,t){const r=`matches:${this.getElementCacheKey(e)}:${t}`,n=this.cssMatchCache.get(r);if(void 0!==n)return this.hits++,n;this.misses++;const s=e.matches(t);return this.cssMatchCache.set(r,s),s}getExpressionResult(e){const t=this.exprResultCache.get(e);if(void 0!==t)return this.hits++,t;this.misses++}setExpressionResult(e,t){this.exprResultCache.set(e,t)}getFormValue(e){const t=this.getElementCacheKey(e),r=this.formValueCache.get("formValue:"+t);if(void 0!==r)return this.hits++,r;this.misses++}setFormValue(e,t){const r=this.getElementCacheKey(e);this.formValueCache.set("formValue:"+r,t)}invalidateElementCache(e){const t=this.getElementCacheKey(e);for(const e of[this.domQueryCache,this.cssMatchCache,this.formValueCache])for(const r of Array.from(e.cache.keys()))"string"==typeof r&&r.includes(t)&&e.delete(r)}invalidateAll(){this.domQueryCache.clear(),this.exprResultCache.clear(),this.cssMatchCache.clear(),this.formValueCache.clear(),this.hits=0,this.misses=0}getElementCacheKey(e){if(e.id)return"#"+e.id;const t=Array.from(e.classList).sort().join("."),r=this.getElementPosition(e);return`${e.tagName.toLowerCase()}${t?"."+t:""}@${r}`}getElementPosition(e){return""+Array.from(e.parentElement?.children||[]).indexOf(e)}getPerformanceStats(){const e=this.hits+this.misses;return{hits:this.hits,misses:this.misses,hitRate:Math.round(100*(e>0?this.hits/e*100:0))/100,domQueryCache:this.domQueryCache.getStats(),exprResultCache:this.exprResultCache.getStats(),cssMatchCache:this.cssMatchCache.getStats(),formValueCache:this.formValueCache.getStats()}}cleanup(){const e=Date.now();[this.domQueryCache,this.exprResultCache,this.cssMatchCache,this.formValueCache].forEach(t=>{Array.from(t.cache.entries()).forEach(([r,n])=>{e-n.timestamp>t.ttl&&t.delete(r)})})}};"undefined"!=typeof window&&setInterval(()=>{Kr.cleanup()},1e4);const Yr=new class{constructor(){this.metrics={tokenizationTime:0,evaluationTime:0,cacheHitRate:0,memoryUsage:0,domOperations:0},this.startTimes=new Map}startTimer(e){this.startTimes.set(e,performance.now())}endTimer(e){const t=this.startTimes.get(e);if(t){const r=performance.now()-t;return this.startTimes.delete(e),r}return 0}recordTokenization(e){this.metrics.tokenizationTime+=e}recordEvaluation(e){this.metrics.evaluationTime+=e}updateCacheMetrics(){const e=Kr.getPerformanceStats();this.metrics.cacheHitRate=e.hitRate}getMetrics(){return this.updateCacheMetrics(),{...this.metrics}}reset(){this.metrics={tokenizationTime:0,evaluationTime:0,cacheHitRate:0,memoryUsage:0,domOperations:0}}};function Gr(){Kr.cleanup(),Yr.getMetrics().memoryUsage>52428800&&Yr.reset()}let Xr=null;function Zr(e,t){if("number"==typeof e){if(!Number.isFinite(e))throw Error(`${t} must be a finite number, got ${e}`);return e}if("string"==typeof e){const r=e.trim();if(""===r)return 0;const n=parseFloat(r);if(isNaN(n))throw Error(`${t} cannot be converted to number: "${e}"`);return n}if("boolean"==typeof e)return e?1:0;if(null==e)return 0;if("object"==typeof e&&null!==e){if(Array.isArray(e)&&1===e.length){const r=e[0];if(Array.isArray(r))throw Error(t+" is a nested array, cannot convert to number");return Zr(r,t)}if("string"==typeof e.textContent||"value"in e){const t=e.value??e.textContent;if(null!=t){const e=(t+"").trim();if(""===e)return 0;const r=parseFloat(e);if(!isNaN(r))return r}}const r=e.valueOf();if("number"==typeof r&&Number.isFinite(r))return r}throw Error(`${t} cannot be converted to number: ${typeof e}`)}function Qr(e){if("number"==typeof e)return Number.isFinite(e)?e:null;if("string"==typeof e){const t=e.trim();if(""===t)return 0;const r=parseFloat(t);return isNaN(r)?null:r}return"boolean"==typeof e?e?1:0:null==e?0:null}function en(e,t,r){if("==="===r)return e===t;if("!=="===r)return e!==t;if(null==e||null==t)return function(e,t,r){if(null==e&&null==t)switch(r){case"==":case">=":case"<=":return!0;default:return!1}switch(r){case"==":case">":case"<":case">=":case"<=":default:return!1;case"!=":return!0}}(e,t,r);const[n,s]=function(e,t){if("number"==typeof e&&"number"==typeof t)return[e,t];if("string"==typeof e&&"string"==typeof t){const r=parseFloat(e),n=parseFloat(t);return isNaN(r)||isNaN(n)?[e,t]:[r,n]}const r=Qr(e),n=Qr(t);return null!==r&&null!==n?[r,n]:[e+"",t+""]}(e,t);switch(r){case">":return n>s;case"<":return s>n;case">=":return n>=s;case"<=":return s>=n;case"==":return tn(e,t);case"!=":return!tn(e,t);default:return!1}}function tn(e,t){if(e===t)return!0;if(typeof e==typeof t)return("string"==typeof e||"number"==typeof e)&&e===t;if("number"==typeof e&&"string"==typeof t){const r=parseFloat(t);return!isNaN(r)&&e===r}if("string"==typeof e&&"number"==typeof t){const r=parseFloat(e);return!isNaN(r)&&r===t}return"boolean"==typeof e?tn(e?1:0,t):"boolean"==typeof t?tn(e,t?1:0):e+""==t+""}function rn(e,t,r,n,s,i=!0,a){return t&&"object"==typeof t&&"evaluationHistory"in t&&Array.isArray(t.evaluationHistory)&&t.evaluationHistory.push({expressionName:e.name,category:e.category,input:r,output:n,timestamp:s,duration:Date.now()-s,success:i,...void 0!==a&&{error:a}}),n}"undefined"!=typeof window&&function(e=3e4){Xr&&clearInterval(Xr),Xr=setInterval(Gr,e)}();const nn=gr({left:br().describe("Left operand value"),right:br().describe("Right operand value")}).strict(),sn=gr({operand:br().describe("Operand value to negate")}).strict();class an extends Er{constructor(){super(...arguments),this.name="and",this.category="Logical",this.syntax="left and right",this.description="Logical AND operation with comprehensive boolean type coercion",this.inputSchema=nn,this.outputType="Boolean",this.metadata={category:"Logical",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.toBoolean(t.left);if(!s)return this.trackSimple(e,r,!0,"boolean"),this.success(!1,"boolean");const i=this.toBoolean(t.right),a=s&&i;return this.trackSimple(e,r,!0,"boolean"),this.success(a,"boolean")}catch(t){return this.trackSimple(e,r,!1),this.failure("AndExpressionError","runtime-error","Logical AND operation failed: "+(t instanceof Error?t.message:t+""),"AND_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid AND operation input: "+e.message,suggestions:[]}))??[],suggestions:["Provide both left and right operands","Ensure operands are valid values"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}class on extends Er{constructor(){super(...arguments),this.name="or",this.category="Logical",this.syntax="left or right",this.description="Logical OR operation with comprehensive boolean type coercion",this.inputSchema=nn,this.outputType="Boolean",this.metadata={category:"Logical",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.toBoolean(t.left);if(s)return this.trackSimple(e,r,!0,"boolean"),this.success(!0,"boolean");const i=this.toBoolean(t.right),a=s||i;return this.trackSimple(e,r,!0,"boolean"),this.success(a,"boolean")}catch(t){return this.trackSimple(e,r,!1),this.failure("OrExpressionError","runtime-error","Logical OR operation failed: "+(t instanceof Error?t.message:t+""),"OR_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid OR operation input: "+e.message,suggestions:[]}))??[],suggestions:["Provide both left and right operands","Ensure operands are valid values"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}class ln extends Er{constructor(){super(...arguments),this.name="not",this.category="Logical",this.syntax="not operand",this.description="Logical NOT operation with comprehensive boolean type coercion",this.inputSchema=sn,this.outputType="Boolean",this.metadata={category:"Logical",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=!this.toBoolean(t.operand);return this.trackSimple(e,r,!0,"boolean"),this.success(s,"boolean")}catch(t){return this.trackSimple(e,r,!1),this.failure("NotExpressionError","runtime-error","Logical NOT operation failed: "+(t instanceof Error?t.message:t+""),"NOT_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid NOT operation input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a single operand","Ensure operand is a valid value"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}function cn(){return new an}function un(){return new on}function dn(){return new ln}function mn(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType}cn(),un(),dn();const pn=vr([br(),br()]),hn=vr([br(),hr()]),fn={name:"equals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["is","==","equals"],async evaluate(e,t,r){const n=Date.now();try{return rn(this,e,[t,r],t==r,n)}catch(s){throw rn(this,e,[t,r],!1,n,!1,s instanceof Error?s:Error(s+"")),s}},validate:e=>ir(e,"equals"),inputSchema:pn,metadata:{category:"Logical",complexity:"simple",sideEffects:[],dependencies:[],returnTypes:["Boolean"],examples:[{input:"value is 5",description:"Check if value equals 5 using loose equality",expectedOutput:!0,context:{result:5}},{input:'"5" == 5',description:'String "5" equals number 5 with type coercion',expectedOutput:!0}],relatedExpressions:["strictEquals","notEquals"],performance:{averageTime:.001,complexity:"O(1)"}},documentation:{summary:"Compares two values for loose equality, allowing type coercion",parameters:[{name:"left",type:"unknown",description:"Left operand for comparison",optional:!1,examples:["5",'"hello"',"true","null"]},{name:"right",type:"unknown",description:"Right operand for comparison",optional:!1,examples:["5",'"hello"',"true","null"]}],returns:{type:"Boolean",description:"True if values are loosely equal, false otherwise",examples:["true","false"]},examples:[{title:"Basic equality check",code:"if my.value is 10",explanation:"Check if element value equals 10",output:"Boolean result"},{title:"Type coercion",code:'if "5" == 5',explanation:'String "5" equals number 5 with automatic type conversion',output:"true"},{title:"Null checks",code:"if value is null",explanation:"Check if value is null or undefined",output:"Boolean result"}],seeAlso:["strictEquals","notEquals","matches"],tags:["comparison","equality","logic","type-coercion"]}},yn={name:"strictEquals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["==="],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=t===r;return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"strictEquals")},gn={name:"notEquals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["!=","is not","does not equal"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=t!=r;return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"notEquals")},vn={name:"strictNotEquals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["!=="],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=t!==r;return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"strictNotEquals")},bn={name:"lessThan",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:["<","is less than"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=en(t,r,"<");return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"lessThan")},wn={name:"lessThanOrEqual",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:["<=","is less than or equal to"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=en(t,r,"<=");return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"lessThanOrEqual")},kn={name:"greaterThan",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:[">","is greater than"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=en(t,r,">");return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"greaterThan")},En={name:"greaterThanOrEqual",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:[">=","is greater than or equal to"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=en(t,r,">=");return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"greaterThanOrEqual")},xn={name:"and",category:"Logical",evaluatesTo:"Boolean",precedence:6,associativity:"Left",operators:["and","&&"],async evaluate(e,t,r){const n=Date.now();try{return rn(this,e,[t,r],t&&r,n)}catch(s){throw rn(this,e,[t,r],!1,n,!1,s instanceof Error?s:Error(s+"")),s}},validate:e=>ir(e,"and"),inputSchema:pn,metadata:{category:"Logical",complexity:"simple",sideEffects:[],dependencies:[],returnTypes:["Boolean"],examples:[{input:"true and false",description:"Logical AND of boolean values",expectedOutput:!1},{input:"name and age",description:"Both name and age must be truthy",expectedOutput:!0,context:{variables:new Map([["name","John"],["age",25]])}}],relatedExpressions:["or","not"],performance:{averageTime:.001,complexity:"O(1)"}},documentation:{summary:"Logical AND operation that returns true only if both operands are truthy",parameters:[{name:"left",type:"unknown",description:"Left operand (evaluated for truthiness)",optional:!1,examples:["true","name","5",'"hello"']},{name:"right",type:"unknown",description:"Right operand (evaluated for truthiness)",optional:!1,examples:["false","age","0",'""']}],returns:{type:"Boolean",description:"True if both operands are truthy, false otherwise",examples:["true","false"]},examples:[{title:"Form validation",code:"if name and email",explanation:"Check if both name and email have values",output:"Boolean result"},{title:"Multiple conditions",code:"if age > 18 and hasLicense",explanation:"Combine multiple conditions",output:"Boolean result"},{title:"Short-circuit evaluation",code:"if element and element.value",explanation:"Check element exists before accessing properties",output:"Boolean result"}],seeAlso:["or","not","exists"],tags:["logic","boolean","conditions","validation"]}},Cn={name:"or",category:"Logical",evaluatesTo:"Boolean",precedence:5,associativity:"Left",operators:["or","||"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=t||r;return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"or")},An={name:"not",category:"Logical",evaluatesTo:"Boolean",precedence:15,associativity:"Right",operators:["not","!"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=!t;return r&&rn(this,e,[t],s,n),s},validate:e=>rr(e,1,"not","operand")},Sn={name:"isEmpty",category:"Logical",evaluatesTo:"Boolean",operators:["is empty","isEmpty"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0;let s;return s=null==t||(_t(t)||Array.isArray(t)||t instanceof NodeList?0===t.length:!(t instanceof Node||t instanceof Element||!$t(t)||0!==Object.keys(t).length)),r&&rn(this,e,[t],s,n),s},validate:e=>rr(e,1,"isEmpty","value")},Tn={name:"no",category:"Logical",evaluatesTo:"Boolean",operators:["no"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0;let s;return s=null==t||!1===t||(Array.isArray(t)||t instanceof NodeList?0===t.length:!(_t(t)||t instanceof Node||t instanceof Element||!$t(t)||0!==Object.keys(t).length)),r&&rn(this,e,[t],s,n),s},validate:e=>rr(e,1,"no","value")},On={name:"isNotEmpty",category:"Logical",evaluatesTo:"Boolean",operators:["is not empty","isNotEmpty"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=!await Sn.evaluate(e,t);return r&&rn(this,e,[t],s,n),s},validate:e=>rr(e,1,"isNotEmpty","value")},Ln={name:"exists",category:"Logical",evaluatesTo:"Boolean",operators:["exists"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=null!=t;return r&&rn(this,e,[t],s,n),s},validate:e=>rr(e,1,"exists","value")},Pn={name:"doesNotExist",category:"Logical",evaluatesTo:"Boolean",operators:["does not exist","doesNotExist"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=null==t;return r&&rn(this,e,[t],s,n),s},validate:e=>rr(e,1,"doesNotExist","value")},Nn={name:"contains",category:"Logical",evaluatesTo:"Boolean",operators:["contains","includes","include"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0;let i;if(t&&r){if(mn(t)&&mn(r))return i=t.contains(r),n&&rn(this,e,[t,r],i,s),i;if(_t(t)&&t.match(/^[.#][\w-]+$/)){const a=document.querySelector(t);if(a&&mn(r))return i=a.contains(r),n&&rn(this,e,[t,r],i,s),i;if(a&&_t(r)&&r.match(/^[.#][\w-]+$/)){const o=document.querySelector(r);return i=!!o&&a.contains(o),n&&rn(this,e,[t,r],i,s),i}}if(_t(r)&&r.match(/^[.#][\w-]+$/)&&mn(t)){const a=document.querySelector(r);return i=!!a&&t.contains(a),n&&rn(this,e,[t,r],i,s),i}}return i=_t(t)&&_t(r)||Array.isArray(t)?t.includes(r):"undefined"!=typeof NodeList&&t instanceof NodeList?Array.from(t).includes(r):!(!$t(t)||!_t(r))&&r in t,n&&rn(this,e,[t,r],i,s),i},validate:e=>rr(e,2,"contains","container, value")},In={name:"doesNotContain",category:"Logical",evaluatesTo:"Boolean",operators:["does not contain","doesNotContain","does not include","doesNotInclude"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=!await Nn.evaluate(e,t,r);return n&&rn(this,e,[t,r],i,s),i},validate:e=>rr(e,2,"doesNotContain","container, value")},Rn={name:"startsWith",category:"Logical",evaluatesTo:"Boolean",operators:["starts with","startsWith"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=!(!_t(t)||!_t(r))&&t.startsWith(r);return n&&rn(this,e,[t,r],i,s),i},validate:e=>rr(e,2,"startsWith","str, prefix")},jn={name:"endsWith",category:"Logical",evaluatesTo:"Boolean",operators:["ends with","endsWith"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=!(!_t(t)||!_t(r))&&t.endsWith(r);return n&&rn(this,e,[t,r],i,s),i},validate:e=>rr(e,2,"endsWith","str, suffix")},_n={name:"matches",category:"Logical",evaluatesTo:"Boolean",operators:["matches"],async evaluate(e,t,r){const n=Date.now();try{let s;if(t instanceof Element&&_t(r)){const e=r;if(e.startsWith(".")||e.startsWith("#")||e.startsWith(":")||e.startsWith("[")||/^[a-zA-Z][\w-]*$/.test(e))try{s=function(e,t){return Kr.matches(e,t)}(t,e)}catch(e){s=!1}else s=!1}else if(_t(t)&&_t(r)){const e=t,n=r;try{s=(n.startsWith("/")&&n.endsWith("/")?RegExp(n.slice(1,-1)):RegExp(n)).test(e)}catch(t){s=e.includes(n)}}else s=!1;return rn(this,e,[t,r],s,n)}catch(s){throw rn(this,e,[t,r],!1,n,!1,s instanceof Error?s:Error(s+"")),s}},validate:e=>rr(e,2,"matches","element, selector"),inputSchema:hn,metadata:{category:"Logical",complexity:"medium",sideEffects:["dom-query"],dependencies:[],returnTypes:["Boolean"],examples:[{input:'element matches ".active"',description:"Check if element has active class",expectedOutput:!0},{input:'text matches "/^hello/"',description:'Check if text starts with "hello" using regex',expectedOutput:!0,context:{variables:new Map([["text","hello world"]])}}],relatedExpressions:["contains","startsWith","endsWith"],performance:{averageTime:.5,complexity:"O(n)"}},documentation:{summary:"Tests if element matches CSS selector or string matches regex pattern",parameters:[{name:"element",type:"Element | string",description:"DOM element or string to test",optional:!1,examples:["<div>",'"hello world"',"me","target"]},{name:"selector",type:"string",description:"CSS selector or regex pattern to match against",optional:!1,examples:['".active"','"#navbar"','"/^hello/"','"\\\\d+"']}],returns:{type:"Boolean",description:"True if element matches selector/pattern",examples:["true","false"]},examples:[{title:"CSS class matching",code:'if me matches ".active"',explanation:'Check if current element has "active" class',output:"Boolean result"},{title:"Attribute matching",code:'if target matches "[data-role=\\"button\\"]"',explanation:"Check if element has specific data attribute",output:"Boolean result"},{title:"Regex pattern matching",code:'if email matches "/^[^@]+@[^@]+\\\\.[^@]+$/"',explanation:"Validate email format with regex",output:"Boolean result"},{title:"Complex CSS selector",code:'if element matches ".card:hover .button"',explanation:"Match complex CSS selector with pseudo-classes",output:"Boolean result"}],seeAlso:["contains","startsWith","endsWith","querySelector"],tags:["pattern","css","regex","validation","dom"]}},qn={name:"has",category:"Logical",evaluatesTo:"Boolean",operators:["has","have"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0;let i=!1;if(t instanceof Element&&_t(r)){const e=r;e.startsWith(".")?i=t.classList.contains(e.slice(1)):e.startsWith("[")&&e.endsWith("]")&&(i=t.hasAttribute(e.slice(1,-1)))}return n&&rn(this,e,[t,r],i,s),i},validate:e=>rr(e,2,"has","element, selector")},Mn={name:"doesNotHave",category:"Logical",evaluatesTo:"Boolean",operators:["does not have"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=!await qn.evaluate(e,t,r);return n&&rn(this,e,[t,r],i,s),i},validate:e=>rr(e,2,"doesNotHave","element, selector")},$n={equals:fn,strictEquals:yn,notEquals:gn,strictNotEquals:vn,lessThan:bn,lessThanOrEqual:wn,greaterThan:kn,greaterThanOrEqual:En,and:xn,or:Cn,not:An,no:Tn,isEmpty:Sn,isNotEmpty:On,exists:Ln,doesNotExist:Pn,contains:Nn,doesNotContain:In,startsWith:Rn,endsWith:jn,matches:_n,has:qn,doesNotHave:Mn};var Vn=Object.freeze({__proto__:null,AndExpression:an,NotExpression:ln,OrExpression:on,andExpression:xn,containsExpression:Nn,createAndExpression:cn,createNotExpression:dn,createOrExpression:un,doesNotContainExpression:In,doesNotExistExpression:Pn,doesNotHaveExpression:Mn,endsWithExpression:jn,equalsExpression:fn,existsExpression:Ln,greaterThanExpression:kn,greaterThanOrEqualExpression:En,hasExpression:qn,isEmptyExpression:Sn,isNotEmptyExpression:On,lessThanExpression:bn,lessThanOrEqualExpression:wn,logicalExpressions:$n,matchesExpression:_n,noExpression:Tn,notEqualsExpression:gn,notExpression:An,orExpression:Cn,startsWithExpression:Rn,strictEqualsExpression:yn,strictNotEqualsExpression:vn});function Dn(e,t,r,n,s="runtime-error"){return{success:!1,error:{name:e+"ConversionError",type:s,message:r,code:t,suggestions:n}}}function Bn(e,t){return{success:!0,value:e,type:t}}function Fn(e,t){return`${e}: ${t instanceof Error?t.message:t+""}`}const zn={Array:(e,t)=>{try{return Array.isArray(e)?Bn(e,"array"):e instanceof NodeList?Bn(Array.from(e),"array"):Bn(null==e?[]:[e],"array")}catch(e){return Dn("Array","ARRAY_CONVERSION_FAILED",Fn("Failed to convert value to Array",e),["Check if value is iterable","Ensure value is not circular reference"])}},String:(e,t)=>{try{return null==e?Bn("","string"):_t(e)?Bn(e,"string"):$t(e)?Bn(JSON.stringify(e),"string"):Bn(e+"","string")}catch(e){return Dn("String","STRING_CONVERSION_FAILED",Fn("Failed to convert value to String",e),["Check if object has circular references","Ensure value is serializable"])}},Boolean:(e,t)=>{try{if(Mt(e))return Bn(e,"boolean");if(null==e)return Bn(!1,"boolean");if(_t(e)){const t=e.toLowerCase().trim();return Bn("false"!==t&&"0"!==t&&""!==t,"boolean")}return qt(e)?Bn(0!==e&&!isNaN(e),"boolean"):Bn(!!e,"boolean")}catch(e){return Dn("Boolean","BOOLEAN_CONVERSION_FAILED",Fn("Failed to convert value to Boolean",e),["Use explicit true/false values","Check for unexpected data types"])}},Number:(e,t)=>{try{if(qt(e))return Bn(e,"number");if(null==e)return Bn(0,"number");const t=Number(e);return isNaN(t)?Dn("Number","INVALID_NUMBER",`Cannot convert "${e}" to a valid number`,["Check if value contains non-numeric characters","Use a valid numeric format"],"invalid-argument"):Bn(t,"number")}catch(e){return Dn("Number","NUMBER_CONVERSION_FAILED",Fn("Failed to convert value to Number",e),["Ensure value is convertible to number","Check for special characters"])}},Int:(e,t)=>{const r=zn.Number(e,t);return r.success?Bn(Math.trunc(r.value),"number"):r},Float:(e,t)=>{const r=zn.Number(e,t);return r.success?Bn(parseFloat(""+r.value),"number"):r},Date:(e,t)=>{try{if(e instanceof Date)return Bn(e,"object");if(null==e)return Bn(new Date(""),"object");if(_t(e)&&/^\d{4}-\d{2}-\d{2}$/.test(e)){const[t,r,n]=e.split("-").map(Number);return Bn(new Date(t,r-1,n),"object")}const t=new Date(e);return isNaN(t.getTime())?Dn("Date","INVALID_DATE",`Cannot convert "${e}" to a valid date`,["Use ISO 8601 format (YYYY-MM-DD)","Check date string format","Ensure date values are valid"],"invalid-argument"):Bn(t,"object")}catch(e){return Dn("Date","DATE_CONVERSION_FAILED",Fn("Failed to convert value to Date",e),["Check date format","Ensure value is a valid date string or timestamp"])}},JSON:(e,t)=>{try{return Bn(JSON.stringify(e),"string")}catch(e){return Dn("JSON","JSON_STRINGIFY_FAILED",Fn("Failed to convert value to JSON",e),["Check for circular references","Ensure all properties are serializable","Remove functions and undefined values"])}},Object:(e,t)=>{try{if($t(e))return Bn(e,"object");if(_t(e))try{return Bn(JSON.parse(e),"object")}catch(e){return Dn("Object","JSON_PARSE_FAILED",Fn("Cannot parse JSON string",e),["Check JSON syntax","Ensure proper escaping of quotes","Validate JSON format"],"syntax-error")}return Bn({},"object")}catch(e){return Dn("Object","OBJECT_CONVERSION_FAILED",Fn("Failed to convert value to Object",e),["Ensure value is valid JSON string or object","Check for syntax errors"])}},Values:(e,t)=>{try{if(e instanceof HTMLFormElement)return Bn(function(e){const t={};return e.querySelectorAll("input, select, textarea").forEach(e=>{const r=e;if(r.name){const e=Jn(r);void 0!==e&&(void 0!==t[r.name]?(Array.isArray(t[r.name])||(t[r.name]=[t[r.name]]),t[r.name].push(e)):t[r.name]=e)}}),t}(e),"object");if(e instanceof HTMLElement){const t=e.querySelectorAll("input, select, textarea"),r={};return t.forEach(e=>{const t=e;if(t.name){const e=Jn(t);void 0!==e&&(r[t.name]=e)}}),Bn(r,"object")}return Bn({},"object")}catch(e){return Dn("FormValues","FORM_VALUES_EXTRACTION_FAILED",Fn("Failed to extract form values",e),["Ensure element is a form or contains form inputs","Check form structure","Verify input names are set"])}}},Hn=gr({value:wr(),type:hr().min(1)});class Un extends Er{constructor(){super(...arguments),this.name="as",this.category="Conversion",this.syntax="value as Type",this.description='Converts values between different types using the "as" keyword',this.outputType="Any",this.inputSchema=Hn,this.metadata={category:"Conversion",complexity:"medium",sideEffects:[],dependencies:[],returnTypes:["Any"],examples:[{input:'"123" as Int',description:"Convert string to integer",expectedOutput:123},{input:"form as Values",description:"Extract form values as object",expectedOutput:{name:"John",age:"25"}},{input:"[1,2,3] as JSON",description:"Convert array to JSON string",expectedOutput:"[1,2,3]"},{input:'"2023-12-25" as Date',description:"Parse date string",expectedOutput:new Date(2023,11,25)}],relatedExpressions:["is","Object","Array"],performance:{averageTime:1,complexity:"O(n)"}},this.documentation={summary:'Converts values between different types using the "as" keyword with comprehensive type safety',parameters:[{name:"value",type:"object",description:"The value to convert",optional:!1,examples:['"123"',"form","[1,2,3]","true","null"]},{name:"type",type:"string",description:"Target conversion type",optional:!1,examples:["Int","String","Boolean","Array","JSON","Object","Date","Values","HTML","Fragment"]}],returns:{type:"object",description:"Structured result with converted value or detailed error information",examples:['{ success: true, value: 123, type: "number" }',"{ success: false, error: { ... } }"]},examples:[{title:"String to number conversion",code:"if my.value as Int > 100",explanation:"Convert form input to integer for comparison",output:"Boolean result"},{title:"Form data extraction",code:"put closest <form /> as Values into result",explanation:"Extract all form values as structured object",output:'{ name: "John", age: "25", ... }'},{title:"Array to JSON serialization",code:"put items as JSON into storage",explanation:"Convert array to JSON string for storage",output:'"[1,2,3]"'},{title:"Date parsing with validation",code:"put my.dateInput as Date into event.detail.date",explanation:"Parse date input with automatic validation",output:"Date object or validation error"},{title:"Boolean conversion with smart parsing",code:'if "false" as Boolean then hide else show',explanation:"Parse string boolean values correctly",output:"false (not true like naive conversion)"}],seeAlso:["is","Values","JSON","Array","Object"],tags:["conversion","types","validation","forms","json","parsing"]}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:{name:"AsExpressionValidationError",type:"validation-error",message:n.errors[0]?.message||"Invalid input",code:"VALIDATION_FAILED",suggestions:n.suggestions}};const{value:s,type:i}=t;if(i.startsWith("Fixed")){const n=i.match(/^Fixed:(\d+)$/),a=n?parseInt(n[1],10):2,o=zn.Number(s,e);if(!o.success)return o;const l={success:!0,value:o.value.toFixed(a),type:"string"};return this.trackPerformance(e,t,l,r),l}let a=zn[i];if(a){const n=a(s,e);return this.trackPerformance(e,t,n,r),n}const o={boolean:"Boolean",bool:"Boolean",string:"String",str:"String",number:"Number",num:"Number",int:"Int",integer:"Int",float:"Float",array:"Array",object:"Object",obj:"Object",date:"Date",json:"JSON"}[i.toLowerCase()];if(o&&(a=zn[o],a)){const n=a(s,e);return this.trackPerformance(e,t,n,r),n}const l={success:!1,error:{name:"UnknownConversionTypeError",type:"validation-error",message:"Unknown conversion type: "+i,code:"UNKNOWN_CONVERSION_TYPE",suggestions:["Use supported types: String, Number, Boolean, Array, Object, Date, JSON, Values","Check type spelling and capitalization","See documentation for complete list of conversion types"]}};return this.trackPerformance(e,t,l,r),l}catch(n){const s={success:!1,error:{name:"AsExpressionError",type:"runtime-error",message:"Conversion failed: "+(n instanceof Error?n.message:n+""),code:"CONVERSION_FAILED",suggestions:["Check value and type compatibility","Ensure value is convertible to target type"]}};return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?{isValid:!0,errors:[],suggestions:[]}:{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:e.message,suggestions:["Expected valid input structure, got: "+e.code]}))??[],suggestions:["Provide both value and type parameters","Ensure type is a non-empty string","Check parameter structure: { value: any, type: string }"]}}catch(e){return this.validationFailure("runtime-error","Validation failed",["Check input structure"])}}}const Wn=gr({value:wr(),type:hr().min(1)});function Jn(e){if(e instanceof HTMLInputElement)switch(e.type){case"checkbox":return e.checked;case"radio":return e.checked?e.value:void 0;case"number":case"range":return e.valueAsNumber;case"date":case"datetime-local":return e.valueAsDate;case"file":return e.files;default:return e.value}return e instanceof HTMLSelectElement&&e.multiple?Array.from(e.selectedOptions).map(e=>e.value):e.value}new Un,new class extends Er{constructor(){super(...arguments),this.name="is",this.category="Conversion",this.syntax="value is Type",this.description="Checks if a value is of a specific type",this.outputType="Boolean",this.inputSchema=Wn,this.metadata={category:"Conversion",complexity:"simple",sideEffects:[],dependencies:[],returnTypes:["Boolean"],examples:[{input:"42 is number",description:"Check if value is a number",expectedOutput:!0},{input:"null is empty",description:"Check if value is empty/null",expectedOutput:!0},{input:"element is Element",description:"Check if value is DOM element",expectedOutput:!0,context:{element:"<div>...</div>"}}],relatedExpressions:["as","empty","exists"],performance:{averageTime:.1,complexity:"O(1)"}},this.documentation={summary:"Checks if a value is of a specific type with comprehensive type detection",parameters:[{name:"value",type:"object",description:"The value to check",optional:!1,examples:["42","null","element",'"text"',"[]"]},{name:"type",type:"string",description:"Type name to check against",optional:!1,examples:["number","string","boolean","array","object","element","empty","null"]}],returns:{type:"object",description:"Boolean result indicating type match",examples:['{ success: true, value: true, type: "boolean" }']},examples:[{title:"Number validation",code:"if my.age is number then proceed",explanation:"Check if form input is valid number",output:"Boolean result"},{title:"Empty check",code:"if result is empty then show message",explanation:"Check if result is null, undefined, or empty",output:"Boolean result"},{title:"Element validation",code:"if target is element then addClass",explanation:"Ensure target is valid DOM element before manipulation",output:"Boolean result"}],seeAlso:["as","empty","exists","null"],tags:["validation","types","checking","guards"]}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:{name:"IsExpressionValidationError",type:"validation-error",message:n.errors[0]?.message||"Invalid input",code:"VALIDATION_FAILED",suggestions:n.suggestions}};const{value:s,type:i}=t,a=i.toLowerCase();let o;switch(a){case"null":o=null===s;break;case"undefined":o=void 0===s;break;case"string":o=_t(s);break;case"number":o=qt(s)&&!isNaN(s);break;case"boolean":o=Mt(s);break;case"object":o=$t(s);break;case"array":o=Array.isArray(s);break;case"function":o=Vt(s);break;case"date":o=s instanceof Date;break;case"element":o=s instanceof Element;break;case"node":o=s instanceof Node;break;case"node-list":o=s instanceof NodeList;break;case"empty":o=null==s||""===s||Array.isArray(s)&&0===s.length||$t(s)&&0===Object.keys(s).length;break;default:o=s?.constructor?.name?.toLowerCase()===a}const l=this.success(o,"boolean");return this.trackPerformance(e,t,l,r),l}catch(n){const s=this.failure("IsExpressionError","type-mismatch","Type check failed: "+(n instanceof Error?n.message:n+""),"TYPE_CHECK_FAILED",["Check type name spelling","Ensure value is accessible"]);return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:e.message,suggestions:["Expected valid input structure, got: "+e.code]}))??[],suggestions:["Provide both value and type parameters","Ensure type is a non-empty string","Check parameter structure: { value: any, type: string }"]}}catch(e){return this.validationFailure("runtime-error","Validation failed",["Check input structure"])}}};const Kn={Array:e=>Array.isArray(e)?e:e instanceof NodeList?Array.from(e):null==e?[]:[e],String:e=>null==e?"":_t(e)?e:$t(e)?JSON.stringify(e):e+"",Boolean:e=>{if(Mt(e))return e;if(null==e)return!1;if(_t(e)){const t=e.toLowerCase().trim();return"false"!==t&&"0"!==t&&""!==t}return qt(e)?0!==e&&!isNaN(e):!!e},Number:e=>{if(qt(e))return e;if(null==e)return 0;const t=Number(e);return isNaN(t)?0:t},Math:e=>{if(qt(e))return e;if(null==e)return 0;const t=(e+"").trim();if(!t)return 0;try{return function(e){if(e=e.replace(/\s/g,""),!/^[0-9+\-*/().]+$/.test(e))throw Error("Invalid characters in math expression");try{const t=Function(`"use strict"; return (${e})`)();if(!qt(t)||!isFinite(t))throw Error("Expression did not evaluate to a finite number");return t}catch(e){throw Error("Math expression evaluation failed: "+(e instanceof Error?e.message:e+""))}}(t)}catch(e){return console.warn("Math conversion failed:",e),0}},Int:e=>{const t=Kn.Number(e);return Math.trunc(t)},Float:e=>{const t=Kn.Number(e);return parseFloat(""+t)},Date:e=>{if(e instanceof Date)return e;if(null==e)return new Date(NaN);if(_t(e)&&/^\d{4}-\d{2}-\d{2}$/.test(e)){const[t,r,n]=e.split("-").map(Number);return new Date(t,r-1,n)}return new Date(e)},JSON:e=>{try{return JSON.stringify(e)}catch(e){return"{}"}},Object:e=>{if($t(e))return e;if(_t(e))try{return JSON.parse(e)}catch(e){return{}}return{}},Fragment:e=>{_t(e)||(e=Kn.String(e));const t=document.createElement("template");return t.innerHTML=e+"",t.content},HTML:e=>_t(e)?e:e instanceof NodeList?Array.from(e).map(e=>e instanceof Element?e.outerHTML:e.textContent||"").join(""):Array.isArray(e)?e.map(e=>e instanceof Element?e.outerHTML:Kn.String(e)).join(""):e instanceof Element?e.outerHTML:Kn.String(e),Values:(e,t)=>{if(e instanceof HTMLFormElement)return Yn(e);if(e instanceof HTMLElement){const t=e.querySelectorAll("input, select, textarea"),r={};return t.forEach(e=>{e.name&&(r[e.name]=Gn(e))}),r}return{}},"Values:Form":(e,t)=>{const r=Kn.Values(e,t);return""+new URLSearchParams(r)},"Values:JSON":(e,t)=>{const r=Kn.Values(e,t);return JSON.stringify(r)}};function Yn(e){const t={};return e.querySelectorAll("input, select, textarea").forEach(e=>{const r=e;if(r.name){const e=Gn(r);void 0!==e&&(void 0!==t[r.name]?(Array.isArray(t[r.name])||(t[r.name]=[t[r.name]]),t[r.name].push(e)):t[r.name]=e)}}),t}function Gn(e){if(e instanceof HTMLInputElement)switch(e.type){case"checkbox":return e.checked;case"radio":return e.checked?e.value:void 0;case"number":case"range":return e.valueAsNumber;case"date":case"datetime-local":return e.valueAsDate;case"file":return e.files;default:return e.value}return e instanceof HTMLSelectElement&&e.multiple?Array.from(e.selectedOptions).map(e=>e.value):e.value}function Xn(e){const t=e.match(/^Fixed(?::(\d+))?$/);return t?{precision:t[1]?parseInt(t[1],10):2}:{}}const Zn={name:"as",category:"Conversion",evaluatesTo:"Any",precedence:20,associativity:"Left",operators:["as"],async evaluate(e,...t){const[r,n]=t;if("string"!=typeof n)throw Error("Conversion type must be a string");if(n.startsWith("Fixed")){const{precision:e}=Xn(n);return Kn.Number(r).toFixed(e||2)}let s=Kn[n];if(s)return s(r,e);const i={boolean:"Boolean",bool:"Boolean",string:"String",str:"String",number:"Number",num:"Number",int:"Int",integer:"Int",float:"Float",array:"Array",object:"Object",obj:"Object",date:"Date",json:"JSON"}[n.toLowerCase()];return i&&(s=Kn[i],s)?s(r,e):(console.warn("Unknown conversion type: "+n),r)},validate:e=>rr(e,2,"as","value, type")??nr(e,1,"as","conversion type")},Qn={name:"is",category:"Conversion",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["is a","is an"],async evaluate(e,...t){const[r,n]=t;if(!_t(n))throw Error("Type check requires a string type");switch(n.toLowerCase()){case"null":return null===r;case"undefined":return void 0===r;case"string":return _t(r);case"number":return qt(r)&&!isNaN(r);case"boolean":return Mt(r);case"object":return $t(r);case"array":return Array.isArray(r);case"function":return Vt(r);case"date":return r instanceof Date;case"element":return r instanceof Element;case"node":return r instanceof Node;case"nodelist":return r instanceof NodeList;case"empty":return null==r||""===r||Array.isArray(r)&&0===r.length||$t(r)&&0===Object.keys(r).length;default:return r?.constructor?.name?.toLowerCase()===n.toLowerCase()}},validate:e=>rr(e,2,"is","value, type")??nr(e,1,"is","type")},es={name:"async",category:"Conversion",evaluatesTo:"Any",precedence:25,associativity:"Right",operators:["async"],evaluate:async(e,t)=>t,validate:e=>rr(e,1,"async","expression")},ts={as:Zn,is:Qn,async:es};var rs=Object.freeze({__proto__:null,AsExpression:Un,asExpression:Zn,asyncExpression:es,conversionExpressions:ts,createAsExpression:function(){return new Un},defaultConversions:Kn,getFormValues:function(e){const t=new FormData(e),r={};for(const[e,n]of t.entries())void 0!==r[e]?(Array.isArray(r[e])||(r[e]=[r[e]]),r[e].push(n)):r[e]=n;return r},getFormValuesProcessed:Yn,getInputValue:Gn,isExpression:Qn,parseFixedPrecision:Xn});const ns={String:"string",Number:"number",Boolean:"boolean",Element:"element",ElementList:"element-list",Array:"array",Object:"object",Promise:"promise",Context:"object",Null:"null",Undefined:"undefined",Any:"object"},ss=gr({collection:br().describe("Collection to operate on (array, NodeList, or string)")}).strict(),is=gr({collection:br().describe("Collection to access"),index:fr().describe("Index position to access")}).strict(),as=gr({collection:br().describe("Collection to select random item from")}).strict();class os extends Er{constructor(){super(...arguments),this.name="first",this.category="Positional",this.syntax="first in collection",this.description="Gets the first element from a collection",this.inputSchema=ss,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection),i=s.length>0?s[0]:void 0,a={success:!0,value:i,type:ns[this.inferEvaluationType(i)]};return this.trackPerformance(e,t,a,r),a}catch(n){const s=this.failure("FirstExpressionError","runtime-error","First operation failed: "+(n instanceof Error?n.message:n+""),"FIRST_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid first input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a collection parameter","Ensure collection is array, NodeList, or string"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}class ls extends Er{constructor(){super(...arguments),this.name="last",this.category="Positional",this.syntax="last in collection",this.description="Gets the last element from a collection",this.inputSchema=ss,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection),i=s.length>0?s[s.length-1]:void 0,a={success:!0,value:i,type:ns[this.inferEvaluationType(i)]};return this.trackPerformance(e,t,a,r),a}catch(n){const s=this.failure("LastExpressionError","runtime-error","Last operation failed: "+(n instanceof Error?n.message:n+""),"LAST_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid last input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a collection parameter","Ensure collection is array, NodeList, or string"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}function cs(){return new os}function us(){return new ls}cs(),us(),new class extends Er{constructor(){super(...arguments),this.name="at",this.category="Positional",this.syntax="collection[index] or collection at index",this.description="Gets element at specific index from a collection",this.inputSchema=is,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection),i=this.normalizeIndex(t.index,s.length),a=i>=0&&s.length>i?s[i]:void 0,o={success:!0,value:a,type:ns[this.inferEvaluationType(a)]};return this.trackPerformance(e,t,o,r),o}catch(n){const s=this.failure("AtExpressionError","runtime-error","At operation failed: "+(n instanceof Error?n.message:n+""),"AT_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid at input: "+e.message,suggestions:[]}))??[],suggestions:["Provide collection and index parameters","Ensure index is a number"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}normalizeIndex(e,t){return 0>e?t+e:e}},new class extends Er{constructor(){super(...arguments),this.name="random",this.category="Positional",this.syntax="random in collection",this.description="Gets a random element from a collection",this.inputSchema=as,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection);if(0===s.length){const n={success:!0,value:void 0,type:"undefined"};return this.trackPerformance(e,t,n,r),n}const i=s[this.getSecureRandomIndex(s.length)],a={success:!0,value:i,type:ns[this.inferEvaluationType(i)]};return this.trackPerformance(e,t,a,r),a}catch(n){const s=this.failure("RandomExpressionError","runtime-error","Random operation failed: "+(n instanceof Error?n.message:n+""),"RANDOM_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid random input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a collection parameter","Ensure collection is array, NodeList, or string"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}getSecureRandomIndex(e){if("undefined"!=typeof crypto&&crypto.getRandomValues){const t=new Uint32Array(1);return crypto.getRandomValues(t),t[0]%e}return Math.floor(Math.random()*e)}};const ds={name:"first",category:"Reference",evaluatesTo:"Any",operators:["first"],async evaluate(e,t){const r=void 0!==t?t:e.it;return null==r?null:Array.isArray(r)||r instanceof NodeList||r instanceof HTMLCollection?r.length>0?r[0]:null:r instanceof Element?r.children.length>0?r.children[0]:null:_t(r)?r.length>0?r[0]:null:$t(r)&&"length"in r&&qt(r.length)&&r.length>0?r[0]:null},validate:e=>or(e,1,"first","collection")},ms={name:"last",category:"Reference",evaluatesTo:"Any",operators:["last"],async evaluate(e,t){const r=void 0!==t?t:e.it;if(null==r)return null;if(Array.isArray(r))return r.length>0?r[r.length-1]:null;if(r instanceof NodeList||r instanceof HTMLCollection)return r.length>0?r[r.length-1]:null;if(r instanceof Element){const e=r.children;return e.length>0?e[e.length-1]:null}return _t(r)?r.length>0?r[r.length-1]:null:$t(r)&&"length"in r&&qt(r.length)&&r.length>0?r[r.length-1]:null},validate:e=>or(e,1,"last","collection")},ps={name:"at",category:"Reference",evaluatesTo:"Any",operators:["at"],async evaluate(e,...t){const[r,n]=t;if(!qt(r))throw Error("Index must be a number");const s=r,i=void 0!==n?n:e.it;if(null==i)return null;if(Array.isArray(i)){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}if(i instanceof NodeList||i instanceof HTMLCollection){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}if(i instanceof Element){const e=i.children,t=0>s?e.length+s:s;return t>=0&&e.length>t?e[t]:null}if(_t(i)){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}if($t(i)&&"length"in i&&qt(i.length)){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}return null},validate:e=>lr(e,1,2,"at","index, optional collection")??function(e){return"number"!=typeof e[0]?"at index must be a number":null}(e)},hs={name:"next",category:"Reference",evaluatesTo:"Element",operators:["next"],async evaluate(e,...t){const[r,n]=t,s=n||e.me;return s&&s instanceof Element?r?ys(s,r):s.nextElementSibling:null},validate:e=>or(e,2,"next","optional selector, optional fromElement")||(1>e.length||null==e[0]||"string"==typeof e[0]?2>e.length||null==e[1]||e[1]instanceof Element?null:"fromElement must be an Element":"selector must be a string")},fs={name:"previous",category:"Reference",evaluatesTo:"Element",operators:["previous","prev"],async evaluate(e,...t){const[r,n]=t,s=n||e.me;return s&&s instanceof Element?r?gs(s,r):s.previousElementSibling:null},validate:e=>or(e,2,"previous","optional selector, optional fromElement")||(1>e.length||null==e[0]||"string"==typeof e[0]?2>e.length||null==e[1]||e[1]instanceof Element?null:"fromElement must be an Element":"selector must be a string")};function ys(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return r;const e=r.querySelector(t);if(e)return e;r=r.nextElementSibling}const n=e.parentElement;return n&&n!==document.documentElement?ys(n,t):null}function gs(e,t){let r=e.previousElementSibling;for(;r;){const e=Array.from(r.querySelectorAll(t)).reverse();if(e.length>0)return e[0];if(r.matches(t))return r;r=r.previousElementSibling}const n=e.parentElement;return n&&n!==document.documentElement?gs(n,t):null}const vs={name:"nextWithin",category:"Reference",evaluatesTo:"Element",operators:["next within"],async evaluate(e,...t){const[r,n,s]=t,i=s||e.me;if(!(i&&i instanceof Element))return null;const a=i.closest(n);return a?ws(i,r,a):null},validate:e=>lr(e,2,3,"nextWithin","selector, withinSelector, optional fromElement")||("string"!=typeof e[0]?"selector must be a string":"string"!=typeof e[1]?"withinSelector must be a string":3>e.length||null==e[2]||e[2]instanceof Element?null:"fromElement must be an Element")},bs={name:"previousWithin",category:"Reference",evaluatesTo:"Element",operators:["previous within"],async evaluate(e,...t){const[r,n,s]=t,i=s||e.me;if(!(i&&i instanceof Element))return null;const a=i.closest(n);return a?ks(i,r,a):null},validate:e=>lr(e,2,3,"previousWithin","selector, withinSelector, optional fromElement")||("string"!=typeof e[0]?"selector must be a string":"string"!=typeof e[1]?"withinSelector must be a string":3>e.length||null==e[2]||e[2]instanceof Element?null:"fromElement must be an Element")};function ws(e,t,r){const n=Array.from(r.querySelectorAll(t)),s=Es(e);for(const e of n)if(Es(e)>s)return e;return null}function ks(e,t,r){const n=Array.from(r.querySelectorAll(t)),s=Es(e);for(let e=n.length-1;e>=0;e--){const t=n[e];if(s>Es(t))return t}return null}function Es(e){let t=0,r=e;for(;r&&r.parentElement;)t+=Array.from(r.parentElement.children).indexOf(r),r=r.parentElement,t+=1e3;return t}const xs={first:ds,last:ms,at:ps,next:hs,previous:fs,nextWithin:vs,previousWithin:bs};var Cs=Object.freeze({__proto__:null,FirstExpression:os,LastExpression:ls,atExpression:ps,createFirstExpression:cs,createLastExpression:us,findNextElementInDOM:ys,findNextElementWithinContainer:ws,findPreviousElementInDOM:gs,findPreviousElementWithinContainer:ks,firstExpression:ds,getElementPosition:Es,lastExpression:ms,nextExpression:hs,nextWithinExpression:vs,positionalExpressions:xs,previousExpression:fs,previousWithinExpression:bs});const As=new Set(["__proto__","constructor","prototype"]),Ss={name:"possessive",category:"Reference",evaluatesTo:"Any",operators:["'s","s"],async evaluate(e,...t){const[r,n]=t;if(null!=r){if("string"!=typeof n)throw Error("Property name must be a string");if(r instanceof Element)return Ut(r,n);if($t(r)){if(As.has(n))return;return r[n]}return r[n]}},validate:e=>rr(e,2,"possessive","element, property")??nr(e,1,"possessive","property name")},Ts={name:"my",category:"Reference",evaluatesTo:"Any",operators:["my"],async evaluate(e,...t){const[r]=t;if(e.me){if("string"!=typeof r)throw Error("Property name must be a string");if(e.me instanceof Element)return Ut(e.me,r);if($t(e.me)){if(As.has(r))return;return e.me[r]}return e.me[r]}},validate:e=>sr(e,"my","property")},Os={name:"its",category:"Reference",evaluatesTo:"Any",operators:["its"],async evaluate(e,...t){const[r]=t;if(null==e.it)return;if("string"!=typeof r)throw Error("Property name must be a string");const n=e.it;if(n instanceof Element)return Ut(n,r);if($t(n)){if(As.has(r))return;return n[r]}return n[r]},validate:e=>sr(e,"its","property")},Ls={name:"your",category:"Reference",evaluatesTo:"Any",operators:["your"],async evaluate(e,...t){const[r]=t;if(e.you){if("string"!=typeof r)throw Error("Property name must be a string");if(e.you instanceof Element)return Ut(e.you,r);if($t(e.you)){if(As.has(r))return;return e.you[r]}return e.you[r]}},validate:e=>sr(e,"your","property")},Ps={name:"of",category:"Reference",evaluatesTo:"Any",operators:["of"],async evaluate(e,...t){const[r,n]=t;if(null!=n){if("string"!=typeof r)throw Error("Property name must be a string");if(n instanceof Element)return Ut(n,r);if($t(n)){if(As.has(r))return;return n[r]}return n[r]}},validate:e=>rr(e,2,"of","property, object")??nr(e,0,"of","property name")},Ns={name:"attribute",category:"Reference",evaluatesTo:"String",operators:["@"],async evaluate(e,...t){const[r,n]=t;if("string"!=typeof r)throw Error("Attribute name must be a string");const s=n||e.me;return s&&s instanceof Element?s.getAttribute(r):null},validate:e=>lr(e,1,2,"attribute","attributeName, optional element")??nr(e,0,"attribute","attribute name")??(2>e.length||null==e[1]||e[1]instanceof Element?null:"attribute element must be an Element")},Is={name:"attributeWithValue",category:"Reference",evaluatesTo:"Boolean",operators:["@="],async evaluate(e,...t){const[r,n,s]=t;if("string"!=typeof r)throw Error("Attribute name must be a string");if("string"!=typeof n)throw Error("Expected value must be a string");const i=s||e.me;return!!(i&&i instanceof Element)&&i.getAttribute(r)===n},validate:e=>lr(e,2,3,"attributeWithValue","attributeName, expectedValue, optional element")??nr(e,0,"attributeWithValue","attribute name")??nr(e,1,"attributeWithValue","expected value")??(3>e.length||null==e[2]||e[2]instanceof Element?null:"attributeWithValue element must be an Element")},Rs={name:"classReference",category:"Reference",evaluatesTo:"Array",operators:["."],async evaluate(e,...t){const[r]=t;if("string"!=typeof r)throw Error("Class name must be a string");const n=r.startsWith(".")?r.slice(1):r,s=document.getElementsByClassName(n);return Array.from(s)},validate:e=>sr(e,"classReference","className")},js={name:"idReference",category:"Reference",evaluatesTo:"Element",operators:["#"],async evaluate(e,...t){const[r]=t;if("string"!=typeof r)throw Error("ID value must be a string");const n=r.startsWith("#")?r.slice(1):r;return document.getElementById(n)},validate:e=>sr(e,"idReference","idValue")},_s={possessive:Ss,my:Ts,its:Os,your:Ls,of:Ps,attribute:Ns,attributeWithValue:Is,classReference:Rs,idReference:js};var qs=Object.freeze({__proto__:null,attributeExpression:Ns,attributeWithValueExpression:Is,classReferenceExpression:Rs,getElementProperty:Ut,idReferenceExpression:js,isAriaAttribute:function(e){return e.startsWith("aria-")||"aria"===e},isDataAttribute:function(e){return e.startsWith("data-")||"data"===e},itsExpression:Os,myExpression:Ts,ofExpression:Ps,possessiveExpression:Ss,propertiesExpressions:_s,yourExpression:Ls});const Ms=gr({value:hr().describe("String literal value")}).strict(),$s=gr({value:fr().describe("Number literal value")}).strict(),Vs=gr({value:yr().describe("Boolean literal value")}).strict(),Ds=gr({left:br().describe("Left operand"),right:br().describe("Right operand")}).strict();class Bs extends Er{constructor(){super(...arguments),this.name="stringLiteral",this.category="Special",this.syntax="\"string\" or 'string'",this.description="String literals with template interpolation support",this.outputType="String",this.inputSchema=Ms,this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid){const t=this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions);return this.trackSimple(e,r,!1),t}let s=t.value;(s.includes("${")||s.includes("$"))&&(s=this.interpolateString(s,e));const i=this.success(s,"string");return this.trackSimple(e,r,!0,s),i}catch(t){return this.trackSimple(e,r,!1),this.failure("StringEvaluationError","runtime-error","String literal evaluation failed: "+(t instanceof Error?t.message:t+""),"STRING_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid string literal input",["Provide a value parameter","Ensure value is a string"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}interpolateString(e,t){let r=e.replace(/\$\{([^}]+)\}/g,(e,r)=>{try{const e=this.resolveExpression(r.trim(),t);return void 0!==e?e+"":""}catch(e){return""}});return r=r.replace(/\$([a-zA-Z_$][a-zA-Z0-9_.$]*)/g,(e,r)=>{try{const e=this.resolveVariable(r,t);return void 0!==e?e+"":""}catch(e){return""}}),r}resolveExpression(e,t){if(e.includes(".")){const r=e.split(".");let n=this.resolveVariable(r[0],t);for(let e=1;r.length>e&&null!=n;e++)n=n[r[e]];return n}return this.resolveVariable(e,t)}resolveVariable(e,t){return"me"===e&&t.me?t.me:"you"===e&&t.you?t.you:"it"===e&&t.it?t.it:"result"===e&&t.result?t.result:t.locals?.has(e)?t.locals.get(e):t.globals?.has(e)?t.globals.get(e):void 0}}class Fs extends Er{constructor(){super(...arguments),this.name="numberLiteral",this.category="Special",this.syntax="123 or 3.14",this.description="Numeric literal with validation",this.inputSchema=$s,this.outputType="Number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);return n.isValid?Number.isFinite(t.value)?(this.trackSimple(e,r,!0,t.value),this.success(t.value,"number")):(this.trackSimple(e,r,!1),this.failure("NumberValidationError","invalid-argument","Number literal must be finite","NUMBER_NOT_FINITE")):(this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions))}catch(t){return this.trackSimple(e,r,!1),this.failure("NumberEvaluationError","runtime-error","Number literal evaluation failed: "+(t instanceof Error?t.message:t+""),"NUMBER_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?Number.isFinite(t.data.value)?this.validationSuccess():this.validationFailure("invalid-argument","Number literal value must be finite",["Use finite numbers only","Avoid Infinity and NaN values"]):this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid number literal input",["Provide a value parameter","Ensure value is a number"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}class zs extends Er{constructor(){super(...arguments),this.name="booleanLiteral",this.category="Special",this.syntax="true or false",this.description="Boolean literal values",this.inputSchema=Vs,this.outputType="Boolean",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);return n.isValid?(this.trackSimple(e,r,!0,t.value),this.success(t.value,"boolean")):(this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions))}catch(t){return this.trackSimple(e,r,!1),this.failure("BooleanEvaluationError","runtime-error","Boolean literal evaluation failed: "+(t instanceof Error?t.message:t+""),"BOOLEAN_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid boolean literal input",["Provide a value parameter","Ensure value is a boolean"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}class Hs extends Er{constructor(){super(...arguments),this.name="addition",this.category="Special",this.syntax="left + right",this.description="Addition of two numeric values",this.inputSchema=Ds,this.outputType="Number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions);const s=Zr(t.left,"left operand")+Zr(t.right,"right operand");return this.trackSimple(e,r,!0,s),this.success(s,"number")}catch(t){return this.trackSimple(e,r,!1),this.failure("AdditionError","runtime-error","Addition failed: "+(t instanceof Error?t.message:t+""),"ADDITION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid addition input",["Provide left and right operands"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}class Us extends Er{constructor(){super(...arguments),this.name="stringConcatenation",this.category="Special",this.syntax="left + right (string concatenation)",this.description="Concatenation of two values into a string",this.inputSchema=Ds,this.outputType="String",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors[0]?.message||"Invalid input","STRING_CONCATENATION_VALIDATION_FAILED",n.suggestions);const s=this.convertToString(t.left)+this.convertToString(t.right);return this.trackSimple(e,r,!0,s),this.success(s,"string")}catch(t){return this.trackSimple(e,r,!1),this.failure("StringConcatenationError","runtime-error",t instanceof Error?t.message:"String concatenation failed","STRING_CONCATENATION_ERROR",["Check that operands can be converted to strings"])}}validate(e){const t=Ds.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid string concatenation input",["Provide left and right operands for concatenation"])}convertToString(e){if(null===e)return"null";if(void 0===e)return"undefined";if(_t(e))return e;if(qt(e))return""+e;if(Mt(e))return""+e;if(e instanceof Date)return""+e;try{return e+""}catch{return"[object Object]"}}}class Ws extends Er{constructor(){super(...arguments),this.name="multiplication",this.category="Special",this.syntax="left * right",this.description="Multiplication of two numeric values",this.inputSchema=Ds,this.outputType="Number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions);const s=Zr(t.left,"left operand")*Zr(t.right,"right operand");return this.trackSimple(e,r,!0,s),this.success(s,"number")}catch(t){return this.trackSimple(e,r,!1),this.failure("MultiplicationError","runtime-error","Multiplication failed: "+(t instanceof Error?t.message:t+""),"MULTIPLICATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid multiplication input",["Provide left and right operands"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}function Js(){return new Bs}function Ks(){return new Fs}function Ys(){return new zs}function Gs(){return new Hs}function Xs(){return new Us}function Zs(){return new Ws}const Qs={stringLiteral:Js(),numberLiteral:Ks(),booleanLiteral:Ys(),addition:Gs(),stringConcatenation:Xs(),multiplication:Zs()};var ei=Object.freeze({__proto__:null,AdditionExpression:Hs,BooleanLiteralExpression:zs,MultiplicationExpression:Ws,NumberLiteralExpression:Fs,StringConcatenationExpression:Us,StringLiteralExpression:Bs,createAdditionExpression:Gs,createBooleanLiteralExpression:Ys,createMultiplicationExpression:Zs,createNumberLiteralExpression:Ks,createStringConcatenationExpression:Xs,createStringLiteralExpression:Js,specialExpressions:Qs});class ti extends er{constructor(){super(),this.registerExpressions()}registerExpressions(){this.registerCategory(Ur),this.registerCategory($n),this.registerCategory(ts),this.registerCategory(xs),this.registerCategory(_s),this.registerCategory(Qs)}}class ri{static toTyped(e){return{me:e.me,it:e.it,you:e.you,result:e.result,...void 0!==e.event&&{event:e.event},variables:e.variables||new Map,locals:e.locals||new Map,globals:e.globals||new Map,...void 0!==e.events&&{events:e.events},meta:e.meta||{},expressionStack:[],evaluationDepth:0,validationMode:"strict",evaluationHistory:[]}}static fromTyped(e,t){return{...t,me:e.me,it:e.it,you:e.you,result:e.result,...void 0!==e.event&&{event:e.event},...void 0!==e.variables&&{variables:e.variables},locals:e.locals,globals:e.globals,...void 0!==e.events&&{events:e.events},...void 0!==e.meta&&{meta:e.meta}}}}class ni{constructor(e,t,r){this.impl=e,this.expressionEvaluator=t??new ti,this.hookRegistry=r??null}setHookRegistry(e){this.hookRegistry=e}createHookContext(e,t,r={}){return{commandName:this.name,element:e.me instanceof Element?e.me:null,args:t,modifiers:r,event:e.event??void 0,executionContext:e}}get name(){return this.impl.name||this.impl.metadata?.name}get metadata(){return{description:this.impl.metadata?.description||"",examples:this.impl.metadata?.examples||[],syntax:this.impl.metadata?.syntax||""}}async execute(e,...t){const r=t[0],n=this.createHookContext(e,t,r&&"object"==typeof r&&"modifiers"in r&&r.modifiers||{});try{if(he(`CommandAdapterV2: Executing '${this.name}' with args:`,t),this.hookRegistry&&await this.hookRegistry.runBeforeExecute(n),this.hookRegistry?.shouldIntercept(this.name,n))return void he(`CommandAdapterV2: '${this.name}' intercepted by hook`);e.locals||(e.locals=new Map),e.locals.set("__evaluator",this.expressionEvaluator);const s=ri.toTyped(e);let i,a;if(this.impl.parseInput&&"function"==typeof this.impl.parseInput)if(he(`CommandAdapterV2: '${this.name}' has parseInput(), calling it`),r&&"object"==typeof r&&("args"in r||"modifiers"in r)){const t=r.modifiers,n=t?.when||t?.where;if(n&&!await this.expressionEvaluator.evaluate(n,e))return void he(`CommandAdapterV2: '${this.name}' skipped - when/where condition evaluated to false`);i=await this.impl.parseInput({args:r.args||[],modifiers:t||{},commandName:r.commandName},this.expressionEvaluator,e)}else i=t;else he(`CommandAdapterV2: '${this.name}' has no parseInput(), using args as-is`),i=t;return he("CommandAdapterV2: Calling execute with parsed input:",i),a=2===this.impl.execute.length?await this.impl.execute(i,s):await this.impl.execute(s,...i),he("CommandAdapterV2: Command result:",a),Object.assign(e,ri.fromTyped(s,e)),this.hookRegistry&&await this.hookRegistry.runAfterExecute(n,a),a}catch(e){if(ci(e)||he(`CommandAdapterV2: Error executing '${this.name}':`,e),this.hookRegistry&&e instanceof Error)throw await this.hookRegistry.runOnError(n,e);throw e}}validate(e){return this.impl.validate?this.impl.validate(e):{isValid:!0,errors:[],suggestions:[]}}}class si{constructor(e,t){this.adapters=new Map,this.implementations=new Map,this.sharedEvaluator=e,this.hookRegistry=t}setHookRegistry(e){this.hookRegistry=e;for(const t of this.adapters.values())t.setHookRegistry(e);ve(`CommandRegistryV2: Hook registry set and propagated to ${this.adapters.size} adapters`)}getHookRegistry(){return this.hookRegistry}register(e){const t=e.name||e.metadata?.name;if(!t||"string"!=typeof t)throw Error("Cannot register command: no name found. Provide a 'name' property or 'metadata.name' on the implementation.");const r=t.toLowerCase();ve(`CommandRegistryV2: Registering command '${r}'`),this.implementations.set(r,e);const n=new ni(e,this.sharedEvaluator,this.hookRegistry);this.adapters.set(r,n),k.add(r);const s=e.metadata?.aliases;if(s&&Array.isArray(s))for(const t of s){const r=t.toLowerCase();this.implementations.set(r,e),this.adapters.set(r,n),k.add(r)}}getAdapter(e){return this.adapters.get(e.toLowerCase())}has(e){return this.adapters.has(e.toLowerCase())}getCommandNames(){return Array.from(this.adapters.keys())}getImplementation(e){return this.implementations.get(e.toLowerCase())}getAdapters(){return new Map(this.adapters)}validateCommand(e,t){const r=this.getAdapter(e);return r?r.validate(t):{isValid:!1,errors:[{type:"runtime-error",message:"Unknown command: "+e,suggestions:["Available commands: "+this.getCommandNames().join(", ")]}],suggestions:["Available commands: "+this.getCommandNames().join(", ")]}}}let ii=null;function ai(){return ii||(ii=function(e){const t=e?.commands??new si,r=e?.eventSources??new It,n=e?.context??new Rt,s=new Set,i={commands:t,eventSources:r,context:n,use(e){if(s.has(e.name))console.warn(`[LokaScriptRegistry] Plugin '${e.name}' is already installed`);else{if(e.commands)for(const r of e.commands)t.register(r);if(e.eventSources)for(const t of e.eventSources)r.register(t.name,t);if(e.contextProviders)for(const{name:t,provide:r,options:s}of e.contextProviders)n.register(t,r,s);e.setup?.(i),s.add(e.name)}},reset(){s.clear()}};return i}()),ii}class oi{constructor(e={}){this.contextCache=new WeakMap;const t=ai();this.options={enableContextProviders:e.enableContextProviders??!0,enableEventSources:e.enableEventSources??!0,registry:e.registry??{}},this.contextRegistry=this.options.registry.context??t.context,this.eventSourceRegistry=this.options.registry.eventSources??t.eventSources,ve(`[RegistryIntegration] Initialized (context=${this.options.enableContextProviders}, events=${this.options.enableEventSources})`)}enhanceContext(e){if(!this.options.enableContextProviders)return e;const t=this.contextCache.get(e);if(t)return t;try{const t=this.contextRegistry.enhance(e);return this.contextCache.set(e,t),ve(`[RegistryIntegration] Enhanced context with ${this.contextRegistry.getProviderNames().length} providers`),t}catch(t){return ve("[RegistryIntegration] Failed to enhance context: "+(t instanceof Error?t.message:t+"")),e}}getEventSource(e){if(!this.options.enableEventSources)return;const t=this.eventSourceRegistry.get(e);if(t)return ve(`[RegistryIntegration] Found event source for '${e}'`),t;const r=this.eventSourceRegistry.findSourceForEvent(e);if(r){const t=this.eventSourceRegistry.get(r);return ve(`[RegistryIntegration] Found event source '${r}' supporting '${e}'`),t}}hasEventSource(e){return void 0!==this.getEventSource(e)}subscribeToEventSource(e,t,r){if(!this.options.enableEventSources)throw Error("Event sources are disabled in this runtime");const n=this.eventSourceRegistry.subscribe(e,t,r);if(!n)throw Error(`Failed to subscribe to event source '${e}'`);return ve(`[RegistryIntegration] Subscribed to '${e}' event '${t.event}' (id: ${n.id})`),n}getEventSourceNames(){return this.eventSourceRegistry.getSourceNames()}getContextProviderNames(){return this.contextRegistry.getProviderNames()}destroy(){this.eventSourceRegistry.destroy(),this.contextCache=new WeakMap,ve("[RegistryIntegration] Destroyed")}}function li(e){const t=Error(e.type.toUpperCase()+"_EXECUTION");return t["is"+e.type.charAt(0).toUpperCase()+e.type.slice(1)]=!0,"returnValue"in e&&(t.returnValue=e.returnValue),t}function ci(e){return e instanceof Error&&(null!==Ct(e)||"HALT_EXECUTION"===e.message||"EXIT_COMMAND"===e.message||"EXIT_EXECUTION"===e.message)}function ui(e){if(void 0===e)return;let t=e;if(t&&"object"==typeof t){const e=t;if("result"in e&&"wasAsync"in e)t=e.result;else if("result"in e&&"executed"in e){if(t=e.result,e.preserveArrayResult)return void 0!==t?t:void 0}else if("lastResult"in e&&"type"in e)t=e.lastResult;else if("conditionResult"in e&&"executedBranch"in e){if(void 0===e.result)return;t=e.result}else"value"in e&&1===Object.keys(e).length||"value"in e&&"target"in e&&"targetType"in e?t=e.value:"data"in e&&"status"in e&&"headers"in e&&(t=e.data)}return Array.isArray(t)&&t.length>0&&(t=t[0]),t}function di(e){return null!==e&&"object"==typeof e&&"command"in e&&"selector"in e}const mi=new WeakMap;class pi{constructor(e){this.autoCleanupObserver=null,this.registryIntegration=null,this.options={commandTimeout:1e4,enableErrorReporting:!0,enableResultPattern:!0,enableAutoCleanup:!0,...e},this.registry=e.registry,this.expressionEvaluator=e.expressionEvaluator,this.behaviorRegistry=new Map,this.globalVariables=Lt,this.hookRegistry=new xt,e.hooks&&this.hookRegistry.register("default",e.hooks),this.registry.setHookRegistry(this.hookRegistry),this.cleanupRegistry=new Ot,this.options.enableAutoCleanup&&this.setupAutoCleanup(),!1!==e.registryIntegration&&(this.registryIntegration=new oi("object"==typeof e.registryIntegration?e.registryIntegration:{}),ve("RuntimeBase: Registry integration enabled")),this.behaviorAPI={has:e=>this.behaviorRegistry.has(e),get:e=>this.behaviorRegistry.get(e),install:async(e,t,r)=>await this.installBehaviorOnElement(e,t,r)}}setupAutoCleanup(){"undefined"!=typeof MutationObserver&&"undefined"!=typeof document&&(this.autoCleanupObserver=new MutationObserver(e=>{const t=[];for(const r of e)for(const e of r.removedNodes)e instanceof Element&&t.push(e);t.length>0&&queueMicrotask(()=>{for(const e of t)if(!e.isConnected){const t=this.cleanupRegistry.cleanupElementTree(e);t>0&&ve(`RuntimeBase: Auto-cleaned ${t} resources for removed element`)}})}),document.body?this.autoCleanupObserver.observe(document.body,{childList:!0,subtree:!0}):document.addEventListener("DOMContentLoaded",()=>{this.autoCleanupObserver?.observe(document.body,{childList:!0,subtree:!0})},{once:!0}))}registerHooks(e,t){this.hookRegistry.register(e,t)}unregisterHooks(e){return this.hookRegistry.unregister(e)}getRegisteredHooks(){return this.hookRegistry.getRegisteredNames()}cleanup(e){return this.cleanupRegistry.cleanupElement(e)}cleanupTree(e){return this.cleanupRegistry.cleanupElementTree(e)}getCleanupStats(){return this.cleanupRegistry.getStats()}destroy(){this.autoCleanupObserver&&(this.autoCleanupObserver.disconnect(),this.autoCleanupObserver=null),this.cleanupRegistry.cleanupAll(),this.hookRegistry.clear(),this.behaviorRegistry.clear(),ve("RuntimeBase: Destroyed")}async execute(e,t){ve(`RUNTIME BASE: execute() called with node type: '${e.type}'`),t.locals.has("_behaviors")||t.locals.set("_behaviors",this.behaviorAPI),t.locals.has("_runtimeExecute")||t.locals.set("_runtimeExecute",(e,r)=>this.execute(e,r||t));try{switch(e.type){case"command":if(this.options.enableResultPattern)try{const r=await this.processCommandWithResult(e,t);if(!Tt(r))throw li(r.error);return r.value}catch(e){throw e}return await this.processCommand(e,t);case"eventHandler":return await this.executeEventHandler(e,t);case"event":{const r={type:"eventHandler",event:e.event,events:[e.event],commands:e.body||[],target:e.filter,modifiers:e.modifiers||{}};return await this.executeEventHandler(r,t)}case"behavior":return await this.executeBehaviorDefinition(e,t);case"Program":return await this.executeProgram(e,t);case"initBlock":case"block":return await this.executeBlock(e,t);case"sequence":case"CommandSequence":if(this.options.enableResultPattern){const r=e,n=await this.executeCommandSequenceWithResult(r.commands||[],t);if(!Tt(n))throw li(n.error);return n.value}return await this.executeCommandSequence(e,t);case"objectLiteral":return await this.executeObjectLiteral(e,t);default:if(this.options.enableResultPattern){const r=await this.evaluateExpressionWithResult(e,t);if(!Tt(r))throw li(r.error);return r.value}return await this.evaluateExpression(e,t)}}catch(e){throw e}}async processCommand(e,t){const{name:r,args:n,modifiers:s}=e,i=r.toLowerCase();if(he(`RUNTIME BASE: Processing command '${i}'`),this.registry.has(i)){const e=await this.registry.getAdapter(i);if(!e)throw Error(`Command '${i}' is registered but failed to load adapter.`);try{return await e.execute(t,{args:n||[],modifiers:s||{},commandName:i,runtime:this})}catch(e){throw ci(e)||console.error(`Error executing command '${i}':`,e),e}}const a=`Unknown command: ${r}. Ensure it is registered in the Runtime options.`;throw this.options.enableErrorReporting&&console.warn(a),Error(a)}toSignal(e){const t=Ct(e);if(t){if(t.isHalt||"HALT_EXECUTION"===t.message)return{type:"halt"};if(t.isExit||"EXIT_COMMAND"===t.message)return{type:"exit",returnValue:t.returnValue};if(t.isBreak)return{type:"break"};if(t.isContinue)return{type:"continue"};if(t.isReturn)return{type:"return",returnValue:t.returnValue}}if(e instanceof Error){if("HALT_EXECUTION"===e.message)return{type:"halt"};if("EXIT_COMMAND"===e.message)return{type:"exit"}}return null}async processCommandWithResult(e,t){const{name:r,args:n,modifiers:s}=e,i=r.toLowerCase();if(he(`RUNTIME BASE (Result): Processing command '${i}'`),!this.registry.has(i)){const e=`Unknown command: ${r}. Ensure it is registered in the Runtime options.`;throw this.options.enableErrorReporting&&console.warn(e),Error(e)}const a=await this.registry.getAdapter(i);if(!a)throw Error(`Command '${i}' is registered but failed to load adapter.`);try{return At(await a.execute(t,{args:n||[],modifiers:s||{},commandName:i,runtime:this}))}catch(e){const t=this.toSignal(e);if(t)return St(t);throw console.error(`Error executing command '${i}':`,e),e}}async executeCommandSequenceWithResult(e,t){let r;for(const n of e)if("command"===n.type){const e=await this.processCommandWithResult(n,t);if(!Tt(e)){const r=e.error;switch(r.type){case"halt":case"exit":case"break":case"continue":return e;case"return":return void 0!==r.returnValue&&Object.assign(t,{it:r.returnValue,result:r.returnValue}),At(r.returnValue)}}r=e.value}else{const e=await this.evaluateExpressionWithResult(n,t);if(!Tt(e))return e;r=e.value}return At(r)}async evaluateExpression(e,t){const r=await this.expressionEvaluator.evaluate(e,t);return di(r)?await this.executeCommandFromPattern(r.command,r.selector,t):r}async evaluateExpressionWithResult(e,t){const r=await this.expressionEvaluator.evaluateWithResult(e,t);if(!Tt(r))return r;const n=r.value;if(di(n)){if(this.options.enableResultPattern)return this.processCommandWithResult({type:"command",name:n.command,args:[{type:"literal",value:n.selector}]},t);try{return At(await this.executeCommandFromPattern(n.command,n.selector,t))}catch(e){const t=this.toSignal(e);if(t)return St(t);throw e}}return At(n)}async executeCommandFromPattern(e,t,r){return this.processCommand({type:"command",name:e,args:[{type:"literal",value:t}]},r)}async executeProgram(e,t){if(!e.statements||!Array.isArray(e.statements))return;let r;const n=[],s=[],i=[];for(const t of e.statements)"eventHandler"===t.type?n.push(t):"initBlock"===t.type?s.push(t):i.push(t);for(const e of n)try{await this.execute(e,t)}catch(e){if(ci(e)&&(e.isHalt||e.isExit))break;throw e}for(const e of s)try{r=await this.execute(e,t)}catch(e){if(ci(e)&&(e.isHalt||e.isExit))break;throw e}for(const e of i)try{r=await this.execute(e,t)}catch(e){if(ci(e)&&(e.isHalt||e.isExit))break;throw e}return r}async executeBlock(e,t){if(e.commands&&Array.isArray(e.commands))for(const r of e.commands)try{await this.execute(r,t)}catch(e){if(ci(e)&&e.isHalt)break;throw e}}async executeCommandSequence(e,t){if(!e.commands||!Array.isArray(e.commands))return;let r;for(const n of e.commands)try{r=await this.execute(n,t)}catch(e){if(ci(e)){if(e.isHalt||e.isExit)break;if(e.isReturn){if(void 0!==e.returnValue)return Object.assign(t,{it:e.returnValue,result:e.returnValue}),e.returnValue;break}if(e.isBreak)throw e}throw e}return r}async executeObjectLiteral(e,t){const r={};if(!e.properties)return r;for(const n of e.properties){let e;e="identifier"===n.key.type?n.key.name:"literal"===n.key.type?n.key.value+"":await this.execute(n.key,t)+"";const s=await this.execute(n.value,t);r[e]=s}return r}enhanceContext(e){return this.registryIntegration?this.registryIntegration.enhanceContext(e):e}async executeBehaviorDefinition(e,t){const{name:r,parameters:n,eventHandlers:s,initBlock:i}=e;this.behaviorRegistry.set(r,{name:r,parameters:n,eventHandlers:s,initBlock:i}),ve(`RUNTIME BASE: Registered behavior '${r}'`)}async installBehaviorOnElement(e,t,r){ve("BEHAVIOR: installBehaviorOnElement called: "+e);const n=this.behaviorRegistry.get(e);if(!n)throw Error(`Behavior "${e}" not found`);ve("BEHAVIOR: Found behavior, eventHandlers count: "+(n.eventHandlers?.length||0));const s={me:t,you:null,it:null,result:null,locals:new Map,globals:this.globalVariables,halted:!1,returned:!1,broke:!1,continued:!1,async:!1},i=this.enhanceContext(s);if(n.parameters)for(const e of n.parameters)i.locals.set(e,e in r?r[e]:void 0);for(const[e,t]of Object.entries(r))n.parameters?.includes(e)||i.locals.set(e,t);if(n.initBlock){ve("BEHAVIOR: Running init block for "+e);const t=this.options.commandTimeout??1e4;try{await Promise.race([this.execute(n.initBlock,i),new Promise((r,n)=>setTimeout(()=>n(Error(`Behavior "${e}" init block timed out after ${t}ms`)),t))]),ve("BEHAVIOR: Init block completed for "+e)}catch(t){if(ve(`BEHAVIOR: Init block error for ${e}:`,t),!(t instanceof Error&&ci(t)))throw t}}if(ve(`BEHAVIOR: About to attach ${n.eventHandlers?.length||0} handlers for ${e}`),n.eventHandlers){const t=this.options.commandTimeout??1e4;for(const r of n.eventHandlers)await Promise.race([this.executeEventHandler(r,i),new Promise((r,n)=>setTimeout(()=>n(Error(`Behavior "${e}" handler attachment timed out after ${t}ms`)),t))])}ve("BEHAVIOR: Finished installing "+e)}async executeEventHandler(e,t){const{event:r,events:n,commands:s,target:i,args:a,selector:o,attributeName:l,watchTarget:c,modifiers:u}=e,d=n&&n.length>0?n:[r];ve(`BEHAVIOR: executeEventHandler: event='${r}', target='${i}'`);let m=[],p=null;if(i){const e="string"==typeof i?i.toLowerCase():"";if("window"===e||"the window"===e)p=window;else if("document"===e||"the document"===e||"body"===e)p=document;else if("me"===e||"myself"===e)m=t.me?[t.me]:[];else if("string"==typeof i&&t.locals.has(i)){const e=t.locals.get(i);ve(`BEHAVIOR: Target resolution: found local '${i}', isElement: ${this.isElement(e)}`),this.isElement(e)?m=[e]:Array.isArray(e)?m=e.filter(e=>this.isElement(e)):"string"==typeof e&&(m=this.queryElements(e,t))}else ve(`BEHAVIOR: Target resolution: querying for '${i}'`),m=this.queryElements(i,t)}else m=t.me?[t.me]:[];if(0===m.length&&!p)return void ve(`BEHAVIOR: executeEventHandler - No targets found for event '${r}', returning early`);if("mutation"===r&&l)return void this.setupMutationObserver(m,l,s,t);if("change"===r&&c)return void this.setupChangeObserver(c,s,t);const h=e.customEventSource;if(h&&this.registryIntegration){ve(`BEHAVIOR: executeEventHandler - Using custom event source '${h}' for event '${r}'`);const e=async e=>{const n=new Map(t.locals),i={...t,locals:n,it:e,event:e},a=this.enhanceContext(i);ve(`CUSTOM EVENT: Executing commands for event '${r}'`);try{await this.execute({type:"program",commands:s},a)}catch(e){console.error(`[HyperFixi] Error executing commands for custom event '${r}':`,e)}};try{const n=this.registryIntegration.subscribeToEventSource(h,{event:r,handler:e,target:i,selector:o},t);ve(`BEHAVIOR: Subscribed to custom event source '${h}' (id: ${n.id})`),this.cleanupRegistry.registerGlobal(()=>n.unsubscribe(),"listener",`Custom event source '${h}' subscription ${n.id}`)}catch(e){console.error(`[HyperFixi] Failed to subscribe to custom event source '${h}':`,e)}return}const f=pi.createEventHandler(this,s,t,o,a);let y,g=null;if(u){let e=f;if(u.prevent){const t=e;e=async e=>(e.preventDefault(),t(e))}if(u.stop){const t=e;e=async e=>(e.stopPropagation(),t(e))}if(u.debounce){const t=u.debounce;let r;y=n=>{r&&clearTimeout(r),r=setTimeout(()=>e(n),t)},g=()=>{r&&(clearTimeout(r),r=void 0)}}else if(u.throttle){const t=u.throttle;let r=0;y=n=>{const s=Date.now();t>s-r||(r=s,e(n))}}else y=e}else y=f;const v=u?.once?{once:!0}:void 0;if(p){for(const e of d)p.addEventListener(e,y,v),m.length>0?this.cleanupRegistry.registerListener(m[0],p,e,y):this.cleanupRegistry.registerGlobal(()=>p.removeEventListener(e,y),"listener",`Global ${e} listener`);g&&(m.length>0?this.cleanupRegistry.registerCustom(m[0],g,"debounce-timeout"):this.cleanupRegistry.registerGlobal(g,"timeout","debounce-timeout"))}else for(const e of m){for(const t of d)e.addEventListener(t,y,v),this.cleanupRegistry.registerListener(e,e,t,y);g&&this.cleanupRegistry.registerCustom(e,g,"debounce-timeout")}}static createEventHandler(e,t,r,n,s){return async i=>{const a=mi.get(i)??0;if(a>=100)return;if(mi.set(i,a+1),n&&i.target instanceof Element)try{if(!i.target.matches(n)&&!i.target.closest(n))return}catch{ve(`Event delegation: invalid CSS selector '${n}', skipping filter`)}const o=new Map(r.locals),l={...r,locals:o,it:i,event:i};o.has("target")||l.locals.set("target",i.target);const c=e.enhanceContext(l);if(s&&s.length>0){const e=i,t=e.detail;for(const r of s)c.locals.set(r,e[r]??t?.[r]??null)}for(const r of t)try{const t=ui(await e.execute(r,c));void 0!==t&&Object.assign(c,{it:t,result:t})}catch(e){if(ci(e)){if(e.isHalt||e.isExit)break;if(e.isReturn){void 0!==e.returnValue&&Object.assign(c,{it:e.returnValue,result:e.returnValue});break}}throw console.error("COMMAND FAILED:",e),e}}}setupMutationObserver(e,t,r,n){ve(`RUNTIME BASE: Setting up MutationObserver for attribute '${t}' on ${e.length} elements`);for(const s of e){const e=new MutationObserver(async e=>{for(const i of e)if("attributes"===i.type&&i.attributeName===t){fe(`MUTATION DETECTED: attribute '${t}' changed on`,s);const e={...n,me:s,it:i,locals:new Map(n.locals)},a=i.oldValue,o=s.getAttribute(t);e.locals.set("oldValue",a),e.locals.set("newValue",o);const l=this.enhanceContext(e);for(const e of r)try{await this.execute(e,l)}catch(e){if(ci(e)){if(e.isHalt||e.isExit||e.isReturn)break}else console.error("Error executing mutation handler command:",e)}}});e.observe(s,{attributes:!0,attributeOldValue:!0,attributeFilter:[t]}),this.cleanupRegistry.registerObserver(s,e),ve("RUNTIME BASE: MutationObserver attached to",s,`for attribute '${t}'`)}}async setupChangeObserver(e,t,r){ve("RUNTIME BASE: Setting up MutationObserver for content changes on watch target");const n=await this.execute(e,r);let s=[];this.isElement(n)?s=[n]:Array.isArray(n)&&(s=n.filter(e=>this.isElement(e))),ve(`RUNTIME BASE: Watching ${s.length} target elements for content changes`);for(const e of s){const n=new MutationObserver(async n=>{for(const s of n)if("childList"===s.type||"characterData"===s.type){fe("CONTENT CHANGE DETECTED on",e,"mutation type:",s.type);const n={...r,me:r.me,it:s,locals:new Map(r.locals)};n.locals.set("target",e);const i=s.oldValue,a=e.textContent;null!==i&&n.locals.set("oldValue",i),n.locals.set("newValue",a);const o=this.enhanceContext(n);for(const e of t)try{await this.execute(e,o)}catch(e){if(ci(e)){if(e.isHalt||e.isExit||e.isReturn)break}else console.error("Error executing change handler command:",e)}}});n.observe(e,{childList:!0,characterData:!0,subtree:!0,characterDataOldValue:!0}),this.cleanupRegistry.registerObserver(e,n),ve("RUNTIME BASE: MutationObserver attached to",e,"for content changes")}}queryElements(e,t){const r=t.me,n=(r instanceof Element?r.ownerDocument:null)??("undefined"!=typeof document?document:null);if(!n)return[];let s=e;s.startsWith("<")&&s.endsWith("/>")&&(s=s.slice(1,-2).trim());try{return Array.from(n.querySelectorAll(s))}catch{return ve(`queryElements: invalid CSS selector '${s}'`),[]}}isElement(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||!(!e||"object"!=typeof e)&&(!!e.style&&!!e.classList)}}const hi={core:["references","logical","special"],common:["properties","conversion"],optional:["positional"]};class fi extends er{constructor(e={}){super(),this.loadedCategories=new Set,this.loadPromises=new Map,this.options={preload:"core",...e},"none"!==this.options.preload&&this.preloadExpressions()}async preloadExpressions(){if(this.options.categories)await Promise.all(this.options.categories.map(e=>this.loadCategory(e)));else switch(this.options.preload){case"all":await this.preloadTier("core"),await this.preloadTier("common"),await this.preloadTier("optional");break;case"common":await this.preloadTier("core"),await this.preloadTier("common");break;case"core":await this.preloadTier("core")}}async preloadTier(e){const t=hi[e];await Promise.all(t.map(e=>this.loadCategory(e)))}async loadCategory(e){if(this.loadedCategories.has(e))return;if(this.loadPromises.has(e))return this.loadPromises.get(e);const t=this._loadCategoryImpl(e);this.loadPromises.set(e,t);try{await t,this.loadedCategories.add(e),ge("✅ Loaded expression category: "+e)}finally{this.loadPromises.delete(e)}}async _loadCategoryImpl(e){try{let t;switch(ge("📦 Loading expression category: "+e),e){case"references":t=await Promise.resolve().then(function(){return Wr});break;case"logical":t=await Promise.resolve().then(function(){return Vn});break;case"special":t=await Promise.resolve().then(function(){return ei});break;case"properties":t=await Promise.resolve().then(function(){return qs});break;case"conversion":t=await Promise.resolve().then(function(){return rs});break;case"positional":t=await Promise.resolve().then(function(){return Cs});break;default:return void console.warn("Unknown expression category: "+e)}const r=t[e+"Expressions"]||t.default;if(!r)return void console.warn("No expressions found in category: "+e);this.registerCategory(r),ge(` ✓ Registered ${Object.keys(r).length} expressions from ${e}`)}catch(t){throw console.error("Failed to load expression category: "+e,t),t}}getCategoryForNodeType(e){return{identifier:"references",selector:"references",dollarExpression:"references",binaryExpression:"logical",unaryExpression:"logical",comparison:"logical",literal:"special",string:"special",numberLiteral:"special",stringLiteral:"special",booleanLiteral:"special",arrayLiteral:"special",objectLiteral:"special",templateLiteral:"special",memberExpression:"properties",possessiveExpression:"properties",propertyAccess:"properties",propertyOfExpression:"properties",asExpression:"conversion",positional:"positional",callExpression:"references"}[e]||null}async evaluate(e,t){if(!e)return ge("LAZY EVALUATOR: Received null/undefined node, returning null"),null;if(!e.type)throw console.error("LAZY EVALUATOR: Node missing type property:",e),Error("Node missing type property: "+JSON.stringify(e));const r=this.getCategoryForNodeType(e.type);return r&&!this.loadedCategories.has(r)&&(ge(`🔄 Auto-loading category for node type: ${e.type} → ${r}`),await this.loadCategory(r)),super.evaluate(e,t)}async warmupExpressions(e){ge("🔥 Warming up expression categories: "+e.join(", ")),await Promise.all(e.map(e=>this.loadCategory(e)))}getLoadedCategories(){return Array.from(this.loadedCategories)}}function yi(e,t,r,n,s,i){function a(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var o,l=n.kind,c="getter"===l?"get":"setter"===l?"set":"value",u=!t&&e?n.static?e:e.prototype:null,d=t||(u?Object.getOwnPropertyDescriptor(u,n.name):{}),m=!1,p=r.length-1;p>=0;p--){var h={};for(var f in n)h[f]="access"===f?{}:n[f];for(var f in n.access)h.access[f]=n.access[f];h.addInitializer=function(e){if(m)throw new TypeError("Cannot add initializers after decoration has completed");i.push(a(e||null))};var y=(0,r[p])("accessor"===l?{get:d.get,set:d.set}:d[c],h);if("accessor"===l){if(void 0===y)continue;if(null===y||"object"!=typeof y)throw new TypeError("Object expected");(o=a(y.get))&&(d.get=o),(o=a(y.set))&&(d.set=o),(o=a(y.init))&&s.unshift(o)}else(o=a(y))&&("field"===l?s.unshift(o):d[c]=o)}u&&Object.defineProperty(u,n.name,d),m=!0}function gi(e,t,r){for(var n=arguments.length>2,s=0;t.length>s;s++)r=n?t[s].call(e,r):t[s].call(e);return n?r:void 0}function vi(e,t,r){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:r?"".concat(r," ",t):t})}"function"==typeof SuppressedError&&SuppressedError;const bi=Symbol("command:name"),wi=Symbol("command:category"),ki=Symbol("command:metadata");function Ei(e){return function(t,r){const n=t;n[bi]=e.name,n[wi]=e.category,Object.defineProperty(t.prototype,"name",{value:e.name,writable:!1,enumerable:!0})}}function xi(e){return function(t,r){const n=t,s=n[wi];if(!s)throw Error("@meta decorator requires @command decorator to be applied first on "+t.name);const i={description:e.description,syntax:e.syntax,examples:e.examples,category:s,sideEffects:e.sideEffects,deprecated:e.deprecated,deprecationMessage:e.deprecationMessage,aliases:e.aliases,relatedCommands:e.relatedCommands,isBlocking:e.isBlocking??!1,hasBody:e.hasBody??!1,version:"1.0.0",compatibility:e.compatibility};n[ki]=i,Object.defineProperty(t,"metadata",{value:i,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(t.prototype,"metadata",{get:()=>i,enumerable:!0,configurable:!1})}}function Ci(e){return()=>new e}function Ai(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType&&"tagName"in e&&"string"==typeof e.tagName&&"classList"in e}function Si(e,t){if(Ai(e))return e;if(!e){const e=t.me;if(!e)throw Error("No target element - provide explicit target or ensure context.me is set");return Oi(e)}if("string"==typeof e){const r=e.trim();if("me"===r){if(!t.me)throw Error('Context reference "me" is not available');return Oi(t.me)}if("it"===r){if(!Ai(t.it))throw Error('Context reference "it" is not an HTMLElement');return t.it}if("you"===r){if(!t.you)throw Error('Context reference "you" is not available');return Oi(t.you)}const n=t.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!n)throw Error("DOM not available - cannot resolve element selector");const s=n.querySelector(r);if(!s)throw Error("Element not found with selector: "+r);if(!Ai(s))throw Error("Element found but is not an HTMLElement: "+r);return s}throw Error("Invalid target type: "+typeof e)}function Ti(e,t){if(Array.isArray(e))return e.filter(Ai);if(e instanceof NodeList)return Array.from(e).filter(Ai);if(Ai(e))return[e];if(!e){const e=t.me;return e&&Ai(e)?[e]:[]}if("string"==typeof e){const r=e.trim();if("me"===r)return t.me&&Ai(t.me)?[t.me]:[];if("it"===r)return Ai(t.it)?[t.it]:[];if("you"===r)return t.you&&Ai(t.you)?[t.you]:[];const n=t.me?.ownerDocument??("undefined"!=typeof document?document:null);if(n){let e=r;e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());const t=n.querySelectorAll(e);return Array.from(t).filter(Ai)}}return[]}function Oi(e){if(Ai(e))return e;throw Error("Value is not an HTMLElement")}function Li(e,t){switch(e.toLowerCase()){case"my":case"me":if(!t.me)throw Error('No "me" element in context');if(!Ai(t.me))throw Error("context.me is not an HTMLElement");return t.me;case"its":case"it":if(!t.it)throw Error('No "it" value in context');if(!Ai(t.it))throw Error("context.it is not an HTMLElement");return t.it;case"your":case"you":if(!t.you)throw Error('No "you" element in context');if(!Ai(t.you))throw Error("context.you is not an HTMLElement");return t.you;default:throw Error("Unknown possessive: "+e)}}const Pi=["on","from","to","in","with","at"];async function Ni(e,t,r,n,s={},i){let a=e;if(s.filterPrepositions&&e&&(a=e.filter(e=>{const t=e;return"identifier"!==t?.type||"string"!=typeof t.name||!Pi.includes(t.name.toLowerCase())})),(!a||0===a.length)&&s.fallbackModifierKey&&i){const e=i[s.fallbackModifierKey];e&&(a=[e])}if(!a||0===a.length){if(!r.me)throw Error(n+" command: no target specified and context.me is null");if(!Ai(r.me))throw Error(n+" command: context.me must be an HTMLElement");return[r.me]}const o=[];for(const e of a){const s=await t.evaluate(e,r);if(""!==s&&("string"!=typeof s||""!==s.trim()))if(Ai(s))o.push(s);else if(s instanceof NodeList){const e=Array.from(s).filter(Ai);o.push(...e)}else if(Array.isArray(s)){const e=s.filter(Ai);o.push(...e)}else{if("string"!=typeof s)throw Error(`Invalid ${n} target: expected HTMLElement or CSS selector, got ${typeof s}`);try{let e=s;e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());const t=r.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!t)throw Error("DOM not available - cannot resolve element selector");const n=t.querySelectorAll(e),i=Array.from(n).filter(Ai);o.push(...i)}catch(e){throw Error(`Invalid CSS selector: "${s}" - ${e instanceof Error?e.message:e+""}`)}}}if(0===o.length){if(!r.me)throw Error(n+" command: no target specified and context.me is null");if(!Ai(r.me))throw Error(n+" command: context.me must be an HTMLElement");return[r.me]}return o}class Ii{async parseInput(e,t,r){const{targets:n}=await async function(e,t,r,n){return{targets:await Ni(e.args,t,r,n)}}(e,t,r,this.mode);return{targets:n,mode:this.mode,defaultDisplay:"show"===this.mode?"block":void 0}}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!(!Array.isArray(t.targets)||!t.targets.every(e=>Ai(e))||"show"!==t.mode&&"hide"!==t.mode||"show"===t.mode&&"string"!=typeof t.defaultDisplay)}showElement(e,t="block"){const r=e.dataset.originalDisplay;void 0!==r?(e.style.display=r||t,delete e.dataset.originalDisplay):"none"===e.style.display&&(e.style.display=t),e.classList.add("show")}hideElement(e){if(!e.dataset.originalDisplay){const t=e.style.display;e.dataset.originalDisplay="none"===t?"":t}e.style.display="none",e.classList.remove("show")}}let Ri=(()=>{let e,t,r=[xi({description:"Hide elements by setting display to none",syntax:"hide [<target>]",examples:["hide me","hide #modal","hide .warnings","hide <button/>"],sideEffects:["dom-mutation"]}),Ei({name:"hide",category:"dom"})],n=[],s=Ii;return t=class extends s{constructor(){super(...arguments),this.mode="hide"}async execute(e,t){for(const t of e.targets)this.hideElement(t)}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&!!t.targets.every(e=>Ai(e))}},vi(t,"HideCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),gi(t,n)})(),t})();const ji=Ci(Ri);let _i=(()=>{let e,t,r=[xi({description:"Show elements by restoring display property",syntax:"show [<target>]",examples:["show me","show #modal","show .hidden","show <button/>"],sideEffects:["dom-mutation"]}),Ei({name:"show",category:"dom"})],n=[],s=Ii;return t=class extends s{constructor(){super(...arguments),this.mode="show"}async execute(e,t){const r=e.defaultDisplay||"block";for(const t of e.targets)this.showElement(t,r)}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&!!t.targets.every(e=>Ai(e))&&"string"==typeof t.defaultDisplay}},vi(t,"ShowCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),gi(t,n)})(),t})();const qi=Ci(_i);function Mi(e){const t=e.trim();return!(!t.startsWith("[@")||!t.endsWith("]"))||!!t.startsWith("@")}function $i(e){const t=e.trim();if(t.startsWith("[@")&&t.endsWith("]")){const e=t.slice(2,-1),r=e.indexOf("=");if(-1===r)return{name:e.trim()};const n=e.slice(0,r).trim();let s=e.slice(r+1).trim();return(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),{name:n,value:s}}if(t.startsWith("@"))return{name:t.substring(1).trim()};throw Error("Invalid attribute syntax: "+e)}function Vi(e,t){for(const r of e)t(r);return e}function Di(e,t,r){for(const n of e)for(const e of t)r(n,e);return e}function Bi(e,t,r){const n=e.hasAttribute(t);void 0!==r?n&&e.getAttribute(t)===r?e.removeAttribute(t):e.setAttribute(t,r):n?e.removeAttribute(t):e.setAttribute(t,"")}function Fi(e){if(!e)return[];if("string"==typeof e)return e.trim().split(/[\s,]+/).map(e=>{const t=e.trim();return t.startsWith(".")?t.substring(1):t}).filter(e=>e.length>0&&Hi(e));if(Array.isArray(e))return e.map(e=>{const t=(e+"").trim();return t.startsWith(".")?t.substring(1):t}).filter(e=>e.length>0&&Hi(e));const t=(e+"").trim(),r=t.startsWith(".")?t.substring(1):t;return r.length>0&&Hi(r)?[r]:[]}function zi(e){const t=e.trim();return/^\{[^}]+\}$/.test(t)}function Hi(e){if(!e||0===e.trim().length)return!1;const t=e.trim();return!!zi(t)||/^[a-zA-Z_-][a-zA-Z0-9_-]*$/.test(t)}function Ui(e,t){return e.map(e=>{if(zi(e)){const r=function(e){const t=e.trim(),r=t.match(/^\{(.+)\}$/);return r?r[1].trim():t}(e),n=t.locals.get(r)??t.globals.get(r);return null!=n?n+"":(console.warn(`Dynamic class variable '${r}' not found in context`),"")}return e}).filter(e=>e.length>0)}function Wi(e){return"string"==typeof e&&e.trim().startsWith("*")}function Ji(e,t,r){e.style.setProperty(t,r)}const Ki=["dialog","details","summary","select"];function Yi(e){return e&&"object"==typeof e?"string"==typeof e.selector?e.selector:"string"==typeof e.value?e.value:"string"==typeof e.name?e.name:null:null}async function Gi(e,t,r){return function(e){if(!e||"object"!=typeof e)return!1;const t=e.type;if("selector"!==t&&"cssSelector"!==t&&"classSelector"!==t)return!1;const r=Yi(e);return"string"==typeof r&&r.startsWith(".")}(e)||function(e){if(!e||"object"!=typeof e)return!1;const t=e.type;if("selector"!==t&&"cssSelector"!==t&&"cssProperty"!==t)return!1;const r=Yi(e);return"string"==typeof r&&r.startsWith("*")}(e)?{value:Yi(e),extractedFromNode:!0}:function(e){if(!e||"object"!=typeof e)return!1;if("attributeAccess"===e.type)return!0;if("selector"===e.type||"cssSelector"===e.type){const t=Yi(e);return"string"==typeof t&&t.startsWith("@")}return!1}(e)?{value:(n=e,"attributeAccess"===n.type?"@"+n.attributeName:Yi(n)),extractedFromNode:!0}:{value:await t.evaluate(e,r),extractedFromNode:!1};var n}class Xi{async resolveTargets(e,t,r,n){return Ni(e,t,r,this.mode,{filterPrepositions:!0,fallbackModifierKey:this.preposition},n)}async evaluateFirst(e,t,r){return Gi(e,t,r)}parseClassNames(e){return Fi(e)}isAttribute(e){return Mi(e.trim())}isCSSProperty(e){return Wi(e.trim())}validateTargets(e){return Array.isArray(e)&&function(e){return Array.isArray(e)&&e.length>0&&e.every(e=>Ai(e))}(e)}validateType(e,t){return function(e,t){return"string"==typeof e&&t.includes(e)}(e,t)}validateStringArray(e,t=1){return Array.isArray(e)&&function(e,t=1){return Array.isArray(e)&&e.length>=t&&e.every(e=>"string"==typeof e&&e.length>0)}(e,t)}}let Zi=(()=>{let e,t,r=[xi({description:"Add CSS classes, attributes, or styles to elements",syntax:"add <classes|@attr|{styles}> [to <target>]",examples:["add .active to me",'add "active selected" to <button/>',"add .highlighted to #modal",'add [@data-test="value"] to #element'],sideEffects:["dom-mutation"]}),Ei({name:"add",category:"dom"})],n=[],s=Xi;return t=class extends s{constructor(){super(...arguments),this.mode="add",this.preposition="to"}async parseInput(e,t,r){if(!e.args||0===e.args.length)throw Error("add command requires an argument");const{value:n}=await this.evaluateFirst(e.args[0],t,r);if("object"==typeof n&&null!==n&&!Array.isArray(n))return{type:"styles",styles:n,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)};if("string"==typeof n){const s=n.trim();if(this.isAttribute(s)){const{name:n,value:i}=function(e){const t=$i(e);return{name:t.name,value:t.value??""}}(s);return{type:"attribute",name:n,value:i,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}if(this.isCSSProperty(s)){const n=s.substring(1).trim();if(2>e.args.length)throw Error("add *property requires a value argument");const i=await t.evaluate(e.args[1],r);return{type:"styles",styles:{[n]:i+""},targets:await this.resolveTargets(e.args.slice(2),t,r,e.modifiers)}}}const s=this.parseClassNames(n);if(0===s.length)throw Error("add command: no valid class names found");return{type:"classes",classes:s,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}async execute(e,t){switch(e.type){case"classes":{const r=Ui(e.classes,t);r.length>0&&Di(e.targets,r,(e,t)=>{e.classList.contains(t)||e.classList.add(t)});break}case"attribute":r=e.name,n=e.value,Vi(e.targets,e=>{e.setAttribute(r,n)});break;case"styles":!function(e,t){Di(e,Object.entries(t),(e,[t,r])=>{e.style.setProperty(t,r)})}(e.targets,e.styles)}var r,n}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;if(!this.validateType(t.type,["classes","attribute","styles"]))return!1;if(!this.validateTargets(t.targets))return!1;if("classes"===t.type){if(!this.validateStringArray(e.classes,1))return!1}else if("attribute"===t.type){if("string"!=typeof e.name||0===e.name.length)return!1;if("string"!=typeof e.value)return!1}else if("styles"===t.type){const t=e;if("object"!=typeof t.styles||null===t.styles)return!1;if(Array.isArray(t.styles))return!1;const r=t.styles;if(0===Object.keys(r).length)return!1;if(!Object.values(r).every(e=>"string"==typeof e))return!1}return!0}},vi(t,"AddCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),gi(t,n)})(),t})();const Qi=Ci(Zi);function ea(e){return!!e.parentNode&&(e.remove(),!0)}let ta=(()=>{let e,t,r=[xi({description:"Remove CSS classes, attributes, styles, or elements from the DOM",syntax:"remove <classes|@attr|*prop|element> [from <target>]",examples:["remove .active from me",'remove "active selected" from <button/>',"remove .highlighted from #modal","remove me","remove closest .item"],sideEffects:["dom-mutation"]}),Ei({name:"remove",category:"dom"})],n=[],s=Xi;return t=class extends s{constructor(){super(...arguments),this.mode="remove",this.preposition="from"}async parseInput(e,t,r){if(!e.args||0===e.args.length)throw Error("remove command requires an argument");const{value:n}=await this.evaluateFirst(e.args[0],t,r);if(Ai(n))return{type:"element",targets:[n]};if(Array.isArray(n)&&n.length>0&&Ai(n[0]))return{type:"element",targets:n.filter(e=>Ai(e))};if("string"==typeof n){const s=n.trim();if(this.isAttribute(s))return{type:"attribute",name:$i(s).name,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)};if(this.isCSSProperty(s))return{type:"styles",properties:[s.substring(1).trim()],targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}const s=this.parseClassNames(n);if(0===s.length)throw Error("remove command: no valid class names found");return{type:"classes",classes:s,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}execute(e,t){switch(e.type){case"classes":{const r=Ui(e.classes,t);r.length>0&&Di(e.targets,r,(e,t)=>{e.classList.remove(t)});break}case"attribute":r=e.name,Vi(e.targets,e=>{e.removeAttribute(r)});break;case"styles":!function(e,t){Di(e,t,(e,t)=>{e.style.removeProperty(t)})}(e.targets,e.properties);break;case"element":for(const t of e.targets)ea(t)}var r}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;if(!this.validateType(t.type,["classes","attribute","styles","element"]))return!1;if(!this.validateTargets(t.targets))return!1;if("classes"===t.type){if(!this.validateStringArray(e.classes,1))return!1}else if("attribute"===t.type){if("string"!=typeof e.name||0===e.name.length)return!1}else if("styles"===t.type&&!this.validateStringArray(e.properties,1))return!1;return!0}},vi(t,"RemoveCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),gi(t,n)})(),t})();const ra=Ci(ta);function na(e){const t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(s|ms|sec|seconds?|milliseconds?)?$/i);if(!t)return null;const r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();return"ms"===n||"millisecond"===n||"milliseconds"===n?{number:r,milliseconds:Math.floor(r)}:"s"===n||"sec"===n||"second"===n||"seconds"===n?{number:r,milliseconds:Math.floor(1e3*r)}:null}function sa(e,t=300){if("number"==typeof e)return Math.max(0,Math.floor(e));if("string"==typeof e){const r=na(e);return r?r.milliseconds:t}return t}function ia(e){if("number"==typeof e){if(0>e)throw Error("Duration must be >= 0");return Math.floor(e)}if("string"==typeof e){const t=na(e);if(!t)throw Error(`Invalid duration format: "${e}"`);return t.milliseconds}throw Error("Invalid duration type: "+typeof e)}function aa(e){return e&&"none"!==e?e.split(",").map(e=>{const t=parseFloat(e.trim());return isNaN(t)?0:e.includes("s")&&!e.includes("ms")?1e3*t:t}):[0]}function oa(e,t){let r=0;for(let n=0;e.length>n;n++)r=Math.max(r,(e[n]||0)+(t[n]||0));return r}function la(e){return 0===e.length?[]:"SUMMARY"===e[0].tagName?e.map(e=>e.closest("details")).filter(e=>null!==e):e}function ca(e,t,r){return()=>{"class"===t?e.classList.toggle(r):"attribute"===t&&Bi(e,r)}}function ua(e,t,r,n){const s=ca(e,t,r),i=setTimeout(s,n);return()=>{clearTimeout(i)}}function da(e,t,r,n){const s=ca(e,t,r),i=()=>{s(),e.removeEventListener(n,i)};return e.addEventListener(n,i,{once:!0}),()=>{e.removeEventListener(n,i)}}function ma(e,t,r){if(t.startsWith("@")){const n=t.substring(1);return void(!1===r?e.removeAttribute(n):e.setAttribute(n,!0===r?"":r+""))}const n=r+"";switch(t){case"textContent":return void(e.textContent=n);case"innerHTML":return void(e.innerHTML=n);case"innerText":return void(e.innerText=n);case"id":return void(e.id=n);case"className":return void(e.className=n);case"value":return void("value"in e&&(e.value=n));case"checked":return void("checked"in e&&(e.checked=!!r))}if(t.includes(".")){const n=t.split(".");let s=e;for(let e=0;n.length-1>e;e++)if(s=s[n[e]],null==s)return;return void(s[n[n.length-1]]=r)}if(t.includes("-")||t in e.style)e.style.setProperty(t,n);else try{e[t]=r}catch(e){if(!(e instanceof TypeError&&(e.message.includes("only a getter")||e.message.includes("read only"))))throw Error(`Cannot set property '${t}': ${e instanceof Error?e.message:"Unknown error"}`)}}function pa(e){return null==e||""===e}const ha=/^the\s+(.+?)\s+of\s+(.+)$/i,fa=new Set(["disabled","checked","hidden","readOnly","readonly","required","multiple","selected","autofocus","autoplay","controls","loop","muted","open","reversed","async","defer","noValidate","novalidate","formNoValidate","formnovalidate","draggable","spellcheck","contentEditable"]);function ya(e){return"string"==typeof e&&ha.test(e)}function ga(e,t){const r=e.match(ha);if(!r)return null;try{return{element:Si(r[2].trim(),t),property:r[1].trim()}}catch{return null}}async function va(e,t,r){if(function(e){return!(!e||"object"!=typeof e)&&"propertyOfExpression"===e.type&&"object"==typeof e.property&&null!==e.property}(e))return async function(e,t,r){const n=e.property?.name;if(!n)return null;let s=await t.evaluate(e.target,r);return Array.isArray(s)&&(s=s[0]),Ai(s)?{element:s,property:n}:null}(e,t,r);if(function(e){return!(!e||"object"!=typeof e)&&"propertyAccess"===e.type&&("string"==typeof e.property||"object"==typeof e.property&&null!==e.property&&"string"==typeof e.property.name)}(e))return async function(e,t,r){const n="string"==typeof e.property?e.property:e.property?.name;if(!n)return null;let s=await t.evaluate(e.object,r);return Array.isArray(s)&&(s=s[0]),Ai(s)?{element:s,property:n}:null}(e,t,r);const n=e;if("possessiveExpression"===n?.type||"memberExpression"===n?.type){const e=n.object,s=n.property;let i=await t.evaluate(e,r);if(Array.isArray(i)&&(i=i[0]),!Ai(i))return null;const a=s?.name||s?.value;return a&&(a.startsWith("@")||a.startsWith("*"))?{element:i,property:a}:null}return null}function ba(e,t){const{element:r,property:n}=e;n.startsWith("*")?Ji(r,n.substring(1),t+""):ma(r,n,t)}async function wa(e,t,r){let n,s;if(e?.for){const s=await t.evaluate(e.for,r);n="number"==typeof s?s:"string"==typeof s?sa(s):void 0}if(e?.until){const n=await t.evaluate(e.until,r);"string"==typeof n&&(s=n)}return{duration:n,untilEvent:s}}function ka(e,t){const r=t?.name,n=function(e){if(!e||"object"!=typeof e)return!1;if("identifier"!==e.type)return!1;const t=e.name;return"string"==typeof t&&function(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return Ki.includes(t)}(t)}(t);if(Ai(e)||Array.isArray(e)&&e.every(e=>Ai(e)))return{type:"element",expression:""};if(n&&r)return{type:"element",expression:r};if("string"==typeof e){const t=e.trim();return t.startsWith("@")||t.startsWith("[@")?{type:"attribute",expression:t}:t.startsWith("*")?{type:"css-property",expression:t}:t.startsWith(".")?{type:"class",expression:t}:t.startsWith("#")||function(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return Ki.some(e=>t.includes(e))}(t)?{type:"element",expression:t}:{type:"class",expression:t}}return{type:"class",expression:""}}const Ea=Ci((()=>{let e,t,r=[xi({description:"Toggle classes, attributes, or interactive elements",syntax:["toggle <class> [on <target>]","toggle @attr","toggle <element> [as modal]","toggle <expr> for <duration>"],examples:["toggle .active on me","toggle @disabled","toggle #myDialog as modal","toggle .loading for 2s"],sideEffects:["dom-mutation"]}),Ei({name:"toggle",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("toggle command requires an argument");const n=e.args[0],s=n?.name;if("between"===s&&e.args.length>=4){const{duration:n,untilEvent:s}=await wa(e.modifiers,t,r),i=await t.evaluate(e.args[1],r),a=await t.evaluate(e.args[3],r),o=[];for(let t=4;e.args.length>t;t++){const r=e.args[t]?.name;"on"!==r&&"from"!==r&&o.push(e.args[t])}const l={filterPrepositions:!0,fallbackModifierKey:"on"},c=await Ni(o,t,r,"toggle",l,e.modifiers);return{type:"classes-between",classA:(i+"").replace(/^\./,""),classB:(a+"").replace(/^\./,""),targets:c,duration:n,untilEvent:s}}const i=await va(n,t,r);if(i)return{type:"property",target:i};const{duration:a,untilEvent:o}=await wa(e.modifiers,t,r),{value:l}=await Gi(n,t,r);if(ya(l)){const e=ga(l,r);if(e)return{type:"property",target:e}}const{type:c,expression:u}=ka(l,n),d={filterPrepositions:!0,fallbackModifierKey:"on"};switch(c){case"attribute":{const{name:n,value:s}=$i(u);return{type:"attribute",name:n,value:s,targets:await Ni(e.args.slice(1),t,r,"toggle",d,e.modifiers),duration:a,untilEvent:o}}case"css-property":{const n=function(e){const t=function(e){const t=e.trim();if(!t.startsWith("*"))return null;const r=t.substring(1).trim();return r?{property:r}:null}(e);if(!t)return null;const r=t.property.toLowerCase();return["display","visibility","opacity"].includes(r)?r:null}(u);if(!n)throw Error("Invalid CSS property: "+u);return{type:"css-property",property:n,targets:await Ni(e.args.slice(1),t,r,"toggle",d,e.modifiers)}}case"element":{let s;if(Ai(l))s=[l];else if(Array.isArray(l)&&l.every(e=>Ai(e)))s=l;else if(u){const e=document.querySelectorAll(u);s=Array.from(e).filter(e=>Ai(e))}else s=await Ni([n],t,r,"toggle",d,e.modifiers);const i=function(e){if(0===e.length)return null;const t=e[0].tagName;if(!e.every(e=>e.tagName===t))return null;switch(t){case"DIALOG":return"dialog";case"DETAILS":return"details";case"SELECT":return"select";case"SUMMARY":return e.map(e=>e.closest("details")).filter(e=>null!==e).length>0?"details":null;default:return null}}(s);if("dialog"===i){const n=await async function(e,t,r,n){if(t?.as){const e=await r.evaluate(t.as,n);if("string"==typeof e&&"modal"===e.toLowerCase())return"modal"}if(e.length>=2){const t=await r.evaluate(e[1],n);if("string"==typeof t){const s=t.toLowerCase();if("modal"===s||"as modal"===s)return"modal";if("as"===s&&e.length>=3){const t=await r.evaluate(e[2],n);if("string"==typeof t&&"modal"===t.toLowerCase())return"modal"}}}return"non-modal"}(e.args,e.modifiers,t,r);return{type:"dialog",mode:n,targets:s}}return"details"===i?{type:"details",targets:la(s)}:"select"===i?{type:"select",targets:s}:{type:"classes",classes:Fi(u),targets:s,duration:a,untilEvent:o}}default:{const n=Fi(u||l);if(!n.length)throw Error("toggle command: no valid class names found");return{type:"classes",classes:n,targets:await Ni(e.args.slice(1),t,r,"toggle",d,e.modifiers),duration:a,untilEvent:o}}}}async execute(e,t){switch(e.type){case"classes":{const r=Ui(e.classes,t);if(0===r.length)return[...e.targets];if(Di(e.targets,r,(e,t)=>{e.classList.toggle(t)}),(e.duration||e.untilEvent)&&r.length)for(const t of e.targets)e.duration&&ua(t,"class",r[0],e.duration),e.untilEvent&&da(t,"class",r[0],e.untilEvent);return[...e.targets]}case"attribute":if(r=e.name,n=e.value,Vi(e.targets,e=>{Bi(e,r,n)}),e.duration||e.untilEvent)for(const t of e.targets)e.duration&&ua(t,"attribute",e.name,e.duration),e.untilEvent&&da(t,"attribute",e.name,e.untilEvent);return[...e.targets];case"css-property":return Vi(e.targets,t=>function(e,t){const r=window.getComputedStyle(e);switch(t){case"display":"none"===r.display?(e.style.display=e.dataset.previousDisplay||"block",delete e.dataset.previousDisplay):(e.dataset.previousDisplay=r.display,e.style.display="none");break;case"visibility":e.style.visibility="hidden"===r.visibility?"visible":"hidden";break;case"opacity":e.style.opacity=0===parseFloat(r.opacity)?"1":"0"}}(t,e.property));case"property":return function(e){const t=function(e){const{element:t,property:r}=e;return r.startsWith("*")?function(e,t){return window.getComputedStyle(e).getPropertyValue(t)}(t,r.substring(1)):Ut(t,r)}(e),r=e.property,n=r.startsWith("@")?r.substring(1):r;if("boolean"==typeof t||fa.has(n)||fa.has(n.toLowerCase())){const r=!t;return ba(e,r),r}if("number"==typeof t){const r=0===t?1:0;return ba(e,r),r}if("string"==typeof t){const n="__ht_"+r,s=e.element[n];return""===t&&void 0!==s?(ba(e,s),s):(e.element[n]=t,ba(e,""),"")}ba(e,!t)}(e.target),[e.target.element];case"dialog":return Vi(e.targets,t=>{return n=e.mode,void((r=t).open?r.close():"modal"===n?r.showModal():r.show());var r,n});case"details":return Vi(e.targets,e=>{var t;(t=e).open=!t.open});case"select":return Vi(e.targets,e=>function(e){if(document.activeElement===e)e.blur();else{if(e.focus(),"showPicker"in e&&"function"==typeof e.showPicker)try{return void e.showPicker()}catch{}const t=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});e.dispatchEvent(t)}}(e));case"classes-between":for(const t of e.targets){const r=t.classList.contains(e.classA),n=t.classList.contains(e.classB);r?(t.classList.remove(e.classA),t.classList.add(e.classB)):n?(t.classList.remove(e.classB),t.classList.add(e.classA)):t.classList.add(e.classA)}if(e.duration||e.untilEvent)for(const t of e.targets)e.duration&&ua(t,"class",e.classA,e.duration),e.untilEvent&&da(t,"class",e.classA,e.untilEvent);return[...e.targets]}var r,n}},vi(t,"ToggleCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})());const xa=Ci((()=>{let e,t,r=[xi({description:"Insert content into elements or properties",syntax:["put <value> into <target>","put <value> before <target>","put <value> after <target>"],examples:['put "Hello World" into me',"put <div>Content</div> before #target","put value into #elem's innerHTML"],sideEffects:["dom-mutation"]}),Ei({name:"put",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("put requires arguments");const n=e=>e?.type||"unknown",s=["into","before","after","at","at start of","at end of"];let i=-1,a=null;for(let t=0;e.args.length>t;t++){const r=e.args[t],o=n(r),l="literal"===o?r.value:r.name;if(("literal"===o||"identifier"===o)&&s.includes(l)){i=t,a=l;break}}let o=null,l=null;if(-1===i)if(e.modifiers.into||e.modifiers.before||e.modifiers.after){const t=e.modifiers.into?"into":e.modifiers.before?"before":"after";o=e.args[0],a=t,l=e.modifiers[t]}else if(3>e.args.length){if(2>e.args.length)throw Error("put requires content and position");o=e.args[0],a=e.args[1]?.value||e.args[1]?.name||"into"}else o=e.args[0],a=e.args[1]?.value||e.args[1]?.name||null,l=e.args[2];else o=e.args.slice(0,i)[0]||null,l=e.args.slice(i+1)[0]||null;if(!o)throw Error("put requires content");if(!a)throw Error("put requires position keyword");const c=await t.evaluate(o,r),u=this.mapPosition(a);let d,m,p=null;if(l){const e=n(l),s=await va(l,t,r);if(s)return{value:c,targets:[s.element],position:"replace",memberPath:s.property};if("memberExpression"===e){const e=l.object,n=l.property;if("selector"===e?.type?p=e.value:"identifier"===e?.type&&(p=e.name),p&&n?.name)d=n.name;else{const e=await t.evaluate(l,r);"string"==typeof e&&(p=e)}}else if("identifier"===e&&"me"===l.name)p=null;else if("selector"===e||"cssSelector"===e)p=l.value||l.selector;else if("literal"===e){const e=l.value;if("string"==typeof e&&ya(e)){const t=ga(e,r);if(t)return{value:c,targets:[t.element],position:"replace",memberPath:t.property}}"string"==typeof e&&this.looksLikeCss(e)?p=e:m=e+""}else if("identifier"===e){const e=l.name;if(this.looksLikeCss(e))p=e;else{const n=await t.evaluate(l,r),s=this.resolveEvaluatedAsElements(n);if(s)return{value:c,targets:s,position:u,memberPath:d};m=e}}else{const e=await t.evaluate(l,r),n=this.resolveEvaluatedAsElements(e);if(n)return{value:c,targets:n,position:u,memberPath:d};"string"==typeof e&&(this.looksLikeCss(e)?p=e:m=e)}}return m?{value:c,targets:[],position:u,memberPath:d,variableName:m}:{value:c,targets:await this.resolveTargets(p,r),position:u,memberPath:d}}async execute(e,t){const{value:r,targets:n,position:s,memberPath:i,variableName:a}=e;if(a)return t.locals&&t.locals.set(a,r),t[a]=r,void Object.assign(t,{it:r});if(i)for(const e of n)this.setProperty(e,i,r);else for(const e of n){const t=this.parseValue(r);this.insertContent(e,t,s)}return n}mapPosition(e){switch(e){case"into":return"replace";case"before":return"beforebegin";case"after":return"afterend";case"at start of":return"afterbegin";case"at end of":return"beforeend";default:throw Error("Invalid position: "+e)}}async resolveTargets(e,t){if(!e||"me"===e){if(!t.me||!Ai(t.me))throw Error("put: no target and context.me is null");return[t.me]}const r=Array.from(document.querySelectorAll(e)).filter(e=>Ai(e));if(!r.length)throw Error(`No elements: "${e}"`);return r}parseValue(e){return Ai(e)?e:null==e?"":e+""}insertContent(e,t,r){if("replace"!==r)if(Ai(t)){const n=t;switch(r){case"beforebegin":e.parentElement?.insertBefore(n,e);break;case"afterbegin":e.insertBefore(n,e.firstChild);break;case"beforeend":e.appendChild(n);break;case"afterend":e.parentElement?.insertBefore(n,e.nextSibling)}}else t.includes("<")&&t.includes(">")?e.insertAdjacentHTML(r,t):e.insertAdjacentText(r,t);else Ai(t)?(e.innerHTML="",e.appendChild(t)):t.includes("<")&&t.includes(">")?e.innerHTML=t:e.textContent=t}resolveEvaluatedAsElements(e){if(Ai(e))return[e];if(Array.isArray(e)){const t=e.filter(Ai);return t.length>0?t:null}if("undefined"!=typeof NodeList&&e instanceof NodeList){const t=Array.from(e).filter(Ai);return t.length>0?t:null}return null}looksLikeCss(e){return!!e&&(!!/^[#.\[]/.test(e)||(!(!/[>+~\s]/.test(e)||1>=e.length)||["div","span","p","a","button","input","form","ul","li","ol","table","tr","td","th","img","h1","h2","h3","h4","h5","h6","section","article","header","footer","nav","main","aside","dialog","label","select","option","textarea"].includes(e.toLowerCase())))}setProperty(e,t,r){const n=t.split(".");let s=e;for(let e=0;n.length-1>e;e++){if(!s[n[e]])throw Error(`Property path "${t}" does not exist`);s=s[n[e]]}s[n[n.length-1]]=r}},vi(t,"PutCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})());function Ca(e){if(null==e)return 0;if("number"==typeof e)return isFinite(e)?e:0;if("string"==typeof e)return parseFloat(e);if("boolean"==typeof e)return e?1:0;if(Array.isArray(e))return e.length;if("object"==typeof e){if("length"in e&&"number"==typeof e.length)return e.length;if("function"==typeof e.valueOf){const t=e.valueOf();if("number"==typeof t)return t}return NaN}return 0}function Aa(e,t,r){return"global"===r&&t.globals&&t.globals.has(e)?t.globals.get(e):"global"!==r&&t.locals&&t.locals.has(e)?t.locals.get(e):t.globals&&t.globals.has(e)?t.globals.get(e):t.variables&&t.variables.has(e)?t.variables.get(e):"global"===r&&t.locals&&t.locals.has(e)?t.locals.get(e):"undefined"!=typeof window&&e in window?window[e]:"undefined"!=typeof globalThis&&e in globalThis?globalThis[e]:void 0}function Sa(e,t,r,n){if("global"===n)return r.globals.set(e,t),void("undefined"!=typeof window&&(window[e]=t));if(r.locals&&r.locals.has(e))r.locals.set(e,t);else{if(r.globals&&r.globals.has(e))return r.globals.set(e,t),void("undefined"!=typeof window&&e in window&&(window[e]=t));if(!r.variables||!r.variables.has(e))return"undefined"!=typeof window&&e in window?(window[e]=t,void r.globals.set(e,t)):void r.locals.set(e,t);r.variables.set(e,t)}}function Ta(e,t){return"me"===e?t.me:"it"===e?t.it:"you"===e?t.you:Aa(e,t)}let Oa=(()=>{let e,t,r=[xi({description:"Create DOM elements or class instances",syntax:["make a <tag#id.class1.class2/>","make a <ClassName> from <args> called <identifier>"],examples:["make an <a.navlink/> called linkElement",'make a URL from "/path/", "https://origin.example.com"'],sideEffects:["dom-creation","data-mutation"]}),Ei({name:"make",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){const n=e.args.length>0?await t.evaluate(e.args[0],r):void 0;if(!n)throw Error("Make command requires class name or DOM element expression");const s=void 0!==e.modifiers.an?"an":"a",i=await async function(e,t,r){if(!e)return[];if("arrayLiteral"===e.type&&Array.isArray(e.args)){const n=[];for(const s of e.args)n.push(await t.evaluate(s,r));return n}const n=await t.evaluate(e,r);return Array.isArray(n)?n:[n]}(e.modifiers.from,t,r),a=await async function(e,t,r){if(!e)return;if("symbol"===e.type&&"string"==typeof e.name)return e.name;const n=await t.evaluate(e,r);return"string"==typeof n?n:n+""}(e.modifiers.called,t,r);return{article:s,expression:n,constructorArgs:i,variableName:a}}async execute(e,t){const{expression:r,constructorArgs:n=[],variableName:s}=e,i="string"==typeof r&&r.startsWith("<")&&r.endsWith("/>")?function(e){const t=e.slice(1,-2);let r="div",n=t;const s=t.match(/^([a-zA-Z][a-zA-Z0-9]*)/);s&&(r=s[1],n=t.slice(s[0].length));const i=document.createElement(r),a=n.split(/(?=[.#])/);for(const e of a)if(e.startsWith("#")){const t=e.slice(1);t&&(i.id=t)}else if(e.startsWith(".")){const t=e.slice(1);t&&i.classList.add(t)}return i}(r):function(e,t,r){if(Ai(e))return e;const n=e+"";let s;if("undefined"!=typeof window&&(s=window[n]),s||"undefined"==typeof global||(s=global[n]),!s&&r.variables?.has(n)&&(s=r.variables.get(n)),!s||"function"!=typeof s)throw Error(`Constructor '${n}' not found or is not a function`);return 0===t.length?new s:new s(...t)}(r,n,t);return Object.assign(t,{it:i}),s&&Sa(s,i,t),i}},vi(t,"MakeCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})();const La=Ci(Oa);function Pa(e,t,r){return e?new Promise(r=>{const n=Ia(()=>{e.removeEventListener(t,s)},r),s=e=>{n({event:e,timedOut:!1,cancelled:!1})};e.addEventListener(t,s)}):Promise.reject(Error("waitForEvent: no target provided"))}function Na(e){return new Promise(t=>setTimeout(t,e))}function Ia(e,t){let r=!1;return n=>{r||(r=!0,e(),t(n))}}const Ra=Ci((()=>{let e,t,r=[xi({description:"Wait for time delay, event, or race condition",syntax:["wait <time>","wait for <event>","wait for <event> or <condition>"],examples:["wait 2s","wait for click","wait for click or 1s","wait for mousemove(clientX, clientY)"],sideEffects:["time","event-listening"]}),Ei({name:"wait",category:"async"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("wait command requires an argument");if(e.modifiers.or)return this.parseRaceCondition(e,t,r);if(e.modifiers.for)return this.parseEventWait(e.modifiers.for,e.modifiers.from,t,r);const n=e.args[0];return"arrayLiteral"===n.type&&n.elements?this.parseEventArrayWait(n.elements,e.args[1],t,r):this.parseTimeWait(e.args[0],t,r)}async execute(e,t){const r=Date.now();if("time"===e.type)return await Na(e.milliseconds),{type:"time",result:e.milliseconds,duration:Date.now()-r};if("event"===e.type){const n=e.target??t.me??document,s=(await Pa(n,e.eventName)).event;if(Object.assign(t,{it:s}),e.destructure)for(const r of e.destructure)r in s&&t.locals.set(r,s[r]);return{type:"event",result:s,duration:Date.now()-r}}const{result:n,winningCondition:s}=await this.executeRace(e.conditions,t);if(Object.assign(t,{it:n}),n instanceof Event&&"event"===s?.type&&s.destructure)for(const e of s.destructure)e in n&&t.locals.set(e,n[e]);return{type:n instanceof Event?"event":"time",result:n,duration:Date.now()-r}}async parseTimeWait(e,t,r){return{type:"time",milliseconds:ia(await t.evaluate(e,r))}}async parseEventWait(e,t,r,n){const s=await r.evaluate(e,n);if("string"!=typeof s)throw Error("wait for: event name must be a string");const i=s.match(/^(\w+)\(([^)]+)\)$/),a=i?i[1]:s,o=i?i[2].split(",").map(e=>e.trim()):void 0;let l;if(t){const e=await r.evaluate(t,n);if(!e||"object"!=typeof e||!("addEventListener"in e))throw Error("wait for from: target must be an EventTarget");l=e}else l=n.me??void 0;return{type:"event",eventName:a,target:l,destructure:o}}async parseEventArrayWait(e,t,r,n){const s=[];for(const t of e){const e=t;if("objectLiteral"===e.type&&e.properties){let t="",r=[];for(const n of e.properties){const e=n.key?.name||n.key?.value;"name"===e&&n.value?t=n.value.value||"":"args"===e&&n.value?.elements&&(r=n.value.elements.map(e=>e.value||e.name||""))}t&&s.push({name:t,params:r})}}let i;if(t){const e=await r.evaluate(t,n);e&&"object"==typeof e&&"addEventListener"in e&&(i=e)}return i||(i=n.me??void 0),1===s.length?{type:"event",eventName:s[0].name,target:i,destructure:s[0].params.length>0?s[0].params:void 0}:{type:"race",conditions:s.map(e=>({type:"event",eventName:e.name,target:i,destructure:e.params.length>0?e.params:void 0}))}}async parseRaceCondition(e,t,r){const n=[];e.modifiers.for?n.push(await this.parseEventWait(e.modifiers.for,e.modifiers.from,t,r)):e.args[0]&&n.push(await this.parseTimeWait(e.args[0],t,r));const s=await t.evaluate(e.modifiers.or,r),i=Array.isArray(s)?s:[s];for(const e of i)try{n.push({type:"time",milliseconds:ia(e)})}catch{if("string"==typeof e){const t=e.match(/^(\w+)\(([^)]+)\)$/);n.push(t?{type:"event",eventName:t[1],target:r.me??void 0,destructure:t[2].split(",").map(e=>e.trim())}:{type:"event",eventName:e,target:r.me??void 0})}}if(2>n.length)throw Error("wait: race requires at least 2 conditions");return{type:"race",conditions:n}}async executeRace(e,t){const r=e.map(e=>"time"===e.type?Na(e.milliseconds).then(()=>({result:e.milliseconds,winningCondition:e})):Pa(e.target??t.me??document,e.eventName).then(t=>({result:t.event,winningCondition:e})));return Promise.race(r)}},vi(t,"WaitCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})()),ja=new Map;const _a=Ci((()=>{let e,t,r=[xi({description:"Make HTTP requests with lifecycle event support",syntax:["fetch <url>","fetch <url> as <type>","fetch <url> with <options>"],examples:['fetch "/api/data"','fetch "/api/users" as json','fetch "/api/save" with { method:"POST" }'],sideEffects:["network","event-dispatching"]}),Ei({name:"fetch",category:"async"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("fetch requires a URL");return{url:await this.parseURL(e.args[0],t,r),responseType:this.parseResponseType(e.modifiers.as),options:await this.parseRequestOptions(e.modifiers.with,t,r)}}async execute(e,t){const r=Date.now(),{url:n,responseType:s,options:i}=e,a=new AbortController;let o;t.me&&(o=()=>a.abort(),t.me.addEventListener("fetch:abort",o,{once:!0}));const l={...i,signal:a.signal},c=ja.get(s);if(c?.accept){const e=new Headers(l.headers);e.has("Accept")||e.set("Accept",c.accept),l.headers=e}if(t.me){const e={...l,sender:t.me,headers:l.headers||{}};this.dispatchEvent(t.me,"fetch:beforeRequest",e),l.headers=e.headers}let u;i.timeout&&(u=setTimeout(()=>a.abort(),i.timeout));try{let e=await fetch(n,l);if(t.me){const r={response:e};this.dispatchEvent(t.me,"fetch:afterResponse",r),e=r.response}const i=await this.handleResponse(e,s,t);t.me&&this.dispatchEvent(t.me,"fetch:afterRequest",{result:i});const a={status:e.status,statusText:e.statusText,headers:e.headers,data:i,url:e.url,duration:Date.now()-r};return Object.assign(t,{it:i}),a}catch(e){if(t.me&&this.dispatchEvent(t.me,"fetch:error",{reason:e instanceof Error?e.message:e+"",error:e}),e instanceof Error&&"AbortError"===e.name)throw Error("Fetch aborted for "+n);throw Error(`Fetch failed for ${n}: ${e instanceof Error?e.message:e+""}`)}finally{u&&clearTimeout(u),t.me&&o&&t.me.removeEventListener("fetch:abort",o)}}async parseURL(e,t,r){const n=await t.evaluate(e,r);if("string"!=typeof n||!n)throw Error("fetch: URL must be a non-empty string");return n}parseResponseType(e){if(!e)return"text";if(("identifier"===e.type||"expression"===e.type)&&e.name){const t=e.name.toLowerCase();if("object"===t)return"json";if(["text","json","html","response","blob","arraybuffer"].includes(t))return"arraybuffer"===t?"arrayBuffer":t;if(ja.has(t))return t;throw Error(`fetch: invalid response type "${t}"`)}return"text"}async parseRequestOptions(e,t,r){if(!e)return{};const n=await t.evaluate(e,r);if("object"!=typeof n||null===n)throw Error('fetch: "with" options must be an object');const s={};return"method"in n&&(s.method=(n.method+"").toUpperCase()),"headers"in n&&(s.headers=this.parseHeaders(n.headers)),"body"in n&&(s.body=this.parseBody(n.body)),"credentials"in n&&(s.credentials=n.credentials),"mode"in n&&(s.mode=n.mode),"cache"in n&&(s.cache=n.cache),s}parseHeaders(e){if(e instanceof Headers)return e;const t=new Headers;if("object"==typeof e&&null!==e)for(const[r,n]of Object.entries(e))t.set(r,n+"");return t}parseBody(e){return null==e?null:e instanceof FormData||e instanceof Blob||e instanceof ArrayBuffer||e instanceof URLSearchParams||"string"==typeof e?e:"object"==typeof e?JSON.stringify(e):e+""}async handleResponse(e,t,r){switch(t){case"response":return e;case"json":return e.json();case"html":return this.parseHTML(await e.text());case"blob":return e.blob();case"arrayBuffer":return e.arrayBuffer();case"text":return e.text();default:{const n=ja.get(t);return n?n.handler(e,r):e.text()}}}parseHTML(e){const t=(new DOMParser).parseFromString(e,"text/html"),r=document.createDocumentFragment();return Array.from(t.body.childNodes).forEach(e=>r.appendChild(e.cloneNode(!0))),1===r.childNodes.length&&Ai(r.firstChild)?r.firstChild:r}dispatchEvent(e,t,r){e.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:!0,cancelable:!0}))}},vi(t,"FetchCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})()),qa=Ci((()=>{let e,t,r=[xi({description:"Set values to variables, attributes, or properties",syntax:["set <target> to <value>"],examples:['set myVar to "value"','set @data-theme to "dark"','set my innerHTML to "content"'],sideEffects:["state-mutation","dom-mutation"]}),Ei({name:"set",category:"data"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("set command requires a target");const n=e.args[0],s=n?.name||n?.value,i=await va(n,t,r);if(i){const n=await this.extractValue(e,t,r);if(i.property.startsWith("*")){const e=i.property.substring(1);return{type:"style",element:i.element,property:e,value:n+""}}return{type:"property",element:i.element,property:i.property,value:n}}if("memberExpression"===n?.type||"propertyAccess"===n?.type){const s=await this.tryParseMemberExpression(n,e,t,r);if(s)return s}let a;if(a="identifier"!==n?.type&&"variable"!==n?.type||"string"!=typeof s?await t.evaluate(n,r):s,function(e){if("object"!=typeof e||null===e||Array.isArray(e))return!1;if(Ai(e)||e instanceof Node)return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(a))return{type:"object-literal",properties:a,targets:await this.resolveTargets(e.modifiers.on,t,r)};if(ya(a)){const n=ga(a,r);if(n){const s=await this.extractValue(e,t,r);return{type:"property",element:n.element,property:n.property,value:s}}return this.parseTheXofY(a,e,t,r)}if("string"==typeof a&&Wi(a)){const n=a.substring(1).trim(),s=await this.extractValue(e,t,r);return{type:"style",element:await this.resolveElement(e.modifiers.on,t,r),property:n,value:s+""}}if("string"==typeof a&&Mi(a)){const n=a.substring(1).trim(),s=await this.extractValue(e,t,r);return{type:"attribute",element:await this.resolveElement(e.modifiers.on,t,r),name:n,value:s}}if("string"==typeof a){const n=a.match(/^(my|me|its?|your?)\s+(.+)$/i);if(n){const s=Li(n[1],r),i=await this.extractValue(e,t,r);return{type:"property",element:s,property:n[2],value:i}}}if(Ai(a))return{type:"property",element:a,property:"textContent",value:await this.extractValue(e,t,r)};if(Array.isArray(a)&&a.length>0&&Ai(a[0])){const n=await this.extractValue(e,t,r);return{type:"property",element:a[0],property:"textContent",value:n}}if("string"!=typeof a)throw Error("set command target must be a string or object literal");return{type:"variable",name:a,value:await this.extractValue(e,t,r)}}async execute(e,t){switch(e.type){case"variable":return t.locals.set(e.name,e.value),"result"!==e.name&&"it"!==e.name||Object.assign(t,{[e.name]:e.value}),Object.assign(t,{it:e.value}),{target:e.name,value:e.value,targetType:"variable"};case"attribute":return e.element.setAttribute(e.name,e.value+""),Object.assign(t,{it:e.value}),{target:"@"+e.name,value:e.value,targetType:"attribute"};case"property":return ma(e.element,e.property,e.value),Object.assign(t,{it:e.value}),{target:e.element,value:e.value,targetType:"property"};case"style":return Ji(e.element,e.property,e.value),Object.assign(t,{it:e.value}),{target:e.element,value:e.value,targetType:"property"};case"object-literal":for(const t of e.targets)for(const[r,n]of Object.entries(e.properties))ma(t,r,n);return Object.assign(t,{it:e.properties}),{target:e.targets[0]||"unknown",value:e.properties,targetType:"property"};case"member-assignment":return e.container[e.property]=e.value,Object.assign(t,{it:e.value}),{target:e.property,value:e.value,targetType:"property"};default:throw Error("Unknown input type: "+e.type)}}async tryParseMemberExpression(e,t,r,n){const s=e.object,i=e.property;if(s?.name&&i?.name){const e=s.name.toLowerCase();if(["me","my","it","its","you","your"].includes(e)){const s=Li(e,n),a=await this.extractValue(t,r,n);return{type:"property",element:s,property:i.name,value:a}}}const a=e.object,o=e.computed;if(a){const s=await r.evaluate(a,n);if(null!=s&&"object"==typeof s){const a=o?await r.evaluate(e.property,n)+"":i?.name||"";if(a)return{type:"member-assignment",container:s,property:a,value:await this.extractValue(t,r,n)}}}return null}async extractValue(e,t,r){if(e.modifiers.to)return t.evaluate(e.modifiers.to,r);const n=e.args.findIndex(e=>"identifier"===e.type&&"to"===e.name);if(n>=0&&e.args.length>n+1)return t.evaluate(e.args[n+1],r);if(e.args.length>=2)return t.evaluate(e.args[1],r);throw Error('set command requires a value (use "to" keyword)')}async resolveElement(e,t,r){return Si(e?await t.evaluate(e,r):void 0,r)}async resolveTargets(e,t,r){return Ti(e?await t.evaluate(e,r):void 0,r)}async parseTheXofY(e,t,r,n){const s=e.match(/^the\s+(.+?)\s+of\s+(.+)$/i);if(!s)throw Error('Invalid "the X of Y" syntax');const[,i,a]=s,o=Si(a,n),l=await this.extractValue(t,r,n);return{type:"property",element:o,property:i.trim(),value:l}}validate(e){if(!e||"object"!=typeof e)return!1;const t=e;if(!t.type||"string"!=typeof t.type)return!1;if(!["variable","attribute","property","style","object-literal"].includes(t.type))return!1;switch(t.type){case"variable":return"string"==typeof t.name&&"value"in t;case"attribute":return"string"==typeof t.name&&Ai(t.element)&&"value"in t;case"property":return"string"==typeof t.property&&Ai(t.element)&&"value"in t;case"style":return"string"==typeof t.property&&""!==t.property&&Ai(t.element)&&"string"==typeof t.value;case"object-literal":return null!==t.properties&&"object"==typeof t.properties&&Array.isArray(t.targets)&&t.targets.length>0;default:return!1}}},vi(t,"SetCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})());let Ma=(()=>{let e,t,r=[xi({description:"Modify a variable or property by a specified amount (default: 1)",syntax:["increment <target> [by <number>]","decrement <target> [by <number>]"],examples:["increment counter","increment counter by 5","decrement counter","decrement counter by 5"],sideEffects:["data-mutation","context-modification"],aliases:["decrement"]}),Ei({name:"increment",category:"data"})],n=[];return t=class{async parseInput(e,t,r){const n="decrement"===e.commandName?.toLowerCase()?"decrement":"increment",s=await async function(e,t,r,n){if(!e.args||0===e.args.length)throw Error(n+" command requires a target");const s=e.args[0];let i,a;const o=(l=s)&&"object"==typeof l&&l.type||"unknown";var l;if("identifier"===o)i=s.name,s.scope&&(a=s.scope);else if("literal"===o)i=s.value;else{const e=await t.evaluate(s,r);i=Array.isArray(e)&&e.length>0?e[0]:e}let c=1,u=a;for(let n=1;e.args.length>n;n++){const s=e.args[n];if(s&&"literal"===s.type){const e=s.value;"global"===e?u="global":"number"==typeof e&&(c=e)}else if(s&&"literal"!==s.type){const e=await t.evaluate(s,r);"number"==typeof e&&(c=e)}}return{target:i,amount:c,...u&&{scope:u}}}(e,t,r,n);return{...s,operation:n}}async execute(e,t){const{target:r,property:n,scope:s,amount:i=1,operation:a="increment"}=e,o=function(e,t,r,n){if("number"==typeof e)return e;if(Ai(e)){const r=e;return t?t.startsWith("data-")||["id","class","title","alt","src","href"].includes(t)?Ca(r.getAttribute(t)):Ca(r[t]):Ca(r.value||r.textContent)}return"string"==typeof e?"global"===r?Ca(Aa(e,n,"global")):e.includes(".")?function(e,t){const r=e.split("."),n=r[1],s=Ta(r[0],t);return s?Ca(s[n]):0}(e,n):Ca("me"===e&&n.me?n.me.value||0:"it"===e?n.it||0:"you"===e&&n.you?n.you.value||0:Aa(e,n)):Ca(e)}(r,n,s,t);let l;if(isNaN(o))l=NaN;else{const e=isFinite(i)?i:1;l="increment"===a?o+e:o-e}return function(e,t,r,n,s){if(Ai(e)){const r=e;return void(t?t.startsWith("data-")||["id","class","title","alt","src","href"].includes(t)?r.setAttribute(t,n+""):r[t]=n:"value"in r&&void 0!==r.value?r.value=n+"":r.textContent=n+"")}if("string"==typeof e){if("global"===r)return void Sa(e,n,s,"global");if(e.includes("."))return void function(e,t,r){const n=e.split("."),s=n[1],i=Ta(n[0],r);i&&(i[s]=t)}(e,n,s);if("me"===e&&s.me)return void(s.me.value=n);if("it"===e)return void Object.assign(s,{it:n});if("you"===e&&s.you)return void(s.you.value=n);Sa(e,n,s)}}(r,n,s,l,t),Object.assign(t,{it:l}),l}},vi(t,"NumericModifyCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})();const $a=Ci(Ma),Va=Ci(Ma),Da=Ci((()=>{let e,t,r=[xi({description:"Log values to the console",syntax:"log [<values...>]",examples:['log "Hello World"',"log me.value","log x y z",'log "Result:" result'],sideEffects:["console-output"]}),Ei({name:"log",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){return e.args&&0!==e.args.length?{values:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}:{values:[]}}async execute(e,t){const r="undefined"!=typeof window?window.console:console;0===e.values.length?r.log():r.log(...e.values)}validate(e){return"object"==typeof e&&null!==e&&Array.isArray(e.values)}},vi(t,"LogCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})());function Ba(e){const t=e.trim();return/^\d+$/.test(t)?parseInt(t,10):/^\d*\.\d+$/.test(t)?parseFloat(t):"true"===t||"false"!==t&&("null"===t?null:"undefined"!==t?t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'")?t.slice(1,-1):t:void 0)}let Fa=(()=>{let e,t,r=[xi({description:"Dispatch events on elements",syntax:["trigger <event> on <target>","trigger <event>(<detail>) on <target>","send <event> to <target>","send <event>(<detail>) to <target>"],examples:["trigger click on #button","trigger customEvent on me","send dataEvent to #target","send myEvent(count: 42) to me"],sideEffects:["event-dispatch"],aliases:["send"]}),Ei({name:"trigger",category:"event"})],n=[];return t=class{async parseInput(e,t,r){const n="send"===e.commandName?.toLowerCase()?"send":"trigger",s=n;if(!e.args?.length)throw Error(s+" command requires an event name");const i=e=>e?.type||"unknown",a=e.args[0];let o,l,c;if("functionCall"===i(a)||"callExpression"===i(a)){o=a.name||a.callee?.name;const e=a.args||a.arguments;e?.length&&(l=await this.parseEventDetail(e,t,r))}else if("identifier"===i(a)||"keyword"===i(a))o=a.name;else{const e=await t.evaluate(a,r);o="string"==typeof e?e:e+""}const u=e.modifiers?.on||e.modifiers?.to;if(u)c=await this.resolveTargets([u],t,r,s);else{const n=e.args.findIndex((e,t)=>{if(0===t)return!1;const r=e.name||e.value;return"on"===r||"to"===r});if(-1!==n&&e.args.length-1>n){const i=e.args.slice(n+1),a=i.findIndex(e=>"with"===(e.name||e.value)),o=-1===a?i:i.slice(0,a);c=await this.resolveTargets(o,t,r,s)}else{if(!r.me)throw Error(s+": no target specified and context.me is null");c=[r.me]}}return{eventName:o,detail:l,targets:c,options:await this.parseEventOptions(e.args,t,r),mode:n}}async execute(e,t){const r=function(e,t,r={}){return new CustomEvent(e,{detail:void 0!==t?t:{},bubbles:void 0===r.bubbles||r.bubbles,cancelable:void 0===r.cancelable||r.cancelable,composed:void 0!==r.composed&&r.composed})}(e.eventName,e.detail,e.options);for(const t of e.targets)t.dispatchEvent(r);t.it=r}async resolveTargets(e,t,r,n){const s=[];for(const n of e){const e=await t.evaluate(n,r);if("window"!==e&&e!==window)if("document"!==e&&e!==document)if("me"===e&&r.me)s.push(r.me);else if("you"===e&&r.you)s.push(r.you);else if("it"===e&&r.it)s.push(r.it);else if(Ai(e))s.push(e);else if(e instanceof NodeList)s.push(...Array.from(e).filter(Ai));else if(Array.isArray(e))s.push(...e.filter(Ai));else{if("string"==typeof e){const t=document.querySelectorAll(e);if(0===t.length)throw Error(`No elements found: "${e}"`);s.push(...Array.from(t).filter(Ai));continue}if(!e||"object"!=typeof e||!("addEventListener"in e))throw Error("Invalid target: "+typeof e);s.push(e)}else s.push(document);else s.push(window)}if(!s.length)throw Error(n+": no valid targets");return s}async parseEventDetail(e,t,r){if(!e?.length)return;if(1===e.length){const n=e[0];if("objectLiteral"!==n?.type)return await t.evaluate(n,r)}const n={};for(const s of e){const e=await t.evaluate(s,r);if("object"!=typeof e||null===e||Array.isArray(e)){if("string"==typeof e&&e.includes(":")){const[t,r]=e.split(":",2);n[t.trim()]=Ba(r.trim())}}else Object.assign(n,e)}return Object.keys(n).length?n:void 0}async parseEventOptions(e,t,r){const n={bubbles:!0,cancelable:!0,composed:!1},s=e.findIndex(e=>"with"===(e.name||e.value));if(-1===s)return n;for(const i of e.slice(s+1)){const e=await t.evaluate(i,r);if("string"==typeof e){const t=e.toLowerCase();"bubbles"===t?n.bubbles=!0:"nobubbles"===t?n.bubbles=!1:"cancelable"===t?n.cancelable=!0:"nocancelable"===t?n.cancelable=!1:"composed"===t&&(n.composed=!0)}}return n}},vi(t,"EventDispatchCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})();const za=Ci(Fa),Ha=Ci(Fa),Ua=Ci((()=>{let e,t,r=[xi({description:"Navigation functionality including URL navigation, element scrolling, and browser history",syntax:["go back","go to url <url> [in new window]","go to [position] [of] <element>"],examples:["go back",'go to url "https://example.com"',"go to top of #header"],sideEffects:["navigation","scrolling"]}),Ei({name:"go",category:"navigation"})],n=[];return t=class{async parseInput(e,t,r){return e.args&&0!==e.args.length?{args:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}:{args:[]}}async execute(e,t){const{args:r}=e;if(0===r.length)throw Error("Go command requires arguments");return"string"==typeof r[0]&&"back"===r[0].toLowerCase()?(await this.goBack(),{result:"back",type:"back"}):this.isUrlNavigation(r)?{result:await this.navigateToUrl(r,t),type:"url"}:{result:await this.scrollToElement(r,t),type:"scroll"}}isUrlNavigation(e){return-1!==e.findIndex(e=>"url"===e)}async goBack(){if("undefined"==typeof window||!window.history)throw Error("Browser history API not available");window.history.back()}async navigateToUrl(e,t){const r=e.findIndex(e=>"url"===e),n=e[r+1];if(!n)throw Error('URL is required after "url" keyword');const s="string"==typeof n?n:n+"",i=e.includes("new")&&e.includes("window");if(!this.isValidUrl(s))throw Error(`Invalid URL: "${s}"`);if(i){if("undefined"!=typeof window&&window.open){const e=window.open(s,"_blank");e?.focus&&e.focus()}}else s.startsWith("#")?"undefined"!=typeof window&&(window.location.hash=s):"undefined"!=typeof window&&(window.location.assign?.(s)??(window.location.href=s));return s}isValidUrl(e){try{return e.startsWith("/")||e.startsWith("#")||new URL(e),!0}catch{return!1}}async scrollToElement(e,t){const r=this.parseScrollPosition(e),n=this.parseScrollTarget(e),s=this.parseScrollOffset(e),i=!e.includes("instantly"),a=this.resolveScrollTarget(n,t);if(!a)throw Error("Target element not found: "+n);if("undefined"!=typeof window){const e=i?"smooth":"instant",t=this.mapVerticalPosition(r.vertical),n=this.mapHorizontalPosition(r.horizontal);if(0!==s){a.scrollIntoView?.({behavior:e,block:t,inline:n});const{x:i,y:o}=this.calculateScrollPosition(a,r,s);window.scrollTo?.({left:i,top:o,behavior:e})}else a.scrollIntoView?.({behavior:e,block:t,inline:n})}return a}mapVerticalPosition(e){return{top:"start",middle:"center",bottom:"end",nearest:"nearest"}[e]||"start"}mapHorizontalPosition(e){return{left:"start",center:"center",right:"end",nearest:"nearest"}[e]||"nearest"}parseScrollPosition(e){const t={vertical:"top",horizontal:"nearest"},r=["top","middle","bottom"],n=["left","center","right"];let s=!1,i=!1;for(const a of e)"string"==typeof a&&(r.includes(a)?(t.vertical=a,s=!0):n.includes(a)&&(t.horizontal=a,i=!0));return i&&!s&&(t.vertical="nearest"),t}parseScrollTarget(e){const t=e.findIndex(e=>"of"===e);if(-1!==t&&e.length>t+1){let r=e[t+1];return"the"===r&&e.length>t+2&&(r=e[t+2]),r}for(const t of e)if("object"==typeof t&&t&&t.nodeType)return t;const r=["top","middle","bottom","left","center","right","of","the","to","smoothly","instantly"];for(const t of e)if("string"==typeof t&&!r.includes(t)&&(t.startsWith("#")||t.startsWith(".")||t.includes("[")||/^[a-zA-Z][a-zA-Z0-9-]*$/.test(t)))return t;return"body"}parseScrollOffset(e){for(let t=0;e.length>t;t++){const r=e[t];if("string"==typeof r){const e=r.match(/^([+-]?\d+)(px)?$/);if(e)return parseInt(e[1],10)}if(("+"===r||"-"===r)&&e.length>t+1){const n=e[t+1],s="number"==typeof n?n:parseInt((n+"").replace("px",""),10);if(!isNaN(s))return"-"===r?-s:s}}return 0}resolveScrollTarget(e,t){if("object"==typeof e&&e&&e.nodeType)return e;const r="string"==typeof e?e:e+"";if("body"===r&&"undefined"!=typeof document)return document.body;if("html"===r&&"undefined"!=typeof document)return document.documentElement;if("me"===r&&Ai(t.me))return t.me;if("it"===r&&Ai(t.it))return t.it;if("you"===r&&Ai(t.you))return t.you;const n=Aa(r,t);if(Ai(n))return n;if("undefined"!=typeof document)try{const e=document.querySelector(r);if(e)return e}catch{try{const e=document.getElementsByTagName(r);if(e.length>0)return e[0]}catch{}}return null}calculateScrollPosition(e,t,r){if("undefined"==typeof window||!e.getBoundingClientRect)return{x:0,y:0};const n=e.getBoundingClientRect(),s=window.pageXOffset||document.documentElement?.scrollLeft||0,i=window.pageYOffset||document.documentElement?.scrollTop||0,a=window.innerWidth||800,o=window.innerHeight||600;let l=s,c=i;switch(t.horizontal){case"left":l=n.left+s;break;case"center":l=n.left+s+n.width/2-a/2;break;case"right":l=n.right+s-a}switch(t.vertical){case"top":c=n.top+i+r;break;case"middle":c=n.top+i+n.height/2-o/2+r;break;case"bottom":c=n.bottom+i-o+r}return{x:Math.max(0,l),y:Math.max(0,c)}}},vi(t,"GoCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})());function Wa(e,t){if("boolean"==typeof e)return e;if("function"==typeof e)return!0;if(e instanceof Promise)throw Error("Condition must be awaited - use await in the condition expression");if("string"==typeof e){if("me"===e)return!!t.me;if("it"===e)return!!t.it;if("you"===e)return!!t.you;const r=Aa(e,t);return void 0!==r?!!r:!!e}return!!e}const Ja=Ci((()=>{let e,t,r=[xi({description:"Conditional execution based on boolean expressions",syntax:["if <condition> then <commands>","if <condition> then <commands> else <commands>","unless <condition> <commands>"],examples:["if x > 5 then add .active","if user.isAdmin then show #adminPanel else hide #adminPanel","unless user.isLoggedIn showLoginForm"],sideEffects:["conditional-execution"],aliases:["unless"]}),Ei({name:"if",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){const n="unless"===e.commandName?.toLowerCase()?"unless":"if";if(!e.args||0===e.args.length)throw Error(n+" command requires a condition to evaluate");let s,i;if("unless"===n){if(2>e.args.length)throw Error("unless command requires a condition and at least one command");s=e.args.slice(1)}else if(e.args.length>=2&&e.args[1]?(s=e.args[1],i=3>e.args.length?void 0:e.args[2]):e.modifiers?.then&&(s=e.modifiers.then,i=e.modifiers.else),!s)throw Error('if command requires "then" branch with commands');return{mode:n,condition:await t.evaluate(e.args[0],r),thenCommands:s,elseCommands:i}}async execute(e,t){const{mode:r,condition:n,thenCommands:s,elseCommands:i}=e,a=Wa(n,t);let o,l;return("unless"===r?!a:a)?(o="then",l=await this.executeCommandsOrBlock(s,t),"unless"===r&&Object.assign(t,{it:l})):i&&"if"===r?(o="else",l=await this.executeCommandsOrBlock(i,t)):o="none",{mode:r,conditionResult:a,executedBranch:o,result:l}}async executeCommandsOrBlock(e,t){return"block"===e?.type?this.executeBlock(e,t):Array.isArray(e)?this.executeCommands(e,t):e}async executeBlock(e,t){const r=t.locals.get("_runtimeExecute");if(!r)throw Error("Runtime execute function not available");let n;if(e.commands?.length)for(const s of e.commands)n=await r(s,t);return n}async executeCommands(e,t){let r;for(const n of e)r=n?.execute?await n.execute(t):"function"==typeof n?await n():n;return r}},vi(t,"ConditionalCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})()),Ka=Ja,Ya=Ja;let Ga=(()=>{let e,t,r=[xi({description:"Iteration in hyperscript - for-in, counted, conditional, event-driven, and infinite loops",syntax:["repeat for <var> in <collection> { <commands> }","repeat <count> times { <commands> }","repeat while <condition> { <commands> }","repeat until <condition> { <commands> }","repeat forever { <commands> }"],examples:["repeat for item in items { log item }",'repeat 5 times { log "hello" }'],sideEffects:["iteration","conditional-execution"]}),Ei({name:"repeat",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){let n;if(e.modifiers?.index){const s=await t.evaluate(e.modifiers.index,r);"string"==typeof s&&(n=s)}let s=e.modifiers?.block||e.modifiers?.commands;if(!s)for(let t=e.args.length-1;t>=0;t--){const r=e.args[t];if("block"===r?.type&&r.commands){s=r;break}}const i=e.args[0],a="identifier"===i?.type?i.name:null;if("for"===a||e.modifiers?.for){const i=e.args[1],a=i?.value||i?.name,o=e.args[2]?await t.evaluate(e.args[2],r):void 0;if(!a||void 0===o)throw Error("for loops require variable and collection");return{type:"for",variable:a,collection:Array.isArray(o)?o:[o],indexVariable:n,commands:s}}if("times"===a||e.modifiers?.times){const i=e.args[1],a=i?await t.evaluate(i,r):void 0,o="number"==typeof a?a:parseInt(a+"",10);if(isNaN(o))throw Error("times loops require a count number");return{type:"times",count:o,indexVariable:n,commands:s}}if("while"===a||e.modifiers?.while){const t=e.args[1]||e.modifiers?.while;if(!t)throw Error("while loops require a condition");return{type:"while",condition:t,indexVariable:n,commands:s}}if("until"===a&&e.modifiers?.from||"until-event"===a){const i=e.args[1],a=i?.value||i?.name;if(!a)throw Error("until-event loops require an event name");let o=r.me;if(e.args[2]){const n=await t.evaluate(e.args[2],r);n instanceof EventTarget?o=n:"document"===n&&(o=document)}return{type:"until-event",eventName:a,eventTarget:o,indexVariable:n,commands:s}}if("until"===a||e.modifiers?.until){const t=e.args[1]||e.modifiers?.until;if(!t)throw Error("until loops require a condition");return{type:"until",condition:t,indexVariable:n,commands:s}}if("forever"===a||e.modifiers?.forever)return{type:"forever",indexVariable:n,commands:s};throw Error("repeat command requires a loop type (for/times/while/until/forever)")}async execute(e,t){const{type:r,variable:n,collection:s,condition:i,count:a,indexVariable:o,commands:l,eventName:c,eventTarget:u}=e;let d,m;switch(r){case"for":({config:d,iterCtx:m}=function(e,t,r){return{config:{type:"for",shouldContinue:e=>(e.collection?.length??0)>e.index,beforeIteration:(e,t)=>{e.item=e.collection?.[e.index],e.itemVariable&&t.locals&&t.locals.set(e.itemVariable,e.item)}},iterCtx:{index:0,collection:e,itemVariable:t,indexVariable:r}}}(s,n,o));break;case"times":({config:d,iterCtx:m}=function(e,t){return{config:{type:"times",shouldContinue:e=>(e.count??0)>e.index,beforeIteration:(e,t)=>{Object.assign(t,{it:e.index+1})}},iterCtx:{index:0,count:e,indexVariable:t}}}(a,o));break;case"while":({config:d,iterCtx:m}=function(e,t,r,n){return{config:{type:"while",shouldContinue:()=>t(e,r)},iterCtx:{index:0,conditionExpr:e,indexVariable:n}}}(i,Wa,t,o));break;case"until":({config:d,iterCtx:m}=function(e,t,r,n){return{config:{type:"until",shouldContinue:()=>!t(e,r)},iterCtx:{index:0,conditionExpr:e,indexVariable:n}}}(i,Wa,t,o));break;case"until-event":({config:d,iterCtx:m}=function(e,t,r){const n={index:0,eventFired:!1,indexVariable:r};return{config:{type:"until-event",shouldContinue:e=>!e.eventFired,eventSetup:{eventName:e,target:t,onEvent:()=>{n.eventFired=!0}}},iterCtx:n}}(c,u,o));break;case"forever":({config:d,iterCtx:m}=function(e,t=1e4){return{config:{type:"forever",maxIterations:t,shouldContinue:()=>!0},iterCtx:{index:0,indexVariable:e}}}(o));break;default:throw Error("Unknown repeat type: "+r)}try{const e=await async function(e,t,r,n,s){const i=e.maxIterations??1e4;let a,o=0,l=!1;e.eventSetup&&e.eventSetup.target.addEventListener(e.eventSetup.eventName,e.eventSetup.onEvent,{once:!0});try{for(;i>o&&await e.shouldContinue(n);){e.beforeIteration&&await e.beforeIteration(n,r),n.indexVariable&&r.locals&&r.locals.set(n.indexVariable,o);try{a=await s(t,r)}catch(t){if(t instanceof Error){if(t.message.includes("BREAK")){l=!0;break}if(t.message.includes("CONTINUE")){o++,n.index=o,"until-event"===e.type&&await new Promise(e=>setTimeout(e,0));continue}}throw t}o++,n.index=o,"until-event"===e.type&&await new Promise(e=>setTimeout(e,0))}}finally{e.eventSetup&&!n.eventFired&&e.eventSetup.target.removeEventListener(e.eventSetup.eventName,e.eventSetup.onEvent)}return{iterations:o,lastResult:a,interrupted:l}}(d,l,t,m,this.executeCommands.bind(this));return Object.assign(t,{it:e.lastResult}),{type:r,iterations:e.iterations,completed:!e.interrupted,lastResult:e.lastResult,interrupted:e.interrupted}}catch(e){if(e instanceof Error&&(e.message.includes("BREAK")||e.message.includes("CONTINUE")))return{type:r,iterations:0,completed:!0,interrupted:e.message.includes("BREAK")};throw e}}async executeCommands(e,t){if(e&&"object"==typeof e&&"block"===e.type){const r=e,n=t.locals.get("_runtimeExecute");if(!n)throw Error("Runtime execute function not available");let s;if(r.commands)for(const e of r.commands)s=await n(e,t);return s}if(Array.isArray(e)){let r;for(const n of e)r="function"==typeof n?await n(t):n&&"function"==typeof n.execute?await n.execute(t):n;return r}return"function"==typeof e?await e(t):e}},vi(t,"RepeatCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})();const Xa=Ci(Ga);class Za{async parseInput(e,t,r){return{signalType:this.signalType}}async execute(e,t){const r=Error(this.errorMessage);throw r[this.errorFlag]=!0,"exit"===this.signalType&&(r.returnValue=void 0,r.timestamp=Date.now()),r}}let Qa=(()=>{let e,t,r=[xi({description:"Exit from the current loop (repeat, for, while, until)",syntax:["break"],examples:["break","if found then break","repeat for item in items { if item == target then break }"],sideEffects:["control-flow"]}),Ei({name:"break",category:"control-flow"})],n=[],s=Za;return t=class extends s{constructor(){super(...arguments),this.signalType="break",this.errorMessage="BREAK_LOOP",this.errorFlag="isBreak"}},vi(t,"BreakCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),gi(t,n)})(),t})();const eo=Ci(Qa);let to=(()=>{let e,t,r=[xi({description:"Skip to the next iteration of the current loop",syntax:["continue"],examples:["continue","if item.isInvalid then continue","repeat for item in items { if item.skip then continue; process item }"],sideEffects:["control-flow"]}),Ei({name:"continue",category:"control-flow"})],n=[],s=Za;return t=class extends s{constructor(){super(...arguments),this.signalType="continue",this.errorMessage="CONTINUE_LOOP",this.errorFlag="isContinue"}},vi(t,"ContinueCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),gi(t,n)})(),t})();const ro=Ci(to),no=Ci((()=>{let e,t,r=[xi({description:"Stop command execution or prevent event defaults",syntax:["halt","halt the event"],examples:["halt","halt the event","if error then halt",'on click halt the event then log "clicked"'],sideEffects:["control-flow","event-prevention"]}),Ei({name:"halt",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){if(e.args&&e.args.length>0){const n=e.args[0],s=e.args.length>1?e.args[1]:null;return"identifier"===n.type&&"the"===n.name&&s&&"identifier"===s.type&&"event"===s.name?{target:r.event}:{target:await t.evaluate(e.args[0],r)}}return{}}async execute(e,t){let r=e.target;if(("the"===r&&t.event||"object"==typeof r&&null!==r&&"the"===r.target&&t.event)&&(r=t.event),this.isEvent(r)){const e=r;return e.preventDefault(),e.stopPropagation(),{halted:!0,timestamp:Date.now(),eventHalted:!0}}"halted"in t&&(t.halted=!0);const n=Error("HALT_EXECUTION");throw n.isHalt=!0,n}isEvent(e){return null!==e&&"object"==typeof e&&"preventDefault"in e&&"stopPropagation"in e}},vi(t,"HaltCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})()),so=Ci((()=>{let e,t,r=[xi({description:"Return a value from a command sequence or function, terminating execution",syntax:["return","return <value>"],examples:["return","return 42","return user.name","if found then return result"],sideEffects:["control-flow","context-mutation"]}),Ei({name:"return",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){return e.args&&0!==e.args.length?{value:await t.evaluate(e.args[0],r)}:{value:void 0}}async execute(e,t){const{value:r}=e;"returnValue"in t&&(t.returnValue=r),Object.assign(t,{it:r});const n=Error("RETURN_VALUE");throw n.isReturn=!0,n.returnValue=r,n}},vi(t,"ReturnCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})());let io=(()=>{let e,t,r=[xi({description:"Immediately terminate execution of the current event handler or behavior",syntax:["exit"],examples:["exit","if no draggedItem exit","on click if disabled exit"],sideEffects:["control-flow"]}),Ei({name:"exit",category:"control-flow"})],n=[],s=Za;return t=class extends s{constructor(){super(...arguments),this.signalType="exit",this.errorMessage="EXIT_COMMAND",this.errorFlag="isExit"}},vi(t,"ExitCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),gi(t,n)})(),t})();const ao=Ci(io),oo=Ci((()=>{let e,t,r=[xi({description:"Evaluate an expression and store the result in the it variable",syntax:["call <expression>"],examples:["call myFunction()",'call fetch("/api/data")',"call element.focus()"],sideEffects:["function-execution","context-mutation"]}),Ei({name:"call",category:"execution"})],n=[];return t=class{parseInput(e,t,r){if(!e.args?.length)throw Error("call command requires an expression");return Promise.resolve({expression:e.args[0]})}async execute(e,t){const{expression:r}=e,n=t.locals?.get("__evaluator");if(!n)throw Error("[CALL.execute] No evaluator available in context");const s=await n.evaluate(r,t);let i,a,o=!1;return"function"==typeof s?(a="function",i=s(),i instanceof Promise&&(o=!0,i=await i)):s instanceof Promise?(a="promise",o=!0,i=await s):(a="value",i=s),Object.assign(t,{it:i,result:i}),{result:i,wasAsync:o,expressionType:a}}},vi(t,"CallCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})()),lo=Ci((()=>{let e,t,r=[xi({description:"Add content to the end of a string, array, or HTML element",syntax:["append <content>","append <content> to <target>"],examples:['append "Hello"','append "World" to greeting',"append item to myArray",'append "<p>New</p>" to #content'],sideEffects:["data-mutation","dom-mutation"]}),Ei({name:"append",category:"content"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("append requires content");const n=await t.evaluate(e.args[0],r);let s;return e.modifiers?.to?s=await t.evaluate(e.modifiers.to,r):e.target&&(s=e.target),{content:n,target:s}}async execute(e,t){const{content:r,target:n}=e,s=r+"";if(!n)return Object.assign(t,void 0===t.it?{it:s}:{it:t.it+""+s}),{result:t.it,targetType:"result"};if("string"==typeof n){if(n.startsWith("#")||n.startsWith(".")||n.includes("[")){const e=this.resolveDOMElement(n);return e.innerHTML+=s,{result:e,targetType:"element",target:e}}if("me"===n||"it"===n||"you"===n){const e=this.resolveContextRef(n,t);if(Ai(e))return e.innerHTML+=s,{result:e,targetType:"element",target:e}}const e=Aa(n,t);if(void 0!==e){if(Array.isArray(e))return e.push(r),{result:e,targetType:"array",target:n};const i=(null==e?"":e+"")+s;return Sa(n,i,t),{result:i,targetType:"variable",target:n}}return Sa(n,s,t),{result:s,targetType:"variable",target:n}}if(Array.isArray(n))return n.push(r),{result:n,targetType:"array"};if(Ai(n))return n.innerHTML+=s,{result:n,targetType:"element",target:n};{const e=n+""+s;return Object.assign(t,{it:e}),{result:e,targetType:"string"}}}resolveDOMElement(e){if("undefined"==typeof document)throw Error("DOM not available");const t=document.querySelector(e);if(!t)throw Error("Element not found: "+e);return t}resolveContextRef(e,t){switch(e){case"me":return t.me;case"it":return t.it;case"you":return t.you;default:throw Error("Unknown context ref: "+e)}}},vi(t,"AppendCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})()),co=Ci((()=>{let e,t,r=[xi({description:"Animate CSS properties using CSS transitions",syntax:"transition <property> to <value> [over <duration>] [with <timing>]",examples:["transition opacity to 0.5","transition left to 100px over 500ms","transition background-color to red over 1s with ease-in-out"],sideEffects:["style-change","timing"]}),Ei({name:"transition",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("transition requires property and value");let n,s;const i=await t.evaluate(e.args[0],r);if(Ai(i)||"string"==typeof i&&/^[#.]|^(?:me|it|you)$/.test(i)?(s=i,n=await t.evaluate(e.args[1],r)+""):n=i+"",!n)throw Error("transition requires a CSS property");if(!e.modifiers?.to)throw Error('transition requires "to <value>"');let a=await t.evaluate(e.modifiers.to,r);void 0===a&&"identifier"===e.modifiers.to.type&&(a=e.modifiers.to.name);const o={property:n,value:a};return void 0!==s&&(o.target=s),e.modifiers?.over&&(o.duration=await t.evaluate(e.modifiers.over,r)),e.modifiers?.with&&(o.timingFunction=await t.evaluate(e.modifiers.with,r)+""),o}async execute(e,t){let{property:r}=e;const{target:n,value:s,duration:i,timingFunction:a}=e;r.startsWith("*")&&(r=r.substring(1)),r=r.replace(/([A-Z])/g,"-$1").toLowerCase();const o=Si(n,t),l=sa(i,300),c=getComputedStyle(o).getPropertyValue(r),u=o.style.transition,d=`${r} ${l}ms ${a||"ease"}`;o.style.transition=u?`${u}, ${d}`:d;let m=s+"",p=!1;if("initial"===m||"inherit"===m||"unset"===m||"revert"===m){const e=o.style.getPropertyValue(r);o.style.removeProperty(r),m=getComputedStyle(o).getPropertyValue(r),e&&o.style.setProperty(r,e),p=!0}o.style.setProperty(r,m);const h=await function(e,t,r){return new Promise(n=>{const s=r=>{r.target===e&&r.propertyName===t&&a({completed:!0,cancelled:!1})},i=r=>{r.target===e&&r.propertyName===t&&a({completed:!1,cancelled:!0})},a=Ia(()=>{e.removeEventListener("transitionend",s),e.removeEventListener("transitioncancel",i),clearTimeout(o)},n);e.addEventListener("transitionend",s),e.addEventListener("transitioncancel",i);const o=setTimeout(()=>{a({completed:!0,cancelled:!1})},r+50)})}(o,r,l);return o.style.transition=u,p&&o.style.removeProperty(r),Object.assign(t,{it:o}),{element:o,property:r,fromValue:c,toValue:m,duration:l,completed:h.completed}}},vi(t,"TransitionCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})()),uo=Ci((()=>{let e,t,r=[xi({description:"Measure DOM element dimensions, positions, and properties",syntax:["measure","measure <property>","measure <target> <property>"],examples:["measure","measure width","measure #element height","measure x and set dragX"],sideEffects:["data-mutation"]}),Ei({name:"measure",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){let n,s,i;if(e.args?.length){const i=e.args[0];if("identifier"===i.type&&i.name){const a=i.name.toLowerCase();if("me"===a||"it"===a||"you"===a){const a=await t.evaluate(i,r);if(Ai(a)&&(n=a,e.args.length>1)){const n=e.args[1];s="identifier"===n.type?n.name:await t.evaluate(n,r)+""}}else s=i.name}else{const a=await t.evaluate(i,r);if(Ai(a)||"string"==typeof a&&/^[#.]/.test(a)){if(n=a,e.args.length>1){const n=e.args[1];s="identifier"===n.type?n.name:await t.evaluate(n,r)+""}}else"string"==typeof a&&(s=a)}}e.modifiers?.set&&(i=await t.evaluate(e.modifiers.set,r)+"");const a={};return void 0!==n&&(a.target=n),void 0!==s&&(a.property=s),void 0!==i&&(a.variable=i),a}async execute(e,t){const r=Si(e.target,t),n=e.property||"width",s=this.getMeasurement(r,n);return e.variable&&t.locals&&t.locals.set(e.variable,s.value),Object.assign(t,{it:s.value}),{result:s.value,wasAsync:!1,element:r,property:n,value:s.value,unit:s.unit,stored:!!e.variable}}getMeasurement(e,t){const r=getComputedStyle(e);if(t.startsWith("*")){const e=r.getPropertyValue(t.substring(1)),n=parseFloat(e);if(!isNaN(n)){const t=e.match(/([a-zA-Z%]+)$/);return{value:n,unit:t?t[1]:""}}return{value:e,unit:""}}const n=t.toLowerCase(),s=e.getBoundingClientRect(),i={width:()=>s.width,height:()=>s.height,top:()=>s.top,left:()=>s.left,right:()=>s.right,bottom:()=>s.bottom,x:()=>e.offsetLeft,y:()=>e.offsetTop,clientwidth:()=>e.clientWidth,"client-width":()=>e.clientWidth,clientheight:()=>e.clientHeight,"client-height":()=>e.clientHeight,offsetwidth:()=>e.offsetWidth,"offset-width":()=>e.offsetWidth,offsetheight:()=>e.offsetHeight,"offset-height":()=>e.offsetHeight,scrollwidth:()=>e.scrollWidth,"scroll-width":()=>e.scrollWidth,scrollheight:()=>e.scrollHeight,"scroll-height":()=>e.scrollHeight,scrolltop:()=>e.scrollTop,"scroll-top":()=>e.scrollTop,scrollleft:()=>e.scrollLeft,"scroll-left":()=>e.scrollLeft,offsettop:()=>e.offsetTop,"offset-top":()=>e.offsetTop,offsetleft:()=>e.offsetLeft,"offset-left":()=>e.offsetLeft};if(i[n])return{value:i[n](),unit:"px"};const a=r.getPropertyValue(t),o=parseFloat(a);if(!isNaN(o)){const e=a.match(/([a-zA-Z%]+)$/);return{value:o,unit:e?e[1]:"px"}}return{value:0,unit:"px"}}},vi(t,"MeasureCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})()),mo=Ci((()=>{let e,t,r=[xi({description:"Wait for CSS transitions and animations to complete",syntax:"settle [<target>] [for <timeout>]",examples:["settle","settle #animated-element","settle for 3000"],sideEffects:["timing"]}),Ei({name:"settle",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){let n,s;if(e.args&&e.args.length>0){const s=await t.evaluate(e.args[0],r);(Ai(s)||"string"==typeof s&&(s.startsWith("#")||s.startsWith(".")||"me"===s||"it"===s||"you"===s))&&(n=s)}e.modifiers?.for&&(s=await t.evaluate(e.modifiers.for,r));const i={};return void 0!==n&&(i.target=n),void 0!==s&&(i.timeout=s),i}async execute(e,t){const{target:r,timeout:n}=e,s=Si(r,t),i=sa(n,5e3),a=Date.now(),o=getComputedStyle(s),l=aa(o.transitionDuration),c=aa(o.transitionDelay),u=aa(o.animationDuration),d=aa(o.animationDelay),m=oa(l,c),p=oa(u,d),h=Math.max(m,p),f=await(y=s,g=h,v=i,g>0?new Promise(e=>{const t=e=>{e.target===y&&n({completed:!0,type:"transition"})},r=e=>{e.target===y&&n({completed:!0,type:"animation"})},n=Ia(()=>{y.removeEventListener("transitionend",t),y.removeEventListener("animationend",r),clearTimeout(s),clearTimeout(i)},e);y.addEventListener("transitionend",t),y.addEventListener("animationend",r);const s=setTimeout(()=>{n({completed:!0,type:"timeout"})},g+50),i=setTimeout(()=>{n({completed:!1,type:"timeout"})},v)}):Promise.resolve({completed:!0,type:"timeout"}));var y,g,v;const b=Date.now()-a;return Object.assign(t,{it:s}),{element:s,settled:f.completed,timeout:i,duration:b}}},vi(t,"SettleCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})()),po=Ci((()=>{let e,t,r=[xi({description:"Execute inline JavaScript code with access to hyperscript context",syntax:["js <code> end","js(param1, param2) <code> end"],examples:['js console.log("Hello") end',"js(x, y) return x + y end",'js me.style.color = "red" end'],sideEffects:["code-execution","data-mutation"]}),Ei({name:"js",category:"advanced"})],n=[];return t=class{async parseInput(e,t,r){let n,s;if(0===e.args.length)throw Error("js command requires JavaScript code");const i=e.args[0],a=e.args[1];if(i&&"literal"===i.type&&"string"==typeof i.value)n=i.value;else{if(!i||void 0===i.value)throw Error("js command requires JavaScript code");n=i.value+""}a&&"arrayLiteral"===a.type&&Array.isArray(a.elements)&&(s=a.elements.map(e=>"string"==typeof e.value?e.value:e.value+"").filter(e=>e&&e.length>0));const o={code:n};return s&&s.length>0&&(o.parameters=s),o}async execute(e,t){const{code:r,parameters:n=[]}=e;if(!r.trim())return{result:void 0,executed:!1,codeLength:r.length,parameters:n,preserveArrayResult:!0};try{const e=this.createExecutionContext(t,n),s=Function(...Object.keys(e),r),i=await s(...Object.values(e));return void 0!==i&&Object.assign(t,{it:i}),{result:i,executed:!0,codeLength:r.length,parameters:n,preserveArrayResult:!0}}catch(e){throw Error("JavaScript execution failed: "+(e instanceof Error?e.message:"Unknown error"))}}createExecutionContext(e,t){return{me:e.me,it:e.it,you:e.you,locals:e.locals,globals:e.globals,variables:e.variables,console:console,document:"undefined"!=typeof document?document:void 0,window:"undefined"!=typeof window?window:void 0,...t.reduce((t,r)=>{let n=e.locals?.get(r);return void 0===n&&(n=e.variables?.get(r)),void 0===n&&(n=e[r]),t[r]=n,t},{})}}},vi(t,"JsCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})()),ho=Ci((()=>{let e,t,r=[xi({description:"Execute commands asynchronously without blocking",syntax:["async <command> [<command> ...]"],examples:["async command1 command2","async fetchData processData","async animateIn showContent"],sideEffects:["async-execution"]}),Ei({name:"async",category:"advanced"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("async command requires at least one command to execute");return{commands:e.args}}async execute(e,t){const{commands:r}=e,n=Date.now();try{const e=await this.executeCommandsAsync(t,r),s=Date.now()-n;return e.length>0&&Object.assign(t,{it:e[e.length-1]}),{commandCount:r.length,results:e,executed:!0,duration:s}}catch(e){throw Error("Async command execution failed: "+(e instanceof Error?e.message:"Unknown error"))}}async executeCommandsAsync(e,t){const r=[];for(let n=0;t.length>n;n++){const s=t[n];try{const t=await this.executeCommand(s,e);r.push(t),Object.assign(e,{it:t})}catch(e){const r=this.getCommandName(s);throw Error(`Command '${r}' (${n+1}/${t.length}) failed: ${e instanceof Error?e.message:"Unknown error"}`)}}return r}async executeCommand(e,t){if("function"==typeof e)return await e(t);if(e&&"object"==typeof e&&"function"==typeof e.execute)return await e.execute(t);throw Error("Invalid command: must be a function or object with execute method")}getCommandName(e){return"function"==typeof e?e.name||"anonymous function":e&&"object"==typeof e?e.name||"unnamed command":"unknown"}},vi(t,"AsyncCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})()),fo=Ci((()=>{let e,t,r=[xi({description:"Set a value only if it doesn't already exist",syntax:["default <expression> to <expression>"],examples:['default myVar to "fallback"','default @data-theme to "light"','default my innerHTML to "No content"'],sideEffects:["data-mutation","dom-mutation"]}),Ei({name:"default",category:"data"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("default command requires a target");const n=await t.evaluate(e.args[0],r);let s;if(e.modifiers?.to)s=await t.evaluate(e.modifiers.to,r);else{if(2>e.args.length)throw Error('default command requires a value (use "to <value>")');s=await t.evaluate(e.args[1],r)}return{target:n,value:s}}async execute(e,t){const{target:r,value:n}=e;if("string"==typeof r){if(r.startsWith("@"))return this.defaultAttribute(t,r.substring(1),n);const e=r.match(/^(my|its?|your?)\s+(.+)$/);if(e){const[,r,s]=e;return this.defaultElementProperty(t,r,s,n)}return this.defaultVariable(t,r,n)}if(Ai(r))return this.defaultElementValue(t,r,n);throw Error("Invalid target type: "+typeof r)}defaultVariable(e,t,r){const n=Aa(t,e);return void 0!==n?{target:t,value:r,wasSet:!1,existingValue:n,targetType:"variable"}:(Sa(t,r,e),Object.assign(e,{it:r}),{target:t,value:r,wasSet:!0,targetType:"variable"})}defaultAttribute(e,t,r){if(!e.me)throw Error("No element context available for attribute default");const n=e.me.getAttribute(t);return null!==n?{target:"@"+t,value:r,wasSet:!1,existingValue:n,targetType:"attribute"}:(e.me.setAttribute(t,r+""),Object.assign(e,{it:r}),{target:"@"+t,value:r,wasSet:!0,targetType:"attribute"})}defaultElementProperty(e,t,r,n){const s=Li(t,e),i=function(e,t){if(t.startsWith("@"))return e.getAttribute(t.substring(1));switch(t){case"textContent":return e.textContent;case"innerHTML":return e.innerHTML;case"innerText":return e.innerText;case"id":return e.id;case"className":return e.className;case"value":return"value"in e?e.value:void 0;case"checked":return"checked"in e?e.checked:void 0}if(t.includes(".")){const r=t.split(".");let n=e;for(const e of r){if(null==n)break;n=n[e]}return n}return t.includes("-")||t in e.style?e.style.getPropertyValue(t)||e.style[t]:e[t]}(s,r),a=`${t} ${r}`;return pa(i)?(ma(s,r,n),Object.assign(e,{it:n}),{target:a,value:n,wasSet:!0,targetType:"property"}):{target:a,value:n,wasSet:!1,existingValue:i,targetType:"property"}}defaultElementValue(e,t,r){const n=function(e){return"value"in e?e.value:e.textContent}(t);return pa(n)?(function(e,t){"value"in e?e.value=t+"":e.textContent=t+""}(t,r),Object.assign(e,{it:r}),{target:"element",value:r,wasSet:!0,targetType:"element"}):{target:"element",value:r,wasSet:!1,existingValue:n,targetType:"element"}}},vi(t,"DefaultCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})());class yo{constructor(){this.name="pseudo-command"}get metadata(){return yo.metadata}async parseInput(e,t,r){if(1===e.args.length&&"objectLiteral"===e.args[0].type){const n=e.args[0].properties||[];let s,i,a="",o=[];for(const e of n){const n=e.value;switch(e.key?.name||e.key?.value){case"methodName":a=n?.value||await t.evaluate(n,r)+"";break;case"methodArgs":"arrayLiteral"===n?.type&&n.elements?o=await Promise.all(n.elements.map(e=>t.evaluate(e,r))):"literal"===n?.type&&Array.isArray(n.value)&&(o=await Promise.all(n.value.map(e=>t.evaluate(e,r))));break;case"preposition":const e=n?.value;e&&"null"!==e&&(s=e);break;case"target":case"targetExpression":i=await t.evaluate(n,r)}}if(!a)throw Error("pseudo-command requires method name");if(null==i)throw Error("pseudo-command requires a target expression");return{methodName:a,methodArgs:o,preposition:s,targetExpression:i}}if(2>e.args.length)throw Error("pseudo-command requires method name and target expression");const n=await t.evaluate(e.args[0],r)+"",s=Array.isArray(e.args[1])?await Promise.all(e.args[1].map(e=>t.evaluate(e,r))):[];let i,a;const o=["from","on","with","into","at","to"];for(const n of o)if(e.modifiers?.[n]){a=n,i=await t.evaluate(e.modifiers[n],r);break}if(i||3>e.args.length||(i=await t.evaluate(e.args[2],r)),!i)throw Error("pseudo-command requires a target expression");return{methodName:n,methodArgs:s,preposition:a,targetExpression:i}}async execute(e,t){const{methodName:r,methodArgs:n,targetExpression:s}=e;try{const e=await this.resolveTarget(s,t);if(null==e)throw Error("Target expression resolved to "+e);const i=this.resolveMethod(e,r);if(!i)throw Error(`Method "${r}" not found on target object`);if("function"!=typeof i)throw Error(`"${r}" is not a function (it's a ${typeof i})`);const a=await this.executeMethod(i,e,n);return t.locals.set("result",a),Object.assign(t,{it:a}),{result:a,methodName:r,target:e}}catch(e){throw Error("Pseudo-command failed: "+(e instanceof Error?e.message:e+""))}}async resolveTarget(e,t){return"object"==typeof e&&null!==e?e:"string"==typeof e?t.locals.has(e)?t.locals.get(e):t.variables?.has(e)?t.variables.get(e):t.globals.has(e)?t.globals.get(e):"me"===e&&t.me?t.me:"it"===e&&t.it?t.it:"document"===e?"undefined"!=typeof document?document:null:"window"===e?"undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:null:this.resolvePropertyPath(e,t):e}resolvePropertyPath(e,t){const r=e.split(".");let n="undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:null;t.locals.has(r[0])?(n=t.locals.get(r[0]),r.shift()):t.variables?.has(r[0])?(n=t.variables.get(r[0]),r.shift()):t.globals.has(r[0])&&(n=t.globals.get(r[0]),r.shift());for(const e of r){if(null==n)return null;n=n[e]}return n}resolveMethod(e,t){if(!e)return null;if(t in e)return e[t];const r=t.split(".");let n=e;for(let e=0;r.length>e;e++){const t=r[e];if(null==n)return null;if(!(t in n))return null;if(n=n[t],e===r.length-1&&"function"==typeof n)return n}return null}async executeMethod(e,t,r){try{const n=e.apply(t,r);return n&&"object"==typeof n&&"then"in n?await n:n}catch(e){throw Error("Method execution failed: "+(e instanceof Error?e.message:e+""))}}}function go(){return new yo}yo.metadata={description:"Treat a method on an object as a top-level command",syntax:["<method>(<args>) [(to|on|with|into|from|at)] <expression>"],examples:['getElementById("d1") from the document',"reload() the location of the window",'setAttribute("foo", "bar") on me',"foo() on me"],category:"execution",sideEffects:["method-execution"]};const vo=Ci((()=>{let e,t,r=[xi({description:"Execute commands in the context of target elements",syntax:["tell <target> <command> [<command> ...]"],examples:["tell #sidebar hide","tell .buttons add .disabled","tell closest <form/> submit"],sideEffects:["context-switching","command-execution"]}),Ei({name:"tell",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){if(2>e.args.length)throw Error("tell command requires a target and at least one command");return{target:await t.evaluate(e.args[0],r),commands:e.args.slice(1)}}async execute(e,t){const{target:r,commands:n}=e,s=Ti(r,t);if(0===s.length)throw Error("tell command found no target elements");const i=t.locals.get("_runtimeExecute"),a=[];for(const e of s){const r={...t,me:e,you:e};for(const e of n)try{const t=await this.executeCommand(e,r,i);a.push(t),Object.assign(r,{it:t})}catch(e){throw Error("Command execution failed in tell block: "+(e instanceof Error?e.message:"Unknown error"))}}return{targetElements:s,commandResults:a,executionCount:s.length*n.length}}async executeCommand(e,t,r){if(e&&"object"==typeof e&&"command"===e.type&&r)return await r(e,t);if("function"==typeof e)return await e(t);if(e&&"object"==typeof e&&"function"==typeof e.execute)return await e.execute(t);throw Error("Invalid command: must be a function or object with execute method")}},vi(t,"TellCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})());let bo=(()=>{let e,t,r=[xi({description:"Copy text or element content to the clipboard",syntax:["copy <source>","copy <source> to clipboard"],examples:['copy "Hello World"',"copy #code-snippet","copy my textContent"],sideEffects:["clipboard-write","custom-events"]}),Ei({name:"copy",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("copy command requires a source (text or element)");const n=await t.evaluate(e.args[0],r);let s="text";if(e.modifiers?.format){const n=await t.evaluate(e.modifiers.format,r);"html"!==n&&"text"!==n||(s=n)}return{source:n,format:s}}async execute(e,t){const{source:r,format:n="text"}=e,s=this.extractText(r,n,t);if("undefined"!=typeof navigator&&navigator.clipboard)try{return await navigator.clipboard.writeText(s),this.dispatchCopyEvent(t,"copy:success",{text:s,method:"clipboard-api"}),{success:!0,text:s,format:n,method:"clipboard-api"}}catch{}try{if(this.copyUsingExecCommand(s))return this.dispatchCopyEvent(t,"copy:success",{text:s,method:"execCommand"}),{success:!0,text:s,format:n,method:"execCommand"}}catch{}return this.dispatchCopyEvent(t,"copy:error",{text:s,error:"All copy methods failed"}),{success:!1,text:s,format:n,method:"fallback"}}extractText(e,t,r){if("string"==typeof e)return e;if(Ai(e))return"html"===t?e.outerHTML:e.textContent||"";if(e===r.me&&Ai(r.me)){const e=r.me;return"html"===t?e.outerHTML:e.textContent||""}return e+""}copyUsingExecCommand(e){if("undefined"==typeof document)return!1;const t=document.createElement("textarea");t.value=e,t.style.cssText="position:fixed;top:0;left:-9999px",t.setAttribute("readonly",""),document.body.appendChild(t);try{t.select(),t.setSelectionRange(0,e.length);const r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return t.parentNode?.removeChild(t),!1}}dispatchCopyEvent(e,t,r){if(Ai(e.me)){const n=new CustomEvent(t,{detail:r,bubbles:!0,cancelable:!1});e.me.dispatchEvent(n)}}},vi(t,"CopyCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})();const wo=Ci(bo),ko=Ci((()=>{let e,t,r=[xi({description:"Select a random element from a collection",syntax:["pick <item1>, <item2>, ...","pick from <array>"],examples:['pick "red", "green", "blue"',"pick from colors","pick 1, 2, 3, 4, 5"],sideEffects:["random-selection"]}),Ei({name:"pick",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){if(e.modifiers?.from){const n=await t.evaluate(e.modifiers.from,r);if(!Array.isArray(n))throw Error("pick from requires an array");if(0===n.length)throw Error("Cannot pick from empty array");return{array:n}}if(0===e.args.length)throw Error("pick command requires items to choose from");return{items:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}}async execute(e,t){const{items:r,array:n}=e,s=r||n,i=r?"items":"array",a=Math.floor(Math.random()*s.length),o=s[a];return Object.assign(t,{it:o}),{selectedItem:o,selectedIndex:a,sourceLength:s.length,sourceType:i}}},vi(t,"PickCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})()),Eo=Ci((()=>{let e,t,r=[xi({description:"Throw an error with a specified message",syntax:["throw <message>"],examples:['throw "Invalid input"','if not valid then throw "Validation failed"'],sideEffects:["error-throwing","execution-termination"]}),Ei({name:"throw",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("throw command requires a message or error object");return{message:await t.evaluate(e.args[0],r)}}async execute(e,t){const{message:r}=e;let n;throw n=r instanceof Error?r:Error("string"==typeof r?r:r+""),n}},vi(t,"ThrowCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})());const xo=Ci((()=>{let e,t,r=[xi({description:"Debug output for expressions with type information",syntax:["beep!","beep! <expression>","beep! <expression>, <expression>, ..."],examples:["beep!","beep! myValue","beep! me.id, me.className"],sideEffects:["console-output","debugging"]}),Ei({name:"beep",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){return 0===e.args.length?{expressions:[]}:{expressions:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}}async execute(e,t){const r=e.expressions||[];if(0===r.length)return this.debugContext(t),{expressionCount:0,debugged:!0,outputs:[]};const n=[];console.group("🔔 beep! Debug Output");for(const e of r){const t=this.debugExpression(e);n.push(t),console.log("Value:",e),console.log("Type:",t.type),console.log("Representation:",t.representation),console.log("---")}return console.groupEnd(),{expressionCount:r.length,debugged:!0,outputs:n}}debugContext(e){console.group("🔔 beep! Context Debug"),console.log("me:",e.me),console.log("it:",e.it),console.log("you:",e.you),console.log("locals:",e.locals),console.log("globals:",e.globals),console.log("variables:",e.variables),console.groupEnd()}debugExpression(e){return{value:e,type:this.getType(e),representation:this.getRepresentation(e)}}getType(e){return null===e?"null":void 0===e?"undefined":Array.isArray(e)?"array":Ai(e)?"HTMLElement":e instanceof Element?"Element":e instanceof Node?"Node":e instanceof Error?"Error":e instanceof Date?"Date":e instanceof RegExp?"RegExp":typeof e}getRepresentation(e){if(null===e)return"null";if(void 0===e)return"undefined";if(Array.isArray(e))return`Array(${e.length}) [${e.slice(0,3).map(e=>this.getRepresentation(e)).join(", ")}${e.length>3?"...":""}]`;if(Ai(e)){const t=e;return`<${t.tagName.toLowerCase()}${t.id?"#"+t.id:""}${t.className?"."+t.className.split(" ").join("."):""}/>`}if(e instanceof Error)return"Error: "+e.message;if("string"==typeof e)return e.length>50?`"${e.substring(0,47)}..."`:`"${e}"`;if("object"==typeof e)try{const t=Object.keys(e);return`Object {${t.slice(0,3).join(", ")}${t.length>3?"...":""}}`}catch{return"[Object]"}return e+""}},vi(t,"BeepCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})());class Co{constructor(){this.name="install"}get metadata(){return Co.metadata}async parseInput(e,t,r){if(1>e.args.length)throw Error("install command requires a behavior name");const n=e.args[0];let s,i,a;if(s="identifier"===n?.type&&"string"==typeof n.name?n.name:await t.evaluate(n,r)+"",!/^[A-Z][a-zA-Z0-9_]*$/.test(s))throw Error(`Behavior name must be PascalCase (start with uppercase): "${s}"`);if(e.args.length>=2){const n=await t.evaluate(e.args[1],r);if(n&&"object"==typeof n&&!Array.isArray(n)){i=n;for(const e of Object.keys(i))if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e))throw Error(`Invalid parameter name: "${e}"`)}}return e.modifiers?.on&&(a=await t.evaluate(e.modifiers.on,r)),{behaviorName:s,parameters:i,target:a}}async execute(e,t){const{behaviorName:r,parameters:n={},target:s}=e;try{const e=this.resolveTarget(s,t);if(0===e.length)throw Error("No target elements found to install behavior on");if(!this.behaviorExists(r,t))throw Error(`Behavior "${r}" is not defined. Define it using the 'behavior' keyword before installing.`);const i=[];for(const s of e){const e=await this.installBehavior(r,s,n,t);i.push(e)}return{success:!0,behaviorName:r,installedCount:i.length,instances:i}}catch(e){throw Error(`Failed to install behavior "${r}": ${e instanceof Error?e.message:e+""}`)}}resolveTarget(e,t){if(null==e){const e=t.me||t.locals.get("me");if(Ai(e))return[e];throw Error('No target specified and "me" is not available in context')}if(Ai(e))return[e];if(Array.isArray(e)){const t=e.filter(e=>Ai(e));if(0===t.length)throw Error("Target array contains no valid HTMLElements");return t}if("string"==typeof e){if("me"===e){const e=t.me||t.locals.get("me");if(Ai(e))return[e];throw Error('"me" is not available in context')}if("undefined"!=typeof document){const t=document.querySelectorAll(e),r=Array.from(t).filter(e=>Ai(e));if(0===r.length)throw Error(`No elements found matching selector: "${e}"`);return r}throw Error("document is not available (not in browser environment)")}if(e&&"object"==typeof e&&"length"in e){const t=Array.from(e).filter(e=>Ai(e));if(0===t.length)throw Error("Target collection contains no valid HTMLElements");return t}if("object"==typeof e&&"element"in e){const t=e.element;if(Ai(t))return[t]}throw Error("Cannot resolve target to HTMLElement(s): "+e)}behaviorExists(e,t){const r=t.locals.get("_behaviors");if(r&&"object"==typeof r)return r.has(e);if("undefined"!=typeof globalThis){const t=globalThis._hyperscript;if(t?.behaviors)return t.behaviors.has(e)}return!1}async installBehavior(e,t,r,n){const s=n.locals.get("_behaviors");if(s&&"object"==typeof s){const n=s;if(n.install&&"function"==typeof n.install)return await n.install(e,t,r)}if("undefined"!=typeof globalThis){const n=globalThis._hyperscript;if(n?.behaviors?.install)return await n.behaviors.install(e,t,r)}throw Error("Behavior system not available in context")}}function Ao(){return new Co}Co.metadata={description:"Install a behavior on an element with optional parameters",syntax:["install <BehaviorName>","install <BehaviorName> on <element>","install <BehaviorName>(param: value)","install <BehaviorName>(param: value) on <element>"],examples:["install Removable","install Draggable on #box",'install Tooltip(text: "Help", position: "top")','install Sortable(axis: "y") on .list',"install MyBehavior(foo: 42) on the first <div/>"],category:"behaviors",sideEffects:["behavior-installation","element-modification"]};const So=Ci((()=>{let e,t,r=[xi({description:"Move classes, attributes, and properties from one element to another",syntax:["take <property> from <source>","take <property> from <source> and put it on <target>"],examples:["take class from <#source/>","take @data-value from <.source/> and put it on <#target/>"],sideEffects:["dom-mutation","property-transfer"]}),Ei({name:"take",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){if(3>e.args.length)throw Error('take requires property, "from", and source');const n=await t.evaluate(e.args[0],r)+"";if("from"!==await t.evaluate(e.args[1],r))throw Error("take syntax: take <property> from <source>");const s=await t.evaluate(e.args[2],r);let i;if(8>e.args.length)e.args.length>3&&(i=await t.evaluate(e.args[3],r));else{const n=await Promise.all([3,4,5,6].map(n=>t.evaluate(e.args[n],r)));"and"===n[0]&&"put"===n[1]&&"it"===n[2]&&"on"===n[3]&&e.args[7]&&(i=await t.evaluate(e.args[7],r))}return!i&&e.modifiers?.on&&(i=await t.evaluate(e.modifiers.on,r)),{property:n,source:s,target:i}}async execute(e,t){const r=Si(e.source,t),n=Si(e.target?e.target:void 0,t),s=this.takeProperty(r,e.property);return this.putProperty(n,e.property,s),{targetElement:n,property:e.property,value:s}}takeProperty(e,t){const r=t.trim(),n=r.toLowerCase();if("class"===n||"classes"===n){const t=Array.from(e.classList);return e.className="",t}if(r.startsWith(".")){const t=r.substring(1);return e.classList.contains(t)?(e.classList.remove(t),t):null}if(r.startsWith("@")){const t=r.substring(1),n=e.getAttribute(t);return e.removeAttribute(t),n}if(r.startsWith("data-")){const t=e.getAttribute(r);return e.removeAttribute(r),t}if("id"===n){const t=e.id;return e.id="",t}if("title"===n){const t=e.title;return e.title="",t}if("value"===n&&"value"in e){const t=e.value;return e.value="",t}const s=r.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());if(r.includes("-")||s in e.style||r in e.style){let t;return s in e.style?(t=e.style[s],e.style[s]=""):r in e.style?(t=e.style[r],e.style[r]=""):(t=e.style.getPropertyValue(r),e.style.removeProperty(r)),t}const i=e.getAttribute(t);return null!==i?(e.removeAttribute(t),i):null}putProperty(e,t,r){if(null==r)return;const n=t.trim(),s=n.toLowerCase();if("class"===s||"classes"===s)return void(Array.isArray(r)?r.forEach(t=>t&&"string"==typeof t&&e.classList.add(t)):"string"==typeof r&&(e.className=r));if(n.startsWith("."))return void(r&&e.classList.add(n.substring(1)));if(n.startsWith("@"))return void e.setAttribute(n.substring(1),r+"");if(n.startsWith("data-"))return void e.setAttribute(n,r+"");if("id"===s)return void(e.id=r+"");if("title"===s)return void(e.title=r+"");if("value"===s&&"value"in e)return void(e.value=r+"");const i=n.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());n.includes("-")||i in e.style||n in e.style?i in e.style?e.style[i]=r+"":n in e.style?e.style[n]=r+"":e.style.setProperty(n,r+""):e.setAttribute(t,r+"")}},vi(t,"TakeCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})());class To{constructor(){this.name="render"}get metadata(){return To.metadata}async parseInput(e,t,r){if(1>e.args.length)throw Error("render command requires a template");const n=await t.evaluate(e.args[0],r);let s;if(e.args.length>=3&&"with"===await t.evaluate(e.args[1],r)){const n=await t.evaluate(e.args[2],r);n&&"object"==typeof n&&(s=n)}if(!s&&e.modifiers?.with){const n=await t.evaluate(e.modifiers.with,r);n&&"object"==typeof n&&(s=n)}return{template:n,variables:s}}async execute(e,t){const{template:r,variables:n={}}=e,s=this.extractTemplateContent(r,t),i=this.createTemplateContext(t,n),a=[],o=await this.processTemplate(s,i,a),l=this.createDOMElement(o);return Object.assign(t,{it:l}),{element:l,rendered:o,directivesProcessed:a}}extractTemplateContent(e,t){if(e instanceof HTMLTemplateElement)return e.innerHTML;if("string"==typeof e){let r=e;if(!r.includes("<")&&!r.includes("$")){const e=this.resolveVariable(r,t);if(e instanceof HTMLTemplateElement)return e.innerHTML;"string"==typeof e&&(r=e)}const n=r.match(/<template[^>]*>([\s\S]*?)<\/template>/i);return n?n[1]:r}if(e&&"object"==typeof e&&"innerHTML"in e)return e.innerHTML;throw Error("Invalid template format")}createTemplateContext(e,t){return{...e,locals:new Map([...Array.from(e.locals.entries()),...Object.entries(t)])}}async processTemplate(e,t,r){const n=e.split("\n"),s=[];let i=0;for(;n.length>i;){const e=n[i].trim();if(e.startsWith("@repeat ")){const{nextIndex:e,rendered:a}=await this.processRepeatDirective(n,i,t);s.push(a),i=e,r.push("@repeat")}else if(e.startsWith("@if ")){const{nextIndex:e,rendered:a}=await this.processIfDirective(n,i,t,r);s.push(a),i=e,r.push("@if")}else if("@else"===e||"@end"===e)i++;else{const r=this.processVariableInterpolation(e,t);s.push(r),i++}}return s.join("\n")}async processRepeatDirective(e,t,r){const n=e[t].trim(),s=n.match(/^@repeat\s+in\s+(.+)$/);if(!s)throw Error("Invalid @repeat syntax: "+n);const i=this.evaluateExpression(s[1],r),{endIndex:a,blockContent:o}=this.extractDirectiveBlock(e,t+1),l=[];if(Array.isArray(i))for(const e of i){const t={...r,locals:new Map([...r.locals.entries(),["it",e]])},n=await this.processTemplate(o.join("\n"),t,[]);l.push(n)}return{nextIndex:a+1,rendered:l.join("\n")}}async processIfDirective(e,t,r,n){const s=e[t].trim(),i=s.match(/^@if\s+(.+)$/);if(!i)throw Error("Invalid @if syntax: "+s);const a=!!this.evaluateExpression(i[1],r),{endIndex:o,blockContent:l,elseContent:c}=this.extractIfElseBlock(e,t+1);let u="";return a?u=await this.processTemplate(l.join("\n"),r,[]):c.length>0&&(u=await this.processTemplate(c.join("\n"),r,[]),n.push("@else")),{nextIndex:o+1,rendered:u}}extractDirectiveBlock(e,t){const r=[];let n=1,s=t;for(;e.length>s&&n>0;){const t=e[s].trim();t.startsWith("@repeat ")||t.startsWith("@if ")?(n++,r.push(e[s])):"@end"===t?(n--,n>0&&r.push(e[s])):r.push(e[s]),s++}return{endIndex:s-1,blockContent:r}}extractIfElseBlock(e,t){const r=[],n=[];let s=1,i=t,a=!1;for(;e.length>i&&s>0;){const t=e[i].trim();if(t.startsWith("@if "))s++;else{if("@else"===t&&1===s){a=!0,i++;continue}if("@end"===t&&(s--,0===s))break}a?n.push(e[i]):r.push(e[i]),i++}return{endIndex:i,blockContent:r,elseContent:n}}processVariableInterpolation(e,t){return e.replace(/\$\{([^}]+)\}/g,(e,r)=>{try{const e=r.trim();if(e.startsWith("unescaped ")){const r=e.substring(10).trim();return(this.evaluateExpression(r,t)||"")+""}const n=this.evaluateExpression(e,t);return this.escapeHtml((n||"")+"")}catch(t){return console.warn(`Template interpolation error for ${r}:`,t),e}})}evaluateExpression(e,t){if("true"===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"===e)return;const r=Number(e);if(!isNaN(r)&&""!==e.trim())return r;if(e.startsWith("[")&&e.endsWith("]"))try{return JSON.parse(e)}catch{}if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1);if(e.includes(".")){const r=e.split(".");let n=this.resolveVariable(r[0],t);for(let e=1;r.length>e&&null!=n;e++){if("object"!=typeof n||null===n)return;n=n[r[e]]}return n}return this.resolveVariable(e,t)}resolveVariable(e,t){return t.locals?.has(e)?t.locals.get(e):"me"===e?t.me:"it"===e?t.it:"you"===e?t.you:"result"===e?t.result:t.globals?.has(e)?t.globals.get(e):void 0}escapeHtml(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}createDOMElement(e){if("undefined"==typeof document)return null;const t=document.createElement("div");return t.innerHTML=e,1===t.children.length?t.firstElementChild:t}}function Oo(){return new To}To.metadata={description:"Render templates with @if, @else, and @repeat directives",syntax:["render <template>","render <template> with <variables>","render <template> with (key: value, ...)"],examples:["render myTemplate",'render myTemplate with (name: "Alice")','render "<template>Hello ${name}!</template>" with (name: "World")',"render template with (items: data)"],category:"templates",sideEffects:["dom-creation","template-execution"]};class Lo extends pi{constructor(e={}){const t=e.registry||new si;let r;e.registry||(t.register(ji()),t.register(qi()),t.register(Qi()),t.register(ra()),t.register(Ea()),t.register(xa()),t.register(La()),t.register(Ra()),t.register(_a()),t.register(qa()),t.register($a()),t.register(Va()),t.register(Da()),t.register(za()),t.register(Ha()),t.register(Ua()),t.register(Ka()),t.register(Xa()),t.register(eo()),t.register(ro()),t.register(no()),t.register(so()),t.register(ao()),t.register(oo()),t.register(lo()),t.register(co()),t.register(uo()),t.register(mo()),t.register(po()),t.register(ho()),t.register(Ya()),t.register(fo()),t.register(go()),t.register(vo()),t.register(wo()),t.register(ko()),t.register(Eo()),t.register(xo()),t.register(Ao()),t.register(So()),t.register(Oo()),console.log("RuntimeExperimental: Registered 43 V2 commands (Phase 6 COMPLETE - All commands migrated)")),r=e.expressionEvaluator?e.expressionEvaluator:e.lazyLoad?new fi({preload:e.expressionPreload||"core"}):new ti;const n={registry:t,expressionEvaluator:r};void 0!==e.enableAsyncCommands&&(n.enableAsyncCommands=e.enableAsyncCommands),void 0!==e.commandTimeout&&(n.commandTimeout=e.commandTimeout),void 0!==e.enableErrorReporting&&(n.enableErrorReporting=e.enableErrorReporting),super(n)}}const Po=Ci((()=>{let e,t,r=[xi({description:"Evaluate an expression and store the result in it",syntax:"get <expression>",examples:["get #my-dialog","get <button/>","get me.parentElement"],sideEffects:["context-mutation"]}),Ei({name:"get",category:"data"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args||0===e.args.length)throw Error("get command requires an expression argument");const n=e.args[0],s=await t.evaluate(n,r);return s instanceof NodeList&&1===s.length||Array.isArray(s)&&1===s.length?{value:s[0]}:{value:s}}execute(e,t){return t.it=e.value,Object.assign(t,{result:e.value}),{value:e.value}}validate(e){return"object"==typeof e&&null!==e&&"value"in e}},vi(t,"GetCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;yi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),gi(t,n)})(),t})());var No={to:"destination",into:"destination",from:"source",with:"style",by:"quantity",as:"method",on:"event",over:"duration",for:"duration"},Io=new Set(["to","from","into","with","at","in","of","as","by","before","after","without"]),Ro=new Set(["add","append","async","beep","break","call","continue","decrement","default","exit","fetch","for","get","go","halt","hide","if","increment","install","js","log","make","measure","morph","pick","process","push","put","remove","render","repeat","replace","return","send","set","settle","show","swap","take","tell","throw","toggle","transition","trigger","unless","wait"]),jo=new Set(["then","else","end","and","or","not","if","unless","for","while","until","forever","times","each","index","in","to","from","into","with","without","of","at","by","as","matches","contains","is","exists","on","when","every","event","init","def","behavior","global","local","the","a","an","first","last","start","before","after"]),_o=new Set(["click","dblclick","mousedown","mouseup","mouseenter","mouseleave","mouseover","mouseout","mousemove","keydown","keyup","keypress","focus","blur","change","input","submit","reset","load","unload","resize","scroll","touchstart","touchend","touchmove","touchcancel","dragstart","dragend","dragenter","dragleave","dragover","drop","contextmenu","wheel","pointerdown","pointerup","pointermove","ms","s"]),qo=new Set(["and","or","not","is","exists","matches","contains","then","else"]),Mo=new Set(["true","false","null","undefined","it","me","my","result"]),$o=new Set(["first","last","next","previous","prev","at","random","closest","parent","children","within","no","empty","some","starts with","ends with"]),Vo=new Set(["if","unless","when","where","もし","時に","ときに","どこで","如果","当","إذا","عندما","حيث","si","cuando","donde","wenn","wann","wo","quand","lorsque","où","quando","onde","eğer","zaman","nerede","ketika","saat","dimana","때","어디서","maypi","wakati","wapi"]),Do=new Set(["then","それから","那么","ثم","entonces","alors","dann","sonra","lalu","chayqa","kisha"]);function Bo(e,t,r={}){const{allowEnglishFallback:n=!0}=r,s=new Map,i=new Map,a=new Map,o=new Map,l=new Map,c=new Map,u=new Map,d=new Map,m=new Map,p=new Map;function h(e,t,r=!1){for(const[n,s]of Object.entries(e)){const e=s.toLowerCase();t.set(e,n.toLowerCase()),!r&&m.has(e)||m.set(e,n.toLowerCase()),p.set(n.toLowerCase(),s.toLowerCase())}}e.commands&&h(e.commands,s,!0),e.logical&&h(e.logical,o,!0),e.events&&h(e.events,a),e.values&&h(e.values,c),e.temporal&&h(e.temporal,l),e.modifiers&&h(e.modifiers,i),e.attributes&&h(e.attributes,u),e.expressions&&h(e.expressions,d);const f=new Set(s.keys()),y=new Set(m.keys());if(n){for(const e of Ro)f.add(e);for(const e of jo)y.add(e);for(const e of _o)y.add(e)}return{locale:t,resolve(e){const t=e.toLowerCase(),r=m.get(t);if(void 0!==r)return r;if(n){if(Ro.has(t)||jo.has(t))return t;if(_o.has(t))return t}},isCommand(e){const t=e.toLowerCase();return!!s.has(t)||!(!n||!Ro.has(t))},isKeyword(e){const t=e.toLowerCase();return!!(i.has(t)||o.has(t)||l.has(t)||c.has(t))||!(!n||!jo.has(t))},isEvent(e){const t=e.toLowerCase();return!!a.has(t)||!!_o.has(t)},isModifier(e){const t=e.toLowerCase();return i.has(t)||n&&Io.has(t)},isLogical(e){const t=e.toLowerCase();return o.has(t)||n&&qo.has(t)},isValue(e){const t=e.toLowerCase();return c.has(t)||n&&Mo.has(t)},isExpression(e){const t=e.toLowerCase();return d.has(t)||n&&$o.has(t)},getCommands:()=>Array.from(f),getKeywords:()=>Array.from(y),toLocale:e=>p.get(e.toLowerCase())}}function Fo(){return{locale:"en",resolve(e){const t=e.toLowerCase();if(Ro.has(t)||jo.has(t)||_o.has(t))return t},isCommand:e=>Ro.has(e.toLowerCase()),isKeyword:e=>jo.has(e.toLowerCase()),isEvent:e=>_o.has(e.toLowerCase()),isModifier:e=>Io.has(e.toLowerCase()),isLogical:e=>qo.has(e.toLowerCase()),isValue:e=>Mo.has(e.toLowerCase()),isExpression:e=>$o.has(e.toLowerCase()),getCommands:()=>Array.from(Ro),getKeywords:()=>Array.from(jo),toLocale:e=>e.toLowerCase()}}var zo={commands:{on:"en",tell:"decir",trigger:"disparar",send:"enviar",take:"tomar",put:"poner",set:"establecer",get:"obtener",add:"agregar",remove:"quitar",toggle:"alternar",hide:"ocultar",show:"mostrar",if:"si",unless:"menos",repeat:"repetir",for:"para",while:"mientras",until:"hasta",continue:"continuar",break:"romper",halt:"detener",wait:"esperar",fetch:"buscar",call:"llamar",return:"retornar",make:"hacer",log:"registrar",throw:"lanzar",catch:"atrapar",measure:"medir",transition:"transición",increment:"incrementar",decrement:"decrementar",default:"predeterminar",go:"ir",pushUrl:"pushUrl",replaceUrl:"reemplazarUrl",copy:"copiar",pick:"escoger",beep:"pitido",js:"js",async:"asíncrono",render:"renderizar",swap:"intercambiar",morph:"transformar",settle:"estabilizar",append:"añadir",exit:"salir",install:"instalar"},modifiers:{to:"a",from:"de",into:"en",with:"con",at:"en",in:"en",of:"de",as:"como",by:"por",before:"antes",after:"después",over:"sobre",under:"bajo",between:"entre",through:"través",without:"sin"},events:{click:"clic",dblclick:"dobleclic",mousedown:"ratónabajo",mouseup:"ratónarriba",mouseenter:"ratónentrar",mouseleave:"ratónsalir",mouseover:"ratónencima",mouseout:"ratónfuera",mousemove:"ratónmover",keydown:"teclaabajo",keyup:"teclaarriba",keypress:"teclapresar",focus:"enfocar",blur:"desenfocar",change:"cambiar",input:"entrada",submit:"enviar",reset:"reiniciar",load:"cargar",unload:"descargar",resize:"redimensionar",scroll:"desplazar",touchstart:"toqueempezar",touchend:"toqueterminar",touchmove:"toquemover",touchcancel:"toquecancelar"},logical:{when:"cuando",where:"donde",and:"y",or:"o",not:"no",is:"es",exists:"existe",matches:"coincide",contains:"contiene",includes:"incluye",equals:"iguala",has:"tiene",have:"tengo",then:"entonces",else:"sino",otherwise:"delocontrario",end:"fin"},temporal:{seconds:"segundos",second:"segundo",milliseconds:"milisegundos",millisecond:"milisegundo",minutes:"minutos",minute:"minuto",hours:"horas",hour:"hora",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"verdadero",false:"falso",null:"nulo",undefined:"indefinido",it:"ello",its:"su",me:"yo",my:"mi",you:"tu",your:"tu",yourself:"ti mismo",myself:"yo mismo",element:"elemento",target:"objetivo",detail:"detalle",event:"evento",window:"ventana",document:"documento",body:"cuerpo",result:"resultado",value:"valor"},attributes:{class:"clase",classes:"clases",style:"estilo",styles:"estilos",attribute:"atributo",attributes:"atributos",property:"propiedad",properties:"propiedades"},expressions:{first:"primero",last:"último",next:"siguiente",previous:"anterior",prev:"ant",at:"en",random:"aleatorio",closest:"máscercano",parent:"padre",children:"hijos",within:"dentro",no:"ningún",empty:"vacío",some:"algún","starts with":"empieza con","ends with":"termina con"}},Ho=Bo(zo,"es",{allowEnglishFallback:!0}),Uo={commands:{on:"で",tell:"伝える",trigger:"引き金",send:"送る",take:"取る",put:"置く",set:"設定",get:"取得",add:"追加",remove:"削除",toggle:"切り替え",hide:"隠す",show:"表示",if:"もし",unless:"でなければ",repeat:"繰り返し",for:"ために",while:"の間",until:"まで",continue:"続ける",break:"中断",halt:"停止",wait:"待つ",fetch:"取得",call:"呼び出し",return:"戻る",make:"作る",log:"記録",throw:"投げる",catch:"捕まえる",measure:"測定",transition:"遷移",increment:"増加",decrement:"減少",default:"既定",go:"移動",pushUrl:"URLプッシュ",replaceUrl:"URL置換",copy:"コピー",pick:"選択",beep:"ビープ",js:"JS実行",async:"非同期",render:"描画",swap:"交換",morph:"変形",settle:"安定",append:"末尾追加",exit:"終了",install:"インストール"},modifiers:{to:"に",from:"から",into:"へ",with:"と",at:"で",in:"の中",of:"の",as:"として",by:"によって",before:"前に",after:"後に",over:"上に",under:"下に",between:"間に",through:"通して",without:"なしで"},events:{click:"クリック",dblclick:"ダブルクリック",mousedown:"マウス押下",mouseup:"マウス解放",mouseenter:"マウス入る",mouseleave:"マウス離れる",mouseover:"マウス上",mouseout:"マウス外",mousemove:"マウス移動",keydown:"キー押下",keyup:"キー解放",keypress:"キー押す",focus:"フォーカス",blur:"ぼかし",change:"変更",input:"入力",submit:"送信",reset:"リセット",load:"読み込み",unload:"読み込み解除",resize:"サイズ変更",scroll:"スクロール",touchstart:"タッチ開始",touchend:"タッチ終了",touchmove:"タッチ移動",touchcancel:"タッチキャンセル"},logical:{when:"とき",where:"どこ",and:"そして",or:"または",not:"ではない",is:"である",exists:"存在する",matches:"一致する",contains:"含む",includes:"含める",equals:"等しい",has:"ある",have:"ある",then:"それから",else:"そうでなければ",otherwise:"そうでなければ",end:"終わり"},temporal:{seconds:"秒",second:"秒",milliseconds:"ミリ秒",millisecond:"ミリ秒",minutes:"分",minute:"分",hours:"時間",hour:"時間",ms:"ms",s:"秒",min:"分",h:"時"},values:{true:"真",false:"偽",null:"null",undefined:"未定義",it:"それ",its:"その",me:"私",my:"私の",you:"あなた",your:"あなたの",yourself:"あなた自身",myself:"私自身",element:"要素",target:"対象",detail:"詳細",event:"イベント",window:"ウィンドウ",document:"ドキュメント",body:"ボディ",result:"結果",value:"値"},attributes:{class:"クラス",classes:"クラス群",style:"スタイル",styles:"スタイル群",attribute:"属性",attributes:"属性群",property:"プロパティ",properties:"プロパティ群"},expressions:{first:"最初",last:"最後",next:"次",previous:"前",prev:"前",at:"で",random:"ランダム",closest:"最も近い",parent:"親",children:"子",within:"以内",no:"ない",empty:"空",some:"いくつか","starts with":"で始まる","ends with":"で終わる"}},Wo=Bo(Uo,"ja",{allowEnglishFallback:!0}),Jo={commands:{on:"sur",tell:"dire",trigger:"déclencher",send:"envoyer",take:"prendre",put:"mettre",set:"définir",get:"obtenir",add:"ajouter",remove:"supprimer",toggle:"basculer",hide:"cacher",show:"montrer",if:"si",unless:"saufsi",repeat:"répéter",for:"pour",while:"tantque",until:"jusquà",continue:"continuer",break:"arrêter",halt:"stopper",wait:"attendre",fetch:"récupérer",call:"appeler",return:"retourner",make:"créer",log:"enregistrer",throw:"lancer",catch:"attraper",measure:"mesurer",transition:"transition",increment:"incrémenter",decrement:"décrémenter",default:"défaut",go:"aller",pushUrl:"pousserUrl",replaceUrl:"remplacerUrl",copy:"copier",pick:"choisir",beep:"bip",js:"js",async:"asynchrone",render:"rendu",swap:"échanger",morph:"transformer",settle:"stabiliser",append:"ajouter",exit:"sortir",install:"installer"},modifiers:{to:"à",from:"de",into:"dans",with:"avec",at:"à",in:"en",of:"de",as:"comme",by:"par",before:"avant",after:"après",over:"sur",under:"sous",between:"entre",through:"à travers",without:"sans"},events:{click:"clic",dblclick:"doubleclic",mousedown:"sourisappuyée",mouseup:"sourisrelâchée",mouseenter:"sourisentrer",mouseleave:"sourissortir",mouseover:"sourissur",mouseout:"sourisdehors",mousemove:"sourisbouger",keydown:"toucheappuyée",keyup:"toucherelâchée",keypress:"touchepressée",focus:"focus",blur:"flou",change:"changer",input:"saisie",submit:"soumettre",reset:"réinitialiser",load:"charger",unload:"décharger",resize:"redimensionner",scroll:"défiler",touchstart:"touchercommencer",touchend:"toucherfin",touchmove:"toucherbouger",touchcancel:"toucherannuler"},logical:{when:"quand",where:"où",and:"et",or:"ou",not:"non",is:"est",exists:"existe",matches:"correspond",contains:"contient",includes:"inclut",equals:"égale",has:"a",have:"ai",then:"alors",else:"sinon",otherwise:"autrement",end:"fin"},temporal:{seconds:"secondes",second:"seconde",milliseconds:"millisecondes",millisecond:"milliseconde",minutes:"minutes",minute:"minute",hours:"heures",hour:"heure",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"vrai",false:"faux",null:"nul",undefined:"indéfini",it:"ça",its:"son",me:"moi",my:"mon",you:"tu",your:"ton",yourself:"toi-même",myself:"moi-même",element:"élément",target:"cible",detail:"détail",event:"événement",window:"fenêtre",document:"document",body:"corps",result:"résultat",value:"valeur"},attributes:{class:"classe",classes:"classes",style:"style",styles:"styles",attribute:"attribut",attributes:"attributs",property:"propriété",properties:"propriétés"},expressions:{first:"premier",last:"dernier",next:"suivant",previous:"précédent",prev:"préc",at:"à",random:"aléatoire",closest:"plusproche",parent:"parent",children:"enfants",within:"dans",no:"aucun",empty:"vide",some:"quelques","starts with":"commence par","ends with":"finit par"}},Ko=Bo(Jo,"fr",{allowEnglishFallback:!0}),Yo={commands:{on:"bei",tell:"sagen",trigger:"auslösen",send:"senden",take:"nehmen",put:"setzen",set:"festlegen",get:"erhalten",add:"hinzufügen",remove:"entfernen",toggle:"umschalten",hide:"verstecken",show:"zeigen",if:"wenn",unless:"wennnicht",repeat:"wiederholen",for:"für",while:"während",until:"bis",continue:"weiter",break:"unterbrechen",halt:"anhalten",wait:"warten",fetch:"holen",call:"aufrufen",return:"zurückgeben",make:"erstellen",log:"protokollieren",throw:"werfen",catch:"fangen",measure:"messen",transition:"übergang",increment:"erhöhen",decrement:"verringern",default:"standard",go:"gehen",pushUrl:"urlHinzufügen",replaceUrl:"urlErsetzen",copy:"kopieren",pick:"auswählen",beep:"piepton",js:"js",async:"asynchron",render:"rendern",swap:"tauschen",morph:"verwandeln",settle:"stabilisieren",append:"anhängen",exit:"beenden",install:"installieren"},modifiers:{to:"zu",from:"von",into:"in",with:"mit",at:"bei",in:"in",of:"von",as:"als",by:"durch",before:"vor",after:"nach",over:"über",under:"unter",between:"zwischen",through:"durch",without:"ohne"},events:{click:"klick",dblclick:"doppelklick",mousedown:"mausunten",mouseup:"mausoben",mouseenter:"mauseintreten",mouseleave:"mausverlassen",mouseover:"mausüber",mouseout:"maushinaus",mousemove:"mausbewegen",keydown:"tasteunten",keyup:"tasteoben",keypress:"tastedrücken",focus:"fokus",blur:"unscharf",change:"ändern",input:"eingabe",submit:"absenden",reset:"zurücksetzen",load:"laden",unload:"entladen",resize:"größeändern",scroll:"scrollen",touchstart:"berührungstart",touchend:"berührungend",touchmove:"berührungbewegen",touchcancel:"berührungabbrechen"},logical:{when:"wenn",where:"wo",and:"und",or:"oder",not:"nicht",is:"ist",exists:"existiert",matches:"passt",contains:"enthält",includes:"beinhaltet",equals:"gleicht",has:"hat",have:"habe",then:"dann",else:"sonst",otherwise:"andernfalls",end:"ende"},temporal:{seconds:"sekunden",second:"sekunde",milliseconds:"millisekunden",millisecond:"millisekunde",minutes:"minuten",minute:"minute",hours:"stunden",hour:"stunde",ms:"ms",s:"s",min:"min",h:"std"},values:{true:"wahr",false:"falsch",null:"null",undefined:"undefiniert",it:"es",its:"sein",me:"ich",my:"mein",you:"du",your:"dein",yourself:"dich selbst",myself:"ich selbst",element:"element",target:"ziel",detail:"detail",event:"ereignis",window:"fenster",document:"dokument",body:"körper",result:"ergebnis",value:"wert"},attributes:{class:"klasse",classes:"klassen",style:"stil",styles:"stile",attribute:"attribut",attributes:"attribute",property:"eigenschaft",properties:"eigenschaften"},expressions:{first:"erste",last:"letzte",next:"nächste",previous:"vorherige",prev:"vorh",at:"bei",random:"zufällig",closest:"nächste",parent:"elternteil",children:"kinder",within:"innerhalb",no:"kein",empty:"leer",some:"einige","starts with":"beginnt mit","ends with":"endet mit"}},Go=Bo(Yo,"de",{allowEnglishFallback:!0}),Xo={commands:{on:"على",tell:"أخبر",trigger:"تشغيل",send:"أرسل",take:"خذ",put:"ضع",set:"اضبط",get:"احصل",add:"أضف",remove:"احذف",toggle:"بدل",hide:"اخف",show:"اظهر",if:"إذا",unless:"إلا إذا",repeat:"كرر",for:"لكل",while:"بينما",until:"حتى",continue:"واصل",break:"توقف",halt:"أوقف",wait:"انتظر",fetch:"احضر",call:"استدع",return:"ارجع",make:"اصنع",log:"سجل",throw:"ارم",catch:"التقط",measure:"قس",transition:"انتقال",increment:"زِد",decrement:"أنقص",default:"افتراضي",go:"اذهب",pushUrl:"ادفع رابط",replaceUrl:"استبدل رابط",copy:"انسخ",pick:"اختر",beep:"صفّر",js:"جافاسكربت",async:"متزامن",render:"ارسم",swap:"بدّل",morph:"حوّل",settle:"استقر",append:"ألحق",exit:"اخرج",install:"ثبّت"},modifiers:{to:"إلى",from:"من",into:"في",with:"مع",at:"عند",in:"في",of:"من",as:"كـ",by:"بواسطة",before:"قبل",after:"بعد",over:"فوق",under:"تحت",between:"بين",through:"عبر",without:"بدون"},events:{click:"نقر",dblclick:"نقر مزدوج",mousedown:"فأرة أسفل",mouseup:"فأرة أعلى",mouseenter:"فأرة دخول",mouseleave:"فأرة خروج",mouseover:"فأرة فوق",mouseout:"فأرة خارج",mousemove:"فأرة تحرك",keydown:"مفتاح أسفل",keyup:"مفتاح أعلى",keypress:"مفتاح ضغط",focus:"تركيز",blur:"ضبابية",change:"تغيير",input:"إدخال",submit:"إرسال",reset:"إعادة تعيين",load:"تحميل",unload:"إلغاء تحميل",resize:"تغيير حجم",scroll:"تمرير",touchstart:"بداية لمس",touchend:"نهاية لمس",touchmove:"تحرك لمس",touchcancel:"إلغاء لمس"},logical:{when:"عندما",where:"أين",and:"و",or:"أو",not:"ليس",is:"هو",exists:"موجود",matches:"يطابق",contains:"يحتوي",includes:"يشمل",equals:"يساوي",has:"لديه",have:"لدي",then:"ثم",else:"وإلا",otherwise:"خلاف ذلك",end:"النهاية"},temporal:{seconds:"ثوانِ",second:"ثانية",milliseconds:"ميلي ثانية",millisecond:"ميلي ثانية",minutes:"دقائق",minute:"دقيقة",hours:"ساعات",hour:"ساعة",ms:"م.ث",s:"ث",min:"د",h:"س"},values:{true:"صحيح",false:"خطأ",null:"فارغ",undefined:"غير معرف",it:"هو",its:"له",me:"أنا",my:"لي",myself:"نفسي",you:"أنت",your:"لك",yourself:"نفسك",element:"عنصر",target:"هدف",detail:"تفاصيل",event:"حدث",window:"نافذة",document:"وثيقة",body:"جسم",result:"نتيجة",value:"قيمة"},attributes:{class:"فئة",classes:"فئات",style:"أسلوب",styles:"أساليب",attribute:"خاصية",attributes:"خصائص",property:"خاصية",properties:"خصائص"},expressions:{first:"أول",last:"آخر",next:"التالي",previous:"السابق",prev:"سابق",at:"عند",random:"عشوائي",closest:"الأقرب",parent:"والد",children:"أطفال",within:"داخل",no:"لا يوجد",empty:"فارغ",some:"بعض","starts with":"يبدأ بـ","ends with":"ينتهي بـ"}},Zo=Bo(Xo,"ar",{allowEnglishFallback:!0}),Qo={commands:{on:"에",tell:"말하다",trigger:"트리거",send:"보내다",take:"가져오다",put:"넣다",set:"설정",get:"얻다",add:"추가",remove:"제거",toggle:"토글",hide:"숨기다",show:"보이다",if:"만약",unless:"아니면",repeat:"반복",for:"동안",while:"동안",until:"까지",continue:"계속",break:"중단",halt:"정지",wait:"대기",fetch:"가져오기",call:"호출",return:"반환",make:"만들다",log:"로그",throw:"던지다",catch:"잡다",measure:"측정",transition:"전환",increment:"증가",decrement:"감소",default:"기본값",go:"이동",pushUrl:"URL푸시",replaceUrl:"URL교체",copy:"복사",pick:"선택",beep:"비프",js:"JS실행",async:"비동기",render:"렌더링",swap:"교환",morph:"변형",settle:"안정",append:"추가",exit:"종료",install:"설치"},modifiers:{to:"에",from:"에서",into:"으로",with:"와",at:"에",in:"안에",of:"의",as:"로",by:"에의해",before:"전에",after:"후에",over:"위에",under:"아래",between:"사이",through:"통해",without:"없이"},events:{click:"클릭",dblclick:"더블클릭",mousedown:"마우스다운",mouseup:"마우스업",mouseenter:"마우스엔터",mouseleave:"마우스리브",mouseover:"마우스오버",mouseout:"마우스아웃",mousemove:"마우스무브",keydown:"키다운",keyup:"키업",keypress:"키프레스",focus:"포커스",blur:"블러",change:"변경",input:"입력",submit:"제출",reset:"리셋",load:"로드",unload:"언로드",resize:"리사이즈",scroll:"스크롤",touchstart:"터치시작",touchend:"터치종료",touchmove:"터치이동",touchcancel:"터치취소"},logical:{when:"때",where:"어디",and:"그리고",or:"또는",not:"아니",is:"이다",exists:"존재",matches:"일치",contains:"포함",includes:"포함하다",equals:"같다",has:"있다",have:"있다",then:"그러면",else:"아니면",otherwise:"그렇지않으면",end:"끝"},temporal:{seconds:"초",second:"초",milliseconds:"밀리초",millisecond:"밀리초",minutes:"분",minute:"분",hours:"시간",hour:"시간",ms:"ms",s:"초",min:"분",h:"시"},values:{true:"참",false:"거짓",null:"널",undefined:"정의안됨",it:"그것",its:"그것의",me:"나",my:"내",myself:"나자신",you:"너",your:"네",yourself:"너자신",element:"요소",target:"대상",detail:"세부",event:"이벤트",window:"창",document:"문서",body:"바디",result:"결과",value:"값"},attributes:{class:"클래스",classes:"클래스들",style:"스타일",styles:"스타일들",attribute:"속성",attributes:"속성들",property:"프로퍼티",properties:"프로퍼티들"},expressions:{first:"첫번째",last:"마지막",next:"다음",previous:"이전",prev:"이전",at:"에서",random:"무작위",closest:"가장가까운",parent:"부모",children:"자식",within:"이내",no:"없음",empty:"비어있는",some:"일부","starts with":"로시작","ends with":"로끝나는"}},el=Bo(Qo,"ko",{allowEnglishFallback:!0}),tl={commands:{on:"当",tell:"告诉",trigger:"触发",send:"发送",take:"获取",put:"放置",set:"设置",get:"获得",add:"添加",remove:"移除",toggle:"切换",hide:"隐藏",show:"显示",if:"如果",unless:"除非",repeat:"重复",for:"为",while:"当",until:"直到",continue:"继续",break:"中断",halt:"停止",wait:"等待",fetch:"获取",call:"调用",return:"返回",make:"制作",log:"日志",throw:"抛出",catch:"捕获",measure:"测量",transition:"过渡",increment:"增加",decrement:"减少",default:"默认",go:"前往",pushUrl:"推送网址",replaceUrl:"替换网址",copy:"复制",pick:"选取",beep:"蜂鸣",js:"JS执行",async:"异步",render:"渲染",swap:"交换",morph:"变形",settle:"稳定",append:"追加",exit:"退出",install:"安装"},modifiers:{to:"到",from:"从",into:"进入",with:"与",at:"在",in:"在",of:"的",as:"作为",by:"通过",before:"之前",after:"之后",over:"在上",under:"在下",between:"之间",through:"通过",without:"没有"},events:{click:"点击",dblclick:"双击",mousedown:"鼠标按下",mouseup:"鼠标抬起",mouseenter:"鼠标进入",mouseleave:"鼠标离开",mouseover:"鼠标悬停",mouseout:"鼠标移出",mousemove:"鼠标移动",keydown:"按键按下",keyup:"按键抬起",keypress:"按键",focus:"聚焦",blur:"失焦",change:"改变",input:"输入",submit:"提交",reset:"重置",load:"加载",unload:"卸载",resize:"调整大小",scroll:"滚动",touchstart:"触摸开始",touchend:"触摸结束",touchmove:"触摸移动",touchcancel:"触摸取消"},logical:{when:"当",where:"哪里",and:"和",or:"或",not:"非",is:"是",exists:"存在",matches:"匹配",contains:"包含",includes:"包括",equals:"等于",has:"有",have:"有",then:"那么",else:"否则",otherwise:"要不然",end:"结束"},temporal:{seconds:"秒",second:"秒",milliseconds:"毫秒",millisecond:"毫秒",minutes:"分钟",minute:"分钟",hours:"小时",hour:"小时",ms:"毫秒",s:"秒",min:"分",h:"时"},values:{true:"真",false:"假",null:"空",undefined:"未定义",it:"它",its:"它的",me:"我",my:"我的",myself:"我自己",you:"你",your:"你的",yourself:"你自己",element:"元素",target:"目标",detail:"详情",event:"事件",window:"窗口",document:"文档",body:"主体",result:"结果",value:"值"},attributes:{class:"类",classes:"类别",style:"样式",styles:"样式集",attribute:"属性",attributes:"属性集",property:"特性",properties:"特性集"},expressions:{first:"第一个",last:"最后一个",next:"下一个",previous:"上一个",prev:"上个",at:"在",random:"随机",closest:"最近的",parent:"父级",children:"子级",within:"之内",no:"没有",empty:"空的",some:"一些","starts with":"以开头","ends with":"以结尾"}},rl=Bo(tl,"zh",{allowEnglishFallback:!0}),nl={commands:{on:"üzerinde",tell:"söyle",trigger:"tetikle",send:"gönder",take:"al",put:"koy",set:"ayarla",get:"al",add:"ekle",remove:"kaldır",toggle:"değiştir",hide:"gizle",show:"göster",if:"eğer",unless:"değilse",repeat:"tekrarla",for:"için",while:"iken",until:"kadar",continue:"devam",break:"dur",halt:"durdur",wait:"bekle",fetch:"getir",call:"çağır",return:"dön",make:"yap",log:"kaydet",throw:"fırlat",catch:"yakala",measure:"ölç",transition:"geçiş",increment:"artır",decrement:"azalt",default:"varsayılan",go:"git",pushUrl:"urlEkle",replaceUrl:"urlDeğiştir",copy:"kopyala",pick:"seç",beep:"bip",js:"js",async:"asenkron",render:"render",swap:"takas",morph:"dönüştür",settle:"sabitlen",append:"ekle",exit:"çık",install:"kur"},modifiers:{to:"e",from:"den",into:"içine",with:"ile",at:"de",in:"içinde",of:"nin",as:"olarak",by:"tarafından",before:"önce",after:"sonra",over:"üzerinde",under:"altında",between:"arasında",through:"boyunca",without:"olmadan"},events:{click:"tıklama",dblclick:"çift_tıklama",mousedown:"fare_bas",mouseup:"fare_bırak",mouseenter:"fare_gir",mouseleave:"fare_çık",mouseover:"fare_üstü",mouseout:"fare_dışı",mousemove:"fare_hareket",keydown:"tuş_bas",keyup:"tuş_bırak",keypress:"tuş_basım",focus:"odak",blur:"bulanık",change:"değişim",input:"giriş",submit:"gönder",reset:"sıfırla",load:"yükle",unload:"yükle_kaldır",resize:"boyut_değiştir",scroll:"kaydır",touchstart:"dokunma_başla",touchend:"dokunma_bitir",touchmove:"dokunma_hareket",touchcancel:"dokunma_iptal"},logical:{when:"iken",where:"nerede",and:"ve",or:"veya",not:"değil",is:"dir",exists:"var",matches:"eşleşir",contains:"içerir",includes:"dahil",equals:"eşittir",has:"var",have:"var",then:"sonra",else:"yoksa",otherwise:"aksi_halde",end:"son"},temporal:{seconds:"saniye",second:"saniye",milliseconds:"milisaniye",millisecond:"milisaniye",minutes:"dakika",minute:"dakika",hours:"saat",hour:"saat",ms:"ms",s:"s",min:"dk",h:"sa"},values:{true:"doğru",false:"yanlış",null:"boş",undefined:"tanımsız",it:"o",its:"onun",me:"ben",my:"benim",myself:"kendim",you:"sen",your:"senin",yourself:"kendin",element:"öğe",target:"hedef",detail:"detay",event:"olay",window:"pencere",document:"belge",body:"gövde",result:"sonuç",value:"değer"},attributes:{class:"sınıf",classes:"sınıflar",style:"stil",styles:"stiller",attribute:"özellik",attributes:"özellikler",property:"özellik",properties:"özellikler"},expressions:{first:"ilk",last:"son",next:"sonraki",previous:"önceki",prev:"önc",at:"de",random:"rastgele",closest:"en_yakın",parent:"ebeveyn",children:"çocuklar",within:"içinde",no:"yok",empty:"boş",some:"bazı","starts with":"ile başlar","ends with":"ile biter"}},sl=Bo(nl,"tr",{allowEnglishFallback:!0}),il={commands:{on:"pada",tell:"katakan",trigger:"picu",send:"kirim",take:"ambil",put:"taruh",set:"atur",get:"dapatkan",add:"tambah",remove:"hapus",toggle:"ganti",hide:"sembunyikan",show:"tampilkan",if:"jika",unless:"kecuali",repeat:"ulangi",for:"untuk",while:"selama",until:"sampai",continue:"lanjutkan",break:"hentikan",halt:"berhenti",wait:"tunggu",fetch:"ambil",call:"panggil",return:"kembali",make:"buat",log:"catat",throw:"lempar",catch:"tangkap",measure:"ukur",transition:"transisi",increment:"tambahkan",decrement:"kurangi",default:"bawaan",go:"pergi",pushUrl:"tambahUrl",replaceUrl:"gantiUrl",copy:"salin",pick:"pilih",beep:"bunyi",js:"js",async:"asinkron",render:"tampilkan",swap:"tukar",morph:"ubah_bentuk",settle:"stabil",append:"tambah_akhir",exit:"keluar",install:"pasang"},modifiers:{to:"ke",from:"dari",into:"ke_dalam",with:"dengan",at:"di",in:"dalam",of:"dari",as:"sebagai",by:"oleh",before:"sebelum",after:"setelah",over:"di_atas",under:"di_bawah",between:"antara",through:"melalui",without:"tanpa"},events:{click:"klik",dblclick:"klik_ganda",mousedown:"tekan_mouse",mouseup:"lepas_mouse",mouseenter:"mouse_masuk",mouseleave:"mouse_keluar",mouseover:"mouse_atas",mouseout:"mouse_luar",mousemove:"gerak_mouse",keydown:"tekan_tombol",keyup:"lepas_tombol",keypress:"pencet_tombol",focus:"fokus",blur:"blur",change:"ubah",input:"masukan",submit:"kirim",reset:"reset",load:"muat",unload:"bongkar",resize:"ubah_ukuran",scroll:"gulir",touchstart:"mulai_sentuh",touchend:"akhir_sentuh",touchmove:"gerak_sentuh",touchcancel:"batal_sentuh"},logical:{when:"ketika",where:"di_mana",and:"dan",or:"atau",not:"bukan",is:"adalah",exists:"ada",matches:"cocok",contains:"berisi",includes:"termasuk",equals:"sama",has:"punya",have:"punya",then:"lalu",else:"lainnya",otherwise:"sebaliknya",end:"akhir"},temporal:{seconds:"detik",second:"detik",milliseconds:"milidetik",millisecond:"milidetik",minutes:"menit",minute:"menit",hours:"jam",hour:"jam",ms:"ms",s:"d",min:"mnt",h:"j"},values:{true:"benar",false:"salah",null:"kosong",undefined:"tidak_terdefinisi",it:"itu",its:"miliknya",me:"saya",my:"saya punya",myself:"saya sendiri",you:"kamu",your:"kamu punya",yourself:"kamu sendiri",element:"elemen",target:"target",detail:"detail",event:"peristiwa",window:"jendela",document:"dokumen",body:"badan",result:"hasil",value:"nilai"},attributes:{class:"kelas",classes:"kelas_kelas",style:"gaya",styles:"gaya_gaya",attribute:"atribut",attributes:"atribut_atribut",property:"properti",properties:"properti_properti"},expressions:{first:"pertama",last:"terakhir",next:"berikutnya",previous:"sebelumnya",prev:"sblm",at:"di",random:"acak",closest:"terdekat",parent:"induk",children:"anak_anak",within:"dalam",no:"tidak_ada",empty:"kosong",some:"beberapa","starts with":"dimulai dengan","ends with":"diakhiri dengan"}},al=Bo(il,"id",{allowEnglishFallback:!0}),ol={commands:{on:"kaqpi",tell:"niy",trigger:"kichay",send:"kachay",take:"hurquy",put:"churay",set:"churay",get:"chaskiy",add:"yapay",remove:"qichuy",toggle:"tikray",hide:"pakay",show:"rikuchiy",if:"sichus",unless:"mana_sichus",repeat:"kutichiy",for:"rayku",while:"kay_kaq",until:"hayk_akama",continue:"purichiy",break:"p_akiy",halt:"sayay",wait:"suyay",fetch:"apamuy",call:"qayay",return:"kutimuy",make:"ruray",log:"qillqay",throw:"wikchuy",catch:"hapsiy",measure:"tupuy",transition:"tikray",increment:"yapay",decrement:"pisiyachiy",default:"ñawpaq_kaq",go:"riy",pushUrl:"url_tanqay",replaceUrl:"url_tikray",copy:"qillqay",pick:"akllay",beep:"waqay",js:"js",async:"mana_suyaspa",render:"rikuchiy",swap:"rantin_tikray",morph:"tikrachiy",settle:"tiyay",append:"qhipaman_yapay",exit:"lluqsiy",install:"churay"},modifiers:{to:"man",from:"manta",into:"ukupi",with:"wan",at:"pi",in:"ukupi",of:"pa",as:"hina",by:"rayku",before:"ñawpaqpi",after:"qhepapi",over:"hawapi",under:"urapi",between:"chawpipi",through:"pasaspa",without:"mana"},events:{click:"ñitiy",dblclick:"iskay_ñitiy",mousedown:"rat_ñitiy",mouseup:"rat_huqariy",mouseenter:"rat_yaykuy",mouseleave:"rat_lluqsiy",mouseover:"rat_hawapi",mouseout:"rat_hawamanta",mousemove:"rat_kuyuy",keydown:"yupana_ñitiy",keyup:"yupana_huqariy",keypress:"yupana_ñitana",focus:"qhaway",blur:"paqariy",change:"tikray",input:"yaykuchiy",submit:"kachay",reset:"qallariy",load:"apakuy",unload:"urmay",resize:"hatun_kay",scroll:"kunray",touchstart:"llamiy_qallay",touchend:"llamiy_tukuy",touchmove:"llamiy_kuyuy",touchcancel:"llamiy_hark_ay"},logical:{when:"maykama",where:"maypi",and:"chaymanta",or:"utaq",not:"mana",is:"kanqa",exists:"tiyan",matches:"tupan",contains:"ukupi_kan",includes:"churasqa",equals:"kikin",has:"kachkan",have:"kachkani",then:"chayqa",else:"mana_chayqa",otherwise:"huk_kaqpi",end:"tukuy"},temporal:{seconds:"sikundukuna",second:"sikundu",milliseconds:"iskay_paqta_sikundukuna",millisecond:"iskay_paqta_sikundu",minutes:"minutukuna",minute:"minutu",hours:"horakuna",hour:"hora",ms:"ms",s:"s",min:"m",h:"h"},values:{true:"cheqaq",false:"llulla",null:"ch_usaq",undefined:"mana_riqsisqa",it:"chay",its:"chaypaq",me:"noqa",my:"noqaq",myself:"noqa killa",you:"qam",your:"qampaq",yourself:"qam killa",element:"raku",target:"punta",detail:"sut_iy",event:"ruway",window:"k_iri",document:"qillqa",body:"kurku",result:"lluqsiy",value:"chanin"},attributes:{class:"ayllu",classes:"ayllukuna",style:"sami",styles:"samikuna",attribute:"kaq",attributes:"kaqkuna",property:"kanay",properties:"kanaykuna"},expressions:{first:"ñawpaq",last:"qhipa",next:"qhipantin",previous:"ñawpaqnin",prev:"ñawpaq",at:"pi",random:"imaymanata",closest:"aswan_kaylla",parent:"mama_tayta",children:"wawakuna",within:"ukupi",no:"mana_kanchu",empty:"ch_usaq",some:"wakin","starts with":"qallarisqa wan","ends with":"tukusqa wan"}},ll=Bo(ol,"qu",{allowEnglishFallback:!0}),cl={commands:{on:"kwenye",tell:"ambia",trigger:"chochea",send:"tuma",take:"chukua",put:"weka",set:"weka",get:"pata",add:"ongeza",remove:"ondoa",toggle:"badilisha",hide:"ficha",show:"onyesha",if:"kama",unless:"isipokuwa",repeat:"rudia",for:"kwa",while:"wakati",until:"hadi",continue:"endelea",break:"vunja",halt:"simama",wait:"ngoja",fetch:"leta",call:"ita",return:"rudi",make:"fanya",log:"andika",throw:"tupa",catch:"shika",measure:"pima",transition:"mpito",increment:"ongeza",decrement:"punguza",default:"msingi",go:"nenda",pushUrl:"sukumaUrl",replaceUrl:"badilishaUrl",copy:"nakili",pick:"chagua",beep:"lia",js:"js",async:"sainkroni",render:"chora",swap:"badilishana",morph:"badilishaUmbo",settle:"tulia",append:"ongezaMwisho",exit:"toka",install:"sakinisha"},modifiers:{to:"kwa",from:"kutoka",into:"ndani",with:"na",at:"katika",in:"ndani",of:"ya",as:"kama",by:"na",before:"kabla",after:"baada",over:"juu",under:"chini",between:"kati",through:"kupitia",without:"bila"},events:{click:"bonyeza",dblclick:"bonyeza_mara_mbili",mousedown:"panya_shuka",mouseup:"panya_juu",mouseenter:"panya_ingia",mouseleave:"panya_toka",mouseover:"panya_juu",mouseout:"panya_nje",mousemove:"panya_sogea",keydown:"kitufe_shuka",keyup:"kitufe_juu",keypress:"kitufe_bonyeza",focus:"zingatia",blur:"poteza_macho",change:"badilisha",input:"ingizo",submit:"wasilisha",reset:"weka_upya",load:"pakia",unload:"shuka",resize:"badilisha_ukubwa",scroll:"sogeza",touchstart:"gusa_anza",touchend:"gusa_mwisho",touchmove:"gusa_sogea",touchcancel:"gusa_ghairi"},logical:{when:"wakati",where:"wapi",and:"na",or:"au",not:"si",is:"ni",exists:"ipo",matches:"inafanana",contains:"ina",includes:"pamoja",equals:"sawa",has:"ana",have:"nina",then:"kisha",else:"sivyo",otherwise:"vinginevyo",end:"mwisho"},temporal:{seconds:"sekunde",second:"sekunde",milliseconds:"millisekunde",millisecond:"millisekunde",minutes:"dakika",minute:"dakika",hours:"masaa",hour:"saa",ms:"ms",s:"s",min:"dk",h:"sa"},values:{true:"kweli",false:"uongo",null:"tupu",undefined:"haijafafanuliwa",it:"hiyo",its:"yake",me:"mimi",my:"yangu",myself:"mimi mwenyewe",you:"wewe",your:"yako",yourself:"wewe mwenyewe",element:"kipengele",target:"lengo",detail:"maelezo",event:"tukio",window:"dirisha",document:"hati",body:"mwili",result:"matokeo",value:"thamani"},attributes:{class:"darasa",classes:"madarasa",style:"mtindo",styles:"mitindo",attribute:"sifa",attributes:"sifa",property:"mali",properties:"mali"},expressions:{first:"kwanza",last:"mwisho",next:"ijayo",previous:"iliyopita",prev:"awali",at:"katika",random:"nasibu",closest:"karibu_zaidi",parent:"mzazi",children:"watoto",within:"ndani_ya",no:"hakuna",empty:"tupu",some:"baadhi","starts with":"huanza na","ends with":"huisha na"}},ul=Bo(cl,"sw",{allowEnglishFallback:!0}),dl={commands:{on:"em",tell:"dizer",trigger:"disparar",send:"enviar",take:"pegar",put:"colocar",set:"definir",get:"obter",add:"adicionar",remove:"remover",toggle:"alternar",hide:"esconder",show:"mostrar",if:"se",unless:"a_menos",repeat:"repetir",for:"para",while:"enquanto",until:"até",continue:"continuar",break:"parar",halt:"interromper",wait:"esperar",fetch:"buscar",call:"chamar",return:"retornar",make:"fazer",log:"registrar",throw:"lançar",catch:"capturar",measure:"medir",transition:"transição",increment:"incrementar",decrement:"decrementar",default:"padrão",go:"ir",pushUrl:"pushUrl",replaceUrl:"substituirUrl",copy:"copiar",pick:"escolher",beep:"apitar",js:"js",async:"assíncrono",render:"renderizar",swap:"trocar",morph:"transformar",settle:"estabilizar",append:"anexar",exit:"sair",install:"instalar"},modifiers:{to:"para",from:"de",into:"em",with:"com",at:"em",in:"dentro",of:"de",as:"como",by:"por",before:"antes",after:"depois",over:"sobre",under:"sob",between:"entre",through:"através",without:"sem"},events:{click:"clique",dblclick:"duploClique",mousedown:"mouseBaixo",mouseup:"mouseCima",mouseenter:"mouseEntrar",mouseleave:"mouseSair",mouseover:"mouseSobre",mouseout:"mouseFora",mousemove:"mouseMover",keydown:"teclaBaixo",keyup:"teclaCima",keypress:"teclaPressionar",focus:"foco",blur:"desfoque",change:"mudança",input:"entrada",submit:"envio",reset:"reiniciar",load:"carregar",unload:"descarregar",resize:"redimensionar",scroll:"rolar",touchstart:"toqueInício",touchend:"toqueFim",touchmove:"toqueMover",touchcancel:"toqueCancelar"},logical:{when:"quando",where:"onde",and:"e",or:"ou",not:"não",is:"é",exists:"existe",matches:"corresponde",contains:"contém",includes:"inclui",equals:"igual",has:"tem",have:"tenho",then:"então",else:"senão",otherwise:"caso_contrário",end:"fim"},temporal:{seconds:"segundos",second:"segundo",milliseconds:"milissegundos",millisecond:"milissegundo",minutes:"minutos",minute:"minuto",hours:"horas",hour:"hora",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"verdadeiro",false:"falso",null:"nulo",undefined:"indefinido",it:"isso",its:"seu",me:"eu",my:"meu",myself:"eu mesmo",you:"você",your:"seu",yourself:"você mesmo",element:"elemento",target:"alvo",detail:"detalhe",event:"evento",window:"janela",document:"documento",body:"corpo",result:"resultado",value:"valor"},attributes:{class:"classe",classes:"classes",style:"estilo",styles:"estilos",attribute:"atributo",attributes:"atributos",property:"propriedade",properties:"propriedades"},expressions:{first:"primeiro",last:"último",next:"próximo",previous:"anterior",prev:"ant",at:"em",random:"aleatório",closest:"mais_próximo",parent:"pai",children:"filhos",within:"dentro",no:"nenhum",empty:"vazio",some:"algum","starts with":"começa com","ends with":"termina com"}},ml=Bo(dl,"pt",{allowEnglishFallback:!0}),pl={commands:{on:"su",tell:"dire",trigger:"scatenare",send:"inviare",take:"prendere",put:"mettere",set:"impostare",get:"ottenere",add:"aggiungere",remove:"rimuovere",toggle:"commutare",hide:"nascondere",show:"mostrare",if:"se",unless:"a meno che",repeat:"ripetere",for:"per",while:"mentre",until:"fino",continue:"continuare",break:"interrompere",halt:"fermare",wait:"aspettare",fetch:"recuperare",call:"chiamare",return:"ritornare",make:"fare",log:"registrare",throw:"lanciare",catch:"catturare",measure:"misurare",transition:"transizione",increment:"incrementare",decrement:"decrementare",default:"predefinito",go:"andare",pushUrl:"pushUrl",replaceUrl:"sostituireUrl",copy:"copiare",pick:"scegliere",beep:"beep",js:"js",async:"asincrono",render:"renderizzare",swap:"scambiare",morph:"trasformare",settle:"stabilizzare",append:"aggiungere",exit:"uscire",install:"installare"},modifiers:{to:"a",from:"da",into:"in",with:"con",at:"a",in:"in",of:"di",as:"come",by:"per",before:"prima",after:"dopo",over:"sopra",under:"sotto",between:"tra",through:"attraverso",without:"senza"},events:{click:"clic",dblclick:"doppioclic",mousedown:"mousegiù",mouseup:"mousesu",mouseenter:"mouseentra",mouseleave:"mouseesce",mouseover:"mousesopra",mouseout:"mousefuori",mousemove:"mousemuovi",keydown:"tastogiù",keyup:"tastosu",keypress:"tastopremi",focus:"fuoco",blur:"sfuocatura",change:"cambio",input:"input",submit:"invio",reset:"reset",load:"carica",unload:"scarica",resize:"ridimensiona",scroll:"scorrimento",touchstart:"toccoinizia",touchend:"toccofine",touchmove:"toccomuovi",touchcancel:"toccoannulla"},logical:{when:"quando",where:"dove",and:"e",or:"o",not:"non",is:"è",exists:"esiste",matches:"corrisponde",contains:"contiene",includes:"include",equals:"uguale",has:"ha",have:"ho",then:"allora",else:"altrimenti",otherwise:"altrimenti",end:"fine"},temporal:{seconds:"secondi",second:"secondo",milliseconds:"millisecondi",millisecond:"millisecondo",minutes:"minuti",minute:"minuto",hours:"ore",hour:"ora",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"vero",false:"falso",null:"nullo",undefined:"indefinito",it:"esso",its:"suo",me:"io",my:"mio",you:"tu",your:"tuo",yourself:"te stesso",myself:"me stesso",element:"elemento",target:"obiettivo",detail:"dettaglio",event:"evento",window:"finestra",document:"documento",body:"corpo",result:"risultato",value:"valore"},attributes:{class:"classe",classes:"classi",style:"stile",styles:"stili",attribute:"attributo",attributes:"attributi",property:"proprietà",properties:"proprietà"},expressions:{first:"primo",last:"ultimo",next:"prossimo",previous:"precedente",prev:"prec",at:"a",random:"casuale",closest:"piùvicino",parent:"genitore",children:"figli",within:"dentro",no:"nessun",empty:"vuoto",some:"qualche","starts with":"inizia con","ends with":"finisce con"}};Bo(pl,"it",{allowEnglishFallback:!0});var hl={commands:{on:"khi",tell:"nói với",trigger:"kích hoạt",send:"gửi",take:"lấy",put:"đặt",set:"gán",get:"lấy giá trị",add:"thêm",remove:"xóa",toggle:"chuyển đổi",hide:"ẩn",show:"hiển thị",if:"nếu",unless:"trừ khi",repeat:"lặp lại",for:"với mỗi",while:"trong khi",until:"cho đến khi",continue:"tiếp tục",break:"dừng",halt:"dừng lại",wait:"chờ",fetch:"tải",call:"gọi",return:"trả về",make:"tạo",log:"in ra",throw:"ném",catch:"bắt",measure:"đo lường",transition:"chuyển tiếp",increment:"tăng",decrement:"giảm",default:"mặc định",go:"đi đến",pushUrl:"pushUrl",replaceUrl:"thayThếUrl",copy:"sao chép",pick:"chọn",beep:"beep",js:"js",async:"bất đồng bộ",render:"hiển thị",swap:"hoán đổi",morph:"biến đổi",settle:"ổn định",append:"nối",exit:"thoát",focus:"tập trung",blur:"mất tập trung",init:"khởi tạo",behavior:"hành vi",install:"cài đặt",clone:"sao chép",prepend:"thêm đầu",else:"không thì"},modifiers:{into:"vào",before:"trước",after:"sau",then:"rồi",end:"kết thúc",from:"từ",to:"đến",with:"với",as:"như",by:"bởi",on:"trên",in:"trong",at:"tại",of:"của",the:"",times:"lần"},events:{click:"nhấp",dblclick:"nhấp đúp",input:"nhập",change:"thay đổi",submit:"gửi",keydown:"phím xuống",keyup:"phím lên",keypress:"nhấn phím",mouseover:"chuột vào",mouseout:"chuột ra",mouseenter:"chuột vào",mouseleave:"chuột rời",focus:"tập trung",blur:"mất tập trung",load:"tải",scroll:"cuộn",resize:"đổi kích thước"},logical:{when:"khi",where:"ở_đâu",and:"và",or:"hoặc",not:"không",is:"là",equals:"bằng",contains:"chứa",matches:"khớp",exists:"tồn tại",has:"có",have:"có",empty:"trống",true:"đúng",false:"sai",null:"rỗng"},temporal:{now:"bây giờ",today:"hôm nay",tomorrow:"ngày mai",yesterday:"hôm qua",always:"luôn luôn",never:"không bao giờ",sometimes:"đôi khi",once:"một lần",twice:"hai lần",forever:"mãi mãi"},values:{true:"đúng",false:"sai",null:"rỗng",undefined:"không xác định",none:"không có",all:"tất cả",any:"bất kỳ",some:"một số",each:"mỗi",every:"tất cả"},attributes:{id:"id",class:"lớp",style:"kiểu",value:"giá trị",text:"văn bản",html:"html",src:"nguồn",href:"liên kết",disabled:"vô hiệu",hidden:"ẩn",checked:"được chọn",selected:"được chọn"},expressions:{me:"tôi",my:"của tôi",it:"nó",its:"của nó",result:"kết quả",event:"sự kiện",target:"mục tiêu",first:"đầu tiên",last:"cuối cùng",next:"tiếp theo",previous:"trước đó",parent:"cha",children:"con",closest:"gần nhất"}};Bo(hl,"vi",{allowEnglishFallback:!0});var fl={commands:{on:"gdy",tell:"powiedz",trigger:"wywołaj",send:"wyślij",take:"weź",put:"umieść",set:"ustaw",get:"pobierz",add:"dodaj",remove:"usuń",toggle:"przełącz",hide:"ukryj",show:"pokaż",if:"jeśli",unless:"chyba",repeat:"powtórz",for:"dla",while:"dopóki",until:"aż",continue:"kontynuuj",break:"przerwij",halt:"zatrzymaj",wait:"czekaj",fetch:"pobierz",call:"wywołaj",return:"zwróć",make:"utwórz",log:"loguj",throw:"rzuć",catch:"złap",measure:"zmierz",transition:"animuj",increment:"zwiększ",decrement:"zmniejsz",default:"domyślnie",go:"idź",pushUrl:"dodajUrl",replaceUrl:"zamieńUrl",copy:"kopiuj",pick:"wybierz",beep:"sygnał",js:"js",async:"async",render:"renderuj",swap:"zamień",morph:"przekształć",settle:"ustabilizuj",append:"dołącz",exit:"wyjdź",install:"zainstaluj"},modifiers:{to:"do",from:"z",into:"do",with:"z",at:"przy",in:"w",of:"z",as:"jako",by:"przez",before:"przed",after:"po",over:"nad",under:"pod",between:"między",through:"przez",without:"bez"},events:{click:"kliknięcie",dblclick:"podwójnekliknięcie",mousedown:"myszdół",mouseup:"myszgóra",mouseenter:"myszwejście",mouseleave:"myszwyjście",mouseover:"mysznad",mouseout:"myszpoza",mousemove:"myszruch",keydown:"klawiszdół",keyup:"klawiszgóra",keypress:"klawisznaciśnięcie",focus:"fokus",blur:"rozmycie",change:"zmiana",input:"wejście",submit:"wyślij",reset:"resetuj",load:"załaduj",unload:"wyładuj",resize:"zmieńrozmiar",scroll:"przewiń",touchstart:"dotykstart",touchend:"dotykkoniec",touchmove:"dotykruch",touchcancel:"dotykanuluj"},logical:{when:"kiedy",where:"gdzie",and:"i",or:"lub",not:"nie",is:"jest",exists:"istnieje",matches:"pasuje",contains:"zawiera",includes:"obejmuje",equals:"równa się",has:"ma",have:"mam",then:"wtedy",else:"inaczej",otherwise:"wpp",end:"koniec"},temporal:{seconds:"sekundy",second:"sekunda",milliseconds:"milisekundy",millisecond:"milisekunda",minutes:"minuty",minute:"minuta",hours:"godziny",hour:"godzina",ms:"ms",s:"s",min:"min",h:"godz"},values:{true:"prawda",false:"fałsz",null:"null",undefined:"niezdefiniowane",it:"to",its:"jego",me:"ja",my:"mój",you:"ty",your:"twój",yourself:"ty sam",myself:"ja sam",element:"element",target:"cel",detail:"szczegół",event:"zdarzenie",window:"okno",document:"dokument",body:"body",result:"wynik",value:"wartość"},attributes:{class:"klasa",classes:"klasy",style:"styl",styles:"style",attribute:"atrybut",attributes:"atrybuty",property:"właściwość",properties:"właściwości"},expressions:{first:"pierwszy",last:"ostatni",next:"następny",previous:"poprzedni",prev:"poprz",at:"przy",random:"losowy",closest:"najbliższy",parent:"rodzic",children:"dzieci",within:"wewnątrz",no:"brak",empty:"pusty",some:"jakiś","starts with":"zaczyna się od","ends with":"kończy się na"}};Bo(fl,"pl",{allowEnglishFallback:!0});var yl={commands:{on:"при",tell:"сказать",trigger:"вызвать",send:"отправить",take:"взять",put:"положить",set:"установить",get:"получить",add:"добавить",remove:"удалить",toggle:"переключить",hide:"скрыть",show:"показать",if:"если",unless:"если_не",repeat:"повторить",for:"для",while:"пока",until:"до",continue:"продолжить",break:"прервать",halt:"остановить",wait:"ждать",fetch:"загрузить",call:"вызвать",return:"вернуть",make:"создать",log:"записать",throw:"бросить",catch:"поймать",measure:"измерить",transition:"анимировать",increment:"увеличить",decrement:"уменьшить",default:"по_умолчанию",go:"перейти",pushUrl:"добавить_url",replaceUrl:"заменить_url",copy:"копировать",pick:"выбрать",beep:"звук",js:"js",async:"асинхронно",render:"отобразить",swap:"поменять",morph:"трансформировать",settle:"стабилизировать",append:"добавить_в_конец",exit:"выйти",else:"иначе",install:"установить",init:"инициализировать",behavior:"поведение",focus:"сфокусировать",blur:"размыть",clone:"клонировать",prepend:"добавить_в_начало"},modifiers:{to:"к",from:"из",into:"в",with:"с",at:"у",in:"в",of:"из",as:"как",by:"на",before:"до",after:"после",over:"над",under:"под",between:"между",through:"через",without:"без",on:"на"},events:{click:"клик",dblclick:"двойной_клик",mousedown:"мышь_вниз",mouseup:"мышь_вверх",mouseenter:"мышь_вход",mouseleave:"мышь_выход",mouseover:"наведение",mouseout:"уход",mousemove:"движение_мыши",keydown:"клавиша_вниз",keyup:"клавиша_вверх",keypress:"нажатие_клавиши",focus:"фокус",blur:"потеря_фокуса",change:"изменение",input:"ввод",submit:"отправка",reset:"сброс",load:"загрузка",unload:"выгрузка",resize:"изменение_размера",scroll:"прокрутка",touchstart:"касание_начало",touchend:"касание_конец",touchmove:"касание_движение",touchcancel:"касание_отмена"},logical:{when:"когда",where:"где",and:"и",or:"или",not:"не",is:"есть",exists:"существует",matches:"соответствует",contains:"содержит",includes:"включает",equals:"равно",then:"затем",else:"иначе",otherwise:"в_противном_случае",end:"конец",has:"имеет",have:"имею",isNot:"не_есть",empty:"пустой"},temporal:{seconds:"секунд",second:"секунда",milliseconds:"миллисекунд",millisecond:"миллисекунда",minutes:"минут",minute:"минута",hours:"часов",hour:"час",ms:"мс",s:"с",min:"мин",h:"ч",forever:"всегда",once:"однажды",every:"каждый",until:"до"},values:{true:"истина",false:"ложь",null:"ничего",undefined:"неопределено",it:"это",its:"его",me:"я",my:"мой",you:"ты",your:"твой",yourself:"сам",myself:"я_сам",element:"элемент",target:"цель",detail:"детали",event:"событие",window:"окно",document:"документ",body:"тело",result:"результат",value:"значение",first:"первый",last:"последний",next:"следующий",previous:"предыдущий",closest:"ближайший",parent:"родитель"},attributes:{class:"класс",classes:"классы",style:"стиль",styles:"стили",attribute:"атрибут",attributes:"атрибуты",property:"свойство",properties:"свойства",disabled:"отключено",hidden:"скрыто",checked:"отмечено",selected:"выбрано",readonly:"только_чтение",required:"обязательно",text:"текст",html:"html"},expressions:{first:"первый",last:"последний",next:"следующий",previous:"предыдущий",prev:"пред",at:"в",random:"случайный",closest:"ближайший",parent:"родитель",children:"дети",within:"внутри",no:"нет",empty:"пустой",some:"некоторые","starts with":"начинается_с","ends with":"заканчивается_на"}};Bo(yl,"ru",{allowEnglishFallback:!0});var gl={commands:{on:"при",tell:"сказати",trigger:"викликати",send:"надіслати",take:"взяти",put:"покласти",set:"встановити",get:"отримати",add:"додати",remove:"видалити",toggle:"перемкнути",hide:"сховати",show:"показати",if:"якщо",unless:"якщо_не",repeat:"повторити",for:"для",while:"поки",until:"до",continue:"продовжити",break:"перервати",halt:"зупинити",wait:"чекати",fetch:"завантажити",call:"викликати",return:"повернути",make:"створити",log:"записати",throw:"кинути",catch:"зловити",measure:"виміряти",transition:"анімувати",increment:"збільшити",decrement:"зменшити",default:"за_замовчуванням",go:"перейти",pushUrl:"додати_url",replaceUrl:"замінити_url",copy:"копіювати",pick:"вибрати",beep:"звук",js:"js",async:"асинхронно",render:"відобразити",swap:"поміняти",morph:"трансформувати",settle:"стабілізувати",append:"додати_в_кінець",exit:"вийти",else:"інакше",install:"встановити",init:"ініціалізувати",behavior:"поведінка",focus:"сфокусувати",blur:"розфокусувати",clone:"клонувати",prepend:"додати_на_початок"},modifiers:{to:"до",from:"з",into:"в",with:"з",at:"в",in:"у",of:"з",as:"як",by:"на",before:"до",after:"після",over:"над",under:"під",between:"між",through:"через",without:"без",on:"на"},events:{click:"клік",dblclick:"подвійний_клік",mousedown:"миша_вниз",mouseup:"миша_вгору",mouseenter:"миша_вхід",mouseleave:"миша_вихід",mouseover:"наведення",mouseout:"відведення",mousemove:"рух_миші",keydown:"клавіша_вниз",keyup:"клавіша_вгору",keypress:"натискання_клавіші",focus:"фокус",blur:"розфокус",change:"зміна",input:"введення",submit:"надсилання",reset:"скидання",load:"завантаження",unload:"вивантаження",resize:"зміна_розміру",scroll:"прокрутка",touchstart:"дотик_початок",touchend:"дотик_кінець",touchmove:"дотик_рух",touchcancel:"дотик_скасування"},logical:{when:"коли",where:"де",and:"і",or:"або",not:"не",is:"є",exists:"існує",matches:"відповідає",contains:"містить",includes:"включає",equals:"дорівнює",then:"тоді",else:"інакше",otherwise:"в_іншому_випадку",end:"кінець",has:"має",have:"маю",isNot:"не_є",empty:"порожній"},temporal:{seconds:"секунд",second:"секунда",milliseconds:"мілісекунд",millisecond:"мілісекунда",minutes:"хвилин",minute:"хвилина",hours:"годин",hour:"година",ms:"мс",s:"с",min:"хв",h:"год",forever:"завжди",once:"один_раз",every:"кожний",until:"до"},values:{true:"істина",false:"хибність",null:"нічого",undefined:"невизначено",it:"це",its:"його",me:"я",my:"мій",you:"ти",your:"твій",yourself:"сам",myself:"я_сам",element:"елемент",target:"ціль",detail:"деталі",event:"подія",window:"вікно",document:"документ",body:"тіло",result:"результат",value:"значення",first:"перший",last:"останній",next:"наступний",previous:"попередній",closest:"найближчий",parent:"батьківський"},attributes:{class:"клас",classes:"класи",style:"стиль",styles:"стилі",attribute:"атрибут",attributes:"атрибути",property:"властивість",properties:"властивості",disabled:"вимкнено",hidden:"приховано",checked:"позначено",selected:"вибрано",readonly:"лише_читання",required:"обов'язково",text:"текст",html:"html"},expressions:{first:"перший",last:"останній",next:"наступний",previous:"попередній",prev:"попер",at:"в",random:"випадковий",closest:"найближчий",parent:"батьківський",children:"діти",within:"всередині",no:"ні",empty:"порожній",some:"деякі","starts with":"починається_з","ends with":"закінчується_на"}};Bo(gl,"uk",{allowEnglishFallback:!0});var vl={commands:{on:"पर",tell:"बताएं",trigger:"ट्रिगर",send:"भेजें",take:"लें",put:"रखें",set:"सेट",get:"प्राप्त",add:"जोड़ें",remove:"हटाएं",toggle:"टॉगल",hide:"छिपाएं",show:"दिखाएं",if:"अगर",unless:"जब_तक_नहीं",repeat:"दोहराएं",for:"के_लिए",while:"जब_तक",until:"तक",continue:"जारी",break:"रोकें",halt:"रोकें",wait:"प्रतीक्षा",fetch:"लाएं",call:"कॉल",return:"लौटाएं",make:"बनाएं",log:"लॉग",throw:"फेंकें",catch:"पकड़ें",measure:"मापें",transition:"संक्रमण",increment:"बढ़ाएं",decrement:"घटाएं",default:"डिफ़ॉल्ट",go:"जाएं",pushUrl:"url_जोड़ें",replaceUrl:"url_बदलें",copy:"कॉपी",pick:"चुनें",beep:"बीप",js:"जेएस",async:"असिंक",render:"रेंडर",swap:"बदलें",morph:"रूपांतर",settle:"स्थिर",append:"जोड़ें_अंत",exit:"बाहर",else:"वरना",install:"इंस्टॉल",init:"प्रारंभ",behavior:"व्यवहार",focus:"फोकस",blur:"धुंधला",clone:"कॉपी",prepend:"जोड़ें_शुरू"},modifiers:{to:"को",from:"से",into:"में",with:"के_साथ",at:"पर",in:"में",of:"का",as:"के_रूप_में",by:"द्वारा",before:"से_पहले",after:"के_बाद",over:"के_ऊपर",under:"के_नीचे",between:"के_बीच",through:"के_माध्यम_से",without:"के_बिना",on:"पर"},events:{click:"क्लिक",dblclick:"डबल_क्लिक",mousedown:"माउस_नीचे",mouseup:"माउस_ऊपर",mouseenter:"माउस_प्रवेश",mouseleave:"माउस_बाहर",mouseover:"माउस_ओवर",mouseout:"माउस_आउट",mousemove:"माउस_मूव",keydown:"की_नीचे",keyup:"की_ऊपर",keypress:"की_प्रेस",focus:"फोकस",blur:"धुंधला",change:"परिवर्तन",input:"इनपुट",submit:"जमा",reset:"रीसेट",load:"लोड",unload:"अनलोड",resize:"आकार_बदलें",scroll:"स्क्रॉल",touchstart:"टच_शुरू",touchend:"टच_समाप्त",touchmove:"टच_मूव",touchcancel:"टच_रद्द"},logical:{when:"जब",where:"कहाँ",and:"और",or:"या",not:"नहीं",is:"है",exists:"मौजूद",matches:"मेल_खाता",contains:"शामिल",includes:"में_है",equals:"बराबर",then:"फिर",else:"वरना",otherwise:"अन्यथा",end:"समाप्त",has:"है",have:"है",isNot:"नहीं_है",empty:"खाली"},temporal:{seconds:"सेकंड",second:"सेकंड",milliseconds:"मिलीसेकंड",millisecond:"मिलीसेकंड",minutes:"मिनट",minute:"मिनट",hours:"घंटे",hour:"घंटा",ms:"मिसे",s:"से",min:"मि",h:"घं",forever:"हमेशा",once:"एक_बार",every:"हर",until:"तक"},values:{true:"सच",false:"झूठ",null:"खाली",undefined:"अपरिभाषित",it:"यह",its:"इसका",me:"मैं",my:"मेरा",you:"आप",your:"आपका",yourself:"स्वयं",myself:"मैं_स्वयं",element:"तत्व",target:"लक्ष्य",detail:"विवरण",event:"घटना",window:"विंडो",document:"दस्तावेज़",body:"बॉडी",result:"परिणाम",value:"मान",first:"पहला",last:"अंतिम",next:"अगला",previous:"पिछला",closest:"निकटतम",parent:"मूल"},attributes:{class:"क्लास",classes:"क्लासेस",style:"स्टाइल",styles:"स्टाइल्स",attribute:"गुण",attributes:"गुण",property:"संपत्ति",properties:"संपत्तियाँ",disabled:"अक्षम",hidden:"छिपा",checked:"चेक",selected:"चयनित",readonly:"केवल_पढ़ने",required:"आवश्यक",text:"पाठ",html:"html"},expressions:{first:"पहला",last:"अंतिम",next:"अगला",previous:"पिछला",prev:"पिछ",at:"पर",random:"यादृच्छिक",closest:"निकटतम",parent:"मूल",children:"बच्चे",within:"के_अंदर",no:"नहीं",empty:"खाली",some:"कुछ","starts with":"से_शुरू","ends with":"पर_समाप्त"}};Bo(vl,"hi",{allowEnglishFallback:!0});var bl={commands:{on:"তে",toggle:"টগল",add:"যোগ",remove:"সরান",set:"সেট",get:"পান",put:"রাখুন",take:"নিন",show:"দেখান",hide:"লুকান",increment:"বৃদ্ধি",decrement:"হ্রাস",if:"যদি",else:"নতুবা",repeat:"পুনরাবৃত্তি",for:"জন্য",while:"যতক্ষণ",wait:"অপেক্ষা",fetch:"আনুন",call:"কল",return:"ফিরুন",log:"লগ",trigger:"ট্রিগার",send:"পাঠান",go:"যান",halt:"থামুন",throw:"নিক্ষেপ",continue:"চালিয়ে যান",make:"তৈরি করুন",append:"শেষে যোগ",prepend:"শুরুতে যোগ",focus:"ফোকাস",blur:"ঝাপসা",transition:"সংক্রমণ",settle:"স্থির",measure:"মাপুন",async:"অ্যাসিঙ্ক",tell:"বলুন",default:"ডিফল্ট",init:"শুরু",behavior:"আচরণ",install:"ইনস্টল",clone:"কপি",swap:"বদল",morph:"রূপান্তর"},modifiers:{to:"কে",from:"থেকে",into:"তে",on:"তে",with:"সাথে",by:"দ্বারা",as:"হিসাবে",before:"আগে",after:"পরে",at:"এ",in:"এ",over:"উপর",then:"তারপর",and:"এবং",end:"শেষ",until:"পর্যন্ত",of:"র"},events:{click:"ক্লিক",change:"পরিবর্তন",input:"ইনপুট",submit:"জমা",load:"লোড",focus:"ফোকাস",blur:"ঝাপসা",keydown:"কি-ডাউন",keyup:"কি-আপ",mouseover:"মাউস-ওভার",mouseout:"মাউস-আউট",scroll:"স্ক্রোল",resize:"রিসাইজ",every:"প্রতি"},logical:{if:"যদি",when:"যখন",where:"কোথায়",else:"নতুবা",not:"না",and:"এবং",or:"অথবা",is:"হয়",exists:"আছে",has:"আছে",have:"আছি",empty:"খালি",true:"সত্য",false:"মিথ্যা",null:"শূন্য",undefined:"অনির্ধারিত"},temporal:{now:"এখন",seconds:"সেকেন্ড",milliseconds:"মিলিসেকেন্ড",minutes:"মিনিট",hours:"ঘণ্টা",forever:"চিরকাল",times:"বার",s:"সে",ms:"মিসে"},values:{me:"আমি",my:"আমার",it:"এটি",its:"এর",result:"ফলাফল",event:"ঘটনা",target:"লক্ষ্য",body:"বডি"},attributes:{class:"শ্রেণি",id:"আইডি",style:"শৈলী",value:"মান",text:"পাঠ্য",html:"এইচটিএমএল",disabled:"অক্ষম",checked:"চেক করা"},expressions:{first:"প্রথম",last:"শেষ",next:"পরবর্তী",previous:"আগের",closest:"নিকটতম",parent:"মূল",children:"সন্তান",random:"এলোমেলো",length:"দৈর্ঘ্য",index:"সূচক"}};Bo(bl,"bn",{allowEnglishFallback:!0});var wl={commands:{on:"เมื่อ",toggle:"สลับ",add:"เพิ่ม",remove:"ลบ",set:"ตั้ง",get:"รับค่า",put:"ใส่",take:"รับ",show:"แสดง",hide:"ซ่อน",increment:"เพิ่มค่า",decrement:"ลดค่า",if:"ถ้า",else:"ไม่งั้น",repeat:"ทำซ้ำ",for:"สำหรับ",while:"ในขณะที่",wait:"รอ",fetch:"ดึงข้อมูล",call:"เรียก",return:"คืนค่า",log:"บันทึก",trigger:"ทริกเกอร์",send:"ส่ง",go:"ไป",halt:"หยุด",throw:"โยน",continue:"ต่อไป",make:"สร้าง",append:"เพิ่มท้าย",prepend:"เพิ่มหน้า",focus:"โฟกัส",blur:"เบลอ",transition:"เปลี่ยน",settle:"คงที่",measure:"วัด",async:"อะซิงค์",tell:"บอก",default:"ค่าเริ่มต้น",init:"เริ่มต้น",behavior:"พฤติกรรม",install:"ติดตั้ง",clone:"คัดลอก",swap:"สลับที่",morph:"แปลงร่าง"},modifiers:{to:"ไปยัง",from:"จาก",into:"ใน",on:"เมื่อ",with:"ด้วย",by:"โดย",as:"เป็น",before:"ก่อน",after:"หลัง",at:"ที่",in:"ใน",over:"เหนือ",then:"แล้ว",and:"และ",end:"จบ",until:"จนถึง",of:"ของ"},events:{click:"คลิก",change:"เปลี่ยนแปลง",input:"อินพุต",submit:"ส่ง",load:"โหลด",focus:"โฟกัส",blur:"เบลอ",keydown:"กดคีย์",keyup:"ปล่อยคีย์",mouseover:"เมาส์เข้า",mouseout:"เมาส์ออก",scroll:"เลื่อน",resize:"ปรับขนาด",every:"ทุก"},logical:{if:"ถ้า",when:"เมื่อ",where:"ที่ไหน",else:"ไม่งั้น",not:"ไม่",and:"และ",or:"หรือ",is:"เป็น",exists:"มีอยู่",has:"มี",have:"มี",empty:"ว่าง",true:"จริง",false:"เท็จ",null:"ว่าง",undefined:"ไม่กำหนด"},temporal:{now:"ตอนนี้",seconds:"วินาที",milliseconds:"มิลลิวินาที",minutes:"นาที",hours:"ชั่วโมง",forever:"ตลอดไป",times:"ครั้ง",s:"วิ",ms:"มว"},values:{me:"ฉัน",my:"ของฉัน",it:"มัน",its:"ของมัน",result:"ผลลัพธ์",event:"เหตุการณ์",target:"เป้าหมาย",body:"บอดี้"},attributes:{class:"คลาส",id:"ไอดี",style:"สไตล์",value:"ค่า",text:"ข้อความ",html:"เอชทีเอ็มแอล",disabled:"ปิดใช้งาน",checked:"เลือกแล้ว"},expressions:{first:"แรก",last:"สุดท้าย",next:"ถัดไป",previous:"ก่อนหน้า",closest:"ใกล้สุด",parent:"ต้นทาง",children:"ลูก",random:"สุ่ม",length:"ความยาว",index:"ดัชนี"}};Bo(wl,"th",{allowEnglishFallback:!0});var kl={commands:{on:"apabila",tell:"beritahu",trigger:"cetuskan",send:"hantar",take:"ambil",put:"letak",set:"tetapkan",get:"dapatkan",add:"tambah",remove:"buang",toggle:"togol",hide:"sembunyi",show:"tunjuk",if:"jika",unless:"kecuali",repeat:"ulang",for:"untuk",while:"selagi",until:"sehingga",continue:"teruskan",break:"henti",halt:"henti",wait:"tunggu",fetch:"ambil_dari",call:"panggil",return:"pulang",make:"buat",log:"catat",throw:"lempar",catch:"tangkap",measure:"ukur",transition:"peralihan",increment:"tambah_satu",decrement:"kurang_satu",default:"lalai",go:"pergi",pushUrl:"tolak_url",replaceUrl:"ganti_url",copy:"salin",pick:"pilih",beep:"bunyi",js:"js",async:"tak_segerak",render:"papar",swap:"tukar_tempat",morph:"ubah_bentuk",settle:"selesai",append:"tambah_hujung",prepend:"tambah_mula",exit:"keluar",else:"kalau_tidak",focus:"fokus",blur:"kabur",install:"pasang",behavior:"kelakuan",init:"mula",clone:"klon"},modifiers:{to:"ke",from:"dari",into:"ke_dalam",with:"dengan",at:"di",in:"dalam",of:"daripada",as:"sebagai",by:"oleh",before:"sebelum",after:"selepas",over:"atas",under:"bawah",between:"antara",through:"melalui",without:"tanpa",on:"pada",then:"kemudian",and:"dan",end:"tamat",until:"sehingga"},events:{click:"click",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"keydown",keyup:"keyup",keypress:"keypress",focus:"focus",blur:"blur",change:"change",input:"input",submit:"submit",reset:"reset",load:"load",unload:"unload",resize:"resize",scroll:"scroll",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel",every:"setiap"},logical:{when:"apabila",where:"di_mana",and:"dan",or:"atau",not:"bukan",is:"adalah",exists:"wujud",matches:"sepadan",contains:"mengandungi",includes:"termasuk",equals:"sama",has:"ada",have:"ada",then:"kemudian",else:"kalau_tidak",otherwise:"jika_tidak",end:"tamat",if:"jika",empty:"kosong",true:"benar",false:"salah",null:"null",undefined:"tidak_ditakrifkan"},temporal:{seconds:"saat",second:"saat",milliseconds:"milisaat",millisecond:"milisaat",minutes:"minit",minute:"minit",hours:"jam",hour:"jam",ms:"ms",s:"s",min:"min",h:"j",now:"sekarang",forever:"selamanya",times:"kali"},values:{true:"benar",false:"salah",null:"null",undefined:"tidak_ditakrifkan",it:"ia",its:"nya",me:"saya",my:"saya_punya",myself:"diri_saya",you:"kamu",your:"kamu_punya",yourself:"diri_kamu",element:"elemen",target:"sasaran",detail:"perincian",event:"peristiwa",window:"tetingkap",document:"dokumen",body:"badan",result:"hasil",value:"nilai"},attributes:{class:"kelas",classes:"kelas_kelas",style:"gaya",styles:"gaya_gaya",attribute:"atribut",attributes:"atribut_atribut",property:"sifat",properties:"sifat_sifat",id:"id",value:"nilai",text:"teks",html:"html",disabled:"dilumpuhkan",checked:"ditanda"},expressions:{first:"pertama",last:"terakhir",next:"seterusnya",previous:"sebelumnya",prev:"sebelum",at:"di",random:"rawak",closest:"terdekat",parent:"induk",children:"anak_anak",within:"dalam",no:"tiada",empty:"kosong",some:"beberapa","starts with":"bermula_dengan","ends with":"berakhir_dengan",length:"panjang",index:"indeks"}};Bo(kl,"ms",{allowEnglishFallback:!0});var El={commands:{on:"kapag",tell:"sabihin",trigger:"palitawin",send:"ipadala",take:"kunin",put:"ilagay",set:"itakda",get:"kuhanin",add:"idagdag",remove:"alisin",toggle:"palitan",hide:"itago",show:"ipakita",if:"kung",unless:"maliban_kung",repeat:"ulitin",for:"para_sa",while:"habang",until:"hanggang",continue:"magpatuloy",break:"itigil",halt:"huminto",wait:"maghintay",fetch:"kuhanin_mula",call:"tawagin",return:"ibalik",make:"gumawa",log:"itala",throw:"ihagis",catch:"hulihin",measure:"sukatin",transition:"baguhin",increment:"dagdagan",decrement:"bawasan",default:"pamantayan",go:"pumunta",pushUrl:"itulak_url",replaceUrl:"palitan_url",copy:"kopyahin",pick:"pumili",beep:"tunog",js:"js",async:"sabay",render:"ipakita",swap:"palitan_pwesto",morph:"baguhin_hugis",settle:"ayusin",append:"idagdag_sa_dulo",prepend:"idagdag_sa_simula",exit:"lumabas",else:"kung_hindi",focus:"ituon",blur:"alisin_tuon",install:"ikabit",behavior:"ugali",init:"simulan",clone:"kopyahin"},modifiers:{to:"sa",from:"mula_sa",into:"papasok_sa",with:"kasama",at:"sa",in:"sa_loob",of:"ng",as:"bilang",by:"sa_pamamagitan_ng",before:"bago",after:"pagkatapos",over:"sa_ibabaw",under:"sa_ilalim",between:"sa_pagitan",through:"sa_pamamagitan",without:"walang",on:"sa",then:"pagkatapos",and:"at",end:"wakas",until:"hanggang"},events:{click:"click",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"keydown",keyup:"keyup",keypress:"keypress",focus:"focus",blur:"blur",change:"change",input:"input",submit:"submit",reset:"reset",load:"load",unload:"unload",resize:"resize",scroll:"scroll",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel",every:"bawat"},logical:{when:"kapag",where:"kung_saan",and:"at",or:"o",not:"hindi",is:"ay",exists:"may",matches:"tumutugma",contains:"naglalaman",includes:"kasama",equals:"katumbas",has:"may",have:"may",then:"pagkatapos",else:"kung_hindi",otherwise:"kung_hindi_man",end:"wakas",if:"kung",empty:"walang_laman",true:"totoo",false:"mali",null:"wala",undefined:"hindi_tinukoy"},temporal:{seconds:"segundo",second:"segundo",milliseconds:"milisegundo",millisecond:"milisegundo",minutes:"minuto",minute:"minuto",hours:"oras",hour:"oras",ms:"ms",s:"s",min:"min",h:"h",now:"ngayon",forever:"magpakailanman",times:"beses"},values:{true:"totoo",false:"mali",null:"wala",undefined:"hindi_tinukoy",it:"ito",its:"nito",me:"ako",my:"aking",myself:"sarili_ko",you:"ikaw",your:"iyong",yourself:"sarili_mo",element:"elemento",target:"target",detail:"detalye",event:"pangyayari",window:"bintana",document:"dokumento",body:"katawan",result:"resulta",value:"halaga"},attributes:{class:"klase",classes:"mga_klase",style:"estilo",styles:"mga_estilo",attribute:"katangian",attributes:"mga_katangian",property:"ari_arian",properties:"mga_ari_arian",id:"id",value:"halaga",text:"teksto",html:"html",disabled:"hindi_pinagana",checked:"naka_tsek"},expressions:{first:"una",last:"huli",next:"susunod",previous:"nakaraan",prev:"nakaraan",at:"sa",random:"random",closest:"pinakamalapit",parent:"magulang",children:"mga_anak",within:"sa_loob_ng",no:"walang",empty:"walang_laman",some:"ilan","starts with":"nagsisimula_sa","ends with":"nagtatapos_sa",length:"haba",index:"indeks"}};Bo(El,"tl",{allowEnglishFallback:!0});var xl=class e{static register(t,r){e.providers.set(t.toLowerCase(),r)}static unregister(t){e.providers.delete(t.toLowerCase())}static setDefault(t){const r=t.toLowerCase();if("en"!==r&&!e.providers.has(r))throw Error(`Locale '${t}' is not registered. Available locales: ${e.getAvailable().join(", ")}`);e.defaultLocale=r}static getDefault(){return e.defaultLocale}static get(t){const r=(t||e.defaultLocale).toLowerCase();if("en"===r)return e.englishProvider;const n=e.providers.get(r);if(!n)throw Error(`Locale '${r}' is not registered. Available locales: ${e.getAvailable().join(", ")}`);return n}static has(t){const r=t.toLowerCase();return"en"===r||e.providers.has(r)}static getAvailable(){return["en",...Array.from(e.providers.keys())]}static reset(){e.providers.clear(),e.defaultLocale="en"}static registerAll(t){for(const[r,n]of Object.entries(t))e.register(r,n)}};xl.providers=new Map,xl.defaultLocale="en",xl.englishProvider=Fo();var Cl=xl;function Al(e){if(0===e.length)return"";let t="";for(let r=0;e.length>r;r++){const n=e[r],s=e[r+1],i=n.endsWith("-"),a=n.startsWith("-");let o=n;if(i&&(o=n.slice(0,-1)),a&&(o=n.substring(1)),t+=o,s){const e=s.startsWith("-");i||e||(t+=" ")}}return t}var Sl={en:{code:"en",name:"English",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","source","destination","quantity","duration","method","style"],markers:[{form:"on",role:"event",position:"preposition",required:!0},{form:"to",role:"destination",position:"preposition",required:!1},{form:"into",role:"destination",position:"preposition",required:!1},{form:"from",role:"source",position:"preposition",required:!1},{form:"with",role:"style",position:"preposition",required:!1},{form:"by",role:"quantity",position:"preposition",required:!1},{form:"as",role:"method",position:"preposition",required:!1},{form:"over",role:"duration",position:"preposition",required:!1},{form:"for",role:"duration",position:"preposition",required:!1}]},ja:{code:"ja",name:"日本語",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"を",role:"patient",position:"postposition",required:!0},{form:"に",role:"destination",position:"postposition",required:!0},{form:"から",role:"source",position:"postposition",required:!0},{form:"で",role:"event",position:"postposition",required:!0},{form:"で",role:"style",position:"postposition",required:!1},{form:"と",role:"style",position:"postposition",required:!1},{form:"へ",role:"destination",position:"postposition",required:!1}],rules:[{name:"event-handler",description:"Transform event handlers to Japanese SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"],optionalRoles:["patient"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}},{name:"put-into",description:"Transform put X into Y to Japanese order",priority:90,match:{commands:["put","置く"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}}]},ko:{code:"ko",name:"한국어",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"를",role:"patient",position:"postposition",required:!0,alternatives:["을"]},{form:"에",role:"destination",position:"postposition",required:!0},{form:"에서",role:"source",position:"postposition",required:!0},{form:"로",role:"style",position:"postposition",required:!1,alternatives:["으로"]},{form:"와",role:"style",position:"postposition",required:!1,alternatives:["과"]},{form:"로",role:"method",position:"postposition",required:!1,alternatives:["으로"]}],rules:[{name:"event-handler",description:"Transform event handlers to Korean SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}}]},zh:{code:"zh",name:"中文",wordOrder:"SVO",adpositionType:"preposition",morphology:"isolating",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"当",role:"event",position:"preposition",required:!0},{form:"时",role:"event",position:"postposition",required:!0},{form:"把",role:"patient",position:"preposition",required:!1},{form:"到",role:"destination",position:"preposition",required:!1},{form:"从",role:"source",position:"preposition",required:!1},{form:"用",role:"style",position:"preposition",required:!1},{form:"的",role:"method",position:"postposition",required:!1}],rules:[{name:"event-handler-standard",description:"Standard event handler: 当 X 时 Y",priority:100,match:{requiredRoles:["event","action"]},transform:{roleOrder:["event","action","patient"],insertMarkers:!0,custom:(e,t)=>{const r=e.roles.get("event"),n=e.roles.get("action"),s=e.roles.get("patient"),i=["当",r?.translated||r?.value,"时"];return i.push(n?.translated||n?.value||""),s&&i.push(s.translated||s.value),i.filter(Boolean).join(" ")}}},{name:"ba-construction",description:"BA construction for object-fronting: 把 X Y",priority:80,match:{commands:["put","set","move"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","action","destination"],insertMarkers:!0}}]},ar:{code:"ar",name:"العربية",wordOrder:"VSO",adpositionType:"preposition",morphology:"fusional",direction:"rtl",canonicalOrder:["action","agent","patient","destination","source"],markers:[{form:"عند",role:"event",position:"preposition",required:!0},{form:"إلى",role:"destination",position:"preposition",required:!1},{form:"في",role:"destination",position:"preposition",required:!1},{form:"من",role:"source",position:"preposition",required:!1},{form:"بـ-",role:"style",position:"preposition",required:!1},{form:"مع",role:"style",position:"preposition",required:!1},{form:"كـ-",role:"method",position:"preposition",required:!1}],rules:[{name:"event-handler-vso",description:"VSO event handler: VERB TARGET عند EVENT",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["action","patient","event"],insertMarkers:!0}}]},tr:{code:"tr",name:"Türkçe",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"i",role:"patient",position:"postposition",required:!0,alternatives:["ı","u","ü"]},{form:"e",role:"destination",position:"postposition",required:!0,alternatives:["a"]},{form:"den",role:"source",position:"postposition",required:!0,alternatives:["dan"]},{form:"de",role:"event",position:"postposition",required:!0,alternatives:["da"]},{form:"ile",role:"style",position:"postposition",required:!1},{form:"olarak",role:"method",position:"postposition",required:!1}],rules:[{name:"event-handler-sov",description:"SOV event handler",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}}]},es:{code:"es",name:"Español",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"en",role:"event",position:"preposition",required:!0},{form:"a",role:"destination",position:"preposition",required:!1},{form:"hacia",role:"destination",position:"preposition",required:!1},{form:"de",role:"source",position:"preposition",required:!1},{form:"con",role:"style",position:"preposition",required:!1},{form:"por",role:"quantity",position:"preposition",required:!1},{form:"como",role:"method",position:"preposition",required:!1}]},de:{code:"de",name:"Deutsch",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"bei",role:"event",position:"preposition",required:!0},{form:"zu",role:"destination",position:"preposition",required:!1},{form:"in",role:"destination",position:"preposition",required:!1},{form:"von",role:"source",position:"preposition",required:!1},{form:"aus",role:"source",position:"preposition",required:!1},{form:"mit",role:"style",position:"preposition",required:!1},{form:"um",role:"quantity",position:"preposition",required:!1},{form:"als",role:"method",position:"preposition",required:!1}]},fr:{code:"fr",name:"Français",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"sur",role:"event",position:"preposition",required:!0},{form:"à",role:"destination",position:"preposition",required:!1},{form:"dans",role:"destination",position:"preposition",required:!1},{form:"de",role:"source",position:"preposition",required:!1},{form:"avec",role:"style",position:"preposition",required:!1},{form:"par",role:"quantity",position:"preposition",required:!1},{form:"comme",role:"method",position:"preposition",required:!1}]},pt:{code:"pt",name:"Português",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"em",role:"event",position:"preposition",required:!0},{form:"para",role:"destination",position:"preposition",required:!1},{form:"em",role:"destination",position:"preposition",required:!1},{form:"de",role:"source",position:"preposition",required:!1},{form:"com",role:"style",position:"preposition",required:!1},{form:"por",role:"quantity",position:"preposition",required:!1},{form:"como",role:"method",position:"preposition",required:!1}]},id:{code:"id",name:"Bahasa Indonesia",wordOrder:"SVO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"pada",role:"event",position:"preposition",required:!0},{form:"ke",role:"destination",position:"preposition",required:!1},{form:"dari",role:"source",position:"preposition",required:!1},{form:"dengan",role:"style",position:"preposition",required:!1},{form:"sebagai",role:"method",position:"preposition",required:!1}]},qu:{code:"qu",name:"Runasimi",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","source","destination","event","action"],markers:[{form:"ta",role:"patient",position:"postposition",required:!0},{form:"man",role:"destination",position:"postposition",required:!0},{form:"manta",role:"source",position:"postposition",required:!0},{form:"pi",role:"event",position:"postposition",required:!0},{form:"wan",role:"style",position:"postposition",required:!1},{form:"hina",role:"method",position:"postposition",required:!1}]},sw:{code:"sw",name:"Kiswahili",wordOrder:"SVO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"kwenye",role:"event",position:"preposition",required:!0},{form:"kwa",role:"destination",position:"preposition",required:!1},{form:"kutoka",role:"source",position:"preposition",required:!1},{form:"na",role:"style",position:"preposition",required:!1},{form:"kama",role:"method",position:"preposition",required:!1}]},bn:{code:"bn",name:"বাংলা",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"কে",role:"patient",position:"postposition",required:!0},{form:"তে",role:"destination",position:"postposition",required:!0},{form:"এ",role:"event",position:"postposition",required:!0},{form:"থেকে",role:"source",position:"postposition",required:!0},{form:"দিয়ে",role:"style",position:"postposition",required:!1},{form:"জন্য",role:"duration",position:"postposition",required:!1}],rules:[{name:"event-handler",description:"Transform event handlers to Bengali SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"],optionalRoles:["patient"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}}]},it:{code:"it",name:"Italiano",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"su",role:"event",position:"preposition",required:!0},{form:"in",role:"destination",position:"preposition",required:!1},{form:"a",role:"destination",position:"preposition",required:!1},{form:"da",role:"source",position:"preposition",required:!1},{form:"di",role:"source",position:"preposition",required:!1},{form:"con",role:"style",position:"preposition",required:!1},{form:"come",role:"method",position:"preposition",required:!1}]},ru:{code:"ru",name:"Русский",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"при",role:"event",position:"preposition",required:!0},{form:"в",role:"destination",position:"preposition",required:!1},{form:"на",role:"destination",position:"preposition",required:!1},{form:"к",role:"destination",position:"preposition",required:!1},{form:"из",role:"source",position:"preposition",required:!1},{form:"от",role:"source",position:"preposition",required:!1},{form:"с",role:"source",position:"preposition",required:!1},{form:"с",role:"style",position:"preposition",required:!1},{form:"со",role:"style",position:"preposition",required:!1},{form:"как",role:"method",position:"preposition",required:!1}]},uk:{code:"uk",name:"Українська",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"при",role:"event",position:"preposition",required:!0},{form:"в",role:"destination",position:"preposition",required:!1},{form:"на",role:"destination",position:"preposition",required:!1},{form:"до",role:"destination",position:"preposition",required:!1},{form:"з",role:"source",position:"preposition",required:!1},{form:"від",role:"source",position:"preposition",required:!1},{form:"із",role:"source",position:"preposition",required:!1},{form:"з",role:"style",position:"preposition",required:!1},{form:"із",role:"style",position:"preposition",required:!1},{form:"як",role:"method",position:"preposition",required:!1}]},vi:{code:"vi",name:"Tiếng Việt",wordOrder:"SVO",adpositionType:"preposition",morphology:"isolating",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"khi",role:"event",position:"preposition",required:!0},{form:"vào",role:"destination",position:"preposition",required:!1},{form:"cho",role:"destination",position:"preposition",required:!1},{form:"đến",role:"destination",position:"preposition",required:!1},{form:"từ",role:"source",position:"preposition",required:!1},{form:"khỏi",role:"source",position:"preposition",required:!1},{form:"với",role:"style",position:"preposition",required:!1},{form:"như",role:"method",position:"preposition",required:!1}]},hi:{code:"hi",name:"हिन्दी",wordOrder:"SOV",adpositionType:"postposition",morphology:"fusional",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"को",role:"patient",position:"postposition",required:!0},{form:"में",role:"destination",position:"postposition",required:!0},{form:"पर",role:"destination",position:"postposition",required:!1},{form:"पर",role:"event",position:"postposition",required:!0},{form:"से",role:"source",position:"postposition",required:!0},{form:"से",role:"style",position:"postposition",required:!1},{form:"साथ",role:"style",position:"postposition",required:!1},{form:"के रूप में",role:"method",position:"postposition",required:!1}],rules:[{name:"event-handler",description:"Transform event handlers to Hindi SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"],optionalRoles:["patient"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}}]},tl:{code:"tl",name:"Tagalog",wordOrder:"VSO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["action","agent","patient","destination","source"],markers:[{form:"kapag",role:"event",position:"preposition",required:!0},{form:"sa",role:"destination",position:"preposition",required:!1},{form:"mula sa",role:"source",position:"preposition",required:!1},{form:"nang",role:"style",position:"preposition",required:!1},{form:"bilang",role:"method",position:"preposition",required:!1}],rules:[{name:"event-handler-vso",description:"VSO event handler: VERB TARGET kapag EVENT",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["action","patient","event"],insertMarkers:!0}}]},th:{code:"th",name:"ไทย",wordOrder:"SVO",adpositionType:"preposition",morphology:"isolating",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"เมื่อ",role:"event",position:"preposition",required:!0},{form:"ใน",role:"destination",position:"preposition",required:!1},{form:"ไปยัง",role:"destination",position:"preposition",required:!1},{form:"จาก",role:"source",position:"preposition",required:!1},{form:"ด้วย",role:"style",position:"preposition",required:!1},{form:"เป็น",role:"method",position:"preposition",required:!1}]},pl:{code:"pl",name:"Polski",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"gdy",role:"event",position:"preposition",required:!0},{form:"przy",role:"event",position:"preposition",required:!1},{form:"do",role:"destination",position:"preposition",required:!1},{form:"w",role:"destination",position:"preposition",required:!1},{form:"na",role:"destination",position:"preposition",required:!1},{form:"z",role:"source",position:"preposition",required:!1},{form:"od",role:"source",position:"preposition",required:!1},{form:"ze",role:"source",position:"preposition",required:!1},{form:"z",role:"style",position:"preposition",required:!1},{form:"ze",role:"style",position:"preposition",required:!1},{form:"jako",role:"method",position:"preposition",required:!1}]}};function Tl(e){return Sl[e]}function Ol(e){const t={};for(const[r,n]of Object.entries(e.words))t[n]=r;const r={};if(e.categories)for(const[t,n]of Object.entries(e.categories)){r[t]={};for(const[e,s]of Object.entries(n))r[t][s]=e}const n={source:e.target,target:e.source,words:t};return Object.keys(r).length>0&&(n.categories=r),n}function Ll(e,t,r,n){const s={},i={};for(const r of["commands","modifiers","events","logical","temporal","values","attributes"]){const n=e[r],a=t[r];if(n&&a){i[r]={};for(const[e,t]of Object.entries(n)){const n=a[e];n&&t!==n&&(s[t]=n,i[r][t]=n)}}}return{source:r,target:n,words:s,categories:i}}var Pl=Ll(Uo,tl,"ja","zh"),Nl=Ol(Pl),Il=Ll(Qo,Uo,"ko","ja"),Rl=Ol(Il),jl={source:"es",target:"pt",words:{en:"em",decir:"dizer",disparar:"disparar",enviar:"enviar",tomar:"pegar",poner:"colocar",establecer:"definir",obtener:"obter",agregar:"adicionar",quitar:"remover",alternar:"alternar",ocultar:"esconder",mostrar:"mostrar",si:"se",menos:"a menos",repetir:"repetir",para:"para",mientras:"enquanto",hasta:"até",continuar:"continuar",romper:"parar",detener:"parar",esperar:"esperar",buscar:"buscar",llamar:"chamar",retornar:"retornar",hacer:"fazer",registrar:"registrar",lanzar:"lançar",atrapar:"capturar",medir:"medir","transición":"transição",incrementar:"incrementar",decrementar:"decrementar",predeterminar:"padrão",ir:"ir",copiar:"copiar",escoger:"escolher",intercambiar:"trocar",transformar:"transformar","añadir":"anexar",salir:"sair",a:"para",de:"de",dentro:"em",con:"com",como:"como",por:"por",clic:"clique",cambio:"mudança",entrada:"entrada","envío":"envio",carga:"carregar",enfoque:"foco",desenfoque:"desfoque",verdadero:"verdadeiro",falso:"falso",y:"e",o:"ou",no:"não",es:"é",segundos:"segundos",milisegundos:"milissegundos",nulo:"nulo",indefinido:"indefinido","vacío":"vazio"},categories:{commands:{en:"em",decir:"dizer",tomar:"pegar",poner:"colocar",establecer:"definir",obtener:"obter",agregar:"adicionar",quitar:"remover",ocultar:"esconder",si:"se",mientras:"enquanto",hasta:"até",romper:"parar",detener:"parar",llamar:"chamar",hacer:"fazer",lanzar:"lançar",atrapar:"capturar",escoger:"escolher",intercambiar:"trocar","añadir":"anexar",salir:"sair"},events:{clic:"clique",cambio:"mudança",carga:"carregar",enfoque:"foco",desenfoque:"desfoque"},logical:{verdadero:"verdadeiro",y:"e",o:"ou",no:"não",es:"é"}}},_l=Ol(jl),ql=new Map([["ja->zh",Pl],["zh->ja",Nl],["ko->ja",Il],["ja->ko",Rl],["es->pt",jl],["pt->es",_l]]),Ml={en:{commands:{on:"on",tell:"tell",trigger:"trigger",send:"send",take:"take",put:"put",set:"set",get:"get",add:"add",remove:"remove",toggle:"toggle",hide:"hide",show:"show",if:"if",unless:"unless",repeat:"repeat",for:"for",while:"while",until:"until",continue:"continue",break:"break",halt:"halt",wait:"wait",fetch:"fetch",call:"call",return:"return",make:"make",log:"log",throw:"throw",catch:"catch",measure:"measure",transition:"transition",increment:"increment",decrement:"decrement",default:"default",go:"go",pushUrl:"pushUrl",replaceUrl:"replaceUrl",copy:"copy",pick:"pick",beep:"beep",js:"js",async:"async",render:"render",swap:"swap",morph:"morph",settle:"settle",append:"append",exit:"exit",install:"install"},modifiers:{to:"to",from:"from",into:"into",with:"with",at:"at",in:"in",of:"of",as:"as",by:"by",before:"before",after:"after",over:"over",under:"under",between:"between",through:"through",without:"without"},events:{click:"click",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"keydown",keyup:"keyup",keypress:"keypress",focus:"focus",blur:"blur",change:"change",input:"input",submit:"submit",reset:"reset",load:"load",unload:"unload",resize:"resize",scroll:"scroll",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"when",where:"where",and:"and",or:"or",not:"not",is:"is",exists:"exists",matches:"matches",contains:"contains",includes:"includes",equals:"equals",has:"has",have:"have",then:"then",else:"else",otherwise:"otherwise",end:"end"},temporal:{seconds:"seconds",second:"second",milliseconds:"milliseconds",millisecond:"millisecond",minutes:"minutes",minute:"minute",hours:"hours",hour:"hour",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"true",false:"false",null:"null",undefined:"undefined",it:"it",its:"its",me:"me",my:"my",myself:"myself",you:"you",your:"your",yourself:"yourself",element:"element",target:"target",detail:"detail",event:"event",window:"window",document:"document",body:"body",result:"result",value:"value"},attributes:{class:"class",classes:"classes",style:"style",styles:"styles",attribute:"attribute",attributes:"attributes",property:"property",properties:"properties"},expressions:{first:"first",last:"last",next:"next",previous:"previous",prev:"prev",at:"at",random:"random",closest:"closest",parent:"parent",children:"children",within:"within",no:"no",empty:"empty",some:"some","starts with":"starts with","ends with":"ends with"}},es:zo,ko:Qo,zh:tl,fr:Jo,de:Yo,ja:Uo,ar:Xo,tr:nl,id:il,qu:ol,sw:cl,pt:dl,it:pl,vi:hl,pl:fl,ru:yl,uk:gl,hi:vl,bn:bl,th:wl,ms:kl,tl:El},$l=["commands","modifiers","events","logical","temporal","values","attributes","expressions"];function Vl(e){const t=e.filter(e=>!e.isBlank&&e.originalIndent.length>0);if(0===t.length)return e.map(()=>"");const r=t.map(e=>e.originalIndent.replace(/\t/g," ").length),n=Math.min(...r),s=n>0?n:4;return e.map(e=>{if(e.isBlank)return"";if(0===e.originalIndent.length)return"";const t=e.originalIndent.replace(/\t/g," ");return" ".repeat(Math.round(t.length/s))})}var Dl=new Set(["to","into","from","with","by","as","at","in","on","of","over"]);function Bl(e,t){const r=function(e){const t=new Set(Ro),r=Ml[e];return r?.commands&&Object.values(r.commands).forEach(e=>{"string"==typeof e&&t.add(e.toLowerCase())}),t}(t),n=e.split(/\s+/);if(0===n.length)return[e];const s=[];let i=[];const a=n[0]?.toLowerCase();let o=!zl.has(a);for(let e=0;n.length>e;e++){const t=n[e],a=t.toLowerCase();if(r.has(a)&&i.length>0){const e=i[i.length-1].toLowerCase();if(!o){o=!0,i.push(t);continue}if(!Dl.has(e)&&!r.has(e)){s.push(i.join(" ")),i=[t];continue}}i.push(t)}return i.length>0&&s.push(i.join(" ")),s.filter(e=>e.length>0)}function Fl(e,t){const r=Array.from(Do),n="en"===t?null:Ml[t];n?.modifiers?.then&&r.push(n.modifiers.then),n?.logical?.then&&r.push((n?.logical).then);const s=r.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),i=RegExp(`\\s+(${s.join("|")})\\s+`,"gi");return e.split(i).filter(e=>{const t=e.toLowerCase().trim();return t&&!r.some(e=>e.toLowerCase()===t)}).map(e=>e.trim()).filter(e=>e.length>0)}var zl=function(){const e=new Set;e.add("on");for(const t of Object.values(Sl))for(const r of t.markers)if("event"===r.role){const t=r.form.replace(/^-|-$/g,"").toLowerCase();t&&e.add(t),r.alternatives?.forEach(t=>{const r=t.replace(/^-|-$/g,"").toLowerCase();r&&e.add(r)})}return e}();function Hl(e){const t={};e.markers.forEach(e=>{const r=e.form.replace(/^-|-$/g,"").toLowerCase();r&&(t[r]=e.role),e.alternatives?.forEach(r=>{const n=r.replace(/^-|-$/g,"").toLowerCase();n&&(t[n]=e.role)})});for(const[e,r]of Object.entries(No))e in t||(t[e]=r);return t}var Ul={zh:["时","的","地","得"],ja:[],ko:[]},Wl={zh:["当"],ar:["بـ","كـ","و"]};function Jl(e,t,r){if(/^[#.<@]/.test(e))return e;if(/^\d+/.test(e))return e;const n="en"===t?null:Ml[t],s=Ml[r];if(!s)return e;let i=e;if(n){const t=function(e,t){const r=t.toLowerCase();for(const t of $l){const n=e[t];for(const[e,s]of Object.entries(n))if(s.toLowerCase()===r)return{category:t,englishKey:e}}}(n,e);t&&(i=t.englishKey)}const a=function(e,t){const r=t.toLowerCase();for(const t of $l){const n=e[t][r];if(n)return n}}(s,i);return a??e}var Kl={en:{type:"suffix",marker:"'s"},es:{type:"preposition",marker:"de"},pt:{type:"preposition",marker:"de"},fr:{type:"preposition",marker:"de"},de:{type:"preposition",marker:"von"},ja:{type:"suffix",marker:"の"},ko:{type:"suffix",marker:"의"},zh:{type:"suffix",marker:"的"},ar:{type:"preposition",marker:"لـ"},tr:{type:"suffix",marker:"'ın"},id:{type:"preposition",marker:"dari"},qu:{type:"suffix",marker:"-pa"},sw:{type:"preposition",marker:"ya"}};function Yl(e,t,r){const n=e.match(/^(.+)'s$/i);if(!n)return e;const s=n[1],i=Kl[r]||Kl.en,a={me:"my",it:"its",you:"your"},o=s.toLowerCase();if(a[o])return Jl(a[o],"en",r);const l=Jl(s,t,r);switch(i.type){case"suffix":return`${l}${i.marker}`;case"preposition":return`__POSS__${i.marker}__${l}__POSS__`;default:return l+"'s"}}var Gl=/^(my|its|your|me|it|you)(\??\..+)$/i,Xl={me:"my",it:"its",you:"your",my:"my",its:"its",your:"your"};function Zl(e,t,r){const n=e.match(Gl);if(!n)return null;const s=n[1].toLowerCase(),i=n[2],a=Xl[s]||s,o=Jl(a,t,r);if(o.includes(" "))return null;if(o!==a)return o+i;if(s!==a){const e=Jl(s,t,r);if(e!==s&&!e.includes(" "))return e+i}return null}function Ql(e,t,r){if(!e.includes(" ")){if(e.includes("'s"))return Yl(e,t,r);const n=Zl(e,t,r);return null!==n?n:Jl(e,t,r)}const n=e.split(/\s+/),s=[];let i=0;for(;n.length>i;){const e=n[i];if(e.includes("'s")){const a=Yl(e,t,r),o=a.match(/^__POSS__(.+)__(.+)__POSS__$/);if(o&&n.length>i+1){const e=o[1],a=o[2],l=Jl(n[i+1],t,r);s.push(`${l} ${e} ${a}`),i+=2;continue}if(o){s.push(`${o[1]} ${o[2]}`),i++;continue}s.push(a),i++;continue}if(/^[#.<@]/.test(e)||/^\d+/.test(e)){s.push(e),i++;continue}if(/^["'].*["']$/.test(e)){s.push(e),i++;continue}const a=Zl(e,t,r);null===a?(s.push(Jl(e,t,r)),i++):(s.push(a),i++)}return s.join(" ")}var ec=class{constructor(e="en",t){const r=Tl(e),n=Tl(t);if(!r)throw Error("Unknown source locale: "+e);if(!n)throw Error("Unknown target locale: "+t);this.sourceProfile=r,this.targetProfile=n}transform(e){const t=function(e){if("en"===e)return"then";const t=Ml[e];return t&&(t.modifiers?.then||t.logical?.then)||"then"}(this.targetProfile.code);if(e.includes("\n")){const{parts:r,lineMetadata:n,partToLineIndex:s}=function(e,t){const r=e.split("\n"),n=[],s=[],i=[];for(let e=0;r.length>e;e++){const a=r[e],o=a.match(/^(\s*)/),l=o?o[1]:"",c=a.trim();if(n.push({content:c,originalIndent:l,isBlank:0===c.length}),c.length>0){const r=Fl(c,t);for(const n of r){const r=Bl(n,t);for(const t of r)s.push(t),i.push(e)}}}return{parts:s,lineMetadata:n,partToLineIndex:i}}(e,this.sourceProfile.code);return function(e,t,r,n){if(1>=t.filter(e=>!e.isBlank).length&&1>=e.length){const r=Vl(t),n=[];for(let s=0;t.length>s;s++)t[s].isBlank?n.push(""):e.length>0&&n.push(r[s]+e[0]);return n.join("\n")}const s=Vl(t),i=new Map;for(let t=0;e.length>t;t++){const n=r[t];i.has(n)||i.set(n,[]),i.get(n).push(e[t])}const a=[];for(let e=0;t.length>e;e++){const r=s[e];if(t[e].isBlank)a.push("");else{const t=i.get(e)||[];if(t.length>0){const e=t.join(` ${n} `);a.push(r+e)}}}return a.join("\n")}(r.map(e=>this.transformSingle(e)),n,s,t)}const r=function(e,t){const r=e.split(/\n/).map(e=>e.trim()).filter(e=>e.length>0),n=[];for(const e of r){const r=Fl(e,t);for(const e of r){const r=Bl(e,t);n.push(...r)}}return n}(e,this.sourceProfile.code);return r.length>1?r.map(e=>this.transformSingle(e)).join(` ${t} `):this.transformSingle(e)}transformSingle(e){const t=function(e,t="en"){const r=Tl(t);if(!r)return null;const n=function(e,t){const r=[];let n="",s=!1,i=0;for(let t=0;e.length>t;t++){const a=e[t];"<"===a?(s=!0,i++):">"===a&&s&&(i--,0===i&&(s=!1)),/\s/.test(a)&&!s?n&&(r.push(n),n=""):n+=a}return n&&r.push(n),function(e,t){const r=Ul[t]||[],n=Wl[t]||[];if(0===r.length&&0===n.length)return e;const s=[];for(const t of e){if(/^[#.<@]/.test(t)||/^\d+/.test(t)){s.push(t);continue}let e=t,i="",a="";for(const t of n)if(e.startsWith(t)&&e.length>t.length){i=t,e=e.slice(t.length);break}for(const t of r)if(e.endsWith(t)&&e.length>t.length){a=t,e=e.slice(0,-t.length);break}i&&s.push(i),e&&s.push(e),a&&s.push(a)}return s}(r,t.code)}(e,r),s=function(e,t){if(0===e.length)return"unknown";const r=e[0].toLowerCase(),n=t.markers.find(e=>"event"===e.role&&"preposition"===e.position);return n&&r===n.form.toLowerCase()||zl.has(r)?"event-handler":Vo.has(r)?"conditional":"command"}(n,r);switch(s){case"event-handler":return function(e,t){const r=new Map;let n=zl.has(e[0]?.toLowerCase())?1:0;if(e[n]&&(r.set("event",{role:"event",value:e[n]}),n++),e[n]&&"from"===e[n].toLowerCase()&&e[n+1]){n++;const t=[];for(;e[n]&&!Ro.has(e[n].toLowerCase());)t.push(e[n]),n++;if(t.length>0){const e=t.join(" ");r.set("source",{role:"source",value:e,isSelector:/^[#.<@]/.test(e)})}}if(e[n]&&(r.set("action",{role:"action",value:e[n]}),n++),e[n]){const s=Hl(t);let i="patient",a=[];for(let t=n;e.length>t;t++){const n=e[t],o=s[n.toLowerCase()];if(o){if(a.length>0){const e=a.join(" ");r.set(i,{role:i,value:e,isSelector:/^[#.<@]/.test(e)})}i=o,a=[]}else a.push(n)}if(a.length>0){const e=a.join(" ");r.set(i,{role:i,value:e,isSelector:/^[#.<@]/.test(e)})}}return{type:"event-handler",roles:r,original:e.join(" ")}}(n,r);case"command":return function(e,t){const r=new Map;if(0===e.length)return{type:"command",roles:r,original:""};r.set("action",{role:"action",value:e[0]});const n=Hl(t);let s="patient",i=[];for(let t=1;e.length>t;t++){const a=e[t],o=n[a.toLowerCase()];if(o){if(i.length>0){const e=i.join(" ");r.set(s,{role:s,value:e,isSelector:/^[#.<@]/.test(e)})}s=o,i=[]}else i.push(a)}if(i.length>0){const e=i.join(" ");r.set(s,{role:s,value:e,isSelector:/^[#.<@]/.test(e)})}return{type:"command",roles:r,original:e.join(" ")}}(n,r);case"conditional":return function(e){const t=new Map;t.set("action",{role:"action",value:e[0]});const r=e.findIndex(e=>Do.has(e.toLowerCase()));if(r>1){const n=e.slice(1,r).join(" ");t.set("condition",{role:"condition",value:n})}return{type:"conditional",roles:t,original:e.join(" ")}}(n);default:return null}}(e,this.sourceProfile.code);if(!t)return e;!function(e,t,r){for(const[n,s]of e.roles)s.translated=s.value.includes("'s")?Ql(s.value,t,r):s.isSelector||s.isLiteral?s.value:Ql(s.value,t,r)}(t,this.sourceProfile.code,this.targetProfile.code);const r=this.findRule(t);if(r?.transform.custom)return r.transform.custom(t,this.targetProfile);const n=function(e,t){const r=[],n=new Set;for(const s of t){const t=e.get(s);t&&(r.push(t),n.add(s))}for(const[t,s]of e)n.has(t)||r.push(s);return r}(t.roles,r?.transform.roleOrder||this.targetProfile.canonicalOrder);return Al(r?.transform.insertMarkers??1?function(e,t,r){const n=[];for(const s of e){const e=t.find(e=>e.role===s.role);e?"preposition"===r?(e.form&&n.push(e.form),n.push(s.translated||s.value)):"postposition"===r?(n.push(s.translated||s.value),e.form&&n.push(e.form)):n.push(s.translated||s.value):n.push(s.translated||s.value)}return n}(n,this.targetProfile.markers,this.targetProfile.adpositionType):n.map(e=>e.translated||e.value))}findRule(e){if(this.targetProfile.rules)return this.targetProfile.rules.filter(t=>this.matchesRule(e,t)).sort((e,t)=>t.priority-e.priority)[0]}matchesRule(e,t){const{match:r}=t;for(const t of r.requiredRoles)if(!e.roles.has(t))return!1;if(r.commands&&r.commands.length>0){const t=e.roles.get("action");if(!t)return!1;const n=t.value.toLowerCase();if(!r.commands.some(e=>e.toLowerCase()===n))return!1}return!(r.predicate&&!r.predicate(e))}};function tc(e,t){return new ec("en",t).transform(e)}function rc(e,t){return new ec(t,"en").transform(e)}Cl.register("en",Fo()),Cl.register("es",Ho),Cl.register("ja",Wo),Cl.register("fr",Ko),Cl.register("de",Go),Cl.register("ar",Zo),Cl.register("ko",el),Cl.register("zh",rl),Cl.register("tr",sl),Cl.register("id",al),Cl.register("pt",ml),Cl.register("qu",ll),Cl.register("sw",ul);let nc="en";const sc=new class extends er{constructor(e){super();for(const t of e)this.registerCategory(t)}}([Ur,$n,Qs,_s,ts,xs]),ic=function(e,t={}){const r=new si;for(const t of e)r.register(t);return new Lo({...t,registry:r})}([Qi(),ra(),Ea(),xa(),ji(),qi(),La(),Ka(),Ya(),Xa(),eo(),ro(),no(),so(),ao(),Eo(),qa(),Po(),$a(),Va(),fo(),Ra(),_a(),za(),Ha(),co(),uo(),mo(),So(),Da(),vo(),oo(),wo(),ko(),xo(),po(),ho(),Ua(),Ao(),lo(),Oo(),go()],{expressionEvaluator:sc});function ac(e){const t=function(){if("en"!==nc)return Cl.get(nc)}();return function(e,t){const r=function(e){const t={input:"",position:0,line:1,column:1,tokens:[]};t.input=e;const r=e.length;for(;r>t.position&&(U(t),r>t.position);){const r=e[t.position];if("-"!==r||"-"!==z(t,1))if('"'!==r){if("'"===r||"'"===r){const e=z(t,1),r=t.tokens[t.tokens.length-1];if("s"!==e||!r||r.kind!==M.IDENTIFIER&&r.kind!==M.SELECTOR&&"]"!==r.value&&")"!==r.value&&"}"!==r.value)Y(t);else{const e=t.position;H(t),H(t),W(t,$.OPERATOR,"'s",e)}continue}if("`"!==r)if("<"!==r)if("#"!==r){if("."===r){if("."===z(t,1)){const e=t.position;H(t),H(t),W(t,$.OPERATOR,"..",e);continue}const e=t.tokens[t.tokens.length-1],r=new Set(["from","to","into","on","in","at","first","last","next","previous","closest","random"]),n=e&&e.kind===M.IDENTIFIER&&k.has(e.value.toLowerCase()),s=e&&e.kind===M.IDENTIFIER&&r.has(e.value.toLowerCase());if((!e||e.kind===M.OPERATOR&&")"!==e.value&&"]"!==e.value||n||s||"("===e.value||"["===e.value||"{"===e.value||","===e.value||";"===e.value)&&se(z(t))){X(t);continue}}if("@"!==r)if("{"!==r)if("}"!==r){if("["===r){const e=t.tokens[t.tokens.length-1],r=e&&(e.kind===$.EVENT||e.kind===$.IDENTIFIER&&_.has(e.value))&&t.tokens.length>=2&&"on"===t.tokens[t.tokens.length-2]?.value;(!e||e.kind!==$.IDENTIFIER&&e.kind!==$.CONTEXT_VAR&&")"!==e.value&&"]"!==e.value||r)&&r?(W(t,$.SYMBOL,"["),H(t)):(W(t,$.OPERATOR,"["),H(t));continue}if("]"!==r){if("$"===r){const e=z(t,1);if(e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"===e){ne(t);continue}}oe(r)?ee(t):"0">r||r>"9"?("a">r||r>"z")&&("A">r||r>"Z")&&"_"!==r?(W(t,$.UNKNOWN,r),H(t)):re(t):te(t)}else W(t,$.OPERATOR,"]"),H(t)}else W(t,$.OPERATOR,"}"),H(t);else W(t,$.OPERATOR,"{"),H(t);else Q(t)}else X(t);else ae(t)?Z(t):ee(t);else G(t)}else Y(t);else K(t)}return t.tokens}(e);return new Et(r,t,e).parse()}(e,t?{keywords:t}:void 0)}const oc={parse:e=>ac(e),execute:async(e,t)=>{const r=Nt(t),n=ac(e);if(!n.success||!n.node)throw Error(n.error?.message||"Parse failed");return await ic.execute(n.node,r)}},lc=new class{constructor(e){this.observer=null,this.initialized=!1,this.runtime=e}init(){"undefined"!=typeof document&&(this.initialized||(this.initialized=!0,this.scanDocument(),this.observer=new MutationObserver(e=>{for(const t of e)"childList"===t.type?t.addedNodes.forEach(e=>{e.nodeType===Node.ELEMENT_NODE&&(this.processElement(e),this.scanElement(e))}):"attributes"===t.type&&"_"===t.attributeName&&this.processElement(t.target)}),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["_"]})))}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null),this.initialized=!1}reset(){this.destroy()}scanAndProcessAll(){this.scanDocument()}scanDocument(){document.body&&this.scanElement(document.body)}scanElement(e){e.hasAttribute("_")&&this.processElement(e),e.querySelectorAll("[_]").forEach(e=>this.processElement(e))}processElement(e){const t=e.getAttribute("_");if(!t)return;const r=Pt(e);this.runtime.execute(t,r).catch(r=>{console.error('[HyperFixi] Error executing _="" attribute:',r),console.error("Element:",e),console.error("Code:",t)})}}(oc),cc={getLocale:()=>nc,setLocale(e){if(Cl.has(e)){if(nc=e,Cl.setDefault(e),"undefined"!=typeof document){document.documentElement.setAttribute("lang",e);const t=Tl(e);"rtl"===t?.direction?document.documentElement.setAttribute("dir","rtl"):document.documentElement.setAttribute("dir","ltr")}}else console.warn(`Locale '${e}' not registered. Available: ${Cl.getAvailable().join(", ")}`)},getAvailableLocales:()=>Cl.getAvailable(),detectAndSetLocale(){if("undefined"==typeof navigator)return"en";const e=navigator.languages||[navigator.language];for(const t of e){const e=t.split("-")[0].toLowerCase();if(Cl.has(e))return this.setLocale(e),e}return"en"},registerLocale(e,t){Cl.register(e,t)},toLocale:(e,t)=>tc(e,t||nc),toEnglish:(e,t)=>rc(e,t||nc),translate:function(e,t,r){return t===r?e:"en"===t?tc(e,r):"en"===r?rc(e,t):ql.has(`${t}->${r}`)?function(e,t,r){const n=ql.get(`${t}->${r}`);if(!n)return tc(rc(e,t),r);return e.split(/\s+/).map(e=>{if(e.startsWith("#")||e.startsWith(".")||e.startsWith("@"))return e;if(e.startsWith('"')||e.startsWith("'"))return e;const t=n.words[e];if(t)return t;const r=e.match(/^(.+?)(-.+)$/);if(r){const[,e,t]=r;return(n.words[e]||e)+t}return e}).join(" ")}(e,t,r):tc(rc(e,t),r)},createTransformer:(e,t)=>new ec(e,t),getProfile:Tl,getSupportedGrammarLocales:function(){return Object.keys(Sl)},profiles:Sl,dictionaries:{en:{},es:zo,ja:Uo,fr:Jo,de:Yo,ar:Xo,ko:Qo,zh:tl,tr:nl,id:il,pt:dl,qu:ol,sw:cl},createKeywordProvider:Bo},uc={runtime:oc,parse:e=>ac(e),compile:e=>{const t=performance.now();try{const r=ac(e);return{success:r.success,ast:r.node,errors:r.error?[r.error]:[],tokens:r.tokens||[],compilationTime:performance.now()-t}}catch(e){return{success:!1,ast:void 0,errors:[{message:e instanceof Error?e.message:e+"",line:1,column:1}],tokens:[],compilationTime:performance.now()-t}}},execute:async(e,t)=>{const r=Nt(t);if("string"==typeof e){const t=ac(e);if(!t.success||!t.node)throw Error(t.error?.message||"Parse failed");return await ic.execute(t.node,r)}if(e&&"object"==typeof e)return await ic.execute(e,r);throw Error("execute() requires a code string or compiled AST")},run:async(e,t)=>{const r=Nt(t),n=ac(e);if(!n.success||!n.node)throw Error(n.error?.message||"Parse failed");return await ic.execute(n.node,r)},evaluate:async(e,t)=>uc.run(e,t),processNode:e=>{e===document?lc.scanAndProcessAll():e instanceof HTMLElement&&lc.processElement(e)},process:e=>uc.processNode(e),createContext:Pt,attributeProcessor:lc,version:"1.1.0-classic-i18n",i18n:cc,commands:["add","remove","toggle","put","hide","show","make","if","unless","repeat","break","continue","halt","return","exit","throw","set","get","increment","decrement","default","wait","fetch","trigger","send","transition","measure","settle","take","log","tell","call","copy","pick","beep","js","async","go","install","append","render","pseudo-command"],locales:["en","es","ja","fr","de","ar","ko","zh","tr","id","pt","qu","sw"],eval:async(e,t)=>oc.execute(e,t),init:e=>{!1!==e?.autoDetectLocale&&cc.detectAndSetLocale(),lc.init()}};return"undefined"!=typeof window&&(window.hyperfixi=uc,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{uc.init()}):uc.init()),uc}();
1
+ var hyperfixi=function(){"use strict";const e="then",t="else",r="end",n="and",s="for",i="while",a="until",o="forever",l="times",c="index",u="in",d="to",m="from",p="with",h="of",f="on",y="event",g="behavior",v="global",b="the",w="start",k=new Set(["add","append","async","beep","break","call","continue","copy","decrement","default","exit","fetch","for","get","go","halt","hide","if","increment","install","js","log","make","measure","morph","pick","process","push","put","remove","render","repeat","replace","return","send","set","settle","show","swap","take","tell","throw","toggle","transition","trigger","unless","wait"]),E=new Set(["put","trigger","send","remove","take","toggle","set","show","hide","add","halt","measure","js","tell","swap","morph","push","replace","process"]),x=(new Set(["if","unless","repeat","wait","for","while"]),"at start of"),C="at end of",A=["into","before","after","at",x,C,"at the start of","at the end of"],S=new Set(["if","else","unless","for","while","until","end","and","or","not","in","to","from","into","with","without","as","matches","contains","then","on","when","every","init","def","behavior","the","of","first","last"]),T=e=>k.has(e.toLowerCase()),O=e=>E.has(e.toLowerCase()),L=e=>S.has(e.toLowerCase()),P=e=>N.has(e.toLowerCase()),N=new Set(["hsl","hsla","rgb","rgba","hwb","lab","lch","oklch","oklab","color","color-mix","calc","min","max","clamp","var","url","linear-gradient","radial-gradient","conic-gradient","repeating-linear-gradient","repeating-radial-gradient","repeating-conic-gradient"]),I=new Set(["me","it","you","result","my","its","your"]),R=new Set(["and","or","not","no"]),j=new Set(["==","!=","===","!==","<",">","<=",">=","is","is not","is a","is an","is not a","is not an","contains","has","have","does not contain","include","includes","does not include","match","matches","exists","does not exist","is empty","is not empty","is in","is not in","equals","in","is equal to","is really equal to","is not equal to","is not really equal to","is greater than","is less than","is greater than or equal to","is less than or equal to","really equals"]),_=new Set(["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","mouseenter","mouseleave","focus","blur","change","input","submit","reset","select","load","unload","resize","scroll","keydown","keyup","keypress","touchstart","touchend","touchmove","touchcancel","drag","drop","dragover","dragenter","dragleave","cut","copy","paste","toggle"]),q=new Set(["on","init","behavior","def","if","else","unless","for","while","until","end","and","or","not","in","to","from","into","with","as","then","when","where","after","before","by","at","between","async","no","start","of","the","new","global","local","equal","equals","greater","less","than","really","catch","finally","throw","return"]);var M,$;function V(e){switch(e){case $.KEYWORD:case $.COMMAND:case $.EXPRESSION:case $.CONTEXT_VAR:case $.GLOBAL_VAR:case $.EVENT:case $.IDENTIFIER:return M.IDENTIFIER;case $.STRING:return M.STRING;case $.NUMBER:return M.NUMBER;case $.BOOLEAN:return M.IDENTIFIER;case $.TEMPLATE_LITERAL:return M.TEMPLATE;case $.CSS_SELECTOR:case $.ID_SELECTOR:case $.CLASS_SELECTOR:case $.QUERY_REFERENCE:return M.SELECTOR;case $.OPERATOR:case $.LOGICAL_OPERATOR:case $.COMPARISON_OPERATOR:return M.OPERATOR;case $.TIME_EXPRESSION:return M.TIME;case $.COMMENT:return M.COMMENT;case $.SYMBOL:return M.SYMBOL;default:return M.UNKNOWN}}!function(e){e.IDENTIFIER="identifier",e.STRING="string",e.NUMBER="number",e.SELECTOR="selector",e.OPERATOR="operator",e.TIME="time",e.TEMPLATE="template",e.COMMENT="comment",e.SYMBOL="symbol",e.UNKNOWN="unknown"}(M||(M={})),function(e){e.KEYWORD="keyword",e.COMMAND="command",e.EXPRESSION="expression",e.STRING="string",e.NUMBER="number",e.BOOLEAN="boolean",e.TEMPLATE_LITERAL="template_literal",e.CSS_SELECTOR="css_selector",e.ID_SELECTOR="id_selector",e.CLASS_SELECTOR="class_selector",e.QUERY_REFERENCE="query_reference",e.CONTEXT_VAR="context_var",e.GLOBAL_VAR="global_var",e.EVENT="event",e.OPERATOR="operator",e.LOGICAL_OPERATOR="logical_operator",e.COMPARISON_OPERATOR="comparison_operator",e.TIME_EXPRESSION="time_expression",e.OBJECT_LITERAL="object_literal",e.ARRAY_LITERAL="array_literal",e.SYMBOL="symbol",e.COMMENT="comment",e.IDENTIFIER="identifier",e.UNKNOWN="unknown"}($||($={}));const D=q,B=new Set(["+","-","*","/","mod"]),F=new Set(["ms","s","seconds","minutes","hours","days"]);function z(e,t=1){const r=e.position+t;return e.input.length>r?e.input[r]:""}function H(e){const t=e.input[e.position];return e.position++,"\n"===t?(e.line++,e.column=1):"\r"===t?("\n"===(e.input.length>e.position?e.input[e.position]:"")&&e.position++,e.line++,e.column=1):e.column++,t}function U(e){const t=e.input,r=t.length;for(;r>e.position;){const r=t[e.position];if(" "!==r&&"\t"!==r&&"\r"!==r&&"\n"!==r)break;H(e)}}function W(e,t,r,n,s){const i=n??e.position-r.length,a=e.position;let o=e.column-r.length;if(void 0!==n){o=1;let t=-1;for(let r=0;n>r;r++)"\n"!==e.input[r]&&"\r"!==e.input[r]||(t=r);o=n-t}const l={kind:V(t),value:r,start:i,end:a,line:J(e,i),column:o};e.tokens.push(l)}function J(e,t){let r=1;for(let n=0;t>n&&e.input.length>n;n++){const t=e.input[n];"\n"===t?r++:"\r"===t&&(r++,e.input.length>n+1&&"\n"===e.input[n+1]&&n++)}return r}function K(e){const t=e.position;let r="";for(H(e),H(e);e.input.length>e.position&&"\n"!==e.input[e.position];)r+=H(e);W(e,$.COMMENT,"--"+r,t)}function Y(e){const t=e.position,r=H(e);let n=r;for(;e.input.length>e.position;){const t=H(e);if(n+=t,t===r)break;"\\"===t&&e.input.length>e.position&&(n+=H(e))}W(e,$.STRING,n,t)}function G(e){const t=e.position;H(e);let r="";for(;e.input.length>e.position;){const t=e.input[e.position];if("`"===t){H(e);break}if("\\"===t){if(H(e),e.input.length>e.position){const t=H(e);switch(t){case"n":r+="\n";break;case"t":r+="\t";break;case"r":r+="\r";break;case"\\":r+="\\";break;case"`":r+="`";break;default:r+=t}}}else r+=H(e)}if(e.position>=e.input.length&&!e.input.endsWith("`"))throw Error(`Unterminated template literal at line ${e.line}, column ${e.column-r.length}`);W(e,$.TEMPLATE_LITERAL,r,t)}function X(e){const t=e.position,r=H(e);let n=r;for(;e.input.length>e.position;){const t=e.input[e.position];if(!ie(t)&&"-"!==t&&"_"!==t&&":"!==t)break;n+=H(e)}W(e,"#"===r?$.ID_SELECTOR:$.CLASS_SELECTOR,n,t)}function Z(e){const t=e.position;let r="";for(r+=H(e);e.input.length-1>e.position;){const t=e.input[e.position],n=e.input[e.position+1];if(r+=H(e),"/"===t&&">"===n){r+=H(e);break}}W(e,$.QUERY_REFERENCE,r,t)}function Q(e){const t=e.position;let r=H(e);for(;e.input.length>e.position;){const t=e.input[e.position];if(!ie(t)&&"_"!==t&&"-"!==t)break;r+=H(e)}W(e,$.SYMBOL,r,t)}function ee(e){const t=e.position;let r="";const n=e.input[e.position];if(("'"===n||"'"===n)&&"s"===z(e,1))return r="'s",H(e),H(e),void W(e,$.OPERATOR,r,t);const s=e.input.substring(e.position,e.position+2),i=e.input.substring(e.position,e.position+3);["===","!=="].includes(i)?(r=i,H(e),H(e),H(e)):["==","!=","<=",">=","&&","||","**","~=","|=","^=","$=","*=","?."].includes(s)?(r=s,H(e),H(e)):r=H(e);let a=$.OPERATOR;j.has(r)?a=$.COMPARISON_OPERATOR:["&&","||"].includes(r)?a=$.LOGICAL_OPERATOR:B.has(r)&&(a=$.OPERATOR),W(e,a,r,t)}function te(e){const t=e.position,r=e.input,n=r.length;let s="";for(;n>e.position;){const t=r[e.position];if("0">t||t>"9")break;s+=H(e)}if(n>e.position&&"."===r[e.position]&&(e.position+1>=n||"."!==r[e.position+1]))for(s+=H(e);n>e.position;){const t=r[e.position];if("0">t||t>"9")break;s+=H(e)}if(n>e.position){const t=r[e.position];if("e"===t||"E"===t){const t=n>e.position+1?r[e.position+1]:"",i=n>e.position+2?r[e.position+2]:"";if(t>="0"&&"9">=t||!("+"!==t&&"-"!==t||"0">i||i>"9"))for(s+=H(e),"+"!==r[e.position]&&"-"!==r[e.position]||(s+=H(e));n>e.position;){const t=r[e.position];if("0">t||t>"9")break;s+=H(e)}}}const i=e.position;let a="";for(;n>e.position;){const t=r[e.position];if(("a">t||t>"z")&&("A">t||t>"Z"))break;a+=H(e)}F.has(a)?W(e,$.TIME_EXPRESSION,s+a,t):(e.position=i,W(e,$.NUMBER,s,t))}function re(e){const t=e.position,r=e.input,n=r.length;let s="";for(;n>e.position;){const t=r[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;s+=H(e)}const i=function(e,t,r){const n=t.toLowerCase(),s=e.position;if("'s"===t||"'s"===t)return!1;const i=e.tokens[e.tokens.length-1];if(i&&("identifier"===i.kind||"id_selector"===i.kind||"class_selector"===i.kind||"context_var"===i.kind)){const t=e.input.length>e.position?e.input[e.position]:"";if("'"===t||"'"===t)return!1}U(e);let a="";for(;e.input.length>e.position;){const t=e.input[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;a+=H(e)}if(a){const t=a.toLowerCase(),s=`${n} ${t}`,i=function(e,t,r,n){const s=t.toLowerCase(),i=r.toLowerCase();if("at"===s){const t=e.position;if("the"===i){U(e);let r="";for(;e.input.length>e.position;){const t=e.input[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;r+=H(e)}const s=r.toLowerCase();if("start"===s||"end"===s){U(e);let t="";for(;e.input.length>e.position;){const r=e.input[e.position];if(("a">r||r>"z")&&("A">r||r>"Z")&&("0">r||r>"9")&&"_"!==r&&"-"!==r)break;t+=H(e)}if("of"===t.toLowerCase())return W(e,$.KEYWORD,`at the ${s} of`,n),!0}return e.position=t,!1}if("start"===i||"end"===i){U(e);let r="";for(;e.input.length>e.position;){const t=e.input[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t&&"-"!==t)break;r+=H(e)}return"of"===r.toLowerCase()?(W(e,$.KEYWORD,`at ${i} of`,n),!0):(e.position=t,!1)}}return!1}(e,n,t,r);if(i)return!0;const o=function(e,t,r){const n=e.position;let s=`${t} ${r}`,i=e.position;const a=[t,r];for(;8>a.length&&(U(e),e.input.length>e.position);){let t="";for(;e.input.length>e.position;){const r=e.input[e.position];if(("a">r||r>"z")&&("A">r||r>"Z"))break;t+=H(e)}if(!t)break;a.push(t.toLowerCase());const r=a.join(" ");j.has(r)&&(s=r,i=e.position)}return j.has(s)&&s!==`${t} ${r}`?(e.position=i,s):(e.position=n,null)}(e,n,t);if(o)return W(e,$.COMPARISON_OPERATOR,o,r),!0;if(j.has(s))return W(e,$.COMPARISON_OPERATOR,s,r),!0}return j.has(n)?(e.position=s,W(e,$.COMPARISON_OPERATOR,t,r),!0):(e.position=s,!1)}(e,s,t);if(i)return;const a=function(e){const t=e.toLowerCase();return"include"===t||"includes"===t?$.COMPARISON_OPERATOR:R.has(t)?$.LOGICAL_OPERATOR:B.has(e)||B.has(t)?$.OPERATOR:j.has(t)?$.COMPARISON_OPERATOR:"I"===e||I.has(t)?$.CONTEXT_VAR:k.has(t)?$.COMMAND:_.has(t)?$.EVENT:["true","false","null","undefined"].includes(t)?$.BOOLEAN:D.has(t)?$.KEYWORD:$.IDENTIFIER}(s);W(e,a,s,t)}function ne(e){const t=e.position,r=e.input,n=r.length;H(e);let s="$";for(;n>e.position;){const t=r[e.position];if(("a">t||t>"z")&&("A">t||t>"Z")&&("0">t||t>"9")&&"_"!==t)break;s+=H(e)}W(e,$.GLOBAL_VAR,s,t)}function se(e){return/[a-zA-Z]/.test(e)}function ie(e){return/[a-zA-Z0-9]/.test(e)}function ae(e){let t=e.position+1,r=!1;for(;e.input.length>t;){const n=e.input[t];if("/"===n&&e.input.length>t+1&&">"===e.input[t+1])return r;if(ie(n)||"."===n||"#"===n||"["===n||"]"===n||":"===n||"-"===n||"_"===n||" "===n||"="===n||'"'===n||"'"===n||"("===n||")"===n||"*"===n||"^"===n||"$"===n||"~"===n||"|"===n||">"===n||"+"===n||","===n)r=!0,t++;else{if(" "!==n&&"\t"!==n)return!1;t++}if(t-e.position>50)return!1}return!1}function oe(e){return"+-*/^%=!<>&|(){}[],.;:?''~$".includes(e)}const le=function(){if("undefined"!=typeof localStorage)try{const e=localStorage,t=e.getItem("hyperfixi:debug")||e.getItem("lokascript:debug");if("*"===t||"true"===t)return!0}catch{}return!("undefined"==typeof window||!window.__HYPERFIXI_DEBUG__)||"undefined"!=typeof process&&"true"===process.env?.HYPERFIXI_DEBUG}(),ce=le,ue=le,de=le,me=le,pe=le,he=(...e)=>{ce&&console.log("🔧",...e)},fe=(...e)=>{ue&&console.log("🎯",...e)},ye=(...e)=>{de&&console.log("📝",...e)},ge=(...e)=>{me&&console.log("🔍",...e)},ve=(...e)=>{pe&&console.log("🚀",...e)};let be=!1,we=null;if("undefined"!=typeof window&&"undefined"!=typeof URLSearchParams)try{"semantic"===new URLSearchParams(window.location.search).get("debug")&&(be=!0,we=window,console.log("%c[HyperFixi] Semantic debug auto-enabled via URL param","color: #667eea; font-weight: bold"))}catch{}let ke={totalParses:0,semanticSuccesses:0,semanticFallbacks:0,traditionalParses:0,averageConfidence:0,confidenceHistory:[]};class Ee{constructor(e){this.analyzer=e.analyzer,this.language=e.language,this.confidenceThreshold=e.confidenceThreshold??.5,this.debugEnabled=e.debug??!1}isAvailable(){return this.analyzer.supportsLanguage(this.language)}shouldSkipSemantic(e){const t=e.trim().split(/\s+/)[0]?.toLowerCase();if(Ee.SKIP_SEMANTIC_COMMANDS.has(t))return!0;const r=e.toLowerCase();return!!/\bjs\b/.test(r)||!!/\btell\b/.test(r)}trySemanticParse(e){const t=performance.now();if(this.shouldSkipSemantic(e))return{success:!1,confidence:0,errors:["Command skipped for semantic parsing - using traditional parser"]};if(!this.isAvailable())return{success:!1,confidence:0,errors:[`Semantic parsing not available for language '${this.language}'`]};try{const n=this.analyzer.analyze(e,this.language),s=performance.now()-t;this.debugEnabled&&console.log("[SemanticIntegration] Analysis result:",{input:e,language:this.language,confidence:n.confidence,command:n.command?.name,threshold:this.confidenceThreshold});const i=n.confidence>=this.confidenceThreshold&&!!n.command,a=!i&&n.confidence>0;if(be){const t={};if(n.command?.roles)for(const[e,r]of n.command.roles)t[e]=r.value;const o={input:e.substring(0,100),language:this.language,confidence:n.confidence,threshold:this.confidenceThreshold,semanticSuccess:i,fallbackTriggered:a,command:n.command?.name,roles:Object.keys(t).length>0?t:void 0,errors:n.errors,timestamp:Date.now(),duration:s};!function(e){if(!be)return;const t=e.semanticSuccess?"semantic":e.fallbackTriggered?"fallback":"traditional",r=Math.round(100*e.confidence),n=Math.round(100*e.threshold),s=e.semanticSuccess?"color: #4caf50; font-weight: bold":e.fallbackTriggered?"color: #ff9800; font-weight: bold":"color: #9e9e9e";if(console.groupCollapsed(`%c[Semantic] ${t.toUpperCase()} %c${e.input.substring(0,50)}${e.input.length>50?"...":""}`,s,"color: #888"),console.log(`Confidence: ${r}% (threshold: ${n}%)`),e.command&&console.log("Command: "+e.command),e.roles&&Object.keys(e.roles).length>0&&console.log("Roles:",e.roles),e.duration&&console.log(`Duration: ${e.duration.toFixed(2)}ms`),e.errors?.length&&console.log("Errors:",e.errors),console.groupEnd(),we){const t=new CustomEvent("lokascript:semantic:parse",{detail:e,bubbles:!0});we.dispatchEvent(t)}}(o),r=o,ke.totalParses++,r.semanticSuccess?ke.semanticSuccesses++:r.fallbackTriggered?ke.semanticFallbacks++:ke.traditionalParses++,ke.confidenceHistory.push(r.confidence),ke.confidenceHistory.length>100&&ke.confidenceHistory.shift(),ke.averageConfidence=ke.confidenceHistory.reduce((e,t)=>e+t,0)/ke.confidenceHistory.length}return i?{success:!0,node:this.buildCommandNode(n),confidence:n.confidence,tokensConsumed:n.tokensConsumed}:{success:!1,confidence:n.confidence,tokensConsumed:n.tokensConsumed,errors:n.errors}}catch(e){return{success:!1,confidence:0,errors:[e instanceof Error?e.message:e+""]}}var r}buildCommandNode(e){const{command:t}=e;if(!t)throw Error("Cannot build command node without command data");if("repeat"===t.name)return this.buildRepeatCommandNode(t);if("for"===t.name)return this.buildRepeatCommandNode(t);if("set"===t.name)return this.buildSetCommandNode(t);if("if"===t.name||"unless"===t.name)return this.buildIfCommandNode(t);const r=[],n={};for(const[e,s]of t.roles){const i=this.semanticValueToExpression(s);switch(e){case"patient":case"event":r.push(i);break;case"destination":"put"===t.name?n.into=i:"add"===t.name||"append"===t.name||"prepend"===t.name?n.to=i:n.on=i;break;case"source":"fetch"===t.name?r.push(i):n.from=i;break;case"quantity":n.by=i;break;case"duration":n.over=i;break;case"responseType":n.as=i;break;case"method":n.method=i;break;case"style":n.with=i;break;case"condition":n.when=i;break;default:n[e]=i}}return{type:"command",name:t.name,args:r,modifiers:Object.keys(n).length>0?n:void 0,isBlocking:!1,start:0,end:0,line:1,column:0}}buildRepeatCommandNode(e){const t=[],r={},n=e.roles.get("loopType");n&&t.push({type:"identifier",name:n.value+"",start:0,end:0,line:1,column:0});const s=e.roles.get("patient");"for"==(n?n.value+"":"")&&s&&t.push({type:"identifier",name:"expression"===s.type&&s.raw||s.value+"",start:0,end:0,line:1,column:0});const i=e.roles.get("event");i&&t.push({type:"string",value:i.value+"",start:0,end:0,line:1,column:0});const a=e.roles.get("source");a&&t.push(this.semanticValueToExpression(a));const o=e.roles.get("quantity");o&&t.push(this.semanticValueToExpression(o));const l=e.roles.get("condition");return l&&(r.condition=this.semanticValueToExpression(l)),{type:"command",name:"repeat",args:t,modifiers:Object.keys(r).length>0?r:void 0,isBlocking:!1,start:0,end:0,line:1,column:0}}buildSetCommandNode(e){const t=[],r=e.roles.get("destination");if(r)if("property-path"===r.type){const e=r;t.push({type:"possessiveExpression",object:this.semanticValueToExpression(e.object),property:this.createPropertyNode(e.property),start:0,end:0,line:1,column:0})}else t.push(this.semanticValueToExpression(r));t.push({type:"identifier",name:"to",start:0,end:0,line:1,column:0});const n=e.roles.get("patient");return n&&t.push(this.semanticValueToExpression(n)),{type:"command",name:"set",args:t,isBlocking:!1,start:0,end:0,line:1,column:0}}createPropertyNode(e){return e.startsWith("*")?{type:"cssProperty",name:e.substring(1),start:0,end:0,line:1,column:0}:{type:"identifier",name:e,start:0,end:0,line:1,column:0}}buildIfCommandNode(e){const t=[],r=e.roles.get("condition");return r&&t.push(this.semanticValueToExpression(r)),{type:"command",name:e.name,args:t,isBlocking:!1,start:0,end:0,line:1,column:0}}semanticValueToExpression(e){switch(e.type){case"selector":return{type:"selector",value:e.value,start:0,end:0,line:1,column:0};case"reference":return{type:"identifier",name:e.value,start:0,end:0,line:1,column:0};case"literal":return"string"==typeof e.value&&e.value.includes("${")&&e.value.includes("}")?{type:"templateLiteral",value:e.value,start:0,end:0,line:1,column:0}:{type:"literal",value:e.value,raw:e.raw??e.value,start:0,end:0,line:1,column:0};case"property-path":{const t=e;return{type:"memberExpression",object:this.semanticValueToExpression(t.object),property:{type:"identifier",name:t.property,start:0,end:0,line:1,column:0},computed:!1,start:0,end:0,line:1,column:0}}default:return this.parseExpressionString(e.raw||"")}}parseExpressionString(e){let t=0;const r=()=>{for(;e.length>t&&/\s/.test(e[t]);)t++},n=()=>{r();const n=t;for(;e.length>t&&/[a-zA-Z0-9_$]/.test(e[t]);)t++;return e.slice(n,t)},s=()=>{const n=[];if(t++,r(),")"!==e[t])for(n.push(i()),r();","===e[t];)t++,r(),n.push(i()),r();return")"===e[t]&&t++,n},i=()=>{r();const i=n();if(!i)return{type:"identifier",name:e.trim(),start:0,end:0,line:1,column:0};let a={type:"identifier",name:i,start:0,end:0,line:1,column:0};for(;e.length>t;){r();const i=e[t];if("."===i){t++;const e=n();e&&(a={type:"memberExpression",object:a,property:{type:"identifier",name:e,start:0,end:0,line:1,column:0},computed:!1,start:0,end:0,line:1,column:0})}else{if("("!==i)break;a={type:"callExpression",callee:a,arguments:s(),start:0,end:0,line:1,column:0}}}return a};return i()}getLanguage(){return this.language}getConfidenceThreshold(){return this.confidenceThreshold}}function xe(e){return e.kind===M.IDENTIFIER&&k.has(e.value.toLowerCase())}function Ce(e){return e.kind===M.IDENTIFIER&&q.has(e.value.toLowerCase())}function Ae(e){return e.kind===M.IDENTIFIER&&_.has(e.value.toLowerCase())}function Se(e){return e.kind===M.IDENTIFIER&&I.has(e.value.toLowerCase())}function Te(e){return j.has(e.value.toLowerCase())}function Oe(e){return e.kind===M.IDENTIFIER}function Le(e){return e.kind===M.SELECTOR}function Pe(e){return e.kind===M.SELECTOR&&!e.value.startsWith("<")}function Ne(e){return e.kind===M.STRING||e.kind===M.NUMBER||e.kind===M.TEMPLATE}function Ie(e){return e.kind===M.IDENTIFIER}function Re(e){return e.kind===M.TIME}function je(e){return e.kind===M.SYMBOL}function _e(e){return e.kind===M.COMMENT}function qe(e){if(e.kind!==M.IDENTIFIER)return!1;const t=e.value.toLowerCase();return!(k.has(t)||q.has(t)||_.has(t)||I.has(t))}function Me(e){return e.kind===M.STRING}function $e(e){return e.kind===M.NUMBER}function Ve(e){if(e.kind===M.IDENTIFIER){const t=e.value;return"true"===t||"false"===t||"null"===t||"undefined"===t}return!1}function De(e){return e.kind===M.TEMPLATE}function Be(e){return e.kind===M.SELECTOR&&e.value.startsWith("<")}function Fe(e){return e.kind===M.SELECTOR&&e.value.startsWith("#")}function ze(e){return e.kind===M.SELECTOR&&e.value.startsWith(".")}function He(e){return e.kind===M.SELECTOR&&!e.value.startsWith("#")&&!e.value.startsWith(".")}function Ue(e){if(e.kind!==M.OPERATOR)return!1;const t=e.value.toLowerCase();return!R.has(t)&&!j.has(t)}function We(e){const t=e.value.toLowerCase();return"then"===t||"and"===t||"else"===t||"end"===t||"on"===t}function Je(e,t,r){return{type:"literal",value:e,raw:t,start:r.start,end:r.end,line:r.line,column:r.column}}function Ke(e,t){return{type:"identifier",name:e,start:t.start,end:t.end,line:t.line,column:t.column}}function Ye(e,t,r,n){return{type:"binaryExpression",operator:e,left:t,right:r,start:n.start,end:n.end,line:n.line,column:n.column}}function Ge(e,t){return{type:"block",commands:e,start:t.start,end:t.end,line:t.line,column:t.column}}function Xe(e,t){return{type:"string",value:e,start:t.start,end:t.end,line:t.line,column:t.column}}function Ze(e,t){return{type:"objectLiteral",properties:e,start:t.start,end:t.end,line:t.line,column:t.column}}function Qe(e,t){return{type:"arrayLiteral",elements:e,start:t.start,end:t.end,line:t.line,column:t.column}}Ee.SKIP_SEMANTIC_COMMANDS=new Set(["swap","morph","js","tell"]);const et=[{command:"append",keywords:["to"],syntax:"append <value> [to <target>]"},{command:"make",keywords:["a","an"],syntax:"make (a|an) <type>"},{command:"send",keywords:["to"],syntax:"send <event> to <target>"},{command:"throw",keywords:[],syntax:"throw <error>"}];function tt(e,t){return!!e&&t.some(t=>e.value===t||e.value.toLowerCase()===t)}const rt=[e,n,t,r];function nt(e,t=[]){if(e.isAtEnd())return!0;for(const t of rt)if(e.check(t))return!0;for(const r of t)if(e.check(r))return!0;return!!e.checkIsCommand()}function st(e,t=[]){if(!nt(e,t))return e.parseExpression()}function it(e,t,r){return!!e.check(t)&&(e.advance(),r.push(e.createIdentifier(t)),!0)}function at(e,t,r){for(const n of t)if(e.check(n))return e.advance(),r.push(e.createIdentifier(n)),n;return null}function ot(e,t){return!!e.check(t)&&(e.advance(),!0)}class lt{constructor(e){this.args=[],this.isBlocking=!1,this.name=e}static from(e){const t=new lt(e.value);return t.startPos={start:e.start??0,end:e.end??0,line:e.line??1,column:e.column??1},t}static fromIdentifier(e){const t=new lt(e.name);return void 0!==e.start&&(t.startPos={start:e.start,end:e.end??0,line:e.line??1,column:e.column??1}),t}static named(e){return new lt(e)}withArgs(...e){return this.args.push(...e),this}withBody(e){return this.body=e,this}withImplicitTarget(e){return this.implicitTarget=e,this}withModifier(e,t){return this.modifiers||(this.modifiers={}),this.modifiers[e]=t,this}withModifiers(e){return this.modifiers={...this.modifiers,...e},this}withName(e){return this.name=e,this}withOriginalCommand(e){return this.originalCmd=e,this}blocking(e=!0){return this.isBlocking=e,this}startingAt(e){return this.startPos={start:e.start??0,end:e.end??0,line:e.line??1,column:e.column??1},this}endingAt(e){return this.endPos={start:e.start??this.startPos?.start??0,end:e.end,line:e.line??this.startPos?.line??1,column:e.column??this.startPos?.column??1},this}build(){const e={type:"command",name:this.name,args:this.args,isBlocking:this.isBlocking,start:this.startPos?.start??0,end:this.endPos?.end??this.startPos?.end??0,line:this.startPos?.line??1,column:this.startPos?.column??1};return this.body&&(e.body=this.body),this.implicitTarget&&(e.implicitTarget=this.implicitTarget),this.modifiers&&(e.modifiers=this.modifiers),this.originalCmd&&(e.originalCommand=this.originalCmd),e}clone(){const e=new lt(this.name);return e.args=[...this.args],e.body=this.body?[...this.body]:void 0,e.implicitTarget=this.implicitTarget,e.isBlocking=this.isBlocking,e.modifiers=this.modifiers?{...this.modifiers}:void 0,e.originalCmd=this.originalCmd,e.startPos=this.startPos?{...this.startPos}:void 0,e.endPos=this.endPos?{...this.endPos}:void 0,e}}function ct(e,t){const r=[];let n="";const s=e.peek().start||0,i=e.peek().line||1,a=e.peek().column||1;if(e.checkIdentifierLike()){for(n=e.advance().value;e.check(":")&&!e.isAtEnd();)e.advance(),n+=":",e.checkIdentifierLike()&&(n+=e.advance().value);if(e.check("(")){e.advance();const t=[];for(;!e.isAtEnd()&&!e.check(")");){const r=e.savePosition();let n;if(e.checkIdentifierLike()){const t=e.peek().value;e.advance(),e.check(":")?(e.advance(),n=t):e.restorePosition(r)}const s=e.parseExpression();if(t.push(void 0!==n?{type:"objectLiteral",properties:[{key:{type:"identifier",name:n},value:s}],start:s.start,end:s.end,line:s.line,column:s.column}:s),e.check(","))e.advance();else if(!e.check(")"))break}e.check(")")&&e.advance(),r.push({type:"functionCall",name:n,args:t,start:s,end:e.getPosition().end,line:i,column:a})}else r.push({type:"string",value:n,start:s,end:e.getPosition().end,line:i,column:a})}for(;!nt(e);)r.push(e.parsePrimary());let o=-1,l="on";for(let e=0;r.length>e;e++){const t=r[e],n=t.name||t.value;if(!("identifier"!==t.type&&"literal"!==t.type&&"keyword"!==t.type||"on"!==n&&"to"!==n)){o=e,l=n;break}}const c=[];if(-1===o)c.push(...r);else{const t=r.slice(0,o),n=r.slice(o+1);c.push(...t),c.push(e.createIdentifier(l)),c.push(...n)}return lt.fromIdentifier(t).withArgs(...c).endingAt(e.getPosition()).build()}function ut(e,t){const r=[];if(e.check(b)){const t=e.advance();if(r.push({type:"identifier",name:b,start:t.start,end:t.end,line:t.line,column:t.column}),e.check(y)){const t=e.advance();r.push({type:"identifier",name:y,start:t.start,end:t.end,line:t.line,column:t.column})}}return lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function dt(n,s){const i=[];let a=!1;const o=n.savePosition();for(let t=0;500>t&&!n.isAtEnd();t++){const t=n.peek();if(t.value===e){a=!0;break}if(t.value===r||t.value===g||"def"===t.value||t.value===f)break;n.advance()}n.restorePosition(o);let l=!1;if(!a){const e=n.savePosition(),i=s.line,a=100;for(;!n.isAtEnd()&&a>n.current-e;){const e=n.peek(),s=e.value?.toLowerCase();if(s===g||"def"===s||s===f)break;if(s===t||s===r){e.line===i&&(l=!0);break}if((n.checkIsCommand()||n.isCommand(s))&&void 0!==e.line&&e.line!==i){l=!0;break}n.advance()}n.restorePosition(e)}const c=a||l;let u;if(c)u=n.parseExpression();else{const t=[],r=20;let i=0;for(;!n.isAtEnd()&&!n.checkIsCommand()&&!n.isCommand(n.peek().value)&&!n.check(e)&&r>i;){const e=n.savePosition();t.push(n.parseLogicalAnd()),n.savePosition()===e&&n.advance(),i++}if(0===t.length)throw Error("Expected condition after if/unless");u=1===t.length?t[0]:{type:"expression",tokens:t,start:t[0].start,end:t[t.length-1].end,line:s.line,column:s.column}}if(i.push(u),c){a&&n.advance();const e=[];for(;!n.isAtEnd()&&!n.check(t)&&!n.check(r)&&(n.checkIsCommand()||n.isCommand(n.peek().value));){n.advance();const t=n.parseCommand();t&&e.push(t)}if(0===e.length&&n.isAtEnd())throw Error("Expected command after 'then' in if statement - incomplete conditional");i.push(Ge(e,{start:s.start,end:n.getPosition().end,line:s.line,column:s.column}));let o=!1;if(n.check(t))if(n.advance(),n.check("if")){const e=n.peek();n.advance();const t=dt(n,e);i.push(Ge([t],{start:e.start,end:n.getPosition().end,line:e.line,column:e.column})),o=!0}else{const e=[];for(;!n.isAtEnd()&&!n.check(r)&&(n.checkIsCommand()||n.isCommand(n.peek().value));){n.advance();const t=n.parseCommand();t&&e.push(t)}i.push(Ge(e,{start:s.start,end:n.getPosition().end,line:s.line,column:s.column}))}o||n.consume(r,"Expected 'end' after if block")}else{if(!n.checkIsCommand()&&!n.isCommand(n.peek().value))throw Error("Expected command after if condition in single-line form");{n.advance();const e=n.parseCommand();i.push(Ge([e],{start:s.start,end:n.getPosition().end,line:s.line,column:s.column}))}}return lt.from(s).withArgs(...i).endingAt(n.getPosition()).build()}function mt(e,t){const r=[],n={};if(e.checkAnySelector()||e.checkContextVar()||e.match("<")){const t=e.parsePrimary();if(r.push(t),e.match("*")){if(e.checkIdentifierLike()){const t=e.advance();r.push({type:"identifier",name:"*"+t.value,start:t.start-1,end:t.end,line:t.line,column:t.column})}}else if(e.checkIdentifierLike()){const t=e.parsePrimary();r.push(t)}}else if(e.checkIdentifierLike()){const t=e.parsePrimary();r.push(t)}if(e.match("and")&&e.match("set")&&e.checkIdentifierLike()){const t=e.advance();n.set={type:"identifier",name:t.value,start:t.start,end:t.end,line:t.line,column:t.column}}const s=lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition());return Object.keys(n).length>0&&s.withModifiers(n),s.build()}function pt(e,t){const r=[],n=st(e,[m]);n&&r.push(n),it(e,m,r);const s=st(e);return s&&r.push(s),lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function ht(e,t){const r=[];if(e.check("between")){e.advance(),r.push(e.createIdentifier("between"));const i=st(e,[n]);i&&r.push(i),it(e,n,r);const a=st(e,[m,f,s]);if(a&&r.push(a),at(e,[m,f],r)){const t=st(e);t&&r.push(t)}return lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}const i=st(e,[m,f]);if(i&&r.push(i),at(e,[m,f],r)){const t=st(e);t&&r.push(t)}return lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function ft(e,t){const n=e.parseExpression();if(!n)return e.addError("Put command requires content expression"),null;const s=e.peek();if(!s||!A.includes(s.value))return e.addError(`Expected operation keyword (${A.join(", ")}) after put expression, got: ${s?.value}`),null;let i=e.advance().value;const a=i.toLowerCase();"at start of"===a||"at the start of"===a?i=x:"at end of"===a||"at the end of"===a?i=C:"at"===i&&(e.check(w)||e.check(b)?(ot(e,b),e.check(w)&&(e.advance(),e.check(h)&&(e.advance(),i=x))):e.check(r)&&(e.advance(),e.check(h)&&(e.advance(),i=C)));const o=e.parseExpression();return o?lt.fromIdentifier(t).withArgs(n,e.createIdentifier(i),o).endingAt(e.getPosition()).build():(e.addError("Put command requires target expression after operation keyword"),null)}const yt=["innerhtml","outerhtml","into","over","delete","morph","morphouter"];function gt(s,i){const a=s.savePosition();let o=null,l=[];try{o=function(e){if(!e.check(":"))return null;if(e.advance(),e.check(":")){e.advance();const t=e.advance();return{type:"identifier",name:t.value,scope:"global",start:t.start-2,end:t.end}}const t=e.advance();return{type:"identifier",name:t.value,scope:"local",start:t.start-1,end:t.end}}(s)??function(e){if(!e.check(v)&&!e.check("local"))return null;const t=e.advance(),r=e.advance();return{type:"identifier",name:r.value,scope:t.value,start:t.start,end:r.end}}(s)??function(e,t){if(!e.check(b))return null;const r=e.savePosition();e.advance();const n=e.peek(),s=e.peekAt(1);if(n&&s&&s.value===h){const r=e.advance();if(e.check(h)){e.advance();const n=e.advance(),s=n.value.startsWith("#");return{type:"propertyOfExpression",property:{type:"identifier",name:r.value,start:r.start,end:r.end},target:{type:s?"idSelector":"cssSelector",value:n.value,start:n.start,end:n.end},start:t,end:e.savePosition()}}return e.restorePosition(t),null}if(n&&s&&s.value===d){const t=e.advance();return{type:"identifier",name:t.value,start:t.start,end:t.end}}return e.restorePosition(r),null}(s,a),o||(o=s.parseExpression())}catch{s.restorePosition(a),o=null}if(!o){const i=function(s){if(s.match(":")){const e=s.advance();return{expression:{type:"identifier",name:e.value,scope:"local",start:e.start,end:e.end},tokens:[]}}const i=[];for(;!(s.isAtEnd()||s.check(d)||s.check(e)||s.check(n)||s.check(t)||s.check(r));)i.push(s.parsePrimary());if(0===i.length)return{expression:null,tokens:[]};if(i.length>=4){const e=(e,t)=>e[t];if(e(i[0],"value")===b&&e(i[2],"value")===h){const t=i[1],r=i[3];return{expression:(a=Ke(e(t,"value")||e(t,"name")||"",{start:t.start??0,end:t.end??0,line:t.line??1,column:t.column??1}),o={type:"idSelector"===r.type?"idSelector":"cssSelector",value:e(r,"value")||e(r,"name")||"",start:r.start??0,end:r.end??0,line:r.line,column:r.column},l={start:i[0].start??0,end:r.end??0,line:i[0].line??1,column:i[0].column??1},{type:"propertyOfExpression",property:a,target:o,start:l.start,end:l.end,line:l.line,column:l.column}),tokens:[]}}}var a,o,l;return 1===i.length?{expression:i[0],tokens:[]}:{expression:null,tokens:i}}(s);o=i.expression,l=i.tokens}if(!s.check(d)){const e=s.isAtEnd()?"end of input":s.peek().value;throw Error("Expected 'to' in set command, found: "+e)}s.advance();const c=s.parseExpression()??s.parsePrimary(),u=[];return o?u.push(o):l.length>0&&u.push(...l),u.push(s.createIdentifier(d)),c&&u.push(c),lt.fromIdentifier(i).withArgs(...u).endingAt(s.getPosition()).build()}function vt(e,t){const r=[];for(;!nt(e,["catch","finally"])&&(e.checkIdentifierLike()||e.checkSelector()||e.checkLiteral()||e.checkTimeExpression()||e.match("<"));)r.push(e.parsePrimary());return lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}function bt(e){if(e.isAtEnd())return!0;const t=e.peek().value;return["as","with","{","then","end","else","otherwise",")"].includes(t)||nt(e)}function wt(e){if(e.check("{"))return!1;if(!e.checkIdentifierLike())return!1;const t=e.peekAt(1);return null!==t&&":"===t.value}function kt(e){const t=[],r=e.getPosition();do{if(!e.checkIdentifierLike())break;const r=e.advance(),n={type:"identifier",name:r.value,start:r.start,end:r.end,line:r.line,column:r.column};e.consume(":","Expected ':' after property name in fetch named arguments");const s=e.parsePrimary();s&&t.push({key:n,value:s})}while(e.match(",")&&!e.isAtEnd());const n=e.getPosition();return{type:"objectLiteral",properties:t,start:r.start,end:n.end,line:r.line,column:r.column}}class Et{constructor(e,t,r){this.current=0,this.warnings=[],this.tokens=e,this.keywordResolver=t?.keywords,this.registryIntegration=t?.registryIntegration,t?.semanticAnalyzer&&t?.language&&(this.semanticAdapter=new Ee({analyzer:t.semanticAnalyzer,language:t.language,confidenceThreshold:t.semanticConfidenceThreshold??.5})),this.originalInput=r||e.map(e=>e.value).join(" ")}resolveKeyword(e){return this.keywordResolver?this.keywordResolver.resolve(e)??e:e}addWarning(e){this.warnings.push(e)}parse(){try{if(0===this.tokens.length)return this.addError("Cannot parse empty input"),{success:!1,node:this.createErrorNode(),tokens:this.tokens,error:this.error,warnings:this.warnings};if(this.check("behavior")){const e=[];for(;this.check("behavior");){this.advance();const t=this.parseBehaviorDefinition();if(t&&e.push(t),this.error)break}return this.error?{success:!1,node:1===e.length?e[0]:this.createProgramNode(e),tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:1===e.length?e[0]:this.createProgramNode(e),tokens:this.tokens,warnings:this.warnings}}if(this.check("init")||this.check("on")||this.check("def")||this.checkComment()){const e=[];for(;!this.isAtEnd();)if(this.checkComment())this.advance();else if(this.check("init")){this.advance();const t=this.parseTopLevelInitBlock();t&&e.push(t)}else if(this.check("on")){this.advance();const t=this.parseEventHandler();t&&e.push(t)}else{if(!this.check("def"))break;{this.advance();const t=this.parseDefFeature();t&&e.push(t)}}return this.isAtEnd()?this.error?{success:!1,node:this.createProgramNode(e),tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:this.createProgramNode(e),tokens:this.tokens,warnings:this.warnings}:(this.addError("Unexpected token: "+this.peek().value),{success:!1,node:this.createProgramNode(e),tokens:this.tokens,error:this.error,warnings:this.warnings})}if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value)){const e=this.parseCommandSequence();if(e){if(!this.isAtEnd()&&this.check("on")){ye("✅ PARSER: Found event handlers after command sequence, parsing as program");const t=[e];ye(`✅ PARSER: Starting with ${t.length} statement(s) from command sequence`);let r=0;for(;!this.isAtEnd()&&this.check("on");){ye(`✅ PARSER: Parsing event handler #${r+1}, current token: ${this.peek().value}`),this.advance();const e=this.parseEventHandler();if(ye("✅ PARSER: parseEventHandler returned:",e?`type=${e.type}, event=${e.event}`:"null"),e&&(t.push(e),r++,ye(`✅ PARSER: Added event handler, now have ${t.length} statements total`)),ye(`✅ PARSER: After parsing event handler, current token: ${this.isAtEnd()?"END":this.peek().value}, isAtEnd=${this.isAtEnd()}, check('on')=${this.check("on")}`),!this.isAtEnd()&&!this.check("on")){if(!this.isAtEnd())return ye("⚠️ PARSER: Unexpected token after event handlers: "+this.peek().value),this.addError("Unexpected token after event handlers: "+this.peek().value),{success:!1,node:this.createProgramNode(t),tokens:this.tokens,error:this.error};ye("✅ PARSER: No more event handlers, at end of input");break}}return ye(`✅ PARSER: Finished parsing, creating Program node with ${t.length} statements`),this.error?{success:!1,node:this.createProgramNode(t),tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:this.createProgramNode(t),tokens:this.tokens,warnings:this.warnings}}return this.isAtEnd()?this.error?{success:!1,node:e,tokens:this.tokens,error:this.error,warnings:this.warnings}:{success:!0,node:e,tokens:this.tokens,warnings:this.warnings}:(this.addError("Unexpected token: "+this.peek().value),{success:!1,node:e||this.createErrorNode(),tokens:this.tokens,error:this.error})}}const e=this.parseExpression();return this.error?{success:!1,node:e||this.createErrorNode(),tokens:this.tokens,error:this.error}:this.isAtEnd()?{success:!0,node:e,tokens:this.tokens,warnings:this.warnings}:(this.addError("Unexpected token: "+this.peek().value),{success:!1,node:e||this.createErrorNode(),tokens:this.tokens,error:this.error,warnings:this.warnings})}catch(e){return this.addError(e instanceof Error?e.message:"Unknown parsing error"),{success:!1,node:this.createErrorNode(),tokens:this.tokens,error:this.error,warnings:this.warnings}}}parseExpression(){return this.parseAssignment()}parseAssignment(){let e=this.parseLogicalOr();if(this.match("=")){if(this.check(">")){if(this.advance(),this.addError('Arrow functions (=>) are not supported in hyperscript. Use "js ... end" blocks for JavaScript callbacks.'),!this.isAtEnd())try{this.parseExpression()}catch{}return this.createErrorNode()}const t=this.previous().value,r=this.parseAssignment();e=this.createBinaryExpression(t,e,r)}return e}parseLogicalOr(){let e=this.parseLogicalAnd();for(;this.match("or");){const t=this.previous().value,r=this.parseLogicalAnd();e=this.createBinaryExpression(t,e,r)}return e}parseLogicalAnd(){let e=this.parseEquality();for(;this.match("and");){const t=this.previous().value,r=this.parseEquality();e=this.createBinaryExpression(t,e,r)}return e}parseEquality(){let e=this.parseComparison();for(;this.matchComparisonOperator()||this.match("is","match","matches","contains","include","includes","in","of","as","really");){const t=this.previous().value;if(Et.POSTFIX_UNARY_OPERATORS.has(t)){e=this.createUnaryExpression(t,e,!1);continue}const r=this.parseComparison();e=this.createBinaryExpression(t,e,r)}return e}parseComparison(){let e=this.parseAddition();for(;this.matchComparisonOperator();){const t=this.previous().value;if(Et.POSTFIX_UNARY_OPERATORS.has(t)){e=this.createUnaryExpression(t,e,!1);continue}const r=this.parseAddition();e=this.createBinaryExpression(t,e,r)}return e}parseAddition(){let e=this.parseMultiplication();for(;this.match("+","-")||this.matchOperator("+")||this.matchOperator("-");){const t=this.previous().value;if(this.check("+")||this.check("-"))return this.addError(`Invalid operator combination: ${t}${this.peek().value}`),e;if(this.isAtEnd())return this.addError(`Expected expression after '${t}' operator`),e;const r=this.parseMultiplication();e=this.createBinaryExpression(t,e,r)}return e}parseMultiplication(){let e=this.parseUnary();for(;this.match("*","/","%","mod");){const t=this.previous().value;if(this.check("*")||this.check("/")||this.check("%")||this.check("+")||this.check("-")){const r=this.peek().value;return this.addError("*"===t&&"*"===r?"Unexpected token: "+r:`Invalid operator combination: ${t}${r}`),e}if(this.isAtEnd())return this.addError(`Expected expression after '${t}' operator`),e;const r=this.parseUnary();e=this.createBinaryExpression(t,e,r)}return e}parseUnary(){if(this.match("not","no","exists","some","-","+")){const e=this.previous().value;if(this.isAtEnd())return this.addError(`Expected expression after '${e}' operator`),this.createErrorNode();const t=this.parseUnary();return this.createUnaryExpression(e,t,!0)}if(this.check("does")&&this.tokens.length>this.current+1&&"not"===this.tokens[this.current+1].value&&this.tokens.length>this.current+2&&"exist"===this.tokens[this.current+2].value){if(this.advance(),this.advance(),this.advance(),this.isAtEnd())return this.addError("Expected expression after 'does not exist' operator"),this.createErrorNode();const e=this.parseUnary();return this.createUnaryExpression("does not exist",e,!0)}return this.parseImplicitBinary()}parseImplicitBinary(){let e=this.parseCall();for(;!(this.isAtEnd()||this.checkBasicOperator()||this.check("then")||this.check("and")||this.check("else")||this.check(")")||this.check("]")||this.check(","));){if("identifier"!==e.type){if("literal"===e.type&&(this.checkNumber()||this.checkIdentifier())){const t=this.peek();return this.addError(`Missing operator between '${e.raw||e.value}' and '${t.value}'`),e}break}if(this.isCommand(e.name))if(this.isCompoundCommand(e.name.toLowerCase())){if(!(this.checkCssSelector()||this.checkIdSelector()||this.checkClassSelector()||this.checkTimeExpression()||this.checkString()||this.checkNumber()||this.checkContextVar()||this.checkIdentifier()||this.checkKeyword()))break;{const t=this.createCommandFromIdentifier(e);t&&(e=t)}}else if("wait"===e.name.toLowerCase()&&this.checkTimeExpression()){const t=this.createCommandFromIdentifier(e);t&&(e=t)}else{if(!this.checkSelector())break;{const t=this.parseCall();e=this.createBinaryExpression(" ",e,t)}}else{if(!this.checkSelector())break;{const t=this.parseCall();e=this.createBinaryExpression(" ",e,t)}}}return e}isCommand(e){return this.keywordResolver?this.keywordResolver.isCommand(e):T(e)}isKeyword(e){return this.keywordResolver?this.keywordResolver.isKeyword(e):L(e)}createCommandFromIdentifier(e){const t=[],r=this.resolveKeyword(e.name.toLowerCase());if(this.isCompoundCommand(r))return this.parseCompoundCommand(e);for(;!(this.isAtEnd()||this.check("then")||this.check("and")||this.check("else")||this.checkIsCommand())&&(this.checkContextVar()||this.checkIdentifier()||this.checkKeyword()||this.checkEvent()||this.checkCssSelector()||this.checkIdSelector()||this.checkClassSelector()||this.checkString()||this.checkNumber()||this.checkTimeExpression()||this.match("<"));)t.push(this.parsePrimary());return{type:"command",name:e.name,args:t,isBlocking:!1,...void 0!==e.start&&{start:e.start},end:this.getPosition().end,...void 0!==e.line&&{line:e.line},...void 0!==e.column&&{column:e.column}}}isCompoundCommand(e){return O(e)}parseCompoundCommand(s){return function(s,i){switch(i.name.toLowerCase()){case"put":return ft(s,i);case"trigger":case"send":return ct(s,i);case"remove":return pt(s,i);case"toggle":return ht(s,i);case"set":return gt(s,i);case"halt":return ut(s,i);case"measure":return mt(s,i);case"js":return function(e,t){const n=[];if(e.match("(")){for(;!e.check(")")&&!e.isAtEnd();)e.checkIdentifierLike()&&n.push(e.advance().value),e.match(",");e.consume(")","Expected ) after js parameters")}const s=e.peek().start;for(;!e.check(r)&&!e.isAtEnd();)e.advance();const i=e.peek().start;e.consume(r,"Expected end after js code body");const a={type:"literal",value:e.getInputSlice(s,i).trim(),start:t.start,end:e.getPosition().end},o={type:"arrayLiteral",elements:n.map(e=>({type:"literal",value:e,start:t.start,end:t.end})),start:t.start,end:e.getPosition().end};return lt.fromIdentifier(t).withArgs(a,o).endingAt(e.getPosition()).build()}(s,i);case"tell":return function(s,i){const a=s.parseExpression();if(!a)throw Error("tell command requires a target expression");const o=[];for(;!s.isAtEnd();){if(s.checkIsCommand()){try{s.advance();const e=s.parseCommand();if(!e)break;o.push(e)}catch{break}if(s.match(n))continue;if(s.check(e)||s.check(t)||s.check(r))break;if(s.checkIsCommand())continue;break}break}if(0===o.length)throw Error("tell command requires at least one command after the target");return lt.fromIdentifier(i).withArgs(a,...o).endingAt(s.getPosition()).build()}(s,i);case"swap":case"morph":return function(e,t){console.log("[PARSER DEBUG] parseSwapCommand called");const r=[];let n=null;if(!e.isAtEnd()){const t=e.peek();if(t&&t.value){const s=t.value.toLowerCase();yt.includes(s)&&(n=s,e.advance(),r.push(e.createIdentifier(n)))}}if("delete"===n){const n=e.parseExpression();return n&&r.push(n),lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}!e.isAtEnd()&&e.check(h)&&(e.advance(),r.push(e.createIdentifier("of")));const s=e.parseExpression();if(s&&r.push(s),!e.isAtEnd()&&e.check(p)){e.advance(),r.push(e.createIdentifier("with"));const t=e.parseExpression();t&&r.push(t)}return lt.fromIdentifier(t).withArgs(...r).endingAt(e.getPosition()).build()}(s,i);default:return vt(s,i)}}(this.getContext(),s)}parsePutCommand(e){return ft(this.getContext(),e)}parseSetCommand(e){return gt(this.getContext(),e)}parseHaltCommand(e){return ut(this.getContext(),e)}parseMeasureCommand(e){return mt(this.getContext(),e)}parseTriggerCommand(e){return ct(this.getContext(),e)}parseCommandListUntilEnd(){const e=[];for(ye("🔄 parseCommandListUntilEnd: Starting to parse command list");!this.isAtEnd()&&!this.check("end");){ye("📍 Loop iteration, current token:",this.peek().value,"kind:",this.peek().kind);let t=!1;const r=this.checkIsCommand(),n=!r&&this.checkIdentifier()&&this.isCommand(this.peek().value);if(r||n){ye(r?"✅ Found COMMAND token:":"✅ Found IDENTIFIER that is a command:",this.peek().value),this.advance();const n=this.error;try{const r=this.parseCommand();this.error&&this.error!==n&&(ye("⚠️ parseCommandListUntilEnd: Command parsing added error, restoring error state. Error was:",this.error.message),this.error=n),r&&(ye("✅ Parsed command:",r.name),e.push(r),t=!0)}catch(e){ye("⚠️ parseCommandListUntilEnd: Command parsing threw exception, restoring error state:",e instanceof Error?e.message:e+""),this.error=n}}else this.checkIdentifier()&&ye("❌ IDENTIFIER is not a command:",this.peek().value);if(!t){ye("❌ No command parsed, breaking. Current token:",this.peek().value);break}for(ye("📍 After parsing command, current token:",this.peek().value);!(this.isAtEnd()||this.check("end")||this.checkIsCommand()||this.isCommand(this.peek().value)||this.check("then")||this.check("and")||this.check(","));)ye("⚠️ Skipping unexpected token:",this.peek().value),this.advance();if(this.match("then","and",","))ye("✅ Found separator, continuing");else{if(!this.checkIsCommand()&&!this.isCommand(this.peek().value)){ye("📍 No separator and no command, breaking. Current token:",this.peek().value);break}ye("✅ Next token is a command, continuing without separator")}}if(ye('🔍 After loop, checking for "end". Current token:',this.peek().value),!this.check("end"))throw ye('❌ ERROR: Expected "end" but got:',this.peek().value,"at position:",this.peek().start),Error('Expected "end" to close repeat block');return ye('✅ Found "end", consuming it'),this.advance(),ye("✅ parseCommandListUntilEnd: Successfully parsed",e.length,"commands"),e}parseRepeatCommand(e){return function(e,t){const r=[];let n="forever",d=null,h=null,f=null,g=null,v=null,w=null;if(e.check(s)){e.advance(),n=s;const t=e.peek();Oe(t)&&(v=t.value,e.advance()),e.check(u)&&(e.advance(),g=e.parseExpression())}else if(e.check(u))e.advance(),n=s,v="it",g=e.parseExpression();else if(e.check(i))e.advance(),n=i,f=e.parseExpression();else if(e.check(a))if(e.advance(),n=a,e.check(y)){e.advance(),n="until-event";const t=e.peek();if(ye("📍 Parsing event name, current token:",{value:t.value,kind:t.kind}),!Oe(t)&&!Ae(t))throw Error('Expected event name after "event"');if(d=t.value,e.advance(),ye("✅ Got event name:",d,"Next token:",e.peek().value),ye('🔍 Checking for "from", current token:',e.peek().value),e.check(m)){ye('✅ Found "from", advancing...'),e.advance(),ye('📍 After consuming "from", current token:',e.peek().value),ot(e,b)&&ye('✅ Found "the", advancing...');const t=e.peek();ye("🔍 Before parsePrimary for event target:",{value:t.value,kind:t.kind,position:t.start}),h=e.parsePrimary(),ye("✅ After parsePrimary, eventTarget:",h)}else ye('❌ No "from" found, skipping target parsing')}else f=e.parseExpression();else e.check(o)?(e.advance(),n=o):(w=e.parseExpression(),e.check(l)&&(e.advance(),n=l));let k=null;if(e.check(p)){const t=e.peekAt(1);t&&t.value.toLowerCase()===c&&(e.advance(),e.advance(),k=c)}else if(e.check(c)){e.advance();const t=e.peek();Oe(t)?(k=t.value,e.advance()):k=c}const E=e.parseCommandListUntilEnd();r.push({type:"identifier",name:n,start:t.start,end:t.end,line:t.line,column:t.column});const x={start:t.start,end:t.end,line:t.line,column:t.column};return v&&r.push(Xe(v,x)),g&&r.push(g),f&&r.push(f),w&&r.push(w),d&&r.push(Xe(d,x)),h&&r.push(h),k&&r.push(Xe(k,x)),r.push(Ge(E,{...x,end:x.end||0})),lt.from(t).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseForCommand(e){return function(e,t){const r=[];let n=null,s=null;e.check("each")&&e.advance();const i=e.peek();if(!Oe(i))throw Error('Expected variable name after "for"');if(n=i.value,e.advance(),!e.check(u))throw Error('Expected "in" after variable name in for loop');if(e.advance(),s=e.parseExpression(),!s)throw Error('Expected collection expression after "in"');let a=null;if(e.check(p)){const t=e.peekAt(1);t&&t.value.toLowerCase()===c&&(e.advance(),e.advance(),a=c)}else if(e.check(c)){e.advance();const t=e.peek();Oe(t)?(a=t.value,e.advance()):a=c}const o=e.parseCommandListUntilEnd();r.push({type:"identifier",name:"for",start:t.start,end:t.end,line:t.line,column:t.column});const l={start:t.start,end:t.end,line:t.line,column:t.column};return r.push(Xe(n,l)),r.push(s),a&&r.push(Xe(a,l)),r.push(Ge(o,{...l,end:l.end||0})),lt.from({...t,value:"repeat"}).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseWaitCommand(e){return function(e,t){const r=[];if(e.checkTimeExpression()||e.checkLiteral()){const n=e.parsePrimary();return r.push(n),lt.from(t).withArgs(...r).blocking().endingAt(e.getPosition()).build()}if(e.check("for")){e.advance();const n=[];do{const t=e.peek();if(!Oe(t))throw Error('Expected event name after "for"');const r=t.value;e.advance();const s=[];if(e.check("(")){for(e.advance();!e.isAtEnd()&&!e.check(")");){const t=e.peek();if(!Oe(t))break;s.push(t.value),e.advance(),e.check(",")&&e.advance()}if(!e.check(")"))throw Error('Expected ")" after event parameters');e.advance()}if(n.push({name:r,params:s}),!e.check("or"))break;e.advance()}while(!e.isAtEnd());let s=null;e.check(m)&&(e.advance(),ot(e,b),s=e.parsePrimary());const i={start:t.start,end:e.getPosition().end,line:t.line,column:t.column};r.push(Qe(n.map(e=>Ze([{key:Ke("name",i),value:Je(e.name,`"${e.name}"`,i)},{key:Ke("args",i),value:Qe(e.params.map(e=>Je(e,`"${e}"`,i)),i)}],i)),i)),s&&r.push(s)}return lt.from(t).withArgs(...r).blocking().endingAt(e.getPosition()).build()}(this.getContext(),e)}parseInstallCommand(e){return function(e,t){const r=[];if(!e.checkIdentifierLike())throw Error('Expected behavior name after "install"');const n=e.advance().value,s=e.previous();if(r.push(Ke(n,{start:s.start,end:s.end,line:s.line,column:s.column})),e.check("(")){e.advance();const n=[];for(;!e.isAtEnd()&&!e.check(")");){const t=e.savePosition();let r;if(e.checkIdentifierLike()){const n=e.peek().value;e.advance(),e.check(":")?(e.advance(),r=n):e.restorePosition(t)}const s=e.parseExpression();if(n.push(void 0!==r?{name:r,value:s}:{value:s}),e.check(","))e.advance();else if(!e.check(")"))break}if(!e.check(")"))throw Error('Expected ")" after behavior parameters');if(e.advance(),n.length>0){const s={start:t.start,end:e.getPosition().end,line:t.line,column:t.column};r.push(Ze(n.map(e=>({key:e.name?Ke(e.name,s):Je("_positional","_positional",s),value:e.value})),s))}}return lt.from(t).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseTransitionCommand(e){return function(e,t){const r=[],n={};let s=null;const i=e.peek();if(Oe(i)||"*"===i.value){let t="";e.check("*")&&(t="*",e.advance());const r=function(e){if(!e.checkIdentifierLike())return"";let t=e.advance().value;for(;e.check("-")&&!e.isAtEnd();)t+="-",e.advance(),e.checkIdentifierLike()&&(t+=e.advance().value);return t}(e);r&&(t+=r,s={type:"string",value:t,start:i.start||0,end:e.getPosition().end,line:i.line,column:i.column})}if(!s)throw Error("Transition command requires a CSS property");if(r.push(s),!e.check(d))throw Error('Expected "to" keyword after property in transition command');e.advance();const a=e.parsePrimary();if(n.to=a,e.check("over")){e.advance();const t=e.parsePrimary();n.over=t}if(e.check(p)){e.advance();const t=e.parsePrimary();n.with=t}return lt.from(t).withArgs(...r).withModifiers(n).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseAddCommand(e){return function(e,t){const r=[];if(e.match("{"))r.push(e.parseCSSObjectLiteral());else{const t=st(e,[d]);t&&r.push(t)}if(e.check(d)){e.advance();const t=st(e);t&&r.push(t)}return lt.from(t).withArgs(...r).endingAt(e.getPosition()).build()}(this.getContext(),e)}parseIfCommand(e){return dt(this.getContext(),e)}parseRemoveCommand(e){return pt(this.getContext(),e)}parseToggleCommand(e){return ht(this.getContext(),e)}parseRegularCommand(e){return vt(this.getContext(),e)}parseCall(){let e=this.parsePrimary();for(;;)if(this.match("("))e=this.finishCall(e);else if(this.match(".")){const t=this.consumeIdentifier("Expected property name after '.' - malformed member access");e=this.createMemberExpression(e,this.createIdentifier(t.value),!1)}else if(this.match("[")){const t=this.parseExpression();this.consume("]","Expected ']' after array index"),e=this.createMemberExpression(e,t,!0)}else{if(!this.check("'s"))break;{let t;this.advance(),this.check("*")?(this.advance(),t="*"+this.consumeIdentifier("Expected property name after * in CSS property syntax").value):t=je(this.peek())&&this.peek().value.startsWith("@")?this.advance().value:this.consumeIdentifier("Expected property name after possessive").value,e=this.createPossessiveExpression(e,this.createIdentifier(t))}}return e}parsePrimary(){if(this.check("*")){const e=this.current;if(this.advance(),!this.isAtEnd()&&Oe(this.peek())){const e=this.advance().value;return this.createSelector("*"+e)}this.current=e}if(this.check("*")||this.check("/")||this.check("%")||this.check("mod")){const e=this.peek();return this.addError(`Binary operator '${e.value}' requires a left operand`),this.createErrorNode()}if(this.matchNumber()){const e=parseFloat(this.previous().value);return this.createLiteral(e,this.previous().value)}if(this.matchString()){const e=this.previous().value;if(2>e.length||e.startsWith('"')&&!e.endsWith('"')||e.startsWith("'")&&!e.endsWith("'"))return this.addError("Unclosed string literal - string not properly closed"),this.createErrorNode();const t=e.slice(1,-1),r=this.processEscapeSequences(t);return this.createLiteral(r,e)}if(this.matchTemplateLiteral()){const e=this.previous();return{type:"templateLiteral",value:e.value,start:e.start||0,end:e.end||0,line:e.line,column:e.column}}if(this.matchBoolean()){const e=this.previous().value;let t;switch(e){case"true":t=!0;break;case"false":t=!1;break;case"null":t=null;break;case"undefined":t=void 0;break;default:t="true"===e}return this.createLiteral(t,e)}if(this.matchTimeExpression()){const e=this.previous().value;return this.createLiteral(e,e)}if(this.matchQueryReference()){const e=this.previous().value.slice(1,-2).trim();return this.createSelector(e)}if(this.matchSelector())return this.createSelector(this.previous().value);if(this.match("<"))return this.parseHyperscriptSelector();if(this.match("(")){if(this.isAtEnd())return this.addError("Expected expression inside parentheses"),this.createErrorNode();const e=this.parseExpression();return this.consume(")","Expected closing parenthesis ')' after expression - unclosed parentheses"),e}if(this.match("{"))return this.parseObjectLiteral();if(this.match("["))return this.parseAttributeOrArrayLiteral();if(this.check(":")){if(this.advance(),this.check(":")){this.advance();const e=this.advance();return{type:"identifier",name:e.value,scope:"global",start:e.start-2,end:e.end,line:e.line,column:e.column}}{const e=this.advance();return{type:"identifier",name:e.value,scope:"local",start:e.start-1,end:e.end,line:e.line,column:e.column}}}if(this.matchBasicOperator()){const e=this.previous();return this.createIdentifier(e.value)}const e=this.peek();if((!e||"end"!==e.value&&"else"!==e.value&&"then"!==e.value)&&(this.matchPredicate(qe)||this.matchPredicate(Ce)||this.matchPredicate(Se)||this.matchPredicate(xe)||this.matchPredicate(Ae))){const e=this.previous();if("new"===e.value)return this.parseConstructorCall();if("on"===e.value)return this.parseEventHandler();if("if"===e.value)return this.parseConditional();if("closest"===e.value||"first"===e.value||"last"===e.value||"previous"===e.value||"next"===e.value){if(this.check("(")||this.checkCssSelector()||this.checkClassSelector()||this.checkIdSelector()||this.check("<")||this.checkQueryReference())return this.parseNavigationFunction(e.value);if(this.check(".")){const t=this.current;if(this.advance(),this.checkIdentifier()){const t=this.advance().value,r=this.createSelector("."+t);return this.createCallExpression(this.createIdentifier(e.value),[r])}this.current=t}if(this.check("#")){const t=this.current;if(this.advance(),this.checkIdentifier()){const t=this.advance().value,r=this.createSelector("#"+t);return this.createCallExpression(this.createIdentifier(e.value),[r])}this.current=t}return this.createIdentifier(e.value)}return"my"!==e.value||this.check(".")?"its"!==e.value||this.check(".")?"your"!==e.value||this.check(".")?"the"===e.value?this.parseTheXofY():"values"===e.value&&this.check("of")?(this.advance(),{type:"propertyOfExpression",property:{type:"identifier",name:"values"},target:this.parsePrimary(),line:e.line,column:e.column}):this.createIdentifier(e.value):this.parseContextPropertyAccess("you"):this.parseContextPropertyAccess("it"):this.parseContextPropertyAccess("me")}if(this.match("$"))return this.parseDollarExpression();if(je(this.peek())&&this.peek().value.startsWith("@")){const e=this.advance();return{type:"attributeAccess",attributeName:e.value.substring(1),start:e.start,end:e.end,line:e.line,column:e.column}}const t=this.peek();return this.addError(`Unexpected token: ${t.value} at line ${t.line}, column ${t.column}`),this.advance(),this.createErrorNode()}parseDollarExpression(){if(this.checkNumber()){const e=this.advance().value;return this.createLiteral(e,"$"+e)}if(this.checkIdentifier()){const e=this.advance();let t=this.createIdentifier(e.value);for(;this.match(".");){if(!this.checkIdentifier())return this.addError("Expected property name after '.' in dollar expression"),this.createErrorNode();{const e=this.advance();t=this.createMemberExpression(t,this.createIdentifier(e.value),!1)}}return{type:"dollarExpression",expression:t,raw:`$${e.value}${this.previous().value||""}`,line:e.line,column:e.column-1}}return this.addError("Expected identifier or number after '$'"),this.createErrorNode()}parseHyperscriptSelector(){let e="";for(;!this.check("/")&&!this.isAtEnd();)e+=this.advance().value;return this.consume("/","Expected '/' in hyperscript selector"),this.consume(">","Expected '>' after '/' in hyperscript selector"),this.createSelector(e)}parseObjectLiteral(){const e=[],t=this.getPosition();if(this.check("}"))return this.advance(),{type:"objectLiteral",properties:e,start:t.start,end:this.getPosition().end,line:t.line,column:t.column};do{let t;if(this.matchPredicate(qe))t=this.createIdentifier(this.previous().value);else{if(!this.matchString())return this.addError("Expected property name in object literal"),this.createErrorNode();{const e=this.previous().value,r=e.slice(1,-1);t=this.createLiteral(r,e)}}this.consume(":","Expected ':' after property name in object literal");const r=this.parseExpression();if(e.push({key:t,value:r}),!this.match(","))break;if(this.check("}"))break}while(!this.isAtEnd());return this.consume("}","Expected '}' after object literal properties"),{type:"objectLiteral",properties:e,start:t.start,end:this.getPosition().end,line:t.line,column:t.column}}parseCSSObjectLiteral(){const e=this.getPosition(),t=[];do{if(this.check("}"))break;let r;if(this.matchPredicate(qe))r=this.createIdentifier(this.previous().value);else{if(!this.matchString())return this.addError("Expected CSS property name"),this.createErrorNode();{const e=this.previous().value,t=e.slice(1,-1);r=this.createLiteral(t,e)}}if(!this.consume(":","Expected ':' after CSS property name"))return this.createErrorNode();const n=[];let s=!1,i=0;for(;!this.isAtEnd()&&(0!==i||!this.check(";")&&!this.check("}"));){const e=this.advance();n.push(e.value),"$"===e.value&&this.check("{")&&(s=!0),"{"===e.value&&i++,"}"===e.value&&i--}const a=n.join(""),o=s?{type:"templateLiteral",value:a,start:e.start,end:this.getPosition().end,line:e.line,column:e.column}:this.createLiteral(a,a);if(t.push({key:r,value:o}),this.check(";")&&this.advance(),this.check("}"))break}while(!this.isAtEnd());return this.consume("}","Expected '}' after CSS object literal properties"),{type:"objectLiteral",properties:t,start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseConstructorCall(){const e=this.previous();if(!this.checkIdentifier())return this.addError('Expected constructor name after "new"'),this.createErrorNode();const t=this.advance(),r=t.value;if(!this.check("("))return this.addError('Expected "(" after constructor name'),this.createErrorNode();if(this.advance(),this.check(")"))this.advance();else{let e=1;for(;e>0&&!this.isAtEnd();){const t=this.advance();"("===t.value&&e++,")"===t.value&&e--}}return{type:"callExpression",callee:{type:"identifier",name:r,start:t.start,end:t.end,line:t.line,column:t.column},arguments:[],isConstructor:!0,start:e.start,end:this.previous().end,line:e.line,column:e.column}}parseTopLevelInitBlock(){const e=this.getPosition(),t=this.parseCommandBlock(["end"]);return this.consume("end","Expected 'end' after init block"),{type:"initBlock",commands:t,start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseDefFeature(){const e=this.getPosition();let t="";if(!this.checkIdentifier())return this.addError("Expected function name after 'def'"),{type:"def",name:"",params:[],body:[],start:e.start,end:this.getPosition().end,line:e.line,column:e.column};for(t=this.advance().value;this.check(".");)this.advance(),this.checkIdentifier()&&(t+="."+this.advance().value);const r=[];if(this.check("(")){if(this.advance(),!this.check(")"))for(this.checkIdentifier()&&r.push(this.advance().value);this.check(",");)this.advance(),this.checkIdentifier()&&r.push(this.advance().value);this.consume(")","Expected ')' after parameter list")}const n=this.parseCommandBlock(["end","catch","finally"]);let s,i,a;return this.check("catch")&&(this.advance(),this.checkIdentifier()&&(s=this.advance().value),i=this.parseCommandBlock(["end","finally"])),this.check("finally")&&(this.advance(),a=this.parseCommandBlock(["end"])),this.consume("end","Expected 'end' after function definition"),{type:"def",name:t,params:r,body:n,...void 0!==s&&{errorSymbol:s},...void 0!==i&&{errorHandler:i},...void 0!==a&&{finallyHandler:a},start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseEventNameWithNamespace(e){let t;t=this.checkEvent()||this.checkIdentifier()||this.checkIsCommand()||this.checkIdentifierLike()?this.advance():this.consumeEvent(e);let r=t.value;return this.check(":")&&(this.advance(),r=`${r}:${this.advance().value}`),r}callExprToCommandNode(e,t){return{type:"command",name:e.callee.name,args:e.arguments,isBlocking:!1,...void 0!==t.start&&{start:t.start},...void 0!==t.end&&{end:t.end},...void 0!==t.line&&{line:t.line},...void 0!==t.column&&{column:t.column}}}createPseudoCommandNode(e,t,r,n,s){return{type:"command",name:"pseudo-command",args:[{type:"objectLiteral",properties:[{key:{type:"identifier",name:"methodName"},value:{type:"literal",value:e,raw:`"${e}"`}},{key:{type:"identifier",name:"methodArgs"},value:{type:"literal",value:t.arguments,raw:JSON.stringify(t.arguments)}},...r?[{key:{type:"identifier",name:"preposition"},value:{type:"literal",value:r,raw:`"${r}"`}}]:[],{key:{type:"identifier",name:"targetExpression"},value:n}]}],isBlocking:!1,...void 0!==s.start&&{start:s.start},...void 0!==s.end&&{end:s.end},...void 0!==s.line&&{line:s.line},...void 0!==s.column&&{column:s.column}}}tryParsePseudoCommand(e,t){const r=e.callee.name,n=this.peek();if(!(Et.PSEUDO_COMMAND_PREPOSITIONS.includes(n.value.toLowerCase())||qe(n)&&!this.isCommand(n.value)||Se(n)))return{node:this.callExprToCommandNode(e,t),isPseudo:!1,targetFailed:!1};let s,i;this.isCommand(r)&&this.addWarning({type:"command-shadow",message:`Method '${r}' shadows hyperscript command`,suggestions:[`Rename method to avoid confusion (e.g., '${r}Fn', 'my${r.charAt(0).toUpperCase()+r.slice(1)}')`,`Use 'call' command instead: call ${r}(...)`,"This works but may cause ambiguity"],severity:"warning",code:"PSEUDO_CMD_SHADOW",...void 0!==t.line&&{line:t.line},...void 0!==t.column&&{column:t.column}}),Et.PSEUDO_COMMAND_PREPOSITIONS.includes(this.peek().value.toLowerCase())&&(s=this.advance().value.toLowerCase());try{i=this.parseExpression()}catch{return{node:this.callExprToCommandNode(e,t),isPseudo:!1,targetFailed:!0}}return{node:this.createPseudoCommandNode(r,e,s,i,t),isPseudo:!0,targetFailed:!1}}parseCommandWithErrorRecovery(){this.advance();const e=this.error;try{const t=this.parseCommand();return this.error&&this.error!==e&&(ye("⚠️ Command parsing added error, restoring error state. Error was:",this.error.message),this.error=e),t}catch(t){return ye("⚠️ Command parsing threw exception, restoring error state:",t instanceof Error?t.message:t+""),this.error=e,null}}parseEventHandler(){ye("🔧 parseEventHandler: ENTRY - parsing event handler");const e=[],t=this.parseEventNameWithNamespace("Expected event name after 'on'");for(e.push(t),ye("🔧 parseEventHandler: Parsed first event name: "+t);this.check("or");){this.advance(),ye("🔧 parseEventHandler: Found 'or', parsing additional event name");const t=this.parseEventNameWithNamespace("Expected event name after 'or'");e.push(t),ye("🔧 parseEventHandler: Parsed additional event name: "+t)}let r;if(ye("🔧 parseEventHandler: Total events parsed: "+e.join(", ")),this.registryIntegration){const t=e[0];if(this.registryIntegration.hasEventSource(t)){const e=this.registryIntegration.getEventSource(t);r=e?.name,ye(`🔧 parseEventHandler: Detected custom event source '${r}' for event '${t}'`)}}const n=[];if(this.match("(")){if(!this.check(")"))do{const e=this.advance();n.push(e.value)}while(this.match(","));this.consume(")","Expected ')' after event parameters"),ye("🔧 parseEventHandler: Parsed event parameters: "+n.join(", "))}const s={};for(;this.check(".");){this.advance();const e=this.advance().value.toLowerCase();if("once"===e)s.once=!0,ye("🔧 parseEventHandler: Parsed modifier '.once'");else if("prevent"===e)s.prevent=!0,ye("🔧 parseEventHandler: Parsed modifier '.prevent'");else if("stop"===e)s.stop=!0,ye("🔧 parseEventHandler: Parsed modifier '.stop'");else if("debounce"===e||"throttle"===e){if(!this.check("("))throw Error(`Expected '(' after '.${e}'`);{this.advance();const t=this.advance(),r=parseInt(t.value,10);if(isNaN(r))throw Error(`Expected number for ${e} delay, got: ${t.value}`);"debounce"===e?(s.debounce=r,ye(`🔧 parseEventHandler: Parsed modifier '.debounce(${r})'`)):(s.throttle=r,ye(`🔧 parseEventHandler: Parsed modifier '.throttle(${r})'`)),this.consume(")",`Expected ')' after ${e} delay`)}}else ye(`🔧 parseEventHandler: Warning - unknown modifier '.${e}'`)}if(this.check("debounced")||this.check("throttled")){const e=this.advance().value.toLowerCase(),t="debounced"===e?"debounce":"throttle";if(this.match("at"))if(this.checkTimeExpression()){const r=this.advance(),n=(i=r.value).endsWith("ms")?parseInt(i,10):i.endsWith("seconds")||i.endsWith("s")?1e3*parseFloat(i):i.endsWith("minutes")?6e4*parseFloat(i):i.endsWith("hours")?36e5*parseFloat(i):i.endsWith("days")?864e5*parseFloat(i):parseInt(i,10);s[t]=n,ye(`🔧 parseEventHandler: Parsed '${e} at ${r.value}' (${n}ms)`)}else if(this.matchNumber()){const r=parseInt(this.previous().value,10);s[t]=r,ye(`🔧 parseEventHandler: Parsed '${e} at ${r}'`)}else this.addError(`Expected time expression after '${e} at', got: ${this.peek().value}`);else this.addError(`Expected 'at' after '${e}'`)}var i;let a,o,l,c;if(Object.keys(s).length>0&&ye("🔧 parseEventHandler: Parsed modifiers:",s),this.match("[")&&(a=this.parseExpression(),this.consume("]","Expected ']' after event condition")),this.match("from")){const e=this.advance();o=e.value,ye(`🔧 parseEventHandler: Parsed 'from' target: ${o} (kind: ${e.kind})`)}if(this.match("of")){const e=this.advance();l=e.value.startsWith("@")?e.value.substring(1):e.value,ye("🔧 parseEventHandler: Parsed attribute name: "+l)}this.match("in")&&(ye("🔧 parseEventHandler: Found 'in' keyword, parsing watch target"),c=this.parseExpression(),ye("🔧 parseEventHandler: Parsed watch target expression"));const u=[];for(ye(`✅ parseEventHandler: About to parse commands, current token: ${this.isAtEnd()?"END":this.peek().value}, isAtEnd: ${this.isAtEnd()}`);!this.isAtEnd();){if(ye(`✅ parseEventHandler: Loop iteration, current token: ${this.peek().value}, kind: ${this.peek().kind}`),this.check("on")){ye("✅ parseEventHandler: Stopping command parsing, found next event handler 'on'");break}if(this.checkComment())ye("✅ parseEventHandler: Skipping comment token: "+this.peek().value),this.advance();else{if(this.check("end")){ye("✅ parseEventHandler: Stopping command parsing, found 'end' keyword"),this.advance();break}if(this.checkIsCommand()){const e="("===this.tokens[this.current+1]?.value,t=this.peek().value.toLowerCase();if(e&&"js"!==t&&"tell"!==t){let e;const t=this.error;try{e=this.parseExpression()}catch(e){this.error=t,this.advance();const r=this.parseCommand();u.push(r);continue}if(e&&"callExpression"===e.type){const t=this.tryParsePseudoCommand(e,e);if(u.push(t.node),t.isPseudo||t.targetFailed)continue}}else{const e=this.parseCommandWithErrorRecovery();e&&(u.push(e),ye("✅ parseEventHandler: Parsed command, next token: "+(this.isAtEnd()?"END":this.peek().value)))}}else{if(!this.checkIdentifier())break;{const e=this.peek();if(this.isCommand(e.value)){const e=this.parseCommandWithErrorRecovery();e&&u.push(e)}else{let e;const t=this.error;try{e=this.parseExpression()}catch(e){ye("⚠️ Expression parsing error, restoring error state:",e instanceof Error?e.message:e+""),this.error=t;break}if(e&&"callExpression"===e.type){const t=this.tryParsePseudoCommand(e,e);if(u.push(t.node),t.targetFailed)continue}else{if(!e||"binaryExpression"!==e.type||" "!==e.operator)break;{const t=e;if(!t.left||"identifier"!==t.left.type||!this.isCommand(t.left.name))break;{const r={type:"command",name:t.left.name,args:[t.right],isBlocking:!1,...void 0!==e.start&&{start:e.start},...void 0!==e.end&&{end:e.end},...void 0!==e.line&&{line:e.line},...void 0!==e.column&&{column:e.column}};u.push(r)}}}}}}for(;!(this.isAtEnd()||this.checkIsCommand()||this.isCommand(this.peek().value)||this.check("then")||this.check("and")||this.check(",")||this.check("on"));)this.advance();if(!this.match("then","and",",")&&!this.checkIsCommand()&&!this.isCommand(this.peek().value))break}}const d=this.getPosition(),m={type:"eventHandler",event:1===e.length?e[0]:e.join("|"),events:e,commands:u,...n.length>0&&{params:n},...a&&{condition:a},...o&&{target:o},...l&&{attributeName:l},...c&&{watchTarget:c},...r&&{customEventSource:r},...Object.keys(s).length>0&&{modifiers:s},start:d.start,end:d.end,line:d.line,column:d.column};return ye(`🔧 parseEventHandler: Created node with events: ${e.join(", ")}, attributeName: ${l||"none"}, watchTarget: ${c?"yes":"none"}`),m}parseBehaviorDefinition(){const e=this.getPosition(),t=this.consumeIdentifier("Expected behavior name after 'behavior' keyword").value;/^[A-Z]/.test(t)||this.addError(`Behavior name must start with uppercase letter (got "${t}")`);const r=[];if(this.match("(")){if(!this.check(")"))do{const e=this.consumeIdentifierLike("Expected parameter name");r.push(e.value)}while(this.match(","));this.consume(")","Expected ')' after behavior parameters")}const n=new Set(r),s=[];let i;for(;!this.isAtEnd()&&!this.check("end");)if(this.match("on")){const e=this.getPosition(),t=this.peek().value;this.advance();const r=[];if(this.check("(")){for(this.advance();!this.isAtEnd()&&!this.check(")");){const e=this.peek();qe(e)?(r.push(e.value),this.advance(),this.check(",")&&this.advance()):this.advance()}this.check(")")&&this.advance()}let i;if(this.check("from")){this.advance();const e=[];if(this.check("the")&&this.advance(),!this.isAtEnd()){const t=this.peek(),r=n.has(t.value);this.checkIsCommand()&&!r||(e.push(t.value),i=t.value,this.advance())}}const a={type:"eventHandler",event:t,commands:this.parseCommandListUntilEnd(),...void 0!==i&&{target:i},...r.length>0&&{args:r},start:e.start,end:this.getPosition().end,line:e.line,column:e.column};s.push(a)}else{if(!this.match("init")){this.addError("Unexpected token in behavior body: "+this.peek().value);break}i={type:"initBlock",commands:this.parseCommandBlock(["end"]),start:e.start,end:this.getPosition().end,line:e.line,column:e.column},this.consume("end","Expected 'end' after init block")}return this.consume("end","Expected 'end' to close behavior definition"),{type:"behavior",name:t,parameters:r,eventHandlers:s,...void 0!==i?{initBlock:i}:{},start:e.start,end:this.getPosition().end,line:e.line,column:e.column}}parseCommandSequence(){const e=[];for(;!this.isAtEnd();){if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value)){this.advance();const t=this.error,r=this.parseCommand();for(this.error&&this.error!==t&&(this.error.message.includes("Expected closing parenthesis")||this.error.message.includes("Expected ')'")||this.error.message.includes("unclosed parenthes")||this.error.message.includes("Unclosed parenthes")||(ye("⚠️ parseCommandSequence: Command parsing added non-critical error, restoring error state. Error was:",this.error.message),this.error=t)),e.push(r);!(this.isAtEnd()||this.checkIsCommand()||this.isCommand(this.peek().value)||this.check("then")||this.check("on"));)ye("⚠️ parseCommandSequence: Skipping unexpected token:",this.peek().value),this.advance();if(this.check("on")){ye('✅ parseCommandSequence: Found "on" token, stopping command sequence to allow event handler parsing');break}if(this.match("then"))continue;if(this.checkIsCommand()||this.isCommand(this.peek().value)&&!this.isKeyword(this.peek().value))continue;break}this.addError("Expected command, got: "+this.peek().value);break}return 1===e.length?e[0]:function(e){return{type:"CommandSequence",commands:e,start:e[0]?.start||0,end:e[e.length-1]?.end||0,line:e[0]?.line||1,column:e[0]?.column||1}}(e)}getMultiWordPattern(e){return function(e){return et.find(t=>t.command===e.toLowerCase())||null}(e)}isTokenKeyword(e,t){return tt(e,t)}parseMultiWordCommand(e,t){return function(e,t,r){const n=e.getMultiWordPattern(r);if(!n)return null;const s=[],i={};for(;!nt(e,["catch","finally",...n.keywords])&&!tt(e.peek(),n.keywords);){const t=e.parsePrimary();if(!t)break;if(s.push(t),!e.match(",")&&tt(e.peek(),n.keywords))break}for(;!e.isAtEnd()&&tt(e.peek(),n.keywords);){const t=e.advance().value,r=e.parseExpression();if(r&&(i[t]=r),!tt(e.peek(),n.keywords))break}const a=lt.from(t).withArgs(...s).endingAt(e.getPosition());return Object.keys(i).length>0&&a.withModifiers(i),a.build()}(this.getContext(),e,t)}parseCommandBlock(e){const t=[];for(;!this.isAtEnd()&&!e.some(e=>this.check(e));)if(this.checkComment())this.advance();else{if(!this.checkIsCommand()&&!this.isCommand(this.peek().value))break;{this.advance();const e=this.parseCommand();t.push(e)}}return t}trySemanticParse(e){if(!this.semanticAdapter||!this.semanticAdapter.isAvailable())return null;try{const t=this.semanticAdapter.trySemanticParse(e);return t.success&&t.node?(ye(`[Semantic] Successfully parsed with confidence ${t.confidence}:`,t.node.name),t.node):(ye(`[Semantic] Low confidence (${t.confidence}), falling back to traditional parser`),null)}catch(e){return ye("[Semantic] Error during semantic parse:",e),null}}getRemainingInput(){if(!this.originalInput)return this.tokens.slice(this.current>0?this.current-1:0).map(e=>e.value).join(" ");const e=this.current>0?this.tokens[this.current-1]:this.tokens[0];return e&&void 0!==e.start?this.originalInput.slice(e.start):this.originalInput}skipToCommandBoundary(){const e=["then","and","else","end"];for(;!this.isAtEnd();){const t=this.peek(),r=t.value.toLowerCase();if(e.includes(r))break;if(xe(t))break;this.advance()}}parseCommand(){const e=this.previous();let t=e.value;if(this.semanticAdapter&&!["install","wait","repeat","for","set","put","increment","decrement","add","if","unless","make","measure","trigger","halt","remove","exit","return","closest","js","tell"].includes(t.toLowerCase())){const e=this.getRemainingInput(),t=this.trySemanticParse(e);if(t)return this.skipToCommandBoundary(),t}if("beep"===t&&this.check("!")&&(this.advance(),t="beep!"),"fetch"===t)return function(e,t){const r={};let n=null;if(!e.isAtEnd()&&e.check("/")&&(n=function(e){const t=e.savePosition();let r="";for(;!e.isAtEnd()&&!bt(e);)r+=e.advance().value;return r&&"/"!==r?{type:"literal",value:r,raw:r,start:t,end:e.savePosition()}:(e.restorePosition(t),null)}(e)),n||(n=e.parsePrimary()),!n)return e.addError("fetch requires a URL"),lt.from(t).endingAt(e.getPosition()).build();!e.isAtEnd()&&e.check("{")&&(r.with=e.parsePrimary());for(let t=0;2>t&&!e.isAtEnd();t++)if(!e.check("as")||r.as){if(!e.check("with")||r.with)break;e.advance(),r.with=wt(e)?kt(e):e.parsePrimary()}else e.advance(),e.isAtEnd()||ot(e,"a")||ot(e,"an"),r.as=e.parsePrimary();const s=lt.from(t).withArgs(n).endingAt(e.getPosition());return Object.keys(r).length>0&&s.withModifiers(r),s.build()}(this.getContext(),e);const r=this.parseMultiWordCommand(e,t);if(r)return r;const n=t.toLowerCase();if("repeat"===n)return this.parseRepeatCommand(e);if("for"===n)return this.parseForCommand(e);if("if"===n||"unless"===n)return this.parseIfCommand(e);if("wait"===n)return this.parseWaitCommand(e);if("install"===n)return this.parseInstallCommand(e);if("transition"===n)return this.parseTransitionCommand(e);if("add"===n)return this.parseAddCommand(e);if(this.isCompoundCommand(n))return this.parseCompoundCommand({type:"identifier",name:n,start:e.start||0,end:e.end||0,line:e.line,column:e.column})||this.createErrorNode();const s=[];if(("increment"===t||"decrement"===t)&&!this.isAtEnd())return function(e,t){const r=t.value,n="increment"===r?"+":"-";let s=!1;e.check(v)&&(s=!0,e.advance());const i=e.parseExpression();if(!i)throw Error("Expected variable or expression after "+r);let a;if(e.check("by")){e.advance();const t=e.parseExpression();if(!t)throw Error(`Expected amount after 'by' in ${r} command`);a=t}else a=Je(1,"1",{start:t.start,end:e.previous().end,line:t.line,column:t.column});let o=i;s&&"identifier"===i.type&&(o={...i,scope:"global"});const l={start:t.start,end:e.previous().end,line:t.line,column:t.column},c=Ye(n,i,a,l),u=[o,Ke(d,l),c];return lt.from(t).withName("set").withArgs(...u).withOriginalCommand(r).endingAt({end:e.previous().end}).build()}(this.getContext(),e);for(;!(this.isAtEnd()||this.check("then")||this.check("and")||this.check("else")||this.check("end")||this.checkIsCommand());){const e=this.parseExpression();if(s.push(e||this.parsePrimary()),this.match(","))continue;const t=["into","from","to","with","by","at","before","after","over"];if(t.some(e=>this.check(e)))continue;const r=s[s.length-1];if(!r||"identifier"!==r.type&&"keyword"!==r.type||!t.includes(r.name??r.value))break}const i=this.getPosition();return{type:"command",name:t,args:s,isBlocking:!1,start:i.start,end:i.end,line:i.line,column:i.column}}parseConditional(){const e=this.parseExpression();this.consume("then","Expected 'then' after if condition");const t=this.parseConditionalBranch();let r;this.match("else")&&(r=this.parseConditionalBranch());const n=this.getPosition();return{type:"conditionalExpression",test:e,consequent:t,alternate:r,start:n.start,end:n.end,line:n.line,column:n.column}}parseConditionalBranch(){if(this.checkIsCommand()){const e=this.advance(),t=this.createIdentifier(e.value);return this.createCommandFromIdentifier(t)||t}if(this.checkIdentifier()||this.checkKeyword()){const e=this.peek();if(this.isCommand(e.value)){const e=this.advance(),t=this.createIdentifier(e.value);return this.createCommandFromIdentifier(t)||t}}return this.parseExpression()}parseNavigationFunction(e){const t=[];if(this.match("of"))t.push(this.parseExpression());else{if(this.check("("))return this.finishCall(this.createIdentifier(e));this.isAtEnd()||this.checkBasicOperator()||this.check("then")||this.check("else")||t.push(this.parsePrimary())}return this.createCallExpression(this.createIdentifier(e),t)}parseTheXofY(){if(!this.checkIdentifier())return this.createIdentifier("the");const e=this.peek(),t=e.value;return["first","last","next","previous","random","closest"].includes(t)?(this.advance(),this.parseNavigationFunction(t)):(this.advance(),this.check("of")?(this.advance(),{type:"propertyOfExpression",property:{type:"identifier",name:t},target:this.parsePrimary(),line:e.line,column:e.column}):this.createIdentifier(t))}parseContextPropertyAccess(e){if("me"===e&&this.match("*")){let t="";if(!this.checkIdentifier())return this.addError("Expected property name after 'my *'"),this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(""),!1);for(t=this.advance().value;this.check("-")&&!this.isAtEnd();){if(t+="-",this.advance(),!this.checkIdentifier()){this.addError("Expected identifier after hyphen in CSS property name");break}t+=this.advance().value}const r="computed-"+t;return this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(r),!1)}{if(je(this.peek())&&this.peek().value.startsWith("@")){const t=this.advance();return this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(t.value),!1)}const t=this.consumeIdentifier(`Expected property name after '${{me:"my",it:"its",you:"your"}[e]}'`);return this.createMemberExpression(this.createIdentifier(e),this.createIdentifier(t.value),!1)}}parseMyPropertyAccess(){return this.parseContextPropertyAccess("me")}finishCall(e){const t=[];if(!this.check(")"))do{if(this.check(","))return this.addError("Unexpected token in function arguments"),this.createCallExpression(e,[this.createErrorNode()]);t.push(this.parseExpression())}while(this.match(","));if(!this.check(")")&&"identifier"===e.type){const t=e.name;P(t)&&ye(`💡 Tip: CSS functions like ${t}() should be quoted for clean parsing. Use '${t}(...)' or \`${t}(...)\` instead.`)}return this.consume(")","Expected ')' after arguments"),this.createCallExpression(e,t)}createLiteral(e,t){return Je(e,t,this.getPosition())}createIdentifier(e){return Ke(e,this.getPosition())}createBinaryExpression(e,t,r){return Ye(e,t,r,this.getPosition())}createUnaryExpression(e,t,r){return function(e,t,r,n){return{type:"unaryExpression",operator:e,argument:t,prefix:r,start:n.start,end:n.end,line:n.line,column:n.column}}(e,t,r,this.getPosition())}createCallExpression(e,t){return function(e,t,r){return{type:"callExpression",callee:e,arguments:t,start:r.start,end:r.end,line:r.line,column:r.column}}(e,t,this.getPosition())}createMemberExpression(e,t,r){return function(e,t,r,n){return{type:"memberExpression",object:e,property:t,computed:r,start:n.start,end:n.end,line:n.line,column:n.column}}(e,t,r,this.getPosition())}createSelector(e){return function(e,t){return{type:"selector",value:e,start:t.start,end:t.end,line:t.line,column:t.column}}(e,this.getPosition())}createPossessiveExpression(e,t){return function(e,t,r){return{type:"possessiveExpression",object:e,property:t,start:r.start,end:r.end,line:r.line,column:r.column}}(e,t,this.getPosition())}createErrorNode(){return{type:"identifier",name:"__ERROR__",start:(e=this.getPosition()).start,end:e.end,line:e.line,column:e.column};var e}processEscapeSequences(e){return e.replace(/\\(.)/g,(e,t)=>{switch(t){case"n":return"\n";case"t":return"\t";case"r":return"\r";case"b":return"\b";case"f":return"\f";case"v":return"\v";case"0":return"\0";case"\\":return"\\";case'"':return'"';case"'":return"'";default:return t}})}createProgramNode(e){return function(e){if(ye(`✅ createProgramNode: Called with ${e.length} statements`),0===e.length)return ye("✅ createProgramNode: Returning error node (0 statements)"),{type:"identifier",name:"__ERROR__",start:0,end:0,line:1,column:1};if(1===e.length)return ye(`✅ createProgramNode: Returning single statement (type=${e[0].type})`),e[0];const t={type:"Program",statements:e,start:e[0]?.start||0,end:e[e.length-1]?.end||0,line:e[0]?.line||1,column:e[0]?.column||1};return ye(`✅ createProgramNode: Returning Program node with ${e.length} statements, type=${t.type}`),t}(e)}match(...e){for(const t of e)if(this.check(t))return this.advance(),!0;return!1}matchOperator(e){if(this.isAtEnd())return!1;const t=this.peek();return!(!Ue(t)||t.value!==e||(this.advance(),0))}check(e){if(this.isAtEnd())return!1;const t=this.peek().value;return this.resolveKeyword(t)===e}checkPredicate(e){return!this.isAtEnd()&&e(this.peek())}matchPredicate(e){return!!this.checkPredicate(e)&&(this.advance(),!0)}checkSelector(){return this.checkPredicate(Pe)}matchSelector(){return this.matchPredicate(Pe)}checkAnySelector(){return this.checkPredicate(Le)}checkLiteral(){return this.checkPredicate(Ne)}checkIdentifierLike(){return this.checkPredicate(Oe)}checkIsCommand(){return this.checkPredicate(xe)}checkCommandTerminator(){return this.checkPredicate(We)}checkReference(){return this.checkPredicate(Ie)}checkTimeExpression(){return this.checkPredicate(Re)}checkEvent(){return this.checkPredicate(Ae)}checkContextVar(){return this.checkPredicate(Se)}checkComment(){return this.checkPredicate(_e)}checkIdentifier(){return this.checkPredicate(qe)}checkKeyword(){return this.checkPredicate(Ce)}checkString(){return this.checkPredicate(Me)}matchString(){return this.matchPredicate(Me)}checkNumber(){return this.checkPredicate($e)}matchNumber(){return this.matchPredicate($e)}checkBoolean(){return this.checkPredicate(Ve)}matchBoolean(){return this.matchPredicate(Ve)}checkTemplateLiteral(){return this.checkPredicate(De)}matchTemplateLiteral(){return this.matchPredicate(De)}checkQueryReference(){return this.checkPredicate(Be)}matchQueryReference(){return this.matchPredicate(Be)}checkIdSelector(){return this.checkPredicate(Fe)}checkClassSelector(){return this.checkPredicate(ze)}checkCssSelector(){return this.checkPredicate(He)}checkBasicOperator(){return this.checkPredicate(Ue)}matchBasicOperator(){return this.matchPredicate(Ue)}matchTimeExpression(){return this.matchPredicate(Re)}matchIdentifierLike(){return this.matchPredicate(Oe)}matchComparisonOperator(){return this.matchPredicate(Te)}consumePredicate(e,t){return this.checkPredicate(e)?this.advance():(this.addError(t),this.peek())}consumeIdentifier(e){return this.consumePredicate(qe,e)}consumeIdentifierLike(e){return this.consumePredicate(Oe,e)}consumeEvent(e){return this.consumePredicate(Ae,e)}advance(){return this.isAtEnd()||this.current++,this.previous()}isAtEnd(){return this.current>=this.tokens.length}peek(){return this.isAtEnd()?{kind:"unknown",value:"",start:0,end:0,line:1,column:1}:this.tokens[this.current]}previous(){return this.tokens[this.current-1]}consume(e,t){return this.check(e)?this.advance():(this.addError(t),this.peek())}addError(e){const t=this.peek();let r=t.start||0,n=t.line||1,s=t.column||1;if(e.includes("property name after '.'")){const e=this.current>0?this.previous():t;r=e.end||e.start||0,n=e.line||1,s=e.column||1}if(e.includes("parenthes")){const e=this.current>0?this.previous():t;r=e.end||e.start||0,n=e.line||1,s=e.column||1,0===r&&this.current>0&&(r=this.current)}if(e.includes("Expected expression after")){const e=this.current>0?this.previous():t;r=e.start||0,n=e.line||1,s=e.column||1,0===r&&(r=Math.max(1,this.current-1))}if(e.includes("Missing operand")){let e=t;for(let t=this.current-1;t>=0;t--){const r=this.tokens[t];if(r&&("+"===r.value||"-"===r.value)){e=r;break}}r=e.start||0,n=e.line||1,s=e.column||1}this.error={message:e,line:Math.max(1,n),column:Math.max(1,s),position:Math.max(0,r)}}parseAttributeOrArrayLiteral(){const e=this.previous().start,t=this.previous().line,r=this.previous().column;if(!this.isAtEnd()&&this.peek().value.startsWith("@")){const n=[];for(;!this.check("]")&&!this.isAtEnd();){const e=this.advance();n.push(e.value)}this.consume("]","Expected ']' after attribute literal");const s="["+n.join("")+"]";return{type:"literal",value:s,raw:s,start:e,end:this.previous().end,line:t,column:r}}const n=[];if(!this.check("]"))do{if(this.check("]"))break;n.push(this.parseExpression())}while(this.match(","));return this.consume("]","Expected ']' after array elements"),{type:"arrayLiteral",elements:n,start:e,end:this.previous().end,line:t,column:r}}getPosition(){const e=this.current>0?this.previous():this.peek();return{start:e.start||0,end:e.end||0,line:e.line||1,column:e.column||1}}getContext(){const e=this,t={tokens:this.tokens,advance:this.advance.bind(this),peek:this.peek.bind(this),previous:this.previous.bind(this),consume:this.consume.bind(this),check:this.check.bind(this),checkIdentifierLike:this.checkIdentifierLike.bind(this),checkSelector:this.checkSelector.bind(this),checkAnySelector:this.checkAnySelector.bind(this),checkLiteral:this.checkLiteral.bind(this),checkReference:this.checkReference.bind(this),checkTimeExpression:this.checkTimeExpression.bind(this),checkEvent:this.checkEvent.bind(this),checkIsCommand:this.checkIsCommand.bind(this),checkContextVar:this.checkContextVar.bind(this),match:this.match.bind(this),matchOperator:this.matchOperator.bind(this),isAtEnd:this.isAtEnd.bind(this),createIdentifier:this.createIdentifier.bind(this),createLiteral:this.createLiteral.bind(this),createSelector:this.createSelector.bind(this),createBinaryExpression:this.createBinaryExpression.bind(this),createUnaryExpression:this.createUnaryExpression.bind(this),createMemberExpression:this.createMemberExpression.bind(this),createPossessiveExpression:this.createPossessiveExpression.bind(this),createCallExpression:this.createCallExpression.bind(this),createErrorNode:this.createErrorNode.bind(this),createProgramNode:this.createProgramNode.bind(this),createCommandFromIdentifier:this.createCommandFromIdentifier.bind(this),parseExpression:this.parseExpression.bind(this),parsePrimary:this.parsePrimary.bind(this),parseCall:this.parseCall.bind(this),parseAssignment:this.parseAssignment.bind(this),parseLogicalOr:this.parseLogicalOr.bind(this),parseLogicalAnd:this.parseLogicalAnd.bind(this),parseEquality:this.parseEquality.bind(this),parseComparison:this.parseComparison.bind(this),parseAddition:this.parseAddition.bind(this),parseMultiplication:this.parseMultiplication.bind(this),parseImplicitBinary:this.parseImplicitBinary.bind(this),parseConditional:this.parseConditional.bind(this),parseConditionalBranch:this.parseConditionalBranch.bind(this),parseEventHandler:this.parseEventHandler.bind(this),parseBehaviorDefinition:this.parseBehaviorDefinition.bind(this),parseNavigationFunction:this.parseNavigationFunction.bind(this),parseMyPropertyAccess:this.parseMyPropertyAccess.bind(this),parseDollarExpression:this.parseDollarExpression.bind(this),parseHyperscriptSelector:this.parseHyperscriptSelector.bind(this),parseAttributeOrArrayLiteral:this.parseAttributeOrArrayLiteral.bind(this),parseObjectLiteral:this.parseObjectLiteral.bind(this),parseCSSObjectLiteral:this.parseCSSObjectLiteral.bind(this),parseCommand:this.parseCommand.bind(this),parseCommandSequence:this.parseCommandSequence.bind(this),parseCommandListUntilEnd:this.parseCommandListUntilEnd.bind(this),getPosition:this.getPosition.bind(this),addError:this.addError.bind(this),addWarning:this.addWarning.bind(this),isCommand:this.isCommand.bind(this),isCompoundCommand:this.isCompoundCommand.bind(this),isKeyword:this.isKeyword.bind(this),getMultiWordPattern:this.getMultiWordPattern.bind(this),resolveKeyword:this.resolveKeyword.bind(this),savePosition:()=>e.current,restorePosition:t=>{e.current=t},peekAt:t=>{const r=e.current+t;return r>=0&&e.tokens.length>r?e.tokens[r]:null},getInputSlice:(e,t)=>this.originalInput?0>e||e>=this.originalInput.length?"":void 0!==t?this.originalInput.slice(e,t):this.originalInput.slice(e):""};return Object.defineProperty(t,"current",{get:()=>e.current,set:t=>{e.current=t},enumerable:!0,configurable:!0}),t}}Et.POSTFIX_UNARY_OPERATORS=new Set(["exists","does not exist","is empty","is not empty"]),Et.PSEUDO_COMMAND_PREPOSITIONS=["from","on","with","into","at","to"];class xt{constructor(){this.hooks=new Map,this.beforeExecuteHooks=[],this.afterExecuteHooks=[],this.onErrorHooks=[],this.interceptCommandHooks=[]}register(e,t){this.unregister(e),this.hooks.set(e,t),t.beforeExecute&&this.beforeExecuteHooks.push(t.beforeExecute),t.afterExecute&&this.afterExecuteHooks.push(t.afterExecute),t.onError&&this.onErrorHooks.push(t.onError),t.interceptCommand&&this.interceptCommandHooks.push(t.interceptCommand)}unregister(e){const t=this.hooks.get(e);if(!t)return!1;if(t.beforeExecute){const e=this.beforeExecuteHooks.indexOf(t.beforeExecute);e>-1&&this.beforeExecuteHooks.splice(e,1)}if(t.afterExecute){const e=this.afterExecuteHooks.indexOf(t.afterExecute);e>-1&&this.afterExecuteHooks.splice(e,1)}if(t.onError){const e=this.onErrorHooks.indexOf(t.onError);e>-1&&this.onErrorHooks.splice(e,1)}if(t.interceptCommand){const e=this.interceptCommandHooks.indexOf(t.interceptCommand);e>-1&&this.interceptCommandHooks.splice(e,1)}return this.hooks.delete(e)}has(e){return this.hooks.has(e)}async runBeforeExecute(e){for(const t of this.beforeExecuteHooks)await t(e)}async runAfterExecute(e,t){for(const r of this.afterExecuteHooks)await r(e,t)}async runOnError(e,t){let r=t;for(const t of this.onErrorHooks){const n=await t(e,r);n instanceof Error&&(r=n)}return r}shouldIntercept(e,t){for(const r of this.interceptCommandHooks)if(r(e,t))return!0;return!1}getRegisteredNames(){return Array.from(this.hooks.keys())}clear(){this.hooks.clear(),this.beforeExecuteHooks=[],this.afterExecuteHooks=[],this.onErrorHooks=[],this.interceptCommandHooks=[]}}function Ct(e){return e instanceof Error&&("isHalt"in e||"isExit"in e||"isBreak"in e||"isContinue"in e||"isReturn"in e)?e:null}function At(e){return{ok:!0,value:e}}function St(e){return{ok:!1,error:e}}function Tt(e){return!0===e.ok}class Ot{constructor(e){this.elementCleanups=new WeakMap,this.elementCount=0,this.typeCounts={listener:0,observer:0,interval:0,timeout:0,custom:0},this.globalCleanups=[],this.debugMode=e?.debug??!1}registerListener(e,t,r,n,s){this.addCleanup(e,{type:"listener",target:t,eventName:r,cleanup:()=>{t.removeEventListener(r,n,s),this.debugMode&&ve(`CleanupRegistry: Removed listener '${r}'`)},description:r+" listener"})}registerObserver(e,t){this.addCleanup(e,{type:"observer",cleanup:()=>{t.disconnect(),this.debugMode&&ve("CleanupRegistry: Disconnected MutationObserver")},description:"MutationObserver"})}registerInterval(e,t){this.addCleanup(e,{type:"interval",cleanup:()=>{clearInterval(t),this.debugMode&&ve("CleanupRegistry: Cleared interval")},description:"Interval"})}registerTimeout(e,t){this.addCleanup(e,{type:"timeout",cleanup:()=>{clearTimeout(t),this.debugMode&&ve("CleanupRegistry: Cleared timeout")},description:"Timeout"})}registerCustom(e,t,r){this.addCleanup(e,{type:"custom",cleanup:t,description:r||"Custom cleanup"})}registerGlobal(e,t="custom",r){this.globalCleanups.push({type:t,cleanup:e,description:r||"Global cleanup"}),this.debugMode&&ve("CleanupRegistry: Registered global cleanup: "+(r||t))}addCleanup(e,t){const r=this.elementCleanups.get(e);r?r.push(t):(this.elementCleanups.set(e,[t]),this.elementCount++),this.typeCounts[t.type]++,this.debugMode&&ve(`CleanupRegistry: Registered ${t.type} for element`,e)}cleanupElement(e){const t=this.elementCleanups.get(e);if(!t||0===t.length)return 0;let r=0;for(const e of t){try{e.cleanup(),r++}catch(e){this.debugMode&&ve("CleanupRegistry: Error during cleanup:",e)}this.typeCounts[e.type]--}return this.elementCleanups.delete(e),this.elementCount--,this.debugMode&&ve(`CleanupRegistry: Cleaned up ${r} resources for element`),r}cleanupElementTree(e){let t=this.cleanupElement(e);const r=e.querySelectorAll("*");for(const e of r)t+=this.cleanupElement(e);return t}cleanupGlobal(){let e=0;for(const t of this.globalCleanups)try{t.cleanup(),e++}catch(e){this.debugMode&&ve("CleanupRegistry: Error during global cleanup:",e)}return this.globalCleanups=[],this.debugMode&&ve(`CleanupRegistry: Cleaned up ${e} global resources`),e}cleanupAll(){return this.cleanupGlobal()}hasCleanups(e){const t=this.elementCleanups.get(e);return void 0!==t&&t.length>0}getCleanupCount(e){const t=this.elementCleanups.get(e);return t?.length??0}getStats(){let e=0,t=0,r=0,n=0,s=0;for(const i of this.globalCleanups)switch(i.type){case"listener":e++;break;case"observer":t++;break;case"interval":r++;break;case"timeout":n++;break;case"custom":s++}return{elementsTracked:this.elementCount,listeners:this.typeCounts.listener+e,observers:this.typeCounts.observer+t,intervals:this.typeCounts.interval+r,timeouts:this.typeCounts.timeout+n,custom:this.typeCounts.custom+s,global:this.globalCleanups.length}}setDebugMode(e){this.debugMode=e}}const Lt=new Map;function Pt(e,t){return{me:e??null,it:null,you:null,result:null,locals:new Map,globals:t||Lt,flags:{halted:!1,breaking:!1,continuing:!1,returning:!1,async:!1}}}function Nt(e){if(!e)return Pt();if(e.locals instanceof Map&&e.globals instanceof Map&&e.flags)return e;const t=Pt(e.me instanceof Element?e.me:null);return void 0!==e.it&&(t.it=e.it),void 0!==e.you&&(t.you=e.you),void 0!==e.result&&(t.result=e.result),void 0!==e.event&&Object.assign(t,{event:e.event}),t}class It{constructor(){this.sources=new Map,this.subscriptions=new Map,this.nextId=1}register(e,t){const r=e.toLowerCase();this.sources.has(r)&&console.warn("[EventSourceRegistry] Overwriting existing event source: "+e),this.sources.set(r,t)}unregister(e){const t=e.toLowerCase(),r=this.sources.get(t);if(r){for(const[e,r]of this.subscriptions.entries())r.source===t&&(r.unsubscribe(),this.subscriptions.delete(e));return r.destroy?.(),this.sources.delete(t)}return!1}get(e){return this.sources.get(e.toLowerCase())}has(e){return this.sources.has(e.toLowerCase())}subscribe(e,t,r){const n=this.get(e);if(!n)return void console.warn("[EventSourceRegistry] Unknown event source: "+e);n.initialize?.();const s=n.subscribe(t,r);return this.subscriptions.set(s.id,s),s}unsubscribe(e){const t=this.subscriptions.get(e);return!!t&&(t.unsubscribe(),this.subscriptions.delete(e))}getSourceNames(){return Array.from(this.sources.keys())}getSubscriptions(){return Array.from(this.subscriptions.values())}findSourceForEvent(e){for(const[t,r]of this.sources.entries())if(r.supports?.(e)??r.supportedEvents?.includes(e))return t}generateId(){return`sub_${this.nextId++}_${Date.now().toString(36)}`}destroy(){for(const e of this.subscriptions.values())e.unsubscribe();this.subscriptions.clear();for(const e of this.sources.values())e.destroy?.();this.sources.clear()}}class Rt{constructor(){this.providers=new Map,this.globalProviders=new Map}register(e,t,r){const n=e.toLowerCase();this.providers.set(n,"function"==typeof t?{name:n,provide:t,cache:r?.cache??!0,description:r?.description,dependencies:r?.dependencies}:t)}registerGlobal(e,t,r){const n=e.toLowerCase();this.globalProviders.set(n,"function"==typeof t?{name:n,provide:t,cache:r?.cache??!0,description:r?.description,dependencies:r?.dependencies}:t)}unregister(e){return this.providers.delete(e.toLowerCase())}unregisterGlobal(e){return this.globalProviders.delete(e.toLowerCase())}get(e){const t=e.toLowerCase();return this.providers.get(t)??this.globalProviders.get(t)}has(e){const t=e.toLowerCase();return this.providers.has(t)||this.globalProviders.has(t)}async resolve(e,t,r){const n=this.get(e);if(!n)return;const s="__provider_"+n.name;if(n.cache&&r?.has(s))return r.get(s);if(n.dependencies)for(const e of n.dependencies)await this.resolve(e,t,r);const i=await n.provide(t);return n.cache&&r&&r.set(s,i),i}resolveSync(e,t,r){const n=this.get(e);if(!n)return;const s="__provider_"+n.name;if(n.cache&&r?.has(s))return r.get(s);const i=n.provide(t);if(i instanceof Promise)throw Error(`Context provider '${e}' is async. Use resolve() instead of resolveSync().`);return n.cache&&r&&r.set(s,i),i}enhance(e){const t=this,r=new Map;return new Proxy(e,{get(e,n,s){if("string"==typeof n&&t.get(n))try{return t.resolveSync(n,e,r)}catch{return t.resolve(n,e,r)}return Reflect.get(e,n,s)},has:(e,r)=>!("string"!=typeof r||!t.has(r))||Reflect.has(e,r)})}async resolveAll(e){const t=new Map,r={},n=[...this.globalProviders.entries(),...this.providers.entries()];for(const[s,i]of n)try{r[s]=await this.resolve(s,e,t)}catch(e){console.warn(`[ContextProviderRegistry] Failed to resolve '${s}':`,e),r[s]=void 0}return r}getProviderNames(){return[...new Set([...this.globalProviders.keys(),...this.providers.keys()])]}clear(){this.providers.clear(),this.globalProviders.clear()}}const jt=new class{constructor(e={}){this.types=new Map,this.coercionCache=new Map,this.config={strictMode:!1,cacheCoercions:!0,...e},this.registerBuiltinTypes()}register(e){this.types.has(e.name)&&console.warn(`ExpressionTypeRegistry: Overwriting existing type '${e.name}'`),this.types.set(e.name,e)}get(e){return this.types.get(e)}has(e){return this.types.has(e)}getTypeNames(){return Array.from(this.types.keys())}inferType(e){for(const[t,r]of this.types)if(r.isType(e))return t;return"Unknown"}getHyperScriptType(e){const t=this.inferType(e),r=this.types.get(t);return r?.hyperscriptType??"unknown"}coerce(e,t,r){const n=this.types.get(t);if(!n){if(this.config.strictMode)throw Error("Unknown target type: "+t);return null}if(n.isType(e))return e;if(this.config.cacheCoercions){const r=`${this.inferType(e)}:${t}:${JSON.stringify(e)}`;if(this.coercionCache.has(r))return this.coercionCache.get(r)}const s=this.inferType(e),i=n.coerceFrom?.[s];if(i){const n=i(e,r);if(this.config.cacheCoercions&&null!==n){const r=`${s}:${t}:${JSON.stringify(e)}`;this.coercionCache.set(r,n)}return n}return n.defaultValue}canCoerce(e,t){const r=this.types.get(t);if(!r)return!1;if(r.isType(e))return!0;const n=this.inferType(e);return void 0!==r.coerceFrom?.[n]}getCoercionInfo(e,t){const r=this.types.get(t);return r&&(e===t||r.coerceFrom?.[e])?{possible:!0,direct:!0}:{possible:!1,direct:!1}}clearCache(){this.coercionCache.clear()}getStats(){return{typeCount:this.types.size,cacheSize:this.coercionCache.size,typeNames:this.getTypeNames()}}registerBuiltinTypes(){this.register({name:"String",hyperscriptType:"string",tsType:"string",isType:e=>"string"==typeof e,defaultValue:"",description:"Text string value",examples:["hello","world",""],coerceFrom:{Number:e=>e+"",Boolean:e=>e+"",Null:()=>"",Undefined:()=>"",Array:e=>Array.isArray(e)?e.join(", "):null,Object:e=>{try{return JSON.stringify(e)}catch{return e+""}},Element:e=>e instanceof Element?e.textContent??e.outerHTML:null}}),this.register({name:"Number",hyperscriptType:"number",tsType:"number",isType:e=>"number"==typeof e&&!isNaN(e),defaultValue:0,description:"Numeric value (integer or float)",examples:[0,1,3.14,-42],coerceFrom:{String:e=>{const t=parseFloat(e);return isNaN(t)?null:t},Boolean:e=>e?1:0,Null:()=>0,Undefined:()=>null}}),this.register({name:"Boolean",hyperscriptType:"boolean",tsType:"boolean",isType:e=>"boolean"==typeof e,defaultValue:!1,description:"True or false value",examples:[!0,!1],coerceFrom:{String:e=>{const t=e.toLowerCase().trim();return"true"===t||"yes"===t||"1"===t||"false"!==t&&"no"!==t&&"0"!==t&&""!==t&&t.length>0},Number:e=>0!==e,Null:()=>!1,Undefined:()=>!1,Array:e=>!!Array.isArray(e)&&e.length>0,Element:e=>e instanceof Element,ElementList:e=>Array.isArray(e)&&e.length>0}}),this.register({name:"Element",hyperscriptType:"element",tsType:"Element | HTMLElement",isType:e=>e instanceof Element,defaultValue:null,description:"DOM Element",coerceFrom:{String:(e,t)=>{const r=e;if(r.startsWith("#")||r.startsWith(".")||r.match(/^[\w-]+$/))try{return document.querySelector(r)}catch{return null}return null},ElementList:e=>Array.isArray(e)&&e.length>0?e[0]:null,NodeList:e=>e.length>0?e[0]:null}}),this.register({name:"ElementList",hyperscriptType:"element-list",tsType:"Element[]",isType:e=>Array.isArray(e)&&e.length>0&&e.every(e=>e instanceof Element),defaultValue:[],description:"Array of DOM Elements",coerceFrom:{Element:e=>e instanceof Element?[e]:[],NodeList:e=>Array.from(e),String:e=>{try{return Array.from(document.querySelectorAll(e))}catch{return[]}},Array:e=>{const t=e;return t.every(e=>e instanceof Element)?t:[]}}}),this.register({name:"Array",hyperscriptType:"array",tsType:"unknown[]",isType:e=>Array.isArray(e),defaultValue:[],description:"Array of values",coerceFrom:{String:e=>{const t=e;try{const e=JSON.parse(t);if(Array.isArray(e))return e}catch{}return t.split(",").map(e=>e.trim())},ElementList:e=>e,NodeList:e=>Array.from(e),Object:e=>Object.values(e)}}),this.register({name:"Object",hyperscriptType:"object",tsType:"Record<string, unknown>",isType:e=>!("object"!=typeof e||null===e||Array.isArray(e)||e instanceof Element),defaultValue:{},description:"Plain JavaScript object",coerceFrom:{String:e=>{try{const t=JSON.parse(e);if("object"==typeof t&&null!==t&&!Array.isArray(t))return t}catch{}return null},Array:e=>{const t={};return e.forEach((e,r)=>{t[r+""]=e}),t}}}),this.register({name:"Null",hyperscriptType:"null",tsType:"null",isType:e=>null===e,defaultValue:null,description:"Null value"}),this.register({name:"Undefined",hyperscriptType:"undefined",tsType:"undefined",isType:e=>void 0===e,defaultValue:void 0,description:"Undefined value"}),this.register({name:"Function",hyperscriptType:"function",tsType:"Function",isType:e=>"function"==typeof e,defaultValue:null,description:"JavaScript function"}),this.register({name:"Event",hyperscriptType:"event",tsType:"Event",isType:e=>e instanceof Event,defaultValue:null,description:"DOM Event"}),this.register({name:"NodeList",hyperscriptType:"element-list",tsType:"NodeList",isType:e=>e instanceof NodeList,defaultValue:null,description:"DOM NodeList (typically from querySelectorAll)",coerceFrom:{Array:e=>null}}),this.register({name:"Unknown",hyperscriptType:"unknown",tsType:"unknown",isType:e=>!0,defaultValue:null,description:"Unknown/any value type"})}};function _t(e){const t=jt.get("String");return t?t.isType(e):"string"==typeof e}function qt(e){const t=jt.get("Number");return t?t.isType(e):"number"==typeof e}function Mt(e){const t=jt.get("Boolean");return t?t.isType(e):"boolean"==typeof e}function $t(e){const t=jt.get("Object");return t?t.isType(e):"object"==typeof e&&null!==e}function Vt(e){const t=jt.get("Function");return t?t.isType(e):"function"==typeof e}function Dt(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType&&"style"in e}function Bt(e){return e instanceof Element}const Ft=new Set(["disabled","readonly","required","checked","selected","hidden","open","autofocus","autoplay","controls","loop","muted","multiple","reversed","defer","async","novalidate","formnovalidate","ismap"]);function zt(e,t){return Ft.has(t.toLowerCase())?e.hasAttribute(t):e.getAttribute(t)}const Ht={id:e=>e.id,classname:e=>e.className,class:e=>e.className,tagname:e=>e.tagName.toLowerCase(),innertext:e=>e.textContent?.trim(),innerHTML:e=>e.innerHTML,outerhtml:e=>e.outerHTML,value:e=>function(e){if(null===e||"object"!=typeof e||!("tagName"in e))return!1;const t=e.tagName;return"INPUT"===t||"SELECT"===t||"TEXTAREA"===t}(e)?e.value:void 0,checked:e=>function(e){return null!==e&&"object"==typeof e&&"tagName"in e&&"INPUT"===e.tagName}(e)?e.checked:void 0,disabled:e=>"disabled"in e?e.disabled:void 0,selected:e=>function(e){return null!=e&&"object"==typeof e&&"tagName"in e&&"OPTION"===e.tagName}(e)?e.selected:void 0,tabindex:e=>Dt(e)?e.tabIndex:void 0,hidden:e=>Dt(e)?e.hidden:void 0,style:e=>getComputedStyle(e),children:e=>Array.from(e.children),parent:e=>e.parentElement,firstchild:e=>e.firstElementChild,lastchild:e=>e.lastElementChild,nextsibling:e=>e.nextElementSibling,previoussibling:e=>e.previousElementSibling,values:e=>function(e){if(e instanceof HTMLFormElement)return new FormData(e);const t=new FormData;return e.querySelectorAll("input, select, textarea").forEach(e=>{const r=e.getAttribute("name");r&&"value"in e&&t.append(r,e.value)}),t}(e)};function Ut(e,t){if(t.startsWith("computed-")){const r=t.slice(9);return function(e){return e instanceof HTMLElement}(e)?getComputedStyle(e).getPropertyValue(r):void 0}if(t.startsWith("@"))return zt(e,t.slice(1));const r=Ht[t.toLowerCase()];if(r)return r(e);if(function(e,t){return e.hasAttribute(t)}(e,t))return zt(e,t);const n=e[t];return Vt(n)?n.bind(e):n}function Wt(e){if("string"==typeof e)return e;if(e&&"object"==typeof e){if("string"==typeof e.name)return e.name;if("string"==typeof e.value)return e.value}return e}function Jt(e){return e.me?.ownerDocument??("undefined"!=typeof document?document:null)}function Kt(e,t){return t.locals?.has(e)?t.locals.get(e):t.globals?.has(e)?t.globals.get(e):t.variables?.has(e)?t.variables.get(e):"me"===e?t.me:"it"===e?t.it:"result"===e?t.result:void 0}async function Yt(e,t){if(e.includes(".")){const r=e.split(".");let n=Kt(r[0],t);for(let e=1;r.length>e&&null!=n;e++)n=n[r[e]];return n}return Kt(e,t)}async function Gt(e,t){if(ge(`RESOLVE: Looking for '${e}' in context`,{hasInLocals:t.locals.has(e),localsKeys:Array.from(t.locals.keys()),value:t.locals.get(e)}),t.locals.has(e)){const r=t.locals.get(e);return ge(`RESOLVE: Found '${e}' in locals:`,r),r}if(t.globals&&t.globals.has(e)){const r=t.globals.get(e);return ge(`RESOLVE: Found '${e}' in globals:`,r),r}if(t.variables&&t.variables.has(e)){const r=t.variables.get(e);return ge(`RESOLVE: Found '${e}' in variables (legacy):`,r),r}const r=Number(e);if(!isNaN(r))return r;if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1);if(e.includes(".")){const r=e.split("."),n=r[0];let s=null;if(t.locals.has(n)?s=t.locals.get(n):t.globals&&t.globals.has(n)?s=t.globals.get(n):t.variables&&t.variables.has(n)&&(s=t.variables.get(n)),null!=s){for(let e=1;r.length>e;e++){if(null==s)return void ge(`RESOLVE: Property access failed at '${r[e-1]}'`);s=s[r[e]]}return ge(`RESOLVE: Property access '${e}' =`,s),s}}return e}async function Xt(e,t){ge("EVAL: Evaluating expression:",e);const r=e.match(/^(.+?)\s*\?(?![\.\[])\s*(.+?)\s*:\s*(.+)$/);if(r){const[,e,n,s]=r;ge("EVAL: Parsed ternary:",{conditionExpr:e,trueExpr:n,falseExpr:s});const i=await Gt(e.trim(),t);if(ge("EVAL: Ternary condition value:",i),i){const e=await Gt(n.trim(),t);return ge("EVAL: Ternary returned true branch:",e),e}{const e=await Gt(s.trim(),t);return ge("EVAL: Ternary returned false branch:",e),e}}const n=e.match(/^([a-zA-Z_$][a-zA-Z0-9_$]*|\d+(?:\.\d+)?)\s*([\+\-\*\/\%])\s*([a-zA-Z_$][a-zA-Z0-9_$]*|\d+(?:\.\d+)?)$/);if(n){const[,e,r,s]=n;ge("EVAL: Parsed arithmetic:",{left:e,operator:r,right:s});const i=await Gt(e.trim(),t),a=await Gt(s.trim(),t);ge("EVAL: Resolved values:",{leftValue:i,rightValue:a});const o=Number(i),l=Number(a);if(!isNaN(o)&&!isNaN(l)){let e;switch(r){case"+":e=o+l;break;case"-":e=o-l;break;case"*":e=o*l;break;case"/":e=o/l;break;case"%":e=o%l;break;default:e=o}return ge("EVAL: Arithmetic result:",e),e}}const s=await Gt(e.trim(),t);return ge("EVAL: Fallback result:",s),s}function Zt(e){if(Array.isArray(e)&&1===e.length&&(e=e[0]),null!==e&&"object"==typeof e&&"string"==typeof e.textContent){const t=e.value??e.textContent;if(null!=t){const e=(t+"").trim();if(""===e)return 0;const r=parseFloat(e);return isNaN(r)?e:r}return 0}return e}async function Qt(e,t,r,n,s){try{const i=s(await n(e.object,r));if(null==i)throw Error("Cannot call method on null or undefined");const a=Wt(e.property);if(!a||"string"!=typeof a)throw Error("Invalid method name: "+a);const o=i[a];if("function"!=typeof o)throw Error(`Property "${a}" is not a function on ${i.constructor?.name||typeof i}`);const l=await Promise.all(t.map(e=>n(e,r)));return o.apply(i,l)}catch(e){if(e instanceof Error)throw e;throw Error("Failed to evaluate method call: "+e)}}class er{constructor(){this.expressionRegistry=new Map}registerCategory(e){Object.entries(e).forEach(([e,t])=>{this.expressionRegistry.set(e,t)})}unwrapSelectorResult(e){if(e instanceof NodeList&&e.length>0)return e[0];if(Array.isArray(e)&&e.length>0){const t=e[0];return"index"in e&&"input"in e?e:t instanceof Element||t instanceof Node?t:e}return e}async evaluate(e,t){if(!e)return ge("EVALUATOR: Received null/undefined node, returning null"),null;if(!e.type)throw console.error("EVALUATOR: Node missing type property:",e),Error("Node missing type property: "+JSON.stringify(e));switch(e.type){case"identifier":return this.evaluateIdentifier(e,t);case"literal":return this.evaluateLiteral(e,t);case"string":return e.value??"";case"memberExpression":return this.evaluateMemberExpression(e,t);case"binaryExpression":return this.evaluateBinaryExpression(e,t);case"unaryExpression":return this.evaluateUnaryExpression(e,t);case"callExpression":return this.evaluateCallExpression(e,t);case"selector":return this.evaluateSelector(e,t);case"dollarExpression":return this.evaluateDollarExpression(e,t);case"possessiveExpression":return this.evaluatePossessiveExpression(e,t);case"templateLiteral":return this.evaluateTemplateLiteral(e,t);case"arrayLiteral":return this.evaluateArrayLiteral(e,t);case"objectLiteral":return this.evaluateObjectLiteral(e,t);case"conditionalExpression":return this.evaluateConditionalExpression(e,t);case"cssSelector":return this.evaluateCSSSelector(e,t);case"propertyAccess":return this.evaluatePropertyAccess(e,t);case"propertyOfExpression":return this.evaluatePropertyOfExpression(e,t);case"contextReference":return this.evaluateContextReference(e,t);case"queryReference":return this.evaluateQueryReference(e,t);case"idSelector":return this.evaluateIdSelector(e,t);case"attributeAccess":return this.evaluateAttributeAccess(e,t);default:throw Error("Unsupported AST node type for evaluation: "+e.type)}}async evaluateWithResult(e,t){try{return At(await this.evaluate(e,t))}catch(e){if(e instanceof Error){const t=e;if(t.isHalt||"HALT_EXECUTION"===t.message)return St({type:"halt"});if(t.isExit||"EXIT_COMMAND"===t.message)return St({type:"exit",returnValue:t.returnValue});if(t.isBreak)return St({type:"break"});if(t.isContinue)return St({type:"continue"});if(t.isReturn)return St({type:"return",returnValue:t.returnValue})}throw e}}async evaluateArrayLiteral(e,t){const r=e.elements||[],n=[];for(const e of r){const r=await this.evaluate(e,t);n.push(r)}return n}async evaluateObjectLiteral(e,t){const r=e.properties||[],n={};for(const e of r){let r;r="identifier"===e.key.type?e.key.name:"literal"===e.key.type?e.key.value+"":await this.evaluate(e.key,t)+"";const s=await this.evaluate(e.value,t);n[r]=s}return n}async evaluateConditionalExpression(e,t){return await this.evaluate(e.test,t)?this.evaluate(e.consequent,t):e.alternate?this.evaluate(e.alternate,t):void 0}async evaluateTemplateLiteral(e,t){return async function(e,t){let r=e.value||"";ge("TEMPLATE LITERAL: Evaluating",{template:r,node:e});const n=/\$([a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*)/g,s=[];let i;for(;null!==(i=n.exec(r));)"{"!==r[i.index+1]&&s.push({match:i[0],varName:i[1],index:i.index});for(let e=s.length-1;e>=0;e--){const{match:n,varName:i,index:a}=s[e],o=await Yt(i,t);ge(`TEMPLATE: $${i} resolved to`,o),r=r.slice(0,a)+((o??"")+"")+r.slice(a+n.length)}let a="",o=0;for(;r.length>o;){const e=r.indexOf("${",o);if(-1===e){a+=r.slice(o);break}a+=r.slice(o,e);let n=1,s=e+2;for(;r.length>s&&n>0;)"{"===r[s]&&n++,"}"===r[s]&&n--,n>0&&s++;if(0!==n)throw Error("Unterminated template expression in: "+r);const i=r.slice(e+2,s);let l;ge("TEMPLATE: Evaluating expression:",i);const c=i.trim();t.locals.has(c)?(l=t.locals.get(c),ge(`TEMPLATE: Found in locals: ${c} =`,l)):t.globals&&t.globals.has(c)?(l=t.globals.get(c),ge(`TEMPLATE: Found in globals: ${c} =`,l)):t.variables&&t.variables.has(c)?(l=t.variables.get(c),ge(`TEMPLATE: Found in variables (legacy): ${c} =`,l)):(l=await Xt(i,t),ge(`TEMPLATE: Evaluated expression "${i}" =`,l)),a+=l+"",o=s+1}return a}(e,t)}async evaluateSimpleExpression(e,t){return Xt(e,t)}async resolveValue(e,t){return Gt(e,t)}async evaluateIdentifier(e,t){const{name:r,scope:n}=e;if("me"===r||"my"===r||"I"===r)return t.me;if("you"===r||"your"===r)return t.you;if("it"===r||"its"===r)return t.it;if("result"===r)return t.result;if("event"===r)return t.event;const s=this.expressionRegistry.get(r);return s?s.evaluate(t):"local"===n?t.locals?.has(r)?t.locals.get(r):void 0:"global"===n?t.globals?.has(r)?t.globals.get(r):"undefined"!=typeof window&&r in window?window[r]:void 0:t.locals?.has(r)?t.locals.get(r):t.globals?.has(r)?t.globals.get(r):t.variables?.has(r)?t.variables.get(r):"undefined"!=typeof globalThis&&r in globalThis?globalThis[r]:"undefined"!=typeof window&&r in window?window[r]:void 0}async evaluateLiteral(e,t){return e.value}async evaluateContextReference(e,t){const{contextType:r}=e;switch(r){case"me":return t.me;case"it":return t.result;case"you":return t.you;case"event":return t.event;case"body":return t.meta?.ownerDocument?.body||document?.body;case"detail":return t.event?.detail;case"target":return t.you||t.event?.target;case"sender":return t.event?.target;default:return t.locals&&t.locals.has(r)?t.locals.get(r):void ge("Unknown context reference type: "+r)}}async evaluateMemberExpression(e,t){const{object:r,property:n,computed:s}=e;if("identifier"===r.type&&["add","remove"].includes(r.name)){const e=r.name,s=Wt(n);if(!t.me)throw Error('Context element "me" is null');return void("add"===e?t.me.classList.add(s):"remove"===e&&t.me.classList.remove(s))}let i=await this.evaluate(r,t);if(s)return i[await this.evaluate(n,t)];{const e=Wt(n);if(Array.isArray(i)&&"string"==typeof e&&("length"===e||e in Array.prototype)||(i=this.unwrapSelectorResult(i)),"string"==typeof e){if(e.startsWith("computed-")){const t=e.substring(9);return i&&"undefined"!=typeof window&&i instanceof Element?window.getComputedStyle(i).getPropertyValue(t):void 0}if(e.startsWith("@")){const t=e.substring(1);return i&&"function"==typeof i.getAttribute?zt(i,t):void 0}if(i&&i instanceof Element){if("previous"===e||"prev"===e)return i.previousElementSibling;if("next"===e)return i.nextElementSibling}}const t=i?.[e];return"function"==typeof t?t.bind(i):t}}coerceArithmeticOperand(e){return Zt(e)}async evaluateBinaryExpression(e,t){return async function(e,t,r,n,s){const{operator:i,left:a,right:o}=e;if("in"===i&&"selector"===a.type){let e=a.value;e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());const s=n(await r(o,t));if(!s||"function"!=typeof s.querySelector)throw Error(`'in' operator requires a DOM element as the right operand (got: ${typeof s})`);const i=s.querySelectorAll(e);return Array.from(i)}if("in"===i&&"queryReference"===a.type){let e=a.selector;e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());const s=n(await r(o,t));if(!s||"function"!=typeof s.querySelector)throw Error(`'in' operator requires a DOM element as the right operand (got: ${typeof s})`);const i=s.querySelectorAll(e);return Array.from(i)}if("in"===i){let e=null,s=null;if("positionalExpression"===a.type){e=a.operator;const n=a.argument;"cssSelector"===n?.type?s=n.selector:"selector"===n?.type?s=n.value:"classSelector"===n?.type?s="."+n.className:"idSelector"===n?.type?s="#"+n.id:n&&(s=await r(n,t)+"")}else if("memberExpression"!==a.type||"identifier"!==a.object?.type||"first"!==a.object.name&&"last"!==a.object.name){if("callExpression"===a.type&&"identifier"===a.callee?.type&&("first"===a.callee.name||"last"===a.callee.name)){e=a.callee.name;const n=a.arguments?.[0];"selector"===n?.type?s=n.value:"cssSelector"===n?.type?s=n.selector:"classSelector"===n?.type?s="."+n.className:"idSelector"===n?.type?s="#"+n.id:n&&(s=await r(n,t)+"")}}else e=a.object.name,"identifier"===a.property?.type&&a.property.name&&(s="."+a.property.name);if(e&&s){const i=n(await r(o,t));if(!i||"function"!=typeof i.querySelectorAll)return;const a=i.querySelectorAll(s),l=Array.from(a);return"first"===e?l.length>0?l[0]:void 0:"last"===e?l.length>0?l[l.length-1]:void 0:l}}if("matches"===i&&("selector"===o.type||"cssSelector"===o.type||"classSelector"===o.type)){const e=await r(a,t),n=o.value||o.selector;if(e&&"function"==typeof e.matches)try{return e.matches(n)}catch{return!1}return!1}const l=await r(a,t),c=await r(o,t);if("has"===i||"have"===i){if(l instanceof Element){if("cssSelector"===o.type&&"class"===o.selectorType||"selector"===o.type&&o.value?.startsWith(".")){const e=o.selector?.slice(1)||o.value?.slice(1)||"";return l.classList.contains(e)}if("attributeAccess"===o.type||"attributeRef"===o.type){const e=o.attributeName||o.name||o.value?.replace(/^@/,"")||"";return l.hasAttribute(e)}if("cssSelector"===o.type&&"attribute"===o.selectorType){const e=(o.selector||o.value||"").replace(/^@/,"");return l.hasAttribute(e)}if("cssSelector"===o.type&&"id"===o.selectorType||"idSelector"===o.type){const e=(o.selector||o.value||"").replace(/^#/,"");return null!==l.querySelector("#"+CSS.escape(e))}if("selector"===o.type||"queryReference"===o.type){let e=o.value||o.selector||"";e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());try{return null!==l.querySelector(e)}catch{return!1}}if("cssSelector"===o.type){const e=o.selector||"";try{return null!==l.querySelector(e)}catch{return!1}}}return Array.isArray(l)?l.includes(c):"string"==typeof l&&l.includes(c+"")}switch(i){case">":case"is greater than":return l>c;case"<":case"is less than":return c>l;case">=":case"is greater than or equal to":return l>=c;case"<=":case"is less than or equal to":return c>=l;case"==":case"equals":case"is equal to":return l==c;case"===":case"is really equal to":case"really equals":return l===c;case"!=":case"is not equal to":return l!=c;case"!==":case"is not really equal to":return l!==c;case"+":{const e=Zt(l),r=Zt(c);if("string"==typeof e||"string"==typeof r){const n=s.get("stringConcatenation");if(n){ge("Using string concatenation for:",{leftValue:e,rightValue:r});const s=await n.evaluate(t,{left:e,right:r});return s.success?s.value:e+r}}else{const n=s.get("addition");if(n){ge("Using numeric addition for:",{leftValue:e,rightValue:r});const s=await n.evaluate(t,{left:e,right:r});return s.success?s.value:e+r}}return e+r}case"-":return Zt(l)-Zt(c);case"*":return Zt(l)*Zt(c);case"/":return Zt(l)/Zt(c);case"%":case"mod":return Zt(l)%Zt(c);case"as":const e="string"==typeof c?c:"identifier"===o.type?o.name:"literal"===o.type?o.value:c+"",r=s.get("as");return r?r.evaluate(t,l,e):l;case"&&":case"and":return l&&c;case"||":case"or":return l||c;case"is":return l===c;case"is not":return l!==c;case"is a":case"is an":switch("identifier"===o.type?o.name.toLowerCase():(c+"").toLowerCase()){case"string":return"string"==typeof l;case"number":return"number"==typeof l;case"boolean":return"boolean"==typeof l;case"object":return"object"==typeof l&&null!==l;case"array":return Array.isArray(l);case"function":return"function"==typeof l;case"null":return null===l;case"undefined":return void 0===l;default:const e="identifier"===o.type?o.name:c+"";return null!=l&&l.constructor?.name===e}case"is not a":case"is not an":switch("identifier"===o.type?o.name.toLowerCase():(c+"").toLowerCase()){case"string":return"string"!=typeof l;case"number":return"number"!=typeof l;case"boolean":return"boolean"!=typeof l;case"object":return!("object"==typeof l&&null!==l);case"array":return!Array.isArray(l);case"function":return"function"!=typeof l;case"null":return null!==l;case"undefined":return void 0!==l;default:const e="identifier"===o.type?o.name:c+"";return!(null!=l&&l.constructor?.name===e)}case"=":if("identifier"===a.type){const e=a.name;return"result"===e?t.result=c:"it"===e?t.it=c:"you"===e?t.you=c:t.locals.set(e,c),c}throw Error("Left side of assignment must be an identifier");case"contains":case"include":case"includes":return Array.isArray(l)?l.includes(c):"string"==typeof l?l.includes(c+""):!(!l||"function"!=typeof l.matches)&&l.matches(c+"");case"match":case"matches":if(l&&"function"==typeof l.matches){const e="string"==typeof c?c:c+"";try{return l.matches(e)}catch{return!1}}return!1;case"in":const n="string"==typeof l?l:l+"",u=c;if(!u||"function"!=typeof u.querySelector){if(Array.isArray(u))return u.includes(l);if("object"==typeof u&&null!==u)return n in u;throw Error(`'in' operator requires a DOM element, array, or object as the right operand (got: ${typeof u})`)}return u.querySelector(n);case" ":return"string"==typeof l&&"string"==typeof c?{command:l,selector:c}:"identifier"===a.type&&"selector"===o.type?{command:a.name,selector:o.value}:c;default:throw Error(`Unsupported binary operator: "${i}" (length: ${i.length})`)}}(e,t,this.evaluate.bind(this),this.unwrapSelectorResult.bind(this),this.expressionRegistry,this.evaluateSelector.bind(this))}async evaluateUnaryExpression(e,t){const{operator:r,argument:n}=e,s=await this.evaluate(n,t);switch(r){case"not":case"!":const e=this.expressionRegistry.get("not");return e?e.evaluate(t,s):!s;case"no":const n=this.expressionRegistry.get("no");return!!n&&n.evaluate(t,s);case"some":return null!=s&&("string"==typeof s||Array.isArray(s)||s instanceof NodeList||s instanceof HTMLCollection?s.length>0:"object"!=typeof s||Object.keys(s).length>0);case"exists":const i=this.expressionRegistry.get("exists");return i?i.evaluate(t,s):null!=s;case"does not exist":const a=this.expressionRegistry.get("doesNotExist");return a?a.evaluate(t,s):null==s;case"-":return-s;case"+":return+s;default:throw Error("Unsupported unary operator: "+r)}}async evaluateCallExpression(e,t){return async function(e,t,r,n,s,i){const{callee:a,arguments:o,isConstructor:l}=e;if(l){const e=a.name,n=t.globals?.get(e)||window[e];if("function"==typeof n)return new n(...await Promise.all(o.map(e=>r(e,t))));throw Error("Unknown constructor: "+e)}if("memberExpression"===a.type||"propertyAccess"===a.type)return Qt(a,o,t,r,n);const c=a.name||a,u=s.get(c);if(u){const e=["first","last","random","at"],n=["closest","previous","next"].includes(c),s=e.includes(c),a=await Promise.all(o.map(e=>n&&e&&"selector"===e.type&&"string"==typeof e.value?e.value:n&&e&&"identifier"===e.type&&"string"==typeof e.name?e.name:s&&e&&"selector"===e.type&&"string"==typeof e.value?i(e,t):r(e,t)));return u.evaluate(t,...a)}const d=t.globals?.get(c)||window[c];if("function"==typeof d)return d(...await Promise.all(o.map(e=>r(e,t))));throw Error("Unknown function: "+c)}(e,t,this.evaluate.bind(this),this.unwrapSelectorResult.bind(this),this.expressionRegistry,this.evaluateSelector.bind(this))}async evaluateMethodCall(e,t,r){return Qt(e,t,r,this.evaluate.bind(this),this.unwrapSelectorResult.bind(this))}async evaluateSelector(e,t){return function(e,t){let r=e.value;r.startsWith("<")&&r.endsWith("/>")&&(r=r.slice(1,-2).trim());const n=Jt(t);if(!n)return[];const s=n.querySelectorAll(r);return Array.from(s).filter(e=>e&&"object"==typeof e&&1===e.nodeType&&"string"==typeof e.tagName)}(e,t)}evaluateAttributeAccess(e,t){return t.me&&"function"==typeof t.me.getAttribute?zt(t.me,e.attributeName):"@"+e.attributeName}getAvailableExpressions(){return Array.from(this.expressionRegistry.keys())}async evaluateDollarExpression(e,t){const r=await this.evaluate(e.expression,t);if("identifier"===e.expression.type){const r=e.expression.name;return/^\d+$/.test(r)?r:t.locals?.has(r)?t.locals.get(r):"me"===r&&t.me?t.me:"you"===r&&t.you?t.you:"it"===r&&t.it?t.it:"result"===r&&t.result?t.result:"undefined"!=typeof window&&"window"===r?window:t.globals?.has(r)?t.globals.get(r):void 0}return r}async evaluatePossessiveExpression(e,t){const{object:r,property:n}=e,s=this.unwrapSelectorResult(await this.evaluate(r,t));if(!s)return;const i=Wt(n);return"string"==typeof i&&Bt(s)?Ut(s,i):s[i]}hasExpression(e){return this.expressionRegistry.has(e)}async evaluateCSSSelector(e,t){return function(e,t){let r=e.selector;r.startsWith("<")&&r.endsWith("/>")&&(r=r.slice(1,-2).trim());const n=Jt(t);if(!n)return"id"===e.selectorType?null:[];if("id"===e.selectorType){const e=r.startsWith("#")?r.slice(1):r;return n.getElementById(e)}if("class"===e.selectorType){const e=r.replace(/:/g,"\\:"),t=n.querySelectorAll(e);return Array.from(t).filter(e=>e instanceof HTMLElement)}const s=n.querySelectorAll(r);return Array.from(s).filter(e=>e instanceof HTMLElement)}(e,t)}async evaluateIdSelector(e,t){return function(e,t){const r=Jt(t);if(!r)return null;const n=e.value.startsWith("#")?e.value.slice(1):e.value;return r.getElementById(n)}(e,t)}async evaluateQueryReference(e,t){return function(e,t){let r=e.selector;r.startsWith("<")&&r.endsWith("/>")&&(r=r.slice(1,-2).trim());const n=Jt(t);if(!n)return[];try{return n.querySelectorAll(r)}catch{return n.createDocumentFragment().childNodes}}(e,t)}async evaluatePropertyAccess(e,t){const r=await this.evaluate(e.object,t),n=e.property;if(null==r)throw Error(`Cannot access property "${n.name||n.value}" of ${r}`);const s=n.name||n.value;if(!s)throw Error("Property name must be an identifier");try{let e;return e=Bt(r)?Ut(r,s):r[s],"function"==typeof e?e.bind(r):e}catch(e){throw Error(`Error accessing property "${s}": ${e}`)}}async evaluatePropertyOfExpression(e,t){const r=e.property,n=r.name||r.value;if(!n)throw Error('Property name must be an identifier in "the X of Y" pattern');const s=this.unwrapSelectorResult(await this.evaluate(e.target,t));if(null==s)throw Error(`Cannot access property "${n}" of ${s}`);try{let e;return e=Bt(s)?Ut(s,n):s[n],"function"==typeof e?e.bind(s):e}catch(e){throw Error(`Failed to access property "${n}" on target: ${e}`)}}}const tr={1:"one",2:"two",3:"three",4:"four",5:"five"};function rr(e,t,r,n){if(e.length!==t){return`${r} requires exactly ${s=t,tr[s]??s+""} argument${1===t?"":"s"}${n?` (${n})`:""}`}var s;return null}function nr(e,t,r,n){return"string"!=typeof e[t]?`${r} ${n||"argument "+(t+1)} must be a string`:null}function sr(e,t,r){return rr(e,1,t,r)??nr(e,0,t,r)}function ir(e,t){return rr(e,2,t,"left, right")}function ar(){return null}function or(e,t,r,n){return e.length>t?`${r} expression takes at most ${1===t?"one":t+""} argument${1===t?"":"s"}${n?` (${n})`:""}`:null}function lr(e,t,r,n,s){return t>e.length||e.length>r?`${n} requires ${t}-${r} arguments${s?` (${s})`:""}`:null}function cr(e,t,r,n=[]){return{type:e,message:t,suggestions:n,...r&&{path:r}}}const ur="undefined"!=typeof process&&"production"===process.env.NODE_ENV||"undefined"!=typeof process&&"true"===process.env.HYPERFIXI_SKIP_VALIDATION||"undefined"!=typeof globalThis&&"true"===globalThis.HYPERFIXI_SKIP_VALIDATION;let dr;function mr(){return dr({validate:e=>({success:!0,data:e})})}function pr(e,t){if(ur)return mr();const r=dr({validate:r=>{if("object"!=typeof r||null===r||Array.isArray(r))return{success:!1,error:cr("type-mismatch","Expected object, received "+typeof r)};const n=r,s={};if(t?.strict){const t=Object.keys(e),r=Object.keys(n).filter(e=>!t.includes(e));if(r.length>0)return{success:!1,error:cr("runtime-error","Unexpected properties: "+r.join(", "))}}for(const[t,r]of Object.entries(e)){const e=n[t];if(!(t in n)&&!r._isOptional)return{success:!1,error:cr("missing-argument",`Required field "${t}" is missing`,t)};const i=r.validate(e);if(!i.success)return{success:!1,error:cr("validation-error",i.error.message||`Field "${t}" validation failed`,i.error.path?`${t}.${i.error.path}`:t)};void 0!==i.data&&(s[t]=i.data)}return{success:!0,data:s}}});return r.strict=()=>pr(e,{strict:!0}),r}dr=function(e){return e.describe||(e.describe=function(e){return this.description=e,this}),e.safeParse||(e.safeParse=function(e){const t=this.validate(e);return t.success?{success:!0,data:t.data}:{success:!1,error:{errors:t.error?[t.error]:[]}}}),e.parse||(e.parse=function(e){const t=this.validate(e);if(t.success&&void 0!==t.data)return t.data;throw Error(t.error?.message||"Validation failed")}),e.optional||(e.optional=function(){const e=this.validate.bind(this),t={...this,_isOptional:!0,validate:t=>null==t?{success:!0,data:void 0}:e(t)};return dr(t)}),e.min||(e.min=function(e){const t=this.validate.bind(this),r={...this,validate:r=>{const n=t(r);return n.success&&"string"==typeof n.data&&e>n.data.length?{success:!1,error:cr("runtime-error",`String must be at least ${e} characters long`)}:n}};return dr(r)}),e.max||(e.max=function(e){const t=this.validate.bind(this),r={...this,validate:r=>{const n=t(r);return n.success&&"string"==typeof n.data&&n.data.length>e?{success:!1,error:cr("runtime-error",`String must be at most ${e} characters long`)}:n}};return dr(r)}),e.default||(e.default=function(e){const t=this.validate.bind(this),r={...this,_defaultValue:e,_hasDefault:!0,validate:r=>void 0===r?{success:!0,data:e}:t(r)};return dr(r)}),e.rest||(e.rest=function(e){return this}),e.refine||(e.refine=function(e,t){const r=this.validate.bind(this),n={...this,validate:n=>{const s=r(n);return s.success?e(s.data)?s:{success:!1,error:cr("runtime-error",t||"Refinement validation failed")}:s}};return dr(n)}),new Proxy(e,{get:(e,t,r)=>t in e||"string"!=typeof t||t.startsWith("_")||"constructor"===t||"validate"===t||"then"===t?Reflect.get(e,t,r):function(...e){return r}})};const hr=e=>function(e={}){return ur?mr():dr({validate:t=>e.optional&&null==t?{success:!0,data:void 0}:"string"!=typeof t?{success:!1,error:cr("type-mismatch","Expected string, received "+typeof t)}:void 0!==e.minLength&&e.minLength>t.length?{success:!1,error:cr("runtime-error",`String must be at least ${e.minLength} characters long`)}:void 0!==e.maxLength&&t.length>e.maxLength?{success:!1,error:cr("runtime-error",`String must be at most ${e.maxLength} characters long`)}:e.pattern&&!e.pattern.test(t)?e.pattern.source.startsWith("^")&&e.pattern.source.endsWith("$")?{success:!1,error:cr("runtime-error",`Expected "${e.pattern.source.slice(1,-1)}", received "${t}"`)}:{success:!1,error:cr("missing-argument","String does not match required pattern")}:{success:!0,data:t},...e.description&&{description:e.description}})}(e||{}),fr=e=>function(e={}){return ur?mr():dr({validate:t=>{const r=Number(t);return isNaN(r)?{success:!1,error:cr("type-mismatch","Expected number, received "+typeof t)}:void 0!==e.min&&e.min>r?{success:!1,error:cr("runtime-error","Number must be at least "+e.min)}:void 0!==e.max&&r>e.max?{success:!1,error:cr("runtime-error","Number must be at most "+e.max)}:{success:!0,data:r}}})}(e||{}),yr=()=>ur?mr():dr({validate:e=>"boolean"!=typeof e?{success:!1,error:cr("type-mismatch","Expected boolean, received "+typeof e)}:{success:!0,data:e}}),gr=e=>pr(e),vr=e=>function(e){return ur?mr():dr({validate:t=>{if(!Array.isArray(t))return{success:!1,error:cr("type-mismatch","Expected array, received "+typeof t)};if(t.length!==e.length)return{success:!1,error:cr("runtime-error",`Expected tuple of length ${e.length}, received length ${t.length}`)};const r=[];for(let n=0;e.length>n;n++){const s=e[n].validate(t[n]);if(!s.success)return{success:!1,error:cr("runtime-error",s.error.message,s.error.path?`${n}.${s.error.path}`:""+n)};r.push(s.data)}return{success:!0,data:r}}})}(e),br=()=>mr(),wr=()=>mr(),kr=()=>function(e,t="Custom validation failed"){return ur?mr():dr({validate:r=>e(r)?{success:!0,data:r}:{success:!1,error:cr("runtime-error",t)}})}(e=>void 0===e,"Expected undefined");class Er{trackPerformance(e,t,r,n){e.evaluationHistory&&e.evaluationHistory.push({expressionName:this.name,category:this.category,input:t,output:r.success?r.value:r.error,timestamp:n,duration:Date.now()-n,success:r.success})}trackSimple(e,t,r,n=(r?"success":"error")){e.evaluationHistory&&e.evaluationHistory.push({expressionName:this.name,category:this.category,input:"operation",output:n,timestamp:t,duration:Date.now()-t,success:r})}toBoolean(e){return!(!1===e||0===e||0n===e||""===e||null==e||qt(e)&&isNaN(e))}success(e,t){return{success:!0,value:e,type:t}}failure(e,t,r,n,s=[]){return{success:!1,error:{name:e,type:t,message:r,code:n,suggestions:s}}}validationSuccess(){return{isValid:!0,errors:[],suggestions:[]}}validationFailure(e,t,r=[]){return{isValid:!1,errors:[{type:e,message:t,suggestions:r}],suggestions:r}}isElement(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType&&"tagName"in e&&"string"==typeof e.tagName}inferType(e){return null===e?"null":void 0===e?"undefined":this.isElement(e)?"element":Array.isArray(e)?"array":$t(e)?"object":typeof e}inferEvaluationType(e){return void 0===e?"Undefined":null===e?"Null":_t(e)?"String":qt(e)?"Number":Mt(e)?"Boolean":Array.isArray(e)?"Array":this.isElement(e)?"Element":"Object"}normalizeCollection(e){return Array.isArray(e)?e:e instanceof NodeList?Array.from(e):_t(e)?e.split(""):null==e?[]:$t(e)&&Symbol.iterator in e?Array.from(e):[]}toNumber(e){if(qt(e)&&Number.isFinite(e))return e;if(_t(e)){const t=Number(e);return Number.isFinite(t)?t:null}return Mt(e)?e?1:0:null}}class xr extends Er{constructor(){super(...arguments),this.name="me",this.category="Reference",this.syntax="me",this.description="References the current element in the execution context",this.inputSchema=kr(),this.outputType="Element",this.metadata={category:"Reference",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=e.me,s=this.isElement(n)?n:null,i=this.success(s,"element");return this.trackPerformance(e,t,i,r),i}catch(n){const s=this.failure("MeExpressionError","runtime-error",n instanceof Error?n.message:'Failed to evaluate "me"',"ME_EVALUATION_FAILED",["Ensure element context is properly set",'Check if "me" is available in current scope']);return this.trackPerformance(e,t,s,r),s}}validate(e){return void 0!==e?this.validationFailure("type-mismatch",'"me" expression takes no arguments',['Use "me" without any parameters']):this.validationSuccess()}}class Cr extends Er{constructor(){super(...arguments),this.name="you",this.category="Reference",this.syntax="you",this.description="References the target element (usually event target or command target)",this.inputSchema=kr(),this.outputType="Element",this.metadata={category:"Reference",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=e.you,s=this.isElement(n)?n:null,i=this.success(s,"element");return this.trackPerformance(e,t,i,r),i}catch(n){const s=this.failure("YouExpressionError","runtime-error",n instanceof Error?n.message:'Failed to evaluate "you"',"YOU_EVALUATION_FAILED",["Ensure target element is available in context",'Check if "you" is set by event or command']);return this.trackPerformance(e,t,s,r),s}}validate(e){return void 0!==e?this.validationFailure("type-mismatch",'"you" expression takes no arguments',['Use "you" without any parameters']):this.validationSuccess()}}class Ar extends Er{constructor(){super(...arguments),this.name="it",this.category="Reference",this.syntax="it",this.description="References the current context variable (result of previous operation or loop item)",this.inputSchema=kr(),this.outputType="Any",this.metadata={category:"Reference",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=e.it,s={success:!0,value:n,type:this.inferType(n)};return this.trackPerformance(e,t,s,r),s}catch(n){const s=this.failure("ItExpressionError","runtime-error",n instanceof Error?n.message:'Failed to evaluate "it"',"IT_EVALUATION_FAILED",['Ensure "it" is set by previous operation',"Check if context variable is available"]);return this.trackPerformance(e,t,s,r),s}}validate(e){return void 0!==e?this.validationFailure("type-mismatch",'"it" expression takes no arguments',['Use "it" without any parameters']):this.validationSuccess()}}const Sr=gr({selector:hr().min(1),single:yr().optional().default(!1)});class Tr extends Er{constructor(){super(...arguments),this.name="css-selector",this.category="Reference",this.syntax="<selector/> or <selector/> (single)",this.description="Queries DOM elements using CSS selectors with validation",this.inputSchema=Sr,this.outputType="ElementList",this.metadata={category:"Reference",complexity:"medium"}}async evaluate(e,t){const r=Date.now();try{if(!this.isValidCSSSelector(t.selector)){const n=this.failure("CSSSelectorError","invalid-argument",`Invalid CSS selector: "${t.selector}"`,"INVALID_CSS_SELECTOR",["Check selector syntax","Use valid CSS selector patterns like .class, #id, tag[attr]","Avoid special characters that need escaping"]);return this.trackPerformance(e,t,n,r),n}let n;if(t.single)n=document.querySelector(t.selector);else{const e=Array.from(document.querySelectorAll(t.selector));n=e.length>0?e:null}const s={success:!0,value:n,type:Array.isArray(n)?"element-list":"element"};return this.trackPerformance(e,t,s,r),s}catch(n){const s=this.failure("CSSSelectorError","runtime-error",n instanceof Error?n.message:"CSS selector evaluation failed","CSS_SELECTOR_EVALUATION_FAILED",["Check if selector is valid CSS","Ensure DOM is ready when query executes","Verify elements exist in document"]);return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);if(!t.success)return{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid input: "+e.message,suggestions:this.getValidationSuggestion(e.code??"unknown")}))??[],suggestions:["Provide valid CSS selector string","Check selector syntax"]};const{selector:r}=t.data;return this.isValidCSSSelector(r)?this.validationSuccess():this.validationFailure("syntax-error",`Invalid CSS selector syntax: "${r}"`,["Use .class for class selectors","Use #id for ID selectors","Use tag for element selectors","Use [attr] for attribute selectors"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Ensure input matches expected format"])}}isValidCSSSelector(e){try{return document.querySelector(e),!0}catch{return!1}}getValidationSuggestion(e){return[{too_small:"CSS selector cannot be empty",invalid_type:"Selector must be a string",required:"CSS selector is required"}[e]||"Check input format and types"]}}new xr,new Cr,new Ar,new Tr;const Or={name:"me",category:"Reference",evaluatesTo:"Element",evaluate:async e=>e.me instanceof HTMLElement?e.me:null,validate:ar},Lr={name:"you",category:"Reference",evaluatesTo:"Element",evaluate:async e=>e.you instanceof HTMLElement?e.you:null,validate:ar},Pr={name:"it",category:"Reference",evaluatesTo:"Any",evaluate:async e=>e.it,validate:ar},Nr={name:"its",category:"Reference",evaluatesTo:"Any",evaluate:async e=>e.it,validate:ar},Ir={name:"result",category:"Reference",evaluatesTo:"Any",evaluate:async e=>e.result,validate:ar},Rr={name:"querySelector",category:"Reference",evaluatesTo:"Element",async evaluate(e,...t){const[r]=t;if("string"!=typeof r)throw Error("querySelector requires a string selector");return document.querySelector(r)},validate:e=>sr(e,"querySelector","selector")},jr={name:"querySelectorAll",category:"Reference",evaluatesTo:"Array",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("querySelectorAll requires a string selector");const n=document.querySelectorAll(r);return Array.from(n)},validate:e=>sr(e,"querySelectorAll","selector")},_r={name:"getElementById",category:"Reference",evaluatesTo:"Element",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("getElementById requires a string ID");return document.getElementById(r)},validate:e=>sr(e,"getElementById","ID")},qr={name:"getElementsByClassName",category:"Reference",evaluatesTo:"Array",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("getElementsByClassName requires a string class name");const n=document.getElementsByClassName(r);return Array.from(n)},validate:e=>sr(e,"getElementsByClassName","className")},Mr={name:"closest",category:"Reference",evaluatesTo:"Element",async evaluate(e,...t){let r=t[0];if(r&&"object"==typeof r&&"type"in r){const e=r;"identifier"===e.type&&e.name?r=e.name:"literal"===e.type&&"string"==typeof e.value&&(r=e.value)}if("string"!=typeof r)throw Error("closest requires a string selector");return e.me?e.me.closest(r):null},validate(e){if(1!==e.length)return"closest requires exactly 1 argument (selector)";const t=e[0];return"string"==typeof t||t&&"object"==typeof t&&"type"in t&&("identifier"===t.type||"literal"===t.type)?null:"closest selector must be a string or identifier"}},$r={name:"parent",category:"Reference",evaluatesTo:"Element",evaluate:async e=>e.me?e.me.parentElement:null,validate:ar},Vr={name:"window",category:"Reference",evaluatesTo:"Object",evaluate:async e=>window,validate:ar},Dr={name:"document",category:"Reference",evaluatesTo:"Object",evaluate:async e=>document,validate:ar},Br={name:"elementWithSelector",category:"Reference",evaluatesTo:"Array",async evaluate(e,...t){const r=t[0];if("string"!=typeof r)throw Error("Selector must be a string");const n=document.querySelectorAll(r);return Array.from(n)},validate:e=>sr(e,"elementWithSelector","selector")},Fr={name:"styleRef",category:"Reference",evaluatesTo:"String",async evaluate(e,...t){const r=t[0],n=t[1];if("string"!=typeof r)throw Error("StyleRef requires a string property name");const s=n||e.me;if(s&&s instanceof HTMLElement){if(r.startsWith("computed-")){const e=r.substring(9);return getComputedStyle(s).getPropertyValue(e)||""}return s.style.getPropertyValue(r)||void 0}},validate:e=>lr(e,1,2,"styleRef","property, optional element")??nr(e,0,"styleRef","property")??(2===e.length&&e[1]&&"object"!=typeof e[1]?"styleRef element must be an HTMLElement":null)},zr={name:"possessiveStyleRef",category:"Reference",evaluatesTo:"String",async evaluate(e,...t){const r=t[0],n=t[1];if("string"!=typeof r||"string"!=typeof n)throw Error("Possessive styleRef requires possessor and property strings");let s=null;if("my"===r&&e.me?s=e.me instanceof HTMLElement?e.me:null:"its"===r&&e.it&&(s=e.it instanceof HTMLElement?e.it:null),s){if(n.startsWith("computed-")){const e=n.substring(9);return getComputedStyle(s).getPropertyValue(e)||""}return s.style.getPropertyValue(n)||void 0}},validate:e=>rr(e,2,"possessiveStyleRef","possessor, property")??nr(e,0,"possessiveStyleRef","possessor")??nr(e,1,"possessiveStyleRef","property")},Hr={name:"ofStyleRef",category:"Reference",evaluatesTo:"String",async evaluate(e,...t){const r=t[0],n=t[1];if("string"!=typeof r||"string"!=typeof n)throw Error("Of styleRef requires property and reference strings");let s=null;if("me"===n&&e.me?s=e.me instanceof HTMLElement?e.me:null:"it"===n&&e.it&&(s=e.it instanceof HTMLElement?e.it:null),s){if(r.startsWith("computed-")){const e=r.substring(9);return getComputedStyle(s).getPropertyValue(e)||""}return s.style.getPropertyValue(r)||void 0}},validate:e=>rr(e,2,"ofStyleRef","property, reference")??nr(e,0,"ofStyleRef","property")??nr(e,1,"ofStyleRef","reference")},Ur={me:Or,you:Lr,it:Pr,its:Nr,result:Ir,querySelector:Rr,querySelectorAll:jr,getElementById:_r,getElementsByClassName:qr,closest:Mr,parent:$r,window:Vr,document:Dr,elementWithSelector:Br,styleRef:Fr,possessiveStyleRef:zr,ofStyleRef:Hr};var Wr=Object.freeze({__proto__:null,CSSSelectorExpression:Tr,ItExpression:Ar,MeExpression:xr,YouExpression:Cr,classExpression:qr,closestExpression:Mr,createItExpression:function(){return new Ar},createMeExpression:function(){return new xr},createYouExpression:function(){return new Cr},documentExpression:Dr,elementWithSelectorExpression:Br,idExpression:_r,itExpression:Pr,itsExpression:Nr,meExpression:Or,ofStyleRefExpression:Hr,parentExpression:$r,possessiveStyleRefExpression:zr,querySelectorAllExpression:jr,querySelectorExpression:Rr,referencesExpressions:Ur,resultExpression:Ir,styleRefExpression:Fr,windowExpression:Vr,youExpression:Lr});class Jr{constructor(e=100,t=5e3){this.maxSize=e,this.ttl=t,this.cache=new Map,this.accessOrder=new Map,this.accessCounter=0}get(e){const t=this.cache.get(e);if(t){if(Date.now()-t.timestamp<=this.ttl)return t.accessCount++,this.accessOrder.set(e,++this.accessCounter),t.result;this.delete(e)}}set(e,t){this.maxSize>this.cache.size||this.cache.has(e)||this.evictLRU();const r={result:t,timestamp:Date.now(),accessCount:1};this.cache.set(e,r),this.accessOrder.set(e,++this.accessCounter)}delete(e){return this.accessOrder.delete(e),this.cache.delete(e)}clear(){this.cache.clear(),this.accessOrder.clear(),this.accessCounter=0}size(){return this.cache.size}evictLRU(){let e,t=1/0;for(const[r,n]of this.accessOrder)t>n&&(t=n,e=r);void 0!==e&&this.delete(e)}getStats(){const e=Array.from(this.cache.values()),t=Date.now();return{size:this.cache.size,maxSize:this.maxSize,hitRate:e.length>0?e.filter(e=>e.accessCount>1).length/e.length:0,avgAge:e.length>0?e.reduce((e,r)=>e+(t-r.timestamp),0)/e.length:0,totalAccesses:e.reduce((e,t)=>e+t.accessCount,0)}}}const Kr=new class{constructor(){this.domQueryCache=new Jr(200,3e3),this.exprResultCache=new Jr(500,2e3),this.cssMatchCache=new Jr(100,5e3),this.formValueCache=new Jr(50,1e3),this.hits=0,this.misses=0}querySelector(e){const t="querySelector:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=document.querySelector(e);return this.domQueryCache.set(t,n),n}querySelectorAll(e){const t="querySelectorAll:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=Array.from(document.querySelectorAll(e));return this.domQueryCache.set(t,n),n}getElementById(e){const t="getElementById:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=document.getElementById(e);return this.domQueryCache.set(t,n),n}getElementsByClassName(e){const t="getElementsByClassName:"+e,r=this.domQueryCache.get(t);if(void 0!==r)return this.hits++,r;this.misses++;const n=Array.from(document.getElementsByClassName(e));return this.domQueryCache.set(t,n),n}matches(e,t){const r=`matches:${this.getElementCacheKey(e)}:${t}`,n=this.cssMatchCache.get(r);if(void 0!==n)return this.hits++,n;this.misses++;const s=e.matches(t);return this.cssMatchCache.set(r,s),s}getExpressionResult(e){const t=this.exprResultCache.get(e);if(void 0!==t)return this.hits++,t;this.misses++}setExpressionResult(e,t){this.exprResultCache.set(e,t)}getFormValue(e){const t=this.getElementCacheKey(e),r=this.formValueCache.get("formValue:"+t);if(void 0!==r)return this.hits++,r;this.misses++}setFormValue(e,t){const r=this.getElementCacheKey(e);this.formValueCache.set("formValue:"+r,t)}invalidateElementCache(e){const t=this.getElementCacheKey(e);for(const e of[this.domQueryCache,this.cssMatchCache,this.formValueCache])for(const r of Array.from(e.cache.keys()))"string"==typeof r&&r.includes(t)&&e.delete(r)}invalidateAll(){this.domQueryCache.clear(),this.exprResultCache.clear(),this.cssMatchCache.clear(),this.formValueCache.clear(),this.hits=0,this.misses=0}getElementCacheKey(e){if(e.id)return"#"+e.id;const t=Array.from(e.classList).sort().join("."),r=this.getElementPosition(e);return`${e.tagName.toLowerCase()}${t?"."+t:""}@${r}`}getElementPosition(e){return""+Array.from(e.parentElement?.children||[]).indexOf(e)}getPerformanceStats(){const e=this.hits+this.misses;return{hits:this.hits,misses:this.misses,hitRate:Math.round(100*(e>0?this.hits/e*100:0))/100,domQueryCache:this.domQueryCache.getStats(),exprResultCache:this.exprResultCache.getStats(),cssMatchCache:this.cssMatchCache.getStats(),formValueCache:this.formValueCache.getStats()}}cleanup(){const e=Date.now();[this.domQueryCache,this.exprResultCache,this.cssMatchCache,this.formValueCache].forEach(t=>{Array.from(t.cache.entries()).forEach(([r,n])=>{e-n.timestamp>t.ttl&&t.delete(r)})})}};"undefined"!=typeof window&&setInterval(()=>{Kr.cleanup()},1e4);const Yr=new class{constructor(){this.metrics={tokenizationTime:0,evaluationTime:0,cacheHitRate:0,memoryUsage:0,domOperations:0},this.startTimes=new Map}startTimer(e){this.startTimes.set(e,performance.now())}endTimer(e){const t=this.startTimes.get(e);if(t){const r=performance.now()-t;return this.startTimes.delete(e),r}return 0}recordTokenization(e){this.metrics.tokenizationTime+=e}recordEvaluation(e){this.metrics.evaluationTime+=e}updateCacheMetrics(){const e=Kr.getPerformanceStats();this.metrics.cacheHitRate=e.hitRate}getMetrics(){return this.updateCacheMetrics(),{...this.metrics}}reset(){this.metrics={tokenizationTime:0,evaluationTime:0,cacheHitRate:0,memoryUsage:0,domOperations:0}}};function Gr(){Kr.cleanup(),Yr.getMetrics().memoryUsage>52428800&&Yr.reset()}let Xr=null;function Zr(e,t){if("number"==typeof e){if(!Number.isFinite(e))throw Error(`${t} must be a finite number, got ${e}`);return e}if("string"==typeof e){const r=e.trim();if(""===r)return 0;const n=parseFloat(r);if(isNaN(n))throw Error(`${t} cannot be converted to number: "${e}"`);return n}if("boolean"==typeof e)return e?1:0;if(null==e)return 0;if("object"==typeof e&&null!==e){if(Array.isArray(e)&&1===e.length){const r=e[0];if(Array.isArray(r))throw Error(t+" is a nested array, cannot convert to number");return Zr(r,t)}if("string"==typeof e.textContent||"value"in e){const t=e.value??e.textContent;if(null!=t){const e=(t+"").trim();if(""===e)return 0;const r=parseFloat(e);if(!isNaN(r))return r}}const r=e.valueOf();if("number"==typeof r&&Number.isFinite(r))return r}throw Error(`${t} cannot be converted to number: ${typeof e}`)}function Qr(e){if("number"==typeof e)return Number.isFinite(e)?e:null;if("string"==typeof e){const t=e.trim();if(""===t)return 0;const r=parseFloat(t);return isNaN(r)?null:r}return"boolean"==typeof e?e?1:0:null==e?0:null}function en(e,t,r){if("==="===r)return e===t;if("!=="===r)return e!==t;if(null==e||null==t)return function(e,t,r){if(null==e&&null==t)switch(r){case"==":case">=":case"<=":return!0;default:return!1}switch(r){case"==":case">":case"<":case">=":case"<=":default:return!1;case"!=":return!0}}(e,t,r);const[n,s]=function(e,t){if("number"==typeof e&&"number"==typeof t)return[e,t];if("string"==typeof e&&"string"==typeof t){const r=parseFloat(e),n=parseFloat(t);return isNaN(r)||isNaN(n)?[e,t]:[r,n]}const r=Qr(e),n=Qr(t);return null!==r&&null!==n?[r,n]:[e+"",t+""]}(e,t);switch(r){case">":return n>s;case"<":return s>n;case">=":return n>=s;case"<=":return s>=n;case"==":return tn(e,t);case"!=":return!tn(e,t);default:return!1}}function tn(e,t){if(e===t)return!0;if(typeof e==typeof t)return("string"==typeof e||"number"==typeof e)&&e===t;if("number"==typeof e&&"string"==typeof t){const r=parseFloat(t);return!isNaN(r)&&e===r}if("string"==typeof e&&"number"==typeof t){const r=parseFloat(e);return!isNaN(r)&&r===t}return"boolean"==typeof e?tn(e?1:0,t):"boolean"==typeof t?tn(e,t?1:0):e+""==t+""}function rn(e,t,r,n,s,i=!0,a){return t&&"object"==typeof t&&"evaluationHistory"in t&&Array.isArray(t.evaluationHistory)&&t.evaluationHistory.push({expressionName:e.name,category:e.category,input:r,output:n,timestamp:s,duration:Date.now()-s,success:i,...void 0!==a&&{error:a}}),n}"undefined"!=typeof window&&function(e=3e4){Xr&&clearInterval(Xr),Xr=setInterval(Gr,e)}();const nn=gr({left:br().describe("Left operand value"),right:br().describe("Right operand value")}).strict(),sn=gr({operand:br().describe("Operand value to negate")}).strict();class an extends Er{constructor(){super(...arguments),this.name="and",this.category="Logical",this.syntax="left and right",this.description="Logical AND operation with comprehensive boolean type coercion",this.inputSchema=nn,this.outputType="Boolean",this.metadata={category:"Logical",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.toBoolean(t.left);if(!s)return this.trackSimple(e,r,!0,"boolean"),this.success(!1,"boolean");const i=this.toBoolean(t.right),a=s&&i;return this.trackSimple(e,r,!0,"boolean"),this.success(a,"boolean")}catch(t){return this.trackSimple(e,r,!1),this.failure("AndExpressionError","runtime-error","Logical AND operation failed: "+(t instanceof Error?t.message:t+""),"AND_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid AND operation input: "+e.message,suggestions:[]}))??[],suggestions:["Provide both left and right operands","Ensure operands are valid values"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}class on extends Er{constructor(){super(...arguments),this.name="or",this.category="Logical",this.syntax="left or right",this.description="Logical OR operation with comprehensive boolean type coercion",this.inputSchema=nn,this.outputType="Boolean",this.metadata={category:"Logical",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.toBoolean(t.left);if(s)return this.trackSimple(e,r,!0,"boolean"),this.success(!0,"boolean");const i=this.toBoolean(t.right),a=s||i;return this.trackSimple(e,r,!0,"boolean"),this.success(a,"boolean")}catch(t){return this.trackSimple(e,r,!1),this.failure("OrExpressionError","runtime-error","Logical OR operation failed: "+(t instanceof Error?t.message:t+""),"OR_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid OR operation input: "+e.message,suggestions:[]}))??[],suggestions:["Provide both left and right operands","Ensure operands are valid values"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}class ln extends Er{constructor(){super(...arguments),this.name="not",this.category="Logical",this.syntax="not operand",this.description="Logical NOT operation with comprehensive boolean type coercion",this.inputSchema=sn,this.outputType="Boolean",this.metadata={category:"Logical",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=!this.toBoolean(t.operand);return this.trackSimple(e,r,!0,"boolean"),this.success(s,"boolean")}catch(t){return this.trackSimple(e,r,!1),this.failure("NotExpressionError","runtime-error","Logical NOT operation failed: "+(t instanceof Error?t.message:t+""),"NOT_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid NOT operation input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a single operand","Ensure operand is a valid value"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}function cn(){return new an}function un(){return new on}function dn(){return new ln}function mn(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType}cn(),un(),dn();const pn=vr([br(),br()]),hn=vr([br(),hr()]),fn={name:"equals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["is","==","equals"],async evaluate(e,t,r){const n=Date.now();try{return rn(this,e,[t,r],t==r,n)}catch(s){throw rn(this,e,[t,r],!1,n,!1,s instanceof Error?s:Error(s+"")),s}},validate:e=>ir(e,"equals"),inputSchema:pn,metadata:{category:"Logical",complexity:"simple",sideEffects:[],dependencies:[],returnTypes:["Boolean"],examples:[{input:"value is 5",description:"Check if value equals 5 using loose equality",expectedOutput:!0,context:{result:5}},{input:'"5" == 5',description:'String "5" equals number 5 with type coercion',expectedOutput:!0}],relatedExpressions:["strictEquals","notEquals"],performance:{averageTime:.001,complexity:"O(1)"}},documentation:{summary:"Compares two values for loose equality, allowing type coercion",parameters:[{name:"left",type:"unknown",description:"Left operand for comparison",optional:!1,examples:["5",'"hello"',"true","null"]},{name:"right",type:"unknown",description:"Right operand for comparison",optional:!1,examples:["5",'"hello"',"true","null"]}],returns:{type:"Boolean",description:"True if values are loosely equal, false otherwise",examples:["true","false"]},examples:[{title:"Basic equality check",code:"if my.value is 10",explanation:"Check if element value equals 10",output:"Boolean result"},{title:"Type coercion",code:'if "5" == 5',explanation:'String "5" equals number 5 with automatic type conversion',output:"true"},{title:"Null checks",code:"if value is null",explanation:"Check if value is null or undefined",output:"Boolean result"}],seeAlso:["strictEquals","notEquals","matches"],tags:["comparison","equality","logic","type-coercion"]}},yn={name:"strictEquals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["==="],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=t===r;return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"strictEquals")},gn={name:"notEquals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["!=","is not","does not equal"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=t!=r;return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"notEquals")},vn={name:"strictNotEquals",category:"Comparison",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["!=="],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=t!==r;return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"strictNotEquals")},bn={name:"lessThan",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:["<","is less than"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=en(t,r,"<");return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"lessThan")},wn={name:"lessThanOrEqual",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:["<=","is less than or equal to"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=en(t,r,"<=");return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"lessThanOrEqual")},kn={name:"greaterThan",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:[">","is greater than"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=en(t,r,">");return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"greaterThan")},En={name:"greaterThanOrEqual",category:"Comparison",evaluatesTo:"Boolean",precedence:12,associativity:"Left",operators:[">=","is greater than or equal to"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=en(t,r,">=");return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"greaterThanOrEqual")},xn={name:"and",category:"Logical",evaluatesTo:"Boolean",precedence:6,associativity:"Left",operators:["and","&&"],async evaluate(e,t,r){const n=Date.now();try{return rn(this,e,[t,r],t&&r,n)}catch(s){throw rn(this,e,[t,r],!1,n,!1,s instanceof Error?s:Error(s+"")),s}},validate:e=>ir(e,"and"),inputSchema:pn,metadata:{category:"Logical",complexity:"simple",sideEffects:[],dependencies:[],returnTypes:["Boolean"],examples:[{input:"true and false",description:"Logical AND of boolean values",expectedOutput:!1},{input:"name and age",description:"Both name and age must be truthy",expectedOutput:!0,context:{variables:new Map([["name","John"],["age",25]])}}],relatedExpressions:["or","not"],performance:{averageTime:.001,complexity:"O(1)"}},documentation:{summary:"Logical AND operation that returns true only if both operands are truthy",parameters:[{name:"left",type:"unknown",description:"Left operand (evaluated for truthiness)",optional:!1,examples:["true","name","5",'"hello"']},{name:"right",type:"unknown",description:"Right operand (evaluated for truthiness)",optional:!1,examples:["false","age","0",'""']}],returns:{type:"Boolean",description:"True if both operands are truthy, false otherwise",examples:["true","false"]},examples:[{title:"Form validation",code:"if name and email",explanation:"Check if both name and email have values",output:"Boolean result"},{title:"Multiple conditions",code:"if age > 18 and hasLicense",explanation:"Combine multiple conditions",output:"Boolean result"},{title:"Short-circuit evaluation",code:"if element and element.value",explanation:"Check element exists before accessing properties",output:"Boolean result"}],seeAlso:["or","not","exists"],tags:["logic","boolean","conditions","validation"]}},Cn={name:"or",category:"Logical",evaluatesTo:"Boolean",precedence:5,associativity:"Left",operators:["or","||"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=t||r;return n&&rn(this,e,[t,r],i,s),i},validate:e=>ir(e,"or")},An={name:"not",category:"Logical",evaluatesTo:"Boolean",precedence:15,associativity:"Right",operators:["not","!"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=!t;return r&&rn(this,e,[t],s,n),s},validate:e=>rr(e,1,"not","operand")},Sn={name:"isEmpty",category:"Logical",evaluatesTo:"Boolean",operators:["is empty","isEmpty"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0;let s;return s=null==t||(_t(t)||Array.isArray(t)||t instanceof NodeList?0===t.length:!(t instanceof Node||t instanceof Element||!$t(t)||0!==Object.keys(t).length)),r&&rn(this,e,[t],s,n),s},validate:e=>rr(e,1,"isEmpty","value")},Tn={name:"no",category:"Logical",evaluatesTo:"Boolean",operators:["no"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0;let s;return s=null==t||!1===t||(Array.isArray(t)||t instanceof NodeList?0===t.length:!(_t(t)||t instanceof Node||t instanceof Element||!$t(t)||0!==Object.keys(t).length)),r&&rn(this,e,[t],s,n),s},validate:e=>rr(e,1,"no","value")},On={name:"isNotEmpty",category:"Logical",evaluatesTo:"Boolean",operators:["is not empty","isNotEmpty"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=!await Sn.evaluate(e,t);return r&&rn(this,e,[t],s,n),s},validate:e=>rr(e,1,"isNotEmpty","value")},Ln={name:"exists",category:"Logical",evaluatesTo:"Boolean",operators:["exists"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=null!=t;return r&&rn(this,e,[t],s,n),s},validate:e=>rr(e,1,"exists","value")},Pn={name:"doesNotExist",category:"Logical",evaluatesTo:"Boolean",operators:["does not exist","doesNotExist"],async evaluate(e,t){const r=e.evaluationHistory,n=r?Date.now():0,s=null==t;return r&&rn(this,e,[t],s,n),s},validate:e=>rr(e,1,"doesNotExist","value")},Nn={name:"contains",category:"Logical",evaluatesTo:"Boolean",operators:["contains","includes","include"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0;let i;if(t&&r){if(mn(t)&&mn(r))return i=t.contains(r),n&&rn(this,e,[t,r],i,s),i;if(_t(t)&&t.match(/^[.#][\w-]+$/)){const a=document.querySelector(t);if(a&&mn(r))return i=a.contains(r),n&&rn(this,e,[t,r],i,s),i;if(a&&_t(r)&&r.match(/^[.#][\w-]+$/)){const o=document.querySelector(r);return i=!!o&&a.contains(o),n&&rn(this,e,[t,r],i,s),i}}if(_t(r)&&r.match(/^[.#][\w-]+$/)&&mn(t)){const a=document.querySelector(r);return i=!!a&&t.contains(a),n&&rn(this,e,[t,r],i,s),i}}return i=_t(t)&&_t(r)||Array.isArray(t)?t.includes(r):"undefined"!=typeof NodeList&&t instanceof NodeList?Array.from(t).includes(r):!(!$t(t)||!_t(r))&&r in t,n&&rn(this,e,[t,r],i,s),i},validate:e=>rr(e,2,"contains","container, value")},In={name:"doesNotContain",category:"Logical",evaluatesTo:"Boolean",operators:["does not contain","doesNotContain","does not include","doesNotInclude"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=!await Nn.evaluate(e,t,r);return n&&rn(this,e,[t,r],i,s),i},validate:e=>rr(e,2,"doesNotContain","container, value")},Rn={name:"startsWith",category:"Logical",evaluatesTo:"Boolean",operators:["starts with","startsWith"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=!(!_t(t)||!_t(r))&&t.startsWith(r);return n&&rn(this,e,[t,r],i,s),i},validate:e=>rr(e,2,"startsWith","str, prefix")},jn={name:"endsWith",category:"Logical",evaluatesTo:"Boolean",operators:["ends with","endsWith"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=!(!_t(t)||!_t(r))&&t.endsWith(r);return n&&rn(this,e,[t,r],i,s),i},validate:e=>rr(e,2,"endsWith","str, suffix")},_n={name:"matches",category:"Logical",evaluatesTo:"Boolean",operators:["matches"],async evaluate(e,t,r){const n=Date.now();try{let s;if(t instanceof Element&&_t(r)){const e=r;if(e.startsWith(".")||e.startsWith("#")||e.startsWith(":")||e.startsWith("[")||/^[a-zA-Z][\w-]*$/.test(e))try{s=function(e,t){return Kr.matches(e,t)}(t,e)}catch(e){s=!1}else s=!1}else if(_t(t)&&_t(r)){const e=t,n=r;try{s=(n.startsWith("/")&&n.endsWith("/")?RegExp(n.slice(1,-1)):RegExp(n)).test(e)}catch(t){s=e.includes(n)}}else s=!1;return rn(this,e,[t,r],s,n)}catch(s){throw rn(this,e,[t,r],!1,n,!1,s instanceof Error?s:Error(s+"")),s}},validate:e=>rr(e,2,"matches","element, selector"),inputSchema:hn,metadata:{category:"Logical",complexity:"medium",sideEffects:["dom-query"],dependencies:[],returnTypes:["Boolean"],examples:[{input:'element matches ".active"',description:"Check if element has active class",expectedOutput:!0},{input:'text matches "/^hello/"',description:'Check if text starts with "hello" using regex',expectedOutput:!0,context:{variables:new Map([["text","hello world"]])}}],relatedExpressions:["contains","startsWith","endsWith"],performance:{averageTime:.5,complexity:"O(n)"}},documentation:{summary:"Tests if element matches CSS selector or string matches regex pattern",parameters:[{name:"element",type:"Element | string",description:"DOM element or string to test",optional:!1,examples:["<div>",'"hello world"',"me","target"]},{name:"selector",type:"string",description:"CSS selector or regex pattern to match against",optional:!1,examples:['".active"','"#navbar"','"/^hello/"','"\\\\d+"']}],returns:{type:"Boolean",description:"True if element matches selector/pattern",examples:["true","false"]},examples:[{title:"CSS class matching",code:'if me matches ".active"',explanation:'Check if current element has "active" class',output:"Boolean result"},{title:"Attribute matching",code:'if target matches "[data-role=\\"button\\"]"',explanation:"Check if element has specific data attribute",output:"Boolean result"},{title:"Regex pattern matching",code:'if email matches "/^[^@]+@[^@]+\\\\.[^@]+$/"',explanation:"Validate email format with regex",output:"Boolean result"},{title:"Complex CSS selector",code:'if element matches ".card:hover .button"',explanation:"Match complex CSS selector with pseudo-classes",output:"Boolean result"}],seeAlso:["contains","startsWith","endsWith","querySelector"],tags:["pattern","css","regex","validation","dom"]}},qn={name:"has",category:"Logical",evaluatesTo:"Boolean",operators:["has","have"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0;let i=!1;if(t instanceof Element&&_t(r)){const e=r;e.startsWith(".")?i=t.classList.contains(e.slice(1)):e.startsWith("[")&&e.endsWith("]")&&(i=t.hasAttribute(e.slice(1,-1)))}return n&&rn(this,e,[t,r],i,s),i},validate:e=>rr(e,2,"has","element, selector")},Mn={name:"doesNotHave",category:"Logical",evaluatesTo:"Boolean",operators:["does not have"],async evaluate(e,t,r){const n=e.evaluationHistory,s=n?Date.now():0,i=!await qn.evaluate(e,t,r);return n&&rn(this,e,[t,r],i,s),i},validate:e=>rr(e,2,"doesNotHave","element, selector")},$n={equals:fn,strictEquals:yn,notEquals:gn,strictNotEquals:vn,lessThan:bn,lessThanOrEqual:wn,greaterThan:kn,greaterThanOrEqual:En,and:xn,or:Cn,not:An,no:Tn,isEmpty:Sn,isNotEmpty:On,exists:Ln,doesNotExist:Pn,contains:Nn,doesNotContain:In,startsWith:Rn,endsWith:jn,matches:_n,has:qn,doesNotHave:Mn};var Vn=Object.freeze({__proto__:null,AndExpression:an,NotExpression:ln,OrExpression:on,andExpression:xn,containsExpression:Nn,createAndExpression:cn,createNotExpression:dn,createOrExpression:un,doesNotContainExpression:In,doesNotExistExpression:Pn,doesNotHaveExpression:Mn,endsWithExpression:jn,equalsExpression:fn,existsExpression:Ln,greaterThanExpression:kn,greaterThanOrEqualExpression:En,hasExpression:qn,isEmptyExpression:Sn,isNotEmptyExpression:On,lessThanExpression:bn,lessThanOrEqualExpression:wn,logicalExpressions:$n,matchesExpression:_n,noExpression:Tn,notEqualsExpression:gn,notExpression:An,orExpression:Cn,startsWithExpression:Rn,strictEqualsExpression:yn,strictNotEqualsExpression:vn});function Dn(e,t,r,n,s="runtime-error"){return{success:!1,error:{name:e+"ConversionError",type:s,message:r,code:t,suggestions:n}}}function Bn(e,t){return{success:!0,value:e,type:t}}function Fn(e,t){return`${e}: ${t instanceof Error?t.message:t+""}`}const zn={Array:(e,t)=>{try{return Array.isArray(e)?Bn(e,"array"):e instanceof NodeList?Bn(Array.from(e),"array"):Bn(null==e?[]:[e],"array")}catch(e){return Dn("Array","ARRAY_CONVERSION_FAILED",Fn("Failed to convert value to Array",e),["Check if value is iterable","Ensure value is not circular reference"])}},String:(e,t)=>{try{return null==e?Bn("","string"):_t(e)?Bn(e,"string"):$t(e)?Bn(JSON.stringify(e),"string"):Bn(e+"","string")}catch(e){return Dn("String","STRING_CONVERSION_FAILED",Fn("Failed to convert value to String",e),["Check if object has circular references","Ensure value is serializable"])}},Boolean:(e,t)=>{try{if(Mt(e))return Bn(e,"boolean");if(null==e)return Bn(!1,"boolean");if(_t(e)){const t=e.toLowerCase().trim();return Bn("false"!==t&&"0"!==t&&""!==t,"boolean")}return qt(e)?Bn(0!==e&&!isNaN(e),"boolean"):Bn(!!e,"boolean")}catch(e){return Dn("Boolean","BOOLEAN_CONVERSION_FAILED",Fn("Failed to convert value to Boolean",e),["Use explicit true/false values","Check for unexpected data types"])}},Number:(e,t)=>{try{if(qt(e))return Bn(e,"number");if(null==e)return Bn(0,"number");const t=Number(e);return isNaN(t)?Dn("Number","INVALID_NUMBER",`Cannot convert "${e}" to a valid number`,["Check if value contains non-numeric characters","Use a valid numeric format"],"invalid-argument"):Bn(t,"number")}catch(e){return Dn("Number","NUMBER_CONVERSION_FAILED",Fn("Failed to convert value to Number",e),["Ensure value is convertible to number","Check for special characters"])}},Int:(e,t)=>{const r=zn.Number(e,t);return r.success?Bn(Math.trunc(r.value),"number"):r},Float:(e,t)=>{const r=zn.Number(e,t);return r.success?Bn(parseFloat(""+r.value),"number"):r},Date:(e,t)=>{try{if(e instanceof Date)return Bn(e,"object");if(null==e)return Bn(new Date(""),"object");if(_t(e)&&/^\d{4}-\d{2}-\d{2}$/.test(e)){const[t,r,n]=e.split("-").map(Number);return Bn(new Date(t,r-1,n),"object")}const t=new Date(e);return isNaN(t.getTime())?Dn("Date","INVALID_DATE",`Cannot convert "${e}" to a valid date`,["Use ISO 8601 format (YYYY-MM-DD)","Check date string format","Ensure date values are valid"],"invalid-argument"):Bn(t,"object")}catch(e){return Dn("Date","DATE_CONVERSION_FAILED",Fn("Failed to convert value to Date",e),["Check date format","Ensure value is a valid date string or timestamp"])}},JSON:(e,t)=>{try{return Bn(JSON.stringify(e),"string")}catch(e){return Dn("JSON","JSON_STRINGIFY_FAILED",Fn("Failed to convert value to JSON",e),["Check for circular references","Ensure all properties are serializable","Remove functions and undefined values"])}},Object:(e,t)=>{try{if($t(e))return Bn(e,"object");if(_t(e))try{return Bn(JSON.parse(e),"object")}catch(e){return Dn("Object","JSON_PARSE_FAILED",Fn("Cannot parse JSON string",e),["Check JSON syntax","Ensure proper escaping of quotes","Validate JSON format"],"syntax-error")}return Bn({},"object")}catch(e){return Dn("Object","OBJECT_CONVERSION_FAILED",Fn("Failed to convert value to Object",e),["Ensure value is valid JSON string or object","Check for syntax errors"])}},Values:(e,t)=>{try{if(e instanceof HTMLFormElement)return Bn(Kn(e),"object");if(e instanceof HTMLElement){const t=e.querySelectorAll("input, select, textarea"),r={};return t.forEach(e=>{const t=e;if(t.name){const e=Yn(t);void 0!==e&&(r[t.name]=e)}}),Bn(r,"object")}return Bn({},"object")}catch(e){return Dn("FormValues","FORM_VALUES_EXTRACTION_FAILED",Fn("Failed to extract form values",e),["Ensure element is a form or contains form inputs","Check form structure","Verify input names are set"])}}},Hn=gr({value:wr(),type:hr().min(1)});class Un extends Er{constructor(){super(...arguments),this.name="as",this.category="Conversion",this.syntax="value as Type",this.description='Converts values between different types using the "as" keyword',this.outputType="Any",this.inputSchema=Hn,this.metadata={category:"Conversion",complexity:"medium",sideEffects:[],dependencies:[],returnTypes:["Any"],examples:[{input:'"123" as Int',description:"Convert string to integer",expectedOutput:123},{input:"form as Values",description:"Extract form values as object",expectedOutput:{name:"John",age:"25"}},{input:"[1,2,3] as JSON",description:"Convert array to JSON string",expectedOutput:"[1,2,3]"},{input:'"2023-12-25" as Date',description:"Parse date string",expectedOutput:new Date(2023,11,25)}],relatedExpressions:["is","Object","Array"],performance:{averageTime:1,complexity:"O(n)"}},this.documentation={summary:'Converts values between different types using the "as" keyword with comprehensive type safety',parameters:[{name:"value",type:"object",description:"The value to convert",optional:!1,examples:['"123"',"form","[1,2,3]","true","null"]},{name:"type",type:"string",description:"Target conversion type",optional:!1,examples:["Int","String","Boolean","Array","JSON","Object","Date","Values","HTML","Fragment"]}],returns:{type:"object",description:"Structured result with converted value or detailed error information",examples:['{ success: true, value: 123, type: "number" }',"{ success: false, error: { ... } }"]},examples:[{title:"String to number conversion",code:"if my.value as Int > 100",explanation:"Convert form input to integer for comparison",output:"Boolean result"},{title:"Form data extraction",code:"put closest <form /> as Values into result",explanation:"Extract all form values as structured object",output:'{ name: "John", age: "25", ... }'},{title:"Array to JSON serialization",code:"put items as JSON into storage",explanation:"Convert array to JSON string for storage",output:'"[1,2,3]"'},{title:"Date parsing with validation",code:"put my.dateInput as Date into event.detail.date",explanation:"Parse date input with automatic validation",output:"Date object or validation error"},{title:"Boolean conversion with smart parsing",code:'if "false" as Boolean then hide else show',explanation:"Parse string boolean values correctly",output:"false (not true like naive conversion)"}],seeAlso:["is","Values","JSON","Array","Object"],tags:["conversion","types","validation","forms","json","parsing"]}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:{name:"AsExpressionValidationError",type:"validation-error",message:n.errors[0]?.message||"Invalid input",code:"VALIDATION_FAILED",suggestions:n.suggestions}};const{value:s,type:i}=t;if(i.startsWith("Fixed")){const n=i.match(/^Fixed:(\d+)$/),a=n?parseInt(n[1],10):2,o=zn.Number(s,e);if(!o.success)return o;const l={success:!0,value:o.value.toFixed(a),type:"string"};return this.trackPerformance(e,t,l,r),l}let a=zn[i];if(a){const n=a(s,e);return this.trackPerformance(e,t,n,r),n}const o={boolean:"Boolean",bool:"Boolean",string:"String",str:"String",number:"Number",num:"Number",int:"Int",integer:"Int",float:"Float",array:"Array",object:"Object",obj:"Object",date:"Date",json:"JSON"}[i.toLowerCase()];if(o&&(a=zn[o],a)){const n=a(s,e);return this.trackPerformance(e,t,n,r),n}const l={success:!1,error:{name:"UnknownConversionTypeError",type:"validation-error",message:"Unknown conversion type: "+i,code:"UNKNOWN_CONVERSION_TYPE",suggestions:["Use supported types: String, Number, Boolean, Array, Object, Date, JSON, Values","Check type spelling and capitalization","See documentation for complete list of conversion types"]}};return this.trackPerformance(e,t,l,r),l}catch(n){const s={success:!1,error:{name:"AsExpressionError",type:"runtime-error",message:"Conversion failed: "+(n instanceof Error?n.message:n+""),code:"CONVERSION_FAILED",suggestions:["Check value and type compatibility","Ensure value is convertible to target type"]}};return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?{isValid:!0,errors:[],suggestions:[]}:{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:e.message,suggestions:["Expected valid input structure, got: "+e.code]}))??[],suggestions:["Provide both value and type parameters","Ensure type is a non-empty string","Check parameter structure: { value: any, type: string }"]}}catch(e){return this.validationFailure("runtime-error","Validation failed",["Check input structure"])}}}const Wn=gr({value:wr(),type:hr().min(1)});new Un,new class extends Er{constructor(){super(...arguments),this.name="is",this.category="Conversion",this.syntax="value is Type",this.description="Checks if a value is of a specific type",this.outputType="Boolean",this.inputSchema=Wn,this.metadata={category:"Conversion",complexity:"simple",sideEffects:[],dependencies:[],returnTypes:["Boolean"],examples:[{input:"42 is number",description:"Check if value is a number",expectedOutput:!0},{input:"null is empty",description:"Check if value is empty/null",expectedOutput:!0},{input:"element is Element",description:"Check if value is DOM element",expectedOutput:!0,context:{element:"<div>...</div>"}}],relatedExpressions:["as","empty","exists"],performance:{averageTime:.1,complexity:"O(1)"}},this.documentation={summary:"Checks if a value is of a specific type with comprehensive type detection",parameters:[{name:"value",type:"object",description:"The value to check",optional:!1,examples:["42","null","element",'"text"',"[]"]},{name:"type",type:"string",description:"Type name to check against",optional:!1,examples:["number","string","boolean","array","object","element","empty","null"]}],returns:{type:"object",description:"Boolean result indicating type match",examples:['{ success: true, value: true, type: "boolean" }']},examples:[{title:"Number validation",code:"if my.age is number then proceed",explanation:"Check if form input is valid number",output:"Boolean result"},{title:"Empty check",code:"if result is empty then show message",explanation:"Check if result is null, undefined, or empty",output:"Boolean result"},{title:"Element validation",code:"if target is element then addClass",explanation:"Ensure target is valid DOM element before manipulation",output:"Boolean result"}],seeAlso:["as","empty","exists","null"],tags:["validation","types","checking","guards"]}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:{name:"IsExpressionValidationError",type:"validation-error",message:n.errors[0]?.message||"Invalid input",code:"VALIDATION_FAILED",suggestions:n.suggestions}};const{value:s,type:i}=t,a=i.toLowerCase();let o;switch(a){case"null":o=null===s;break;case"undefined":o=void 0===s;break;case"string":o=_t(s);break;case"number":o=qt(s)&&!isNaN(s);break;case"boolean":o=Mt(s);break;case"object":o=$t(s);break;case"array":o=Array.isArray(s);break;case"function":o=Vt(s);break;case"date":o=s instanceof Date;break;case"element":o=s instanceof Element;break;case"node":o=s instanceof Node;break;case"node-list":o=s instanceof NodeList;break;case"empty":o=null==s||""===s||Array.isArray(s)&&0===s.length||$t(s)&&0===Object.keys(s).length;break;default:o=s?.constructor?.name?.toLowerCase()===a}const l=this.success(o,"boolean");return this.trackPerformance(e,t,l,r),l}catch(n){const s=this.failure("IsExpressionError","type-mismatch","Type check failed: "+(n instanceof Error?n.message:n+""),"TYPE_CHECK_FAILED",["Check type name spelling","Ensure value is accessible"]);return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:e.message,suggestions:["Expected valid input structure, got: "+e.code]}))??[],suggestions:["Provide both value and type parameters","Ensure type is a non-empty string","Check parameter structure: { value: any, type: string }"]}}catch(e){return this.validationFailure("runtime-error","Validation failed",["Check input structure"])}}};const Jn={Array:e=>Array.isArray(e)?e:e instanceof NodeList?Array.from(e):null==e?[]:[e],String:e=>null==e?"":_t(e)?e:$t(e)?JSON.stringify(e):e+"",Boolean:e=>{if(Mt(e))return e;if(null==e)return!1;if(_t(e)){const t=e.toLowerCase().trim();return"false"!==t&&"0"!==t&&""!==t}return qt(e)?0!==e&&!isNaN(e):!!e},Number:e=>{if(qt(e))return e;if(null==e)return 0;const t=Number(e);return isNaN(t)?0:t},Math:e=>{if(qt(e))return e;if(null==e)return 0;const t=(e+"").trim();if(!t)return 0;try{return function(e){if(e=e.replace(/\s/g,""),!/^[0-9+\-*/().]+$/.test(e))throw Error("Invalid characters in math expression");try{const t=Function(`"use strict"; return (${e})`)();if(!qt(t)||!isFinite(t))throw Error("Expression did not evaluate to a finite number");return t}catch(e){throw Error("Math expression evaluation failed: "+(e instanceof Error?e.message:e+""))}}(t)}catch(e){return console.warn("Math conversion failed:",e),0}},Int:e=>{const t=Jn.Number(e);return Math.trunc(t)},Float:e=>{const t=Jn.Number(e);return parseFloat(""+t)},Date:e=>{if(e instanceof Date)return e;if(null==e)return new Date(NaN);if(_t(e)&&/^\d{4}-\d{2}-\d{2}$/.test(e)){const[t,r,n]=e.split("-").map(Number);return new Date(t,r-1,n)}return new Date(e)},JSON:e=>{try{return JSON.stringify(e)}catch(e){return"{}"}},Object:e=>{if($t(e))return e;if(_t(e))try{return JSON.parse(e)}catch(e){return{}}return{}},Fragment:e=>{_t(e)||(e=Jn.String(e));const t=document.createElement("template");return t.innerHTML=e+"",t.content},HTML:e=>_t(e)?e:e instanceof NodeList?Array.from(e).map(e=>e instanceof Element?e.outerHTML:e.textContent||"").join(""):Array.isArray(e)?e.map(e=>e instanceof Element?e.outerHTML:Jn.String(e)).join(""):e instanceof Element?e.outerHTML:Jn.String(e),Values:(e,t)=>{if(e instanceof HTMLFormElement)return Kn(e);if(e instanceof HTMLElement){const t=e.querySelectorAll("input, select, textarea"),r={};return t.forEach(e=>{e.name&&(r[e.name]=Yn(e))}),r}return{}},"Values:Form":(e,t)=>{const r=Jn.Values(e,t);return""+new URLSearchParams(r)},"Values:JSON":(e,t)=>{const r=Jn.Values(e,t);return JSON.stringify(r)}};function Kn(e){const t={};return e.querySelectorAll("input, select, textarea").forEach(e=>{const r=e;if(r.name){const e=Yn(r);void 0!==e&&(void 0!==t[r.name]?(Array.isArray(t[r.name])||(t[r.name]=[t[r.name]]),t[r.name].push(e)):t[r.name]=e)}}),t}function Yn(e){if(e instanceof HTMLInputElement)switch(e.type){case"checkbox":return e.checked;case"radio":return e.checked?e.value:void 0;case"number":case"range":return e.valueAsNumber;case"date":case"datetime-local":return e.valueAsDate;case"file":return e.files;default:return e.value}return e instanceof HTMLSelectElement&&e.multiple?Array.from(e.selectedOptions).map(e=>e.value):e.value}function Gn(e){const t=e.match(/^Fixed(?::(\d+))?$/);return t?{precision:t[1]?parseInt(t[1],10):2}:{}}const Xn={name:"as",category:"Conversion",evaluatesTo:"Any",precedence:20,associativity:"Left",operators:["as"],async evaluate(e,...t){const[r,n]=t;if("string"!=typeof n)throw Error("Conversion type must be a string");if(n.startsWith("Fixed")){const{precision:e}=Gn(n);return Jn.Number(r).toFixed(e||2)}let s=Jn[n];if(s)return s(r,e);const i={boolean:"Boolean",bool:"Boolean",string:"String",str:"String",number:"Number",num:"Number",int:"Int",integer:"Int",float:"Float",array:"Array",object:"Object",obj:"Object",date:"Date",json:"JSON"}[n.toLowerCase()];return i&&(s=Jn[i],s)?s(r,e):(console.warn("Unknown conversion type: "+n),r)},validate:e=>rr(e,2,"as","value, type")??nr(e,1,"as","conversion type")},Zn={name:"is",category:"Conversion",evaluatesTo:"Boolean",precedence:10,associativity:"Left",operators:["is a","is an"],async evaluate(e,...t){const[r,n]=t;if(!_t(n))throw Error("Type check requires a string type");switch(n.toLowerCase()){case"null":return null===r;case"undefined":return void 0===r;case"string":return _t(r);case"number":return qt(r)&&!isNaN(r);case"boolean":return Mt(r);case"object":return $t(r);case"array":return Array.isArray(r);case"function":return Vt(r);case"date":return r instanceof Date;case"element":return r instanceof Element;case"node":return r instanceof Node;case"nodelist":return r instanceof NodeList;case"empty":return null==r||""===r||Array.isArray(r)&&0===r.length||$t(r)&&0===Object.keys(r).length;default:return r?.constructor?.name?.toLowerCase()===n.toLowerCase()}},validate:e=>rr(e,2,"is","value, type")??nr(e,1,"is","type")},Qn={name:"async",category:"Conversion",evaluatesTo:"Any",precedence:25,associativity:"Right",operators:["async"],evaluate:async(e,t)=>t,validate:e=>rr(e,1,"async","expression")},es={as:Xn,is:Zn,async:Qn};var ts=Object.freeze({__proto__:null,AsExpression:Un,asExpression:Xn,asyncExpression:Qn,conversionExpressions:es,createAsExpression:function(){return new Un},defaultConversions:Jn,getFormValues:function(e){const t=new FormData(e),r={};for(const[e,n]of t.entries())void 0!==r[e]?(Array.isArray(r[e])||(r[e]=[r[e]]),r[e].push(n)):r[e]=n;return r},getFormValuesProcessed:Kn,getInputValue:Yn,isExpression:Zn,parseFixedPrecision:Gn});const rs={String:"string",Number:"number",Boolean:"boolean",Element:"element",ElementList:"element-list",Array:"array",Object:"object",Promise:"promise",Context:"object",Null:"null",Undefined:"undefined",Any:"object"},ns=gr({collection:br().describe("Collection to operate on (array, NodeList, or string)")}).strict(),ss=gr({collection:br().describe("Collection to access"),index:fr().describe("Index position to access")}).strict(),is=gr({collection:br().describe("Collection to select random item from")}).strict();class as extends Er{constructor(){super(...arguments),this.name="first",this.category="Positional",this.syntax="first in collection",this.description="Gets the first element from a collection",this.inputSchema=ns,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection),i=s.length>0?s[0]:void 0,a={success:!0,value:i,type:rs[this.inferEvaluationType(i)]};return this.trackPerformance(e,t,a,r),a}catch(n){const s=this.failure("FirstExpressionError","runtime-error","First operation failed: "+(n instanceof Error?n.message:n+""),"FIRST_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid first input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a collection parameter","Ensure collection is array, NodeList, or string"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}class os extends Er{constructor(){super(...arguments),this.name="last",this.category="Positional",this.syntax="last in collection",this.description="Gets the last element from a collection",this.inputSchema=ns,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection),i=s.length>0?s[s.length-1]:void 0,a={success:!0,value:i,type:rs[this.inferEvaluationType(i)]};return this.trackPerformance(e,t,a,r),a}catch(n){const s=this.failure("LastExpressionError","runtime-error","Last operation failed: "+(n instanceof Error?n.message:n+""),"LAST_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid last input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a collection parameter","Ensure collection is array, NodeList, or string"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}function ls(){return new as}function cs(){return new os}ls(),cs(),new class extends Er{constructor(){super(...arguments),this.name="at",this.category="Positional",this.syntax="collection[index] or collection at index",this.description="Gets element at specific index from a collection",this.inputSchema=ss,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection),i=this.normalizeIndex(t.index,s.length),a=i>=0&&s.length>i?s[i]:void 0,o={success:!0,value:a,type:rs[this.inferEvaluationType(a)]};return this.trackPerformance(e,t,o,r),o}catch(n){const s=this.failure("AtExpressionError","runtime-error","At operation failed: "+(n instanceof Error?n.message:n+""),"AT_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid at input: "+e.message,suggestions:[]}))??[],suggestions:["Provide collection and index parameters","Ensure index is a number"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}normalizeIndex(e,t){return 0>e?t+e:e}},new class extends Er{constructor(){super(...arguments),this.name="random",this.category="Positional",this.syntax="random in collection",this.description="Gets a random element from a collection",this.inputSchema=is,this.outputType="Any",this.metadata={category:"Positional",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return{success:!1,error:n.errors[0]};const s=this.normalizeCollection(t.collection);if(0===s.length){const n={success:!0,value:void 0,type:"undefined"};return this.trackPerformance(e,t,n,r),n}const i=s[this.getSecureRandomIndex(s.length)],a={success:!0,value:i,type:rs[this.inferEvaluationType(i)]};return this.trackPerformance(e,t,a,r),a}catch(n){const s=this.failure("RandomExpressionError","runtime-error","Random operation failed: "+(n instanceof Error?n.message:n+""),"RANDOM_OPERATION_FAILED");return this.trackPerformance(e,t,s,r),s}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():{isValid:!1,errors:t.error?.errors.map(e=>({type:"type-mismatch",message:"Invalid random input: "+e.message,suggestions:[]}))??[],suggestions:["Provide a collection parameter","Ensure collection is array, NodeList, or string"]}}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}getSecureRandomIndex(e){if("undefined"!=typeof crypto&&crypto.getRandomValues){const t=new Uint32Array(1);return crypto.getRandomValues(t),t[0]%e}return Math.floor(Math.random()*e)}};const us={name:"first",category:"Reference",evaluatesTo:"Any",operators:["first"],async evaluate(e,t){const r=void 0!==t?t:e.it;return null==r?null:Array.isArray(r)||r instanceof NodeList||r instanceof HTMLCollection?r.length>0?r[0]:null:r instanceof Element?r.children.length>0?r.children[0]:null:_t(r)?r.length>0?r[0]:null:$t(r)&&"length"in r&&qt(r.length)&&r.length>0?r[0]:null},validate:e=>or(e,1,"first","collection")},ds={name:"last",category:"Reference",evaluatesTo:"Any",operators:["last"],async evaluate(e,t){const r=void 0!==t?t:e.it;if(null==r)return null;if(Array.isArray(r))return r.length>0?r[r.length-1]:null;if(r instanceof NodeList||r instanceof HTMLCollection)return r.length>0?r[r.length-1]:null;if(r instanceof Element){const e=r.children;return e.length>0?e[e.length-1]:null}return _t(r)?r.length>0?r[r.length-1]:null:$t(r)&&"length"in r&&qt(r.length)&&r.length>0?r[r.length-1]:null},validate:e=>or(e,1,"last","collection")},ms={name:"at",category:"Reference",evaluatesTo:"Any",operators:["at"],async evaluate(e,...t){const[r,n]=t;if(!qt(r))throw Error("Index must be a number");const s=r,i=void 0!==n?n:e.it;if(null==i)return null;if(Array.isArray(i)){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}if(i instanceof NodeList||i instanceof HTMLCollection){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}if(i instanceof Element){const e=i.children,t=0>s?e.length+s:s;return t>=0&&e.length>t?e[t]:null}if(_t(i)){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}if($t(i)&&"length"in i&&qt(i.length)){const e=0>s?i.length+s:s;return e>=0&&i.length>e?i[e]:null}return null},validate:e=>lr(e,1,2,"at","index, optional collection")??function(e){return"number"!=typeof e[0]?"at index must be a number":null}(e)},ps={name:"next",category:"Reference",evaluatesTo:"Element",operators:["next"],async evaluate(e,...t){const[r,n]=t,s=n||e.me;return s&&s instanceof Element?r?fs(s,r):s.nextElementSibling:null},validate:e=>or(e,2,"next","optional selector, optional fromElement")||(1>e.length||null==e[0]||"string"==typeof e[0]?2>e.length||null==e[1]||e[1]instanceof Element?null:"fromElement must be an Element":"selector must be a string")},hs={name:"previous",category:"Reference",evaluatesTo:"Element",operators:["previous","prev"],async evaluate(e,...t){const[r,n]=t,s=n||e.me;return s&&s instanceof Element?r?ys(s,r):s.previousElementSibling:null},validate:e=>or(e,2,"previous","optional selector, optional fromElement")||(1>e.length||null==e[0]||"string"==typeof e[0]?2>e.length||null==e[1]||e[1]instanceof Element?null:"fromElement must be an Element":"selector must be a string")};function fs(e,t){let r=e.nextElementSibling;for(;r;){if(r.matches(t))return r;const e=r.querySelector(t);if(e)return e;r=r.nextElementSibling}const n=e.parentElement;return n&&n!==document.documentElement?fs(n,t):null}function ys(e,t){let r=e.previousElementSibling;for(;r;){const e=Array.from(r.querySelectorAll(t)).reverse();if(e.length>0)return e[0];if(r.matches(t))return r;r=r.previousElementSibling}const n=e.parentElement;return n&&n!==document.documentElement?ys(n,t):null}const gs={name:"nextWithin",category:"Reference",evaluatesTo:"Element",operators:["next within"],async evaluate(e,...t){const[r,n,s]=t,i=s||e.me;if(!(i&&i instanceof Element))return null;const a=i.closest(n);return a?bs(i,r,a):null},validate:e=>lr(e,2,3,"nextWithin","selector, withinSelector, optional fromElement")||("string"!=typeof e[0]?"selector must be a string":"string"!=typeof e[1]?"withinSelector must be a string":3>e.length||null==e[2]||e[2]instanceof Element?null:"fromElement must be an Element")},vs={name:"previousWithin",category:"Reference",evaluatesTo:"Element",operators:["previous within"],async evaluate(e,...t){const[r,n,s]=t,i=s||e.me;if(!(i&&i instanceof Element))return null;const a=i.closest(n);return a?ws(i,r,a):null},validate:e=>lr(e,2,3,"previousWithin","selector, withinSelector, optional fromElement")||("string"!=typeof e[0]?"selector must be a string":"string"!=typeof e[1]?"withinSelector must be a string":3>e.length||null==e[2]||e[2]instanceof Element?null:"fromElement must be an Element")};function bs(e,t,r){const n=Array.from(r.querySelectorAll(t)),s=ks(e);for(const e of n)if(ks(e)>s)return e;return null}function ws(e,t,r){const n=Array.from(r.querySelectorAll(t)),s=ks(e);for(let e=n.length-1;e>=0;e--){const t=n[e];if(s>ks(t))return t}return null}function ks(e){let t=0,r=e;for(;r&&r.parentElement;)t+=Array.from(r.parentElement.children).indexOf(r),r=r.parentElement,t+=1e3;return t}const Es={first:us,last:ds,at:ms,next:ps,previous:hs,nextWithin:gs,previousWithin:vs};var xs=Object.freeze({__proto__:null,FirstExpression:as,LastExpression:os,atExpression:ms,createFirstExpression:ls,createLastExpression:cs,findNextElementInDOM:fs,findNextElementWithinContainer:bs,findPreviousElementInDOM:ys,findPreviousElementWithinContainer:ws,firstExpression:us,getElementPosition:ks,lastExpression:ds,nextExpression:ps,nextWithinExpression:gs,positionalExpressions:Es,previousExpression:hs,previousWithinExpression:vs});const Cs=new Set(["__proto__","constructor","prototype"]),As={name:"possessive",category:"Reference",evaluatesTo:"Any",operators:["'s","s"],async evaluate(e,...t){const[r,n]=t;if(null!=r){if("string"!=typeof n)throw Error("Property name must be a string");if(r instanceof Element)return Ut(r,n);if($t(r)){if(Cs.has(n))return;return r[n]}return r[n]}},validate:e=>rr(e,2,"possessive","element, property")??nr(e,1,"possessive","property name")},Ss={name:"my",category:"Reference",evaluatesTo:"Any",operators:["my"],async evaluate(e,...t){const[r]=t;if(e.me){if("string"!=typeof r)throw Error("Property name must be a string");if(e.me instanceof Element)return Ut(e.me,r);if($t(e.me)){if(Cs.has(r))return;return e.me[r]}return e.me[r]}},validate:e=>sr(e,"my","property")},Ts={name:"its",category:"Reference",evaluatesTo:"Any",operators:["its"],async evaluate(e,...t){const[r]=t;if(null==e.it)return;if("string"!=typeof r)throw Error("Property name must be a string");const n=e.it;if(n instanceof Element)return Ut(n,r);if($t(n)){if(Cs.has(r))return;return n[r]}return n[r]},validate:e=>sr(e,"its","property")},Os={name:"your",category:"Reference",evaluatesTo:"Any",operators:["your"],async evaluate(e,...t){const[r]=t;if(e.you){if("string"!=typeof r)throw Error("Property name must be a string");if(e.you instanceof Element)return Ut(e.you,r);if($t(e.you)){if(Cs.has(r))return;return e.you[r]}return e.you[r]}},validate:e=>sr(e,"your","property")},Ls={name:"of",category:"Reference",evaluatesTo:"Any",operators:["of"],async evaluate(e,...t){const[r,n]=t;if(null!=n){if("string"!=typeof r)throw Error("Property name must be a string");if(n instanceof Element)return Ut(n,r);if($t(n)){if(Cs.has(r))return;return n[r]}return n[r]}},validate:e=>rr(e,2,"of","property, object")??nr(e,0,"of","property name")},Ps={name:"attribute",category:"Reference",evaluatesTo:"String",operators:["@"],async evaluate(e,...t){const[r,n]=t;if("string"!=typeof r)throw Error("Attribute name must be a string");const s=n||e.me;return s&&s instanceof Element?s.getAttribute(r):null},validate:e=>lr(e,1,2,"attribute","attributeName, optional element")??nr(e,0,"attribute","attribute name")??(2>e.length||null==e[1]||e[1]instanceof Element?null:"attribute element must be an Element")},Ns={name:"attributeWithValue",category:"Reference",evaluatesTo:"Boolean",operators:["@="],async evaluate(e,...t){const[r,n,s]=t;if("string"!=typeof r)throw Error("Attribute name must be a string");if("string"!=typeof n)throw Error("Expected value must be a string");const i=s||e.me;return!!(i&&i instanceof Element)&&i.getAttribute(r)===n},validate:e=>lr(e,2,3,"attributeWithValue","attributeName, expectedValue, optional element")??nr(e,0,"attributeWithValue","attribute name")??nr(e,1,"attributeWithValue","expected value")??(3>e.length||null==e[2]||e[2]instanceof Element?null:"attributeWithValue element must be an Element")},Is={name:"classReference",category:"Reference",evaluatesTo:"Array",operators:["."],async evaluate(e,...t){const[r]=t;if("string"!=typeof r)throw Error("Class name must be a string");const n=r.startsWith(".")?r.slice(1):r,s=document.getElementsByClassName(n);return Array.from(s)},validate:e=>sr(e,"classReference","className")},Rs={name:"idReference",category:"Reference",evaluatesTo:"Element",operators:["#"],async evaluate(e,...t){const[r]=t;if("string"!=typeof r)throw Error("ID value must be a string");const n=r.startsWith("#")?r.slice(1):r;return document.getElementById(n)},validate:e=>sr(e,"idReference","idValue")},js={possessive:As,my:Ss,its:Ts,your:Os,of:Ls,attribute:Ps,attributeWithValue:Ns,classReference:Is,idReference:Rs};var _s=Object.freeze({__proto__:null,attributeExpression:Ps,attributeWithValueExpression:Ns,classReferenceExpression:Is,getElementProperty:Ut,idReferenceExpression:Rs,isAriaAttribute:function(e){return e.startsWith("aria-")||"aria"===e},isDataAttribute:function(e){return e.startsWith("data-")||"data"===e},itsExpression:Ts,myExpression:Ss,ofExpression:Ls,possessiveExpression:As,propertiesExpressions:js,yourExpression:Os});const qs=gr({value:hr().describe("String literal value")}).strict(),Ms=gr({value:fr().describe("Number literal value")}).strict(),$s=gr({value:yr().describe("Boolean literal value")}).strict(),Vs=gr({left:br().describe("Left operand"),right:br().describe("Right operand")}).strict();class Ds extends Er{constructor(){super(...arguments),this.name="stringLiteral",this.category="Special",this.syntax="\"string\" or 'string'",this.description="String literals with template interpolation support",this.outputType="String",this.inputSchema=qs,this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid){const t=this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions);return this.trackSimple(e,r,!1),t}let s=t.value;(s.includes("${")||s.includes("$"))&&(s=this.interpolateString(s,e));const i=this.success(s,"string");return this.trackSimple(e,r,!0,s),i}catch(t){return this.trackSimple(e,r,!1),this.failure("StringEvaluationError","runtime-error","String literal evaluation failed: "+(t instanceof Error?t.message:t+""),"STRING_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid string literal input",["Provide a value parameter","Ensure value is a string"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}interpolateString(e,t){let r=e.replace(/\$\{([^}]+)\}/g,(e,r)=>{try{const e=this.resolveExpression(r.trim(),t);return void 0!==e?e+"":""}catch(e){return""}});return r=r.replace(/\$([a-zA-Z_$][a-zA-Z0-9_.$]*)/g,(e,r)=>{try{const e=this.resolveVariable(r,t);return void 0!==e?e+"":""}catch(e){return""}}),r}resolveExpression(e,t){if(e.includes(".")){const r=e.split(".");let n=this.resolveVariable(r[0],t);for(let e=1;r.length>e&&null!=n;e++)n=n[r[e]];return n}return this.resolveVariable(e,t)}resolveVariable(e,t){return"me"===e&&t.me?t.me:"you"===e&&t.you?t.you:"it"===e&&t.it?t.it:"result"===e&&t.result?t.result:t.locals?.has(e)?t.locals.get(e):t.globals?.has(e)?t.globals.get(e):void 0}}class Bs extends Er{constructor(){super(...arguments),this.name="numberLiteral",this.category="Special",this.syntax="123 or 3.14",this.description="Numeric literal with validation",this.inputSchema=Ms,this.outputType="Number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);return n.isValid?Number.isFinite(t.value)?(this.trackSimple(e,r,!0,t.value),this.success(t.value,"number")):(this.trackSimple(e,r,!1),this.failure("NumberValidationError","invalid-argument","Number literal must be finite","NUMBER_NOT_FINITE")):(this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions))}catch(t){return this.trackSimple(e,r,!1),this.failure("NumberEvaluationError","runtime-error","Number literal evaluation failed: "+(t instanceof Error?t.message:t+""),"NUMBER_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?Number.isFinite(t.data.value)?this.validationSuccess():this.validationFailure("invalid-argument","Number literal value must be finite",["Use finite numbers only","Avoid Infinity and NaN values"]):this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid number literal input",["Provide a value parameter","Ensure value is a number"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}class Fs extends Er{constructor(){super(...arguments),this.name="booleanLiteral",this.category="Special",this.syntax="true or false",this.description="Boolean literal values",this.inputSchema=$s,this.outputType="Boolean",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);return n.isValid?(this.trackSimple(e,r,!0,t.value),this.success(t.value,"boolean")):(this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions))}catch(t){return this.trackSimple(e,r,!1),this.failure("BooleanEvaluationError","runtime-error","Boolean literal evaluation failed: "+(t instanceof Error?t.message:t+""),"BOOLEAN_EVALUATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid boolean literal input",["Provide a value parameter","Ensure value is a boolean"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}class zs extends Er{constructor(){super(...arguments),this.name="addition",this.category="Special",this.syntax="left + right",this.description="Addition of two numeric values",this.inputSchema=Vs,this.outputType="Number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions);const s=Zr(t.left,"left operand")+Zr(t.right,"right operand");return this.trackSimple(e,r,!0,s),this.success(s,"number")}catch(t){return this.trackSimple(e,r,!1),this.failure("AdditionError","runtime-error","Addition failed: "+(t instanceof Error?t.message:t+""),"ADDITION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid addition input",["Provide left and right operands"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}class Hs extends Er{constructor(){super(...arguments),this.name="stringConcatenation",this.category="Special",this.syntax="left + right (string concatenation)",this.description="Concatenation of two values into a string",this.inputSchema=Vs,this.outputType="String",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors[0]?.message||"Invalid input","STRING_CONCATENATION_VALIDATION_FAILED",n.suggestions);const s=this.convertToString(t.left)+this.convertToString(t.right);return this.trackSimple(e,r,!0,s),this.success(s,"string")}catch(t){return this.trackSimple(e,r,!1),this.failure("StringConcatenationError","runtime-error",t instanceof Error?t.message:"String concatenation failed","STRING_CONCATENATION_ERROR",["Check that operands can be converted to strings"])}}validate(e){const t=Vs.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid string concatenation input",["Provide left and right operands for concatenation"])}convertToString(e){if(null===e)return"null";if(void 0===e)return"undefined";if(_t(e))return e;if(qt(e))return""+e;if(Mt(e))return""+e;if(e instanceof Date)return""+e;try{return e+""}catch{return"[object Object]"}}}class Us extends Er{constructor(){super(...arguments),this.name="multiplication",this.category="Special",this.syntax="left * right",this.description="Multiplication of two numeric values",this.inputSchema=Vs,this.outputType="Number",this.metadata={category:"Special",complexity:"simple"}}async evaluate(e,t){const r=Date.now();try{const n=this.validate(t);if(!n.isValid)return this.trackSimple(e,r,!1),this.failure("ValidationError","validation-error",n.errors.map(e=>e.message).join(", "),"VALIDATION_FAILED",n.suggestions);const s=Zr(t.left,"left operand")*Zr(t.right,"right operand");return this.trackSimple(e,r,!0,s),this.success(s,"number")}catch(t){return this.trackSimple(e,r,!1),this.failure("MultiplicationError","runtime-error","Multiplication failed: "+(t instanceof Error?t.message:t+""),"MULTIPLICATION_FAILED")}}validate(e){try{const t=this.inputSchema.safeParse(e);return t.success?this.validationSuccess():this.validationFailure("type-mismatch",t.error?.errors.map(e=>e.message).join(", ")||"Invalid multiplication input",["Provide left and right operands"])}catch(e){return this.validationFailure("runtime-error","Validation failed with exception",["Check input structure and types"])}}}function Ws(){return new Ds}function Js(){return new Bs}function Ks(){return new Fs}function Ys(){return new zs}function Gs(){return new Hs}function Xs(){return new Us}const Zs={stringLiteral:Ws(),numberLiteral:Js(),booleanLiteral:Ks(),addition:Ys(),stringConcatenation:Gs(),multiplication:Xs()};var Qs=Object.freeze({__proto__:null,AdditionExpression:zs,BooleanLiteralExpression:Fs,MultiplicationExpression:Us,NumberLiteralExpression:Bs,StringConcatenationExpression:Hs,StringLiteralExpression:Ds,createAdditionExpression:Ys,createBooleanLiteralExpression:Ks,createMultiplicationExpression:Xs,createNumberLiteralExpression:Js,createStringConcatenationExpression:Gs,createStringLiteralExpression:Ws,specialExpressions:Zs});class ei extends er{constructor(){super(),this.registerExpressions()}registerExpressions(){this.registerCategory(Ur),this.registerCategory($n),this.registerCategory(es),this.registerCategory(Es),this.registerCategory(js),this.registerCategory(Zs)}}class ti{static toTyped(e){return{me:e.me,it:e.it,you:e.you,result:e.result,...void 0!==e.event&&{event:e.event},variables:e.variables||new Map,locals:e.locals||new Map,globals:e.globals||new Map,...void 0!==e.events&&{events:e.events},meta:e.meta||{},expressionStack:[],evaluationDepth:0,validationMode:"strict",evaluationHistory:[]}}static fromTyped(e,t){return{...t,me:e.me,it:e.it,you:e.you,result:e.result,...void 0!==e.event&&{event:e.event},...void 0!==e.variables&&{variables:e.variables},locals:e.locals,globals:e.globals,...void 0!==e.events&&{events:e.events},...void 0!==e.meta&&{meta:e.meta}}}}class ri{constructor(e,t,r){this.impl=e,this.expressionEvaluator=t??new ei,this.hookRegistry=r??null}setHookRegistry(e){this.hookRegistry=e}createHookContext(e,t,r={}){return{commandName:this.name,element:e.me instanceof Element?e.me:null,args:t,modifiers:r,event:e.event??void 0,executionContext:e}}get name(){return this.impl.name||this.impl.metadata?.name}get metadata(){return{description:this.impl.metadata?.description||"",examples:this.impl.metadata?.examples||[],syntax:this.impl.metadata?.syntax||""}}async execute(e,...t){const r=t[0],n=this.createHookContext(e,t,r&&"object"==typeof r&&"modifiers"in r&&r.modifiers||{});try{if(he(`CommandAdapterV2: Executing '${this.name}' with args:`,t),this.hookRegistry&&await this.hookRegistry.runBeforeExecute(n),this.hookRegistry?.shouldIntercept(this.name,n))return void he(`CommandAdapterV2: '${this.name}' intercepted by hook`);e.locals||(e.locals=new Map),e.locals.set("__evaluator",this.expressionEvaluator);const s=ti.toTyped(e);let i,a;if(this.impl.parseInput&&"function"==typeof this.impl.parseInput)if(he(`CommandAdapterV2: '${this.name}' has parseInput(), calling it`),r&&"object"==typeof r&&("args"in r||"modifiers"in r)){const t=r.modifiers,n=t?.when||t?.where;if(n&&!await this.expressionEvaluator.evaluate(n,e))return void he(`CommandAdapterV2: '${this.name}' skipped - when/where condition evaluated to false`);i=await this.impl.parseInput({args:r.args||[],modifiers:t||{},commandName:r.commandName},this.expressionEvaluator,e)}else i=t;else he(`CommandAdapterV2: '${this.name}' has no parseInput(), using args as-is`),i=t;return he("CommandAdapterV2: Calling execute with parsed input:",i),a=2===this.impl.execute.length?await this.impl.execute(i,s):await this.impl.execute(s,...i),he("CommandAdapterV2: Command result:",a),Object.assign(e,ti.fromTyped(s,e)),this.hookRegistry&&await this.hookRegistry.runAfterExecute(n,a),a}catch(e){if(li(e)||he(`CommandAdapterV2: Error executing '${this.name}':`,e),this.hookRegistry&&e instanceof Error)throw await this.hookRegistry.runOnError(n,e);throw e}}validate(e){return this.impl.validate?this.impl.validate(e):{isValid:!0,errors:[],suggestions:[]}}}class ni{constructor(e,t){this.adapters=new Map,this.implementations=new Map,this.sharedEvaluator=e,this.hookRegistry=t}setHookRegistry(e){this.hookRegistry=e;for(const t of this.adapters.values())t.setHookRegistry(e);ve(`CommandRegistryV2: Hook registry set and propagated to ${this.adapters.size} adapters`)}getHookRegistry(){return this.hookRegistry}register(e){const t=e.name||e.metadata?.name;if(!t||"string"!=typeof t)throw Error("Cannot register command: no name found. Provide a 'name' property or 'metadata.name' on the implementation.");const r=t.toLowerCase();ve(`CommandRegistryV2: Registering command '${r}'`),this.implementations.set(r,e);const n=new ri(e,this.sharedEvaluator,this.hookRegistry);this.adapters.set(r,n),k.add(r);const s=e.metadata?.aliases;if(s&&Array.isArray(s))for(const t of s){const r=t.toLowerCase();this.implementations.set(r,e),this.adapters.set(r,n),k.add(r)}}getAdapter(e){return this.adapters.get(e.toLowerCase())}has(e){return this.adapters.has(e.toLowerCase())}getCommandNames(){return Array.from(this.adapters.keys())}getImplementation(e){return this.implementations.get(e.toLowerCase())}getAdapters(){return new Map(this.adapters)}validateCommand(e,t){const r=this.getAdapter(e);return r?r.validate(t):{isValid:!1,errors:[{type:"runtime-error",message:"Unknown command: "+e,suggestions:["Available commands: "+this.getCommandNames().join(", ")]}],suggestions:["Available commands: "+this.getCommandNames().join(", ")]}}}let si=null;function ii(){return si||(si=function(e){const t=e?.commands??new ni,r=e?.eventSources??new It,n=e?.context??new Rt,s=new Set,i={commands:t,eventSources:r,context:n,use(e){if(s.has(e.name))console.warn(`[LokaScriptRegistry] Plugin '${e.name}' is already installed`);else{if(e.commands)for(const r of e.commands)t.register(r);if(e.eventSources)for(const t of e.eventSources)r.register(t.name,t);if(e.contextProviders)for(const{name:t,provide:r,options:s}of e.contextProviders)n.register(t,r,s);e.setup?.(i),s.add(e.name)}},reset(){s.clear()}};return i}()),si}class ai{constructor(e={}){this.contextCache=new WeakMap;const t=ii();this.options={enableContextProviders:e.enableContextProviders??!0,enableEventSources:e.enableEventSources??!0,registry:e.registry??{}},this.contextRegistry=this.options.registry.context??t.context,this.eventSourceRegistry=this.options.registry.eventSources??t.eventSources,ve(`[RegistryIntegration] Initialized (context=${this.options.enableContextProviders}, events=${this.options.enableEventSources})`)}enhanceContext(e){if(!this.options.enableContextProviders)return e;const t=this.contextCache.get(e);if(t)return t;try{const t=this.contextRegistry.enhance(e);return this.contextCache.set(e,t),ve(`[RegistryIntegration] Enhanced context with ${this.contextRegistry.getProviderNames().length} providers`),t}catch(t){return ve("[RegistryIntegration] Failed to enhance context: "+(t instanceof Error?t.message:t+"")),e}}getEventSource(e){if(!this.options.enableEventSources)return;const t=this.eventSourceRegistry.get(e);if(t)return ve(`[RegistryIntegration] Found event source for '${e}'`),t;const r=this.eventSourceRegistry.findSourceForEvent(e);if(r){const t=this.eventSourceRegistry.get(r);return ve(`[RegistryIntegration] Found event source '${r}' supporting '${e}'`),t}}hasEventSource(e){return void 0!==this.getEventSource(e)}subscribeToEventSource(e,t,r){if(!this.options.enableEventSources)throw Error("Event sources are disabled in this runtime");const n=this.eventSourceRegistry.subscribe(e,t,r);if(!n)throw Error(`Failed to subscribe to event source '${e}'`);return ve(`[RegistryIntegration] Subscribed to '${e}' event '${t.event}' (id: ${n.id})`),n}getEventSourceNames(){return this.eventSourceRegistry.getSourceNames()}getContextProviderNames(){return this.contextRegistry.getProviderNames()}destroy(){this.eventSourceRegistry.destroy(),this.contextCache=new WeakMap,ve("[RegistryIntegration] Destroyed")}}function oi(e){const t=Error(e.type.toUpperCase()+"_EXECUTION");return t["is"+e.type.charAt(0).toUpperCase()+e.type.slice(1)]=!0,"returnValue"in e&&(t.returnValue=e.returnValue),t}function li(e){return e instanceof Error&&(null!==Ct(e)||"HALT_EXECUTION"===e.message||"EXIT_COMMAND"===e.message||"EXIT_EXECUTION"===e.message)}function ci(e){if(void 0===e)return;let t=e;if(t&&"object"==typeof t){const e=t;if("result"in e&&"wasAsync"in e)t=e.result;else if("result"in e&&"executed"in e){if(t=e.result,e.preserveArrayResult)return void 0!==t?t:void 0}else if("lastResult"in e&&"type"in e)t=e.lastResult;else if("conditionResult"in e&&"executedBranch"in e){if(void 0===e.result)return;t=e.result}else"value"in e&&1===Object.keys(e).length||"value"in e&&"target"in e&&"targetType"in e?t=e.value:"data"in e&&"status"in e&&"headers"in e&&(t=e.data)}return Array.isArray(t)&&t.length>0&&(t=t[0]),t}function ui(e){return null!==e&&"object"==typeof e&&"command"in e&&"selector"in e}const di=new WeakMap;class mi{constructor(e){this.autoCleanupObserver=null,this.registryIntegration=null,this.options={commandTimeout:1e4,enableErrorReporting:!0,enableResultPattern:!0,enableAutoCleanup:!0,...e},this.registry=e.registry,this.expressionEvaluator=e.expressionEvaluator,this.behaviorRegistry=new Map,this.globalVariables=Lt,this.hookRegistry=new xt,e.hooks&&this.hookRegistry.register("default",e.hooks),this.registry.setHookRegistry(this.hookRegistry),this.cleanupRegistry=new Ot,this.options.enableAutoCleanup&&this.setupAutoCleanup(),!1!==e.registryIntegration&&(this.registryIntegration=new ai("object"==typeof e.registryIntegration?e.registryIntegration:{}),ve("RuntimeBase: Registry integration enabled")),this.behaviorAPI={has:e=>this.behaviorRegistry.has(e),get:e=>this.behaviorRegistry.get(e),install:async(e,t,r)=>await this.installBehaviorOnElement(e,t,r)}}setupAutoCleanup(){"undefined"!=typeof MutationObserver&&"undefined"!=typeof document&&(this.autoCleanupObserver=new MutationObserver(e=>{const t=[];for(const r of e)for(const e of r.removedNodes)e instanceof Element&&t.push(e);t.length>0&&queueMicrotask(()=>{for(const e of t)if(!e.isConnected){const t=this.cleanupRegistry.cleanupElementTree(e);t>0&&ve(`RuntimeBase: Auto-cleaned ${t} resources for removed element`)}})}),document.body?this.autoCleanupObserver.observe(document.body,{childList:!0,subtree:!0}):document.addEventListener("DOMContentLoaded",()=>{this.autoCleanupObserver?.observe(document.body,{childList:!0,subtree:!0})},{once:!0}))}registerHooks(e,t){this.hookRegistry.register(e,t)}unregisterHooks(e){return this.hookRegistry.unregister(e)}getRegisteredHooks(){return this.hookRegistry.getRegisteredNames()}cleanup(e){return this.cleanupRegistry.cleanupElement(e)}cleanupTree(e){return this.cleanupRegistry.cleanupElementTree(e)}getCleanupStats(){return this.cleanupRegistry.getStats()}destroy(){this.autoCleanupObserver&&(this.autoCleanupObserver.disconnect(),this.autoCleanupObserver=null),this.cleanupRegistry.cleanupAll(),this.hookRegistry.clear(),this.behaviorRegistry.clear(),ve("RuntimeBase: Destroyed")}async execute(e,t){ve(`RUNTIME BASE: execute() called with node type: '${e.type}'`),t.locals.has("_behaviors")||t.locals.set("_behaviors",this.behaviorAPI),t.locals.has("_runtimeExecute")||t.locals.set("_runtimeExecute",(e,r)=>this.execute(e,r||t));try{switch(e.type){case"command":if(this.options.enableResultPattern)try{const r=await this.processCommandWithResult(e,t);if(!Tt(r))throw oi(r.error);return r.value}catch(e){throw e}return await this.processCommand(e,t);case"eventHandler":return await this.executeEventHandler(e,t);case"event":{const r={type:"eventHandler",event:e.event,events:[e.event],commands:e.body||[],target:e.filter,modifiers:e.modifiers||{}};return await this.executeEventHandler(r,t)}case"behavior":return await this.executeBehaviorDefinition(e,t);case"Program":return await this.executeProgram(e,t);case"initBlock":case"block":return await this.executeBlock(e,t);case"sequence":case"CommandSequence":if(this.options.enableResultPattern){const r=e,n=await this.executeCommandSequenceWithResult(r.commands||[],t);if(!Tt(n))throw oi(n.error);return n.value}return await this.executeCommandSequence(e,t);case"objectLiteral":return await this.executeObjectLiteral(e,t);default:if(this.options.enableResultPattern){const r=await this.evaluateExpressionWithResult(e,t);if(!Tt(r))throw oi(r.error);return r.value}return await this.evaluateExpression(e,t)}}catch(e){throw e}}async processCommand(e,t){const{name:r,args:n,modifiers:s}=e,i=r.toLowerCase();if(he(`RUNTIME BASE: Processing command '${i}'`),this.registry.has(i)){const e=await this.registry.getAdapter(i);if(!e)throw Error(`Command '${i}' is registered but failed to load adapter.`);try{return await e.execute(t,{args:n||[],modifiers:s||{},commandName:i,runtime:this})}catch(e){throw li(e)||console.error(`Error executing command '${i}':`,e),e}}const a=`Unknown command: ${r}. Ensure it is registered in the Runtime options.`;throw this.options.enableErrorReporting&&console.warn(a),Error(a)}toSignal(e){const t=Ct(e);if(t){if(t.isHalt||"HALT_EXECUTION"===t.message)return{type:"halt"};if(t.isExit||"EXIT_COMMAND"===t.message)return{type:"exit",returnValue:t.returnValue};if(t.isBreak)return{type:"break"};if(t.isContinue)return{type:"continue"};if(t.isReturn)return{type:"return",returnValue:t.returnValue}}if(e instanceof Error){if("HALT_EXECUTION"===e.message)return{type:"halt"};if("EXIT_COMMAND"===e.message)return{type:"exit"}}return null}async processCommandWithResult(e,t){const{name:r,args:n,modifiers:s}=e,i=r.toLowerCase();if(he(`RUNTIME BASE (Result): Processing command '${i}'`),!this.registry.has(i)){const e=`Unknown command: ${r}. Ensure it is registered in the Runtime options.`;throw this.options.enableErrorReporting&&console.warn(e),Error(e)}const a=await this.registry.getAdapter(i);if(!a)throw Error(`Command '${i}' is registered but failed to load adapter.`);try{return At(await a.execute(t,{args:n||[],modifiers:s||{},commandName:i,runtime:this}))}catch(e){const t=this.toSignal(e);if(t)return St(t);throw console.error(`Error executing command '${i}':`,e),e}}async executeCommandSequenceWithResult(e,t){let r;for(const n of e)if("command"===n.type){const e=await this.processCommandWithResult(n,t);if(!Tt(e)){const r=e.error;switch(r.type){case"halt":case"exit":case"break":case"continue":return e;case"return":return void 0!==r.returnValue&&Object.assign(t,{it:r.returnValue,result:r.returnValue}),At(r.returnValue)}}r=e.value}else{const e=await this.evaluateExpressionWithResult(n,t);if(!Tt(e))return e;r=e.value}return At(r)}async evaluateExpression(e,t){const r=await this.expressionEvaluator.evaluate(e,t);return ui(r)?await this.executeCommandFromPattern(r.command,r.selector,t):r}async evaluateExpressionWithResult(e,t){const r=await this.expressionEvaluator.evaluateWithResult(e,t);if(!Tt(r))return r;const n=r.value;if(ui(n)){if(this.options.enableResultPattern)return this.processCommandWithResult({type:"command",name:n.command,args:[{type:"literal",value:n.selector}]},t);try{return At(await this.executeCommandFromPattern(n.command,n.selector,t))}catch(e){const t=this.toSignal(e);if(t)return St(t);throw e}}return At(n)}async executeCommandFromPattern(e,t,r){return this.processCommand({type:"command",name:e,args:[{type:"literal",value:t}]},r)}async executeProgram(e,t){if(!e.statements||!Array.isArray(e.statements))return;let r;const n=[],s=[],i=[];for(const t of e.statements)"eventHandler"===t.type?n.push(t):"initBlock"===t.type?s.push(t):i.push(t);for(const e of n)try{await this.execute(e,t)}catch(e){if(li(e)&&(e.isHalt||e.isExit))break;throw e}for(const e of s)try{r=await this.execute(e,t)}catch(e){if(li(e)&&(e.isHalt||e.isExit))break;throw e}for(const e of i)try{r=await this.execute(e,t)}catch(e){if(li(e)&&(e.isHalt||e.isExit))break;throw e}return r}async executeBlock(e,t){if(e.commands&&Array.isArray(e.commands))for(const r of e.commands)try{await this.execute(r,t)}catch(e){if(li(e)&&e.isHalt)break;throw e}}async executeCommandSequence(e,t){if(!e.commands||!Array.isArray(e.commands))return;let r;for(const n of e.commands)try{r=await this.execute(n,t)}catch(e){if(li(e)){if(e.isHalt||e.isExit)break;if(e.isReturn){if(void 0!==e.returnValue)return Object.assign(t,{it:e.returnValue,result:e.returnValue}),e.returnValue;break}if(e.isBreak)throw e}throw e}return r}async executeObjectLiteral(e,t){const r={};if(!e.properties)return r;for(const n of e.properties){let e;e="identifier"===n.key.type?n.key.name:"literal"===n.key.type?n.key.value+"":await this.execute(n.key,t)+"";const s=await this.execute(n.value,t);r[e]=s}return r}enhanceContext(e){return this.registryIntegration?this.registryIntegration.enhanceContext(e):e}async executeBehaviorDefinition(e,t){const{name:r,parameters:n,eventHandlers:s,initBlock:i}=e,a=e.imperativeInstaller;"function"==typeof a?(this.behaviorRegistry.set(r,{name:r,parameters:n,type:"imperative",install:a}),ve(`RUNTIME BASE: Registered imperative behavior '${r}'`)):(this.behaviorRegistry.set(r,{name:r,parameters:n,eventHandlers:s,initBlock:i}),ve(`RUNTIME BASE: Registered behavior '${r}'`))}async installBehaviorOnElement(e,t,r){ve("BEHAVIOR: installBehaviorOnElement called: "+e);const n=this.behaviorRegistry.get(e);if(!n)throw Error(`Behavior "${e}" not found`);if("imperative"===n.type&&"function"==typeof n.install)return ve(`BEHAVIOR: Installing imperative behavior '${e}'`),n.install(t,r),void ve(`BEHAVIOR: Finished installing imperative behavior '${e}'`);ve("BEHAVIOR: Found behavior, eventHandlers count: "+(n.eventHandlers?.length||0));const s={me:t,you:null,it:null,result:null,locals:new Map,globals:this.globalVariables,halted:!1,returned:!1,broke:!1,continued:!1,async:!1},i=this.enhanceContext(s);if(n.parameters)for(const e of n.parameters)i.locals.set(e,e in r?r[e]:void 0);for(const[e,t]of Object.entries(r))n.parameters?.includes(e)||i.locals.set(e,t);if(n.initBlock){ve("BEHAVIOR: Running init block for "+e);const t=this.options.commandTimeout??1e4;try{await Promise.race([this.execute(n.initBlock,i),new Promise((r,n)=>setTimeout(()=>n(Error(`Behavior "${e}" init block timed out after ${t}ms`)),t))]),ve("BEHAVIOR: Init block completed for "+e)}catch(t){if(ve(`BEHAVIOR: Init block error for ${e}:`,t),!(t instanceof Error&&li(t)))throw t}}if(ve(`BEHAVIOR: About to attach ${n.eventHandlers?.length||0} handlers for ${e}`),n.eventHandlers){const t=this.options.commandTimeout??1e4;for(const r of n.eventHandlers)await Promise.race([this.executeEventHandler(r,i),new Promise((r,n)=>setTimeout(()=>n(Error(`Behavior "${e}" handler attachment timed out after ${t}ms`)),t))])}ve("BEHAVIOR: Finished installing "+e)}async executeEventHandler(e,t){const{event:r,events:n,commands:s,target:i,args:a,selector:o,attributeName:l,watchTarget:c,modifiers:u}=e,d=n&&n.length>0?n:[r];ve(`BEHAVIOR: executeEventHandler: event='${r}', target='${i}'`);let m=[],p=null;if(i){const e="string"==typeof i?i.toLowerCase():"";if("window"===e||"the window"===e)p=window;else if("document"===e||"the document"===e||"body"===e)p=document;else if("me"===e||"myself"===e)m=t.me?[t.me]:[];else if("string"==typeof i&&t.locals.has(i)){const e=t.locals.get(i);ve(`BEHAVIOR: Target resolution: found local '${i}', isElement: ${this.isElement(e)}`),this.isElement(e)?m=[e]:Array.isArray(e)?m=e.filter(e=>this.isElement(e)):"string"==typeof e&&(m=this.queryElements(e,t))}else ve(`BEHAVIOR: Target resolution: querying for '${i}'`),m=this.queryElements(i,t)}else m=t.me?[t.me]:[];if(0===m.length&&!p)return void ve(`BEHAVIOR: executeEventHandler - No targets found for event '${r}', returning early`);if("mutation"===r&&l)return void this.setupMutationObserver(m,l,s,t);if("change"===r&&c)return void this.setupChangeObserver(c,s,t);const h=e.customEventSource;if(h&&this.registryIntegration){ve(`BEHAVIOR: executeEventHandler - Using custom event source '${h}' for event '${r}'`);const e=async e=>{const n=new Map(t.locals),i={...t,locals:n,it:e,event:e},a=this.enhanceContext(i);ve(`CUSTOM EVENT: Executing commands for event '${r}'`);try{await this.execute({type:"program",commands:s},a)}catch(e){console.error(`[HyperFixi] Error executing commands for custom event '${r}':`,e)}};try{const n=this.registryIntegration.subscribeToEventSource(h,{event:r,handler:e,target:i,selector:o},t);ve(`BEHAVIOR: Subscribed to custom event source '${h}' (id: ${n.id})`),this.cleanupRegistry.registerGlobal(()=>n.unsubscribe(),"listener",`Custom event source '${h}' subscription ${n.id}`)}catch(e){console.error(`[HyperFixi] Failed to subscribe to custom event source '${h}':`,e)}return}const f=mi.createEventHandler(this,s,t,o,a);let y,g=null;if(u){let e=f;if(u.prevent){const t=e;e=async e=>(e.preventDefault(),t(e))}if(u.stop){const t=e;e=async e=>(e.stopPropagation(),t(e))}if(u.debounce){const t=u.debounce;let r;y=n=>{r&&clearTimeout(r),r=setTimeout(()=>e(n),t)},g=()=>{r&&(clearTimeout(r),r=void 0)}}else if(u.throttle){const t=u.throttle;let r=0;y=n=>{const s=Date.now();t>s-r||(r=s,e(n))}}else y=e}else y=f;const v=u?.once?{once:!0}:void 0;if(p){for(const e of d)p.addEventListener(e,y,v),m.length>0?this.cleanupRegistry.registerListener(m[0],p,e,y):this.cleanupRegistry.registerGlobal(()=>p.removeEventListener(e,y),"listener",`Global ${e} listener`);g&&(m.length>0?this.cleanupRegistry.registerCustom(m[0],g,"debounce-timeout"):this.cleanupRegistry.registerGlobal(g,"timeout","debounce-timeout"))}else for(const e of m){for(const t of d)e.addEventListener(t,y,v),this.cleanupRegistry.registerListener(e,e,t,y);g&&this.cleanupRegistry.registerCustom(e,g,"debounce-timeout")}}static createEventHandler(e,t,r,n,s){return async i=>{const a=di.get(i)??0;if(a>=100)return;if(di.set(i,a+1),n&&i.target instanceof Element)try{if(!i.target.matches(n)&&!i.target.closest(n))return}catch{ve(`Event delegation: invalid CSS selector '${n}', skipping filter`)}const o=new Map(r.locals),l={...r,locals:o,it:i,event:i};o.has("target")||l.locals.set("target",i.target);const c=e.enhanceContext(l);if(s&&s.length>0){const e=i,t=e.detail;for(const r of s)c.locals.set(r,e[r]??t?.[r]??null)}for(const r of t)try{const t=ci(await e.execute(r,c));void 0!==t&&Object.assign(c,{it:t,result:t})}catch(e){if(li(e)){if(e.isHalt||e.isExit)break;if(e.isReturn){void 0!==e.returnValue&&Object.assign(c,{it:e.returnValue,result:e.returnValue});break}}throw console.error("COMMAND FAILED:",e),e}}}setupMutationObserver(e,t,r,n){ve(`RUNTIME BASE: Setting up MutationObserver for attribute '${t}' on ${e.length} elements`);for(const s of e){const e=new MutationObserver(async e=>{for(const i of e)if("attributes"===i.type&&i.attributeName===t){fe(`MUTATION DETECTED: attribute '${t}' changed on`,s);const e={...n,me:s,it:i,locals:new Map(n.locals)},a=i.oldValue,o=s.getAttribute(t);e.locals.set("oldValue",a),e.locals.set("newValue",o);const l=this.enhanceContext(e);for(const e of r)try{await this.execute(e,l)}catch(e){if(li(e)){if(e.isHalt||e.isExit||e.isReturn)break}else console.error("Error executing mutation handler command:",e)}}});e.observe(s,{attributes:!0,attributeOldValue:!0,attributeFilter:[t]}),this.cleanupRegistry.registerObserver(s,e),ve("RUNTIME BASE: MutationObserver attached to",s,`for attribute '${t}'`)}}async setupChangeObserver(e,t,r){ve("RUNTIME BASE: Setting up MutationObserver for content changes on watch target");const n=await this.execute(e,r);let s=[];this.isElement(n)?s=[n]:Array.isArray(n)&&(s=n.filter(e=>this.isElement(e))),ve(`RUNTIME BASE: Watching ${s.length} target elements for content changes`);for(const e of s){const n=new MutationObserver(async n=>{for(const s of n)if("childList"===s.type||"characterData"===s.type){fe("CONTENT CHANGE DETECTED on",e,"mutation type:",s.type);const n={...r,me:r.me,it:s,locals:new Map(r.locals)};n.locals.set("target",e);const i=s.oldValue,a=e.textContent;null!==i&&n.locals.set("oldValue",i),n.locals.set("newValue",a);const o=this.enhanceContext(n);for(const e of t)try{await this.execute(e,o)}catch(e){if(li(e)){if(e.isHalt||e.isExit||e.isReturn)break}else console.error("Error executing change handler command:",e)}}});n.observe(e,{childList:!0,characterData:!0,subtree:!0,characterDataOldValue:!0}),this.cleanupRegistry.registerObserver(e,n),ve("RUNTIME BASE: MutationObserver attached to",e,"for content changes")}}queryElements(e,t){const r=t.me,n=(r instanceof Element?r.ownerDocument:null)??("undefined"!=typeof document?document:null);if(!n)return[];let s=e;s.startsWith("<")&&s.endsWith("/>")&&(s=s.slice(1,-2).trim());try{return Array.from(n.querySelectorAll(s))}catch{return ve(`queryElements: invalid CSS selector '${s}'`),[]}}isElement(e){return"undefined"!=typeof HTMLElement&&e instanceof HTMLElement||!(!e||"object"!=typeof e)&&(!!e.style&&!!e.classList)}}const pi={core:["references","logical","special"],common:["properties","conversion"],optional:["positional"]};class hi extends er{constructor(e={}){super(),this.loadedCategories=new Set,this.loadPromises=new Map,this.options={preload:"core",...e},"none"!==this.options.preload&&this.preloadExpressions()}async preloadExpressions(){if(this.options.categories)await Promise.all(this.options.categories.map(e=>this.loadCategory(e)));else switch(this.options.preload){case"all":await this.preloadTier("core"),await this.preloadTier("common"),await this.preloadTier("optional");break;case"common":await this.preloadTier("core"),await this.preloadTier("common");break;case"core":await this.preloadTier("core")}}async preloadTier(e){const t=pi[e];await Promise.all(t.map(e=>this.loadCategory(e)))}async loadCategory(e){if(this.loadedCategories.has(e))return;if(this.loadPromises.has(e))return this.loadPromises.get(e);const t=this._loadCategoryImpl(e);this.loadPromises.set(e,t);try{await t,this.loadedCategories.add(e),ge("✅ Loaded expression category: "+e)}finally{this.loadPromises.delete(e)}}async _loadCategoryImpl(e){try{let t;switch(ge("📦 Loading expression category: "+e),e){case"references":t=await Promise.resolve().then(function(){return Wr});break;case"logical":t=await Promise.resolve().then(function(){return Vn});break;case"special":t=await Promise.resolve().then(function(){return Qs});break;case"properties":t=await Promise.resolve().then(function(){return _s});break;case"conversion":t=await Promise.resolve().then(function(){return ts});break;case"positional":t=await Promise.resolve().then(function(){return xs});break;default:return void console.warn("Unknown expression category: "+e)}const r=t[e+"Expressions"]||t.default;if(!r)return void console.warn("No expressions found in category: "+e);this.registerCategory(r),ge(` ✓ Registered ${Object.keys(r).length} expressions from ${e}`)}catch(t){throw console.error("Failed to load expression category: "+e,t),t}}getCategoryForNodeType(e){return{identifier:"references",selector:"references",dollarExpression:"references",binaryExpression:"logical",unaryExpression:"logical",comparison:"logical",literal:"special",string:"special",numberLiteral:"special",stringLiteral:"special",booleanLiteral:"special",arrayLiteral:"special",objectLiteral:"special",templateLiteral:"special",memberExpression:"properties",possessiveExpression:"properties",propertyAccess:"properties",propertyOfExpression:"properties",asExpression:"conversion",positional:"positional",callExpression:"references"}[e]||null}async evaluate(e,t){if(!e)return ge("LAZY EVALUATOR: Received null/undefined node, returning null"),null;if(!e.type)throw console.error("LAZY EVALUATOR: Node missing type property:",e),Error("Node missing type property: "+JSON.stringify(e));const r=this.getCategoryForNodeType(e.type);return r&&!this.loadedCategories.has(r)&&(ge(`🔄 Auto-loading category for node type: ${e.type} → ${r}`),await this.loadCategory(r)),super.evaluate(e,t)}async warmupExpressions(e){ge("🔥 Warming up expression categories: "+e.join(", ")),await Promise.all(e.map(e=>this.loadCategory(e)))}getLoadedCategories(){return Array.from(this.loadedCategories)}}function fi(e,t,r,n,s,i){function a(e){if(void 0!==e&&"function"!=typeof e)throw new TypeError("Function expected");return e}for(var o,l=n.kind,c="getter"===l?"get":"setter"===l?"set":"value",u=!t&&e?n.static?e:e.prototype:null,d=t||(u?Object.getOwnPropertyDescriptor(u,n.name):{}),m=!1,p=r.length-1;p>=0;p--){var h={};for(var f in n)h[f]="access"===f?{}:n[f];for(var f in n.access)h.access[f]=n.access[f];h.addInitializer=function(e){if(m)throw new TypeError("Cannot add initializers after decoration has completed");i.push(a(e||null))};var y=(0,r[p])("accessor"===l?{get:d.get,set:d.set}:d[c],h);if("accessor"===l){if(void 0===y)continue;if(null===y||"object"!=typeof y)throw new TypeError("Object expected");(o=a(y.get))&&(d.get=o),(o=a(y.set))&&(d.set=o),(o=a(y.init))&&s.unshift(o)}else(o=a(y))&&("field"===l?s.unshift(o):d[c]=o)}u&&Object.defineProperty(u,n.name,d),m=!0}function yi(e,t,r){for(var n=arguments.length>2,s=0;t.length>s;s++)r=n?t[s].call(e,r):t[s].call(e);return n?r:void 0}function gi(e,t,r){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:r?"".concat(r," ",t):t})}"function"==typeof SuppressedError&&SuppressedError;const vi=Symbol("command:name"),bi=Symbol("command:category"),wi=Symbol("command:metadata");function ki(e){return function(t,r){const n=t;n[vi]=e.name,n[bi]=e.category,Object.defineProperty(t.prototype,"name",{value:e.name,writable:!1,enumerable:!0})}}function Ei(e){return function(t,r){const n=t,s=n[bi];if(!s)throw Error("@meta decorator requires @command decorator to be applied first on "+t.name);const i={description:e.description,syntax:e.syntax,examples:e.examples,category:s,sideEffects:e.sideEffects,deprecated:e.deprecated,deprecationMessage:e.deprecationMessage,aliases:e.aliases,relatedCommands:e.relatedCommands,isBlocking:e.isBlocking??!1,hasBody:e.hasBody??!1,version:"1.0.0",compatibility:e.compatibility};n[wi]=i,Object.defineProperty(t,"metadata",{value:i,writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(t.prototype,"metadata",{get:()=>i,enumerable:!0,configurable:!1})}}function xi(e){return()=>new e}function Ci(e){return null!==e&&"object"==typeof e&&"nodeType"in e&&1===e.nodeType&&"tagName"in e&&"string"==typeof e.tagName&&"classList"in e}function Ai(e,t){if(Ci(e))return e;if(!e){const e=t.me;if(!e)throw Error("No target element - provide explicit target or ensure context.me is set");return Ti(e)}if("string"==typeof e){const r=e.trim();if("me"===r){if(!t.me)throw Error('Context reference "me" is not available');return Ti(t.me)}if("it"===r){if(!Ci(t.it))throw Error('Context reference "it" is not an HTMLElement');return t.it}if("you"===r){if(!t.you)throw Error('Context reference "you" is not available');return Ti(t.you)}const n=t.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!n)throw Error("DOM not available - cannot resolve element selector");const s=n.querySelector(r);if(!s)throw Error("Element not found with selector: "+r);if(!Ci(s))throw Error("Element found but is not an HTMLElement: "+r);return s}throw Error("Invalid target type: "+typeof e)}function Si(e,t){if(Array.isArray(e))return e.filter(Ci);if(e instanceof NodeList)return Array.from(e).filter(Ci);if(Ci(e))return[e];if(!e){const e=t.me;return e&&Ci(e)?[e]:[]}if("string"==typeof e){const r=e.trim();if("me"===r)return t.me&&Ci(t.me)?[t.me]:[];if("it"===r)return Ci(t.it)?[t.it]:[];if("you"===r)return t.you&&Ci(t.you)?[t.you]:[];const n=t.me?.ownerDocument??("undefined"!=typeof document?document:null);if(n){let e=r;e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());const t=n.querySelectorAll(e);return Array.from(t).filter(Ci)}}return[]}function Ti(e){if(Ci(e))return e;throw Error("Value is not an HTMLElement")}function Oi(e,t){switch(e.toLowerCase()){case"my":case"me":if(!t.me)throw Error('No "me" element in context');if(!Ci(t.me))throw Error("context.me is not an HTMLElement");return t.me;case"its":case"it":if(!t.it)throw Error('No "it" value in context');if(!Ci(t.it))throw Error("context.it is not an HTMLElement");return t.it;case"your":case"you":if(!t.you)throw Error('No "you" element in context');if(!Ci(t.you))throw Error("context.you is not an HTMLElement");return t.you;default:throw Error("Unknown possessive: "+e)}}const Li=["on","from","to","in","with","at"];async function Pi(e,t,r,n,s={},i){let a=e;if(s.filterPrepositions&&e&&(a=e.filter(e=>{const t=e;return"identifier"!==t?.type||"string"!=typeof t.name||!Li.includes(t.name.toLowerCase())})),(!a||0===a.length)&&s.fallbackModifierKey&&i){const e=i[s.fallbackModifierKey];e&&(a=[e])}if(!a||0===a.length){if(!r.me)throw Error(n+" command: no target specified and context.me is null");if(!Ci(r.me))throw Error(n+" command: context.me must be an HTMLElement");return[r.me]}const o=[];for(const e of a){const s=await t.evaluate(e,r);if(""!==s&&("string"!=typeof s||""!==s.trim()))if(Ci(s))o.push(s);else if(s instanceof NodeList){const e=Array.from(s).filter(Ci);o.push(...e)}else if(Array.isArray(s)){const e=s.filter(Ci);o.push(...e)}else{if("string"!=typeof s)throw Error(`Invalid ${n} target: expected HTMLElement or CSS selector, got ${typeof s}`);try{let e=s;e.startsWith("<")&&e.endsWith("/>")&&(e=e.slice(1,-2).trim());const t=r.me?.ownerDocument??("undefined"!=typeof document?document:null);if(!t)throw Error("DOM not available - cannot resolve element selector");const n=t.querySelectorAll(e),i=Array.from(n).filter(Ci);o.push(...i)}catch(e){throw Error(`Invalid CSS selector: "${s}" - ${e instanceof Error?e.message:e+""}`)}}}if(0===o.length){if(!r.me)throw Error(n+" command: no target specified and context.me is null");if(!Ci(r.me))throw Error(n+" command: context.me must be an HTMLElement");return[r.me]}return o}class Ni{async parseInput(e,t,r){const{targets:n}=await async function(e,t,r,n){return{targets:await Pi(e.args,t,r,n)}}(e,t,r,this.mode);return{targets:n,mode:this.mode,defaultDisplay:"show"===this.mode?"block":void 0}}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!(!Array.isArray(t.targets)||!t.targets.every(e=>Ci(e))||"show"!==t.mode&&"hide"!==t.mode||"show"===t.mode&&"string"!=typeof t.defaultDisplay)}showElement(e,t="block"){const r=e.dataset.originalDisplay;void 0!==r?(e.style.display=r||t,delete e.dataset.originalDisplay):"none"===e.style.display&&(e.style.display=t),e.classList.add("show")}hideElement(e){if(!e.dataset.originalDisplay){const t=e.style.display;e.dataset.originalDisplay="none"===t?"":t}e.style.display="none",e.classList.remove("show")}}let Ii=(()=>{let e,t,r=[Ei({description:"Hide elements by setting display to none",syntax:"hide [<target>]",examples:["hide me","hide #modal","hide .warnings","hide <button/>"],sideEffects:["dom-mutation"]}),ki({name:"hide",category:"dom"})],n=[],s=Ni;return t=class extends s{constructor(){super(...arguments),this.mode="hide"}async execute(e,t){for(const t of e.targets)this.hideElement(t)}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&!!t.targets.every(e=>Ci(e))}},gi(t,"HideCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),yi(t,n)})(),t})();const Ri=xi(Ii);let ji=(()=>{let e,t,r=[Ei({description:"Show elements by restoring display property",syntax:"show [<target>]",examples:["show me","show #modal","show .hidden","show <button/>"],sideEffects:["dom-mutation"]}),ki({name:"show",category:"dom"})],n=[],s=Ni;return t=class extends s{constructor(){super(...arguments),this.mode="show"}async execute(e,t){const r=e.defaultDisplay||"block";for(const t of e.targets)this.showElement(t,r)}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;return!!Array.isArray(t.targets)&&!!t.targets.every(e=>Ci(e))&&"string"==typeof t.defaultDisplay}},gi(t,"ShowCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),yi(t,n)})(),t})();const _i=xi(ji);function qi(e){const t=e.trim();return!(!t.startsWith("[@")||!t.endsWith("]"))||!!t.startsWith("@")}function Mi(e){const t=e.trim();if(t.startsWith("[@")&&t.endsWith("]")){const e=t.slice(2,-1),r=e.indexOf("=");if(-1===r)return{name:e.trim()};const n=e.slice(0,r).trim();let s=e.slice(r+1).trim();return(s.startsWith('"')&&s.endsWith('"')||s.startsWith("'")&&s.endsWith("'"))&&(s=s.slice(1,-1)),{name:n,value:s}}if(t.startsWith("@"))return{name:t.substring(1).trim()};throw Error("Invalid attribute syntax: "+e)}function $i(e,t){for(const r of e)t(r);return e}function Vi(e,t,r){for(const n of e)for(const e of t)r(n,e);return e}function Di(e,t,r){const n=e.hasAttribute(t);void 0!==r?n&&e.getAttribute(t)===r?e.removeAttribute(t):e.setAttribute(t,r):n?e.removeAttribute(t):e.setAttribute(t,"")}function Bi(e){if(!e)return[];if("string"==typeof e)return e.trim().split(/[\s,]+/).map(e=>{const t=e.trim();return t.startsWith(".")?t.substring(1):t}).filter(e=>e.length>0&&zi(e));if(Array.isArray(e))return e.map(e=>{const t=(e+"").trim();return t.startsWith(".")?t.substring(1):t}).filter(e=>e.length>0&&zi(e));const t=(e+"").trim(),r=t.startsWith(".")?t.substring(1):t;return r.length>0&&zi(r)?[r]:[]}function Fi(e){const t=e.trim();return/^\{[^}]+\}$/.test(t)}function zi(e){if(!e||0===e.trim().length)return!1;const t=e.trim();return!!Fi(t)||/^[a-zA-Z_-][a-zA-Z0-9_-]*$/.test(t)}function Hi(e,t){return e.map(e=>{if(Fi(e)){const r=function(e){const t=e.trim(),r=t.match(/^\{(.+)\}$/);return r?r[1].trim():t}(e),n=t.locals.get(r)??t.globals.get(r);return null!=n?n+"":(console.warn(`Dynamic class variable '${r}' not found in context`),"")}return e}).filter(e=>e.length>0)}function Ui(e){return"string"==typeof e&&e.trim().startsWith("*")}function Wi(e,t,r){e.style.setProperty(t,r)}const Ji=["dialog","details","summary","select"];function Ki(e){return e&&"object"==typeof e?"string"==typeof e.selector?e.selector:"string"==typeof e.value?e.value:"string"==typeof e.name?e.name:null:null}async function Yi(e,t,r){return function(e){if(!e||"object"!=typeof e)return!1;const t=e.type;if("selector"!==t&&"cssSelector"!==t&&"classSelector"!==t)return!1;const r=Ki(e);return"string"==typeof r&&r.startsWith(".")}(e)||function(e){if(!e||"object"!=typeof e)return!1;const t=e.type;if("selector"!==t&&"cssSelector"!==t&&"cssProperty"!==t)return!1;const r=Ki(e);return"string"==typeof r&&r.startsWith("*")}(e)?{value:Ki(e),extractedFromNode:!0}:function(e){if(!e||"object"!=typeof e)return!1;if("attributeAccess"===e.type)return!0;if("selector"===e.type||"cssSelector"===e.type){const t=Ki(e);return"string"==typeof t&&t.startsWith("@")}return!1}(e)?{value:(n=e,"attributeAccess"===n.type?"@"+n.attributeName:Ki(n)),extractedFromNode:!0}:{value:await t.evaluate(e,r),extractedFromNode:!1};var n}class Gi{async resolveTargets(e,t,r,n){return Pi(e,t,r,this.mode,{filterPrepositions:!0,fallbackModifierKey:this.preposition},n)}async evaluateFirst(e,t,r){return Yi(e,t,r)}parseClassNames(e){return Bi(e)}isAttribute(e){return qi(e.trim())}isCSSProperty(e){return Ui(e.trim())}validateTargets(e){return Array.isArray(e)&&function(e){return Array.isArray(e)&&e.length>0&&e.every(e=>Ci(e))}(e)}validateType(e,t){return function(e,t){return"string"==typeof e&&t.includes(e)}(e,t)}validateStringArray(e,t=1){return Array.isArray(e)&&function(e,t=1){return Array.isArray(e)&&e.length>=t&&e.every(e=>"string"==typeof e&&e.length>0)}(e,t)}}let Xi=(()=>{let e,t,r=[Ei({description:"Add CSS classes, attributes, or styles to elements",syntax:"add <classes|@attr|{styles}> [to <target>]",examples:["add .active to me",'add "active selected" to <button/>',"add .highlighted to #modal",'add [@data-test="value"] to #element'],sideEffects:["dom-mutation"]}),ki({name:"add",category:"dom"})],n=[],s=Gi;return t=class extends s{constructor(){super(...arguments),this.mode="add",this.preposition="to"}async parseInput(e,t,r){if(!e.args||0===e.args.length)throw Error("add command requires an argument");const{value:n}=await this.evaluateFirst(e.args[0],t,r);if("object"==typeof n&&null!==n&&!Array.isArray(n))return{type:"styles",styles:n,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)};if("string"==typeof n){const s=n.trim();if(this.isAttribute(s)){const{name:n,value:i}=function(e){const t=Mi(e);return{name:t.name,value:t.value??""}}(s);return{type:"attribute",name:n,value:i,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}if(this.isCSSProperty(s)){const n=s.substring(1).trim();if(2>e.args.length)throw Error("add *property requires a value argument");const i=await t.evaluate(e.args[1],r);return{type:"styles",styles:{[n]:i+""},targets:await this.resolveTargets(e.args.slice(2),t,r,e.modifiers)}}}const s=this.parseClassNames(n);if(0===s.length)throw Error("add command: no valid class names found");return{type:"classes",classes:s,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}async execute(e,t){switch(e.type){case"classes":{const r=Hi(e.classes,t);r.length>0&&Vi(e.targets,r,(e,t)=>{e.classList.contains(t)||e.classList.add(t)});break}case"attribute":r=e.name,n=e.value,$i(e.targets,e=>{e.setAttribute(r,n)});break;case"styles":!function(e,t){Vi(e,Object.entries(t),(e,[t,r])=>{e.style.setProperty(t,r)})}(e.targets,e.styles)}var r,n}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;if(!this.validateType(t.type,["classes","attribute","styles"]))return!1;if(!this.validateTargets(t.targets))return!1;if("classes"===t.type){if(!this.validateStringArray(e.classes,1))return!1}else if("attribute"===t.type){if("string"!=typeof e.name||0===e.name.length)return!1;if("string"!=typeof e.value)return!1}else if("styles"===t.type){const t=e;if("object"!=typeof t.styles||null===t.styles)return!1;if(Array.isArray(t.styles))return!1;const r=t.styles;if(0===Object.keys(r).length)return!1;if(!Object.values(r).every(e=>"string"==typeof e))return!1}return!0}},gi(t,"AddCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),yi(t,n)})(),t})();const Zi=xi(Xi);function Qi(e){return!!e.parentNode&&(e.remove(),!0)}let ea=(()=>{let e,t,r=[Ei({description:"Remove CSS classes, attributes, styles, or elements from the DOM",syntax:"remove <classes|@attr|*prop|element> [from <target>]",examples:["remove .active from me",'remove "active selected" from <button/>',"remove .highlighted from #modal","remove me","remove closest .item"],sideEffects:["dom-mutation"]}),ki({name:"remove",category:"dom"})],n=[],s=Gi;return t=class extends s{constructor(){super(...arguments),this.mode="remove",this.preposition="from"}async parseInput(e,t,r){if(!e.args||0===e.args.length)throw Error("remove command requires an argument");const{value:n}=await this.evaluateFirst(e.args[0],t,r);if(Ci(n))return{type:"element",targets:[n]};if(Array.isArray(n)&&n.length>0&&Ci(n[0]))return{type:"element",targets:n.filter(e=>Ci(e))};if("string"==typeof n){const s=n.trim();if(this.isAttribute(s))return{type:"attribute",name:Mi(s).name,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)};if(this.isCSSProperty(s))return{type:"styles",properties:[s.substring(1).trim()],targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}const s=this.parseClassNames(n);if(0===s.length)throw Error("remove command: no valid class names found");return{type:"classes",classes:s,targets:await this.resolveTargets(e.args.slice(1),t,r,e.modifiers)}}execute(e,t){switch(e.type){case"classes":{const r=Hi(e.classes,t);r.length>0&&Vi(e.targets,r,(e,t)=>{e.classList.remove(t)});break}case"attribute":r=e.name,$i(e.targets,e=>{e.removeAttribute(r)});break;case"styles":!function(e,t){Vi(e,t,(e,t)=>{e.style.removeProperty(t)})}(e.targets,e.properties);break;case"element":for(const t of e.targets)Qi(t)}var r}validate(e){if("object"!=typeof e||null===e)return!1;const t=e;if(!this.validateType(t.type,["classes","attribute","styles","element"]))return!1;if(!this.validateTargets(t.targets))return!1;if("classes"===t.type){if(!this.validateStringArray(e.classes,1))return!1}else if("attribute"===t.type){if("string"!=typeof e.name||0===e.name.length)return!1}else if("styles"===t.type&&!this.validateStringArray(e.properties,1))return!1;return!0}},gi(t,"RemoveCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),yi(t,n)})(),t})();const ta=xi(ea);function ra(e){const t=e.trim().match(/^(\d+(?:\.\d+)?)\s*(s|ms|sec|seconds?|milliseconds?)?$/i);if(!t)return null;const r=parseFloat(t[1]),n=(t[2]||"ms").toLowerCase();return"ms"===n||"millisecond"===n||"milliseconds"===n?{number:r,milliseconds:Math.floor(r)}:"s"===n||"sec"===n||"second"===n||"seconds"===n?{number:r,milliseconds:Math.floor(1e3*r)}:null}function na(e,t=300){if("number"==typeof e)return Math.max(0,Math.floor(e));if("string"==typeof e){const r=ra(e);return r?r.milliseconds:t}return t}function sa(e){if("number"==typeof e){if(0>e)throw Error("Duration must be >= 0");return Math.floor(e)}if("string"==typeof e){const t=ra(e);if(!t)throw Error(`Invalid duration format: "${e}"`);return t.milliseconds}throw Error("Invalid duration type: "+typeof e)}function ia(e){return e&&"none"!==e?e.split(",").map(e=>{const t=parseFloat(e.trim());return isNaN(t)?0:e.includes("s")&&!e.includes("ms")?1e3*t:t}):[0]}function aa(e,t){let r=0;for(let n=0;e.length>n;n++)r=Math.max(r,(e[n]||0)+(t[n]||0));return r}function oa(e){return 0===e.length?[]:"SUMMARY"===e[0].tagName?e.map(e=>e.closest("details")).filter(e=>null!==e):e}function la(e,t,r){return()=>{"class"===t?e.classList.toggle(r):"attribute"===t&&Di(e,r)}}function ca(e,t,r,n){const s=la(e,t,r),i=setTimeout(s,n);return()=>{clearTimeout(i)}}function ua(e,t,r,n){const s=la(e,t,r),i=()=>{s(),e.removeEventListener(n,i)};return e.addEventListener(n,i,{once:!0}),()=>{e.removeEventListener(n,i)}}function da(e,t,r){if(t.startsWith("@")){const n=t.substring(1);return void(!1===r?e.removeAttribute(n):e.setAttribute(n,!0===r?"":r+""))}const n=r+"";switch(t){case"textContent":return void(e.textContent=n);case"innerHTML":return void(e.innerHTML=n);case"innerText":return void(e.innerText=n);case"id":return void(e.id=n);case"className":return void(e.className=n);case"value":return void("value"in e&&(e.value=n));case"checked":return void("checked"in e&&(e.checked=!!r))}if(t.includes(".")){const n=t.split(".");let s=e;for(let e=0;n.length-1>e;e++)if(s=s[n[e]],null==s)return;return void(s[n[n.length-1]]=r)}if(t.includes("-")||t in e.style)e.style.setProperty(t,n);else try{e[t]=r}catch(e){if(!(e instanceof TypeError&&(e.message.includes("only a getter")||e.message.includes("read only"))))throw Error(`Cannot set property '${t}': ${e instanceof Error?e.message:"Unknown error"}`)}}function ma(e){return null==e||""===e}const pa=/^the\s+(.+?)\s+of\s+(.+)$/i,ha=new Set(["disabled","checked","hidden","readOnly","readonly","required","multiple","selected","autofocus","autoplay","controls","loop","muted","open","reversed","async","defer","noValidate","novalidate","formNoValidate","formnovalidate","draggable","spellcheck","contentEditable"]);function fa(e){return"string"==typeof e&&pa.test(e)}function ya(e,t){const r=e.match(pa);if(!r)return null;try{return{element:Ai(r[2].trim(),t),property:r[1].trim()}}catch{return null}}async function ga(e,t,r){if(function(e){return!(!e||"object"!=typeof e)&&"propertyOfExpression"===e.type&&"object"==typeof e.property&&null!==e.property}(e))return async function(e,t,r){const n=e.property?.name;if(!n)return null;let s=await t.evaluate(e.target,r);return Array.isArray(s)&&(s=s[0]),Ci(s)?{element:s,property:n}:null}(e,t,r);if(function(e){return!(!e||"object"!=typeof e)&&"propertyAccess"===e.type&&("string"==typeof e.property||"object"==typeof e.property&&null!==e.property&&"string"==typeof e.property.name)}(e))return async function(e,t,r){const n="string"==typeof e.property?e.property:e.property?.name;if(!n)return null;let s=await t.evaluate(e.object,r);return Array.isArray(s)&&(s=s[0]),Ci(s)?{element:s,property:n}:null}(e,t,r);const n=e;if("possessiveExpression"===n?.type||"memberExpression"===n?.type){const e=n.object,s=n.property;let i=await t.evaluate(e,r);if(Array.isArray(i)&&(i=i[0]),!Ci(i))return null;const a=s?.name||s?.value;return a&&(a.startsWith("@")||a.startsWith("*"))?{element:i,property:a}:null}return null}function va(e,t){const{element:r,property:n}=e;n.startsWith("*")?Wi(r,n.substring(1),t+""):da(r,n,t)}async function ba(e,t,r){let n,s;if(e?.for){const s=await t.evaluate(e.for,r);n="number"==typeof s?s:"string"==typeof s?na(s):void 0}if(e?.until){const n=await t.evaluate(e.until,r);"string"==typeof n&&(s=n)}return{duration:n,untilEvent:s}}function wa(e,t){const r=t?.name,n=function(e){if(!e||"object"!=typeof e)return!1;if("identifier"!==e.type)return!1;const t=e.name;return"string"==typeof t&&function(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return Ji.includes(t)}(t)}(t);if(Ci(e)||Array.isArray(e)&&e.every(e=>Ci(e)))return{type:"element",expression:""};if(n&&r)return{type:"element",expression:r};if("string"==typeof e){const t=e.trim();return t.startsWith("@")||t.startsWith("[@")?{type:"attribute",expression:t}:t.startsWith("*")?{type:"css-property",expression:t}:t.startsWith(".")?{type:"class",expression:t}:t.startsWith("#")||function(e){if("string"!=typeof e)return!1;const t=e.toLowerCase();return Ji.some(e=>t.includes(e))}(t)?{type:"element",expression:t}:{type:"class",expression:t}}return{type:"class",expression:""}}const ka=xi((()=>{let e,t,r=[Ei({description:"Toggle classes, attributes, or interactive elements",syntax:["toggle <class> [on <target>]","toggle @attr","toggle <element> [as modal]","toggle <expr> for <duration>"],examples:["toggle .active on me","toggle @disabled","toggle #myDialog as modal","toggle .loading for 2s"],sideEffects:["dom-mutation"]}),ki({name:"toggle",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("toggle command requires an argument");const n=e.args[0],s=n?.name;if("between"===s&&e.args.length>=4){const{duration:n,untilEvent:s}=await ba(e.modifiers,t,r),i=await t.evaluate(e.args[1],r),a=await t.evaluate(e.args[3],r),o=[];for(let t=4;e.args.length>t;t++){const r=e.args[t]?.name;"on"!==r&&"from"!==r&&o.push(e.args[t])}const l={filterPrepositions:!0,fallbackModifierKey:"on"},c=await Pi(o,t,r,"toggle",l,e.modifiers);return{type:"classes-between",classA:(i+"").replace(/^\./,""),classB:(a+"").replace(/^\./,""),targets:c,duration:n,untilEvent:s}}const i=await ga(n,t,r);if(i)return{type:"property",target:i};const{duration:a,untilEvent:o}=await ba(e.modifiers,t,r),{value:l}=await Yi(n,t,r);if(fa(l)){const e=ya(l,r);if(e)return{type:"property",target:e}}const{type:c,expression:u}=wa(l,n),d={filterPrepositions:!0,fallbackModifierKey:"on"};switch(c){case"attribute":{const{name:n,value:s}=Mi(u);return{type:"attribute",name:n,value:s,targets:await Pi(e.args.slice(1),t,r,"toggle",d,e.modifiers),duration:a,untilEvent:o}}case"css-property":{const n=function(e){const t=function(e){const t=e.trim();if(!t.startsWith("*"))return null;const r=t.substring(1).trim();return r?{property:r}:null}(e);if(!t)return null;const r=t.property.toLowerCase();return["display","visibility","opacity"].includes(r)?r:null}(u);if(!n)throw Error("Invalid CSS property: "+u);return{type:"css-property",property:n,targets:await Pi(e.args.slice(1),t,r,"toggle",d,e.modifiers)}}case"element":{let s;if(Ci(l))s=[l];else if(Array.isArray(l)&&l.every(e=>Ci(e)))s=l;else if(u){const e=document.querySelectorAll(u);s=Array.from(e).filter(e=>Ci(e))}else s=await Pi([n],t,r,"toggle",d,e.modifiers);const i=function(e){if(0===e.length)return null;const t=e[0].tagName;if(!e.every(e=>e.tagName===t))return null;switch(t){case"DIALOG":return"dialog";case"DETAILS":return"details";case"SELECT":return"select";case"SUMMARY":return e.map(e=>e.closest("details")).filter(e=>null!==e).length>0?"details":null;default:return null}}(s);if("dialog"===i){const n=await async function(e,t,r,n){if(t?.as){const e=await r.evaluate(t.as,n);if("string"==typeof e&&"modal"===e.toLowerCase())return"modal"}if(e.length>=2){const t=await r.evaluate(e[1],n);if("string"==typeof t){const s=t.toLowerCase();if("modal"===s||"as modal"===s)return"modal";if("as"===s&&e.length>=3){const t=await r.evaluate(e[2],n);if("string"==typeof t&&"modal"===t.toLowerCase())return"modal"}}}return"non-modal"}(e.args,e.modifiers,t,r);return{type:"dialog",mode:n,targets:s}}return"details"===i?{type:"details",targets:oa(s)}:"select"===i?{type:"select",targets:s}:{type:"classes",classes:Bi(u),targets:s,duration:a,untilEvent:o}}default:{const n=Bi(u||l);if(!n.length)throw Error("toggle command: no valid class names found");return{type:"classes",classes:n,targets:await Pi(e.args.slice(1),t,r,"toggle",d,e.modifiers),duration:a,untilEvent:o}}}}async execute(e,t){switch(e.type){case"classes":{const r=Hi(e.classes,t);if(0===r.length)return[...e.targets];if(Vi(e.targets,r,(e,t)=>{e.classList.toggle(t)}),(e.duration||e.untilEvent)&&r.length)for(const t of e.targets)e.duration&&ca(t,"class",r[0],e.duration),e.untilEvent&&ua(t,"class",r[0],e.untilEvent);return[...e.targets]}case"attribute":if(r=e.name,n=e.value,$i(e.targets,e=>{Di(e,r,n)}),e.duration||e.untilEvent)for(const t of e.targets)e.duration&&ca(t,"attribute",e.name,e.duration),e.untilEvent&&ua(t,"attribute",e.name,e.untilEvent);return[...e.targets];case"css-property":return $i(e.targets,t=>function(e,t){const r=window.getComputedStyle(e);switch(t){case"display":"none"===r.display?(e.style.display=e.dataset.previousDisplay||"block",delete e.dataset.previousDisplay):(e.dataset.previousDisplay=r.display,e.style.display="none");break;case"visibility":e.style.visibility="hidden"===r.visibility?"visible":"hidden";break;case"opacity":e.style.opacity=0===parseFloat(r.opacity)?"1":"0"}}(t,e.property));case"property":return function(e){const t=function(e){const{element:t,property:r}=e;return r.startsWith("*")?function(e,t){return window.getComputedStyle(e).getPropertyValue(t)}(t,r.substring(1)):Ut(t,r)}(e),r=e.property,n=r.startsWith("@")?r.substring(1):r;if("boolean"==typeof t||ha.has(n)||ha.has(n.toLowerCase())){const r=!t;return va(e,r),r}if("number"==typeof t){const r=0===t?1:0;return va(e,r),r}if("string"==typeof t){const n="__ht_"+r,s=e.element[n];return""===t&&void 0!==s?(va(e,s),s):(e.element[n]=t,va(e,""),"")}va(e,!t)}(e.target),[e.target.element];case"dialog":return $i(e.targets,t=>{return n=e.mode,void((r=t).open?r.close():"modal"===n?r.showModal():r.show());var r,n});case"details":return $i(e.targets,e=>{var t;(t=e).open=!t.open});case"select":return $i(e.targets,e=>function(e){if(document.activeElement===e)e.blur();else{if(e.focus(),"showPicker"in e&&"function"==typeof e.showPicker)try{return void e.showPicker()}catch{}const t=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0});e.dispatchEvent(t)}}(e));case"classes-between":for(const t of e.targets){const r=t.classList.contains(e.classA),n=t.classList.contains(e.classB);r?(t.classList.remove(e.classA),t.classList.add(e.classB)):n?(t.classList.remove(e.classB),t.classList.add(e.classA)):t.classList.add(e.classA)}if(e.duration||e.untilEvent)for(const t of e.targets)e.duration&&ca(t,"class",e.classA,e.duration),e.untilEvent&&ua(t,"class",e.classA,e.untilEvent);return[...e.targets]}var r,n}},gi(t,"ToggleCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})());const Ea=xi((()=>{let e,t,r=[Ei({description:"Insert content into elements or properties",syntax:["put <value> into <target>","put <value> before <target>","put <value> after <target>"],examples:['put "Hello World" into me',"put <div>Content</div> before #target","put value into #elem's innerHTML"],sideEffects:["dom-mutation"]}),ki({name:"put",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("put requires arguments");const n=e=>e?.type||"unknown",s=["into","before","after","at","at start of","at end of"];let i=-1,a=null;for(let t=0;e.args.length>t;t++){const r=e.args[t],o=n(r),l="literal"===o?r.value:r.name;if(("literal"===o||"identifier"===o)&&s.includes(l)){i=t,a=l;break}}let o=null,l=null;if(-1===i)if(e.modifiers.into||e.modifiers.before||e.modifiers.after){const t=e.modifiers.into?"into":e.modifiers.before?"before":"after";o=e.args[0],a=t,l=e.modifiers[t]}else if(3>e.args.length){if(2>e.args.length)throw Error("put requires content and position");o=e.args[0],a=e.args[1]?.value||e.args[1]?.name||"into"}else o=e.args[0],a=e.args[1]?.value||e.args[1]?.name||null,l=e.args[2];else o=e.args.slice(0,i)[0]||null,l=e.args.slice(i+1)[0]||null;if(!o)throw Error("put requires content");if(!a)throw Error("put requires position keyword");const c=await t.evaluate(o,r),u=this.mapPosition(a);let d,m,p=null;if(l){const e=n(l),s=await ga(l,t,r);if(s)return{value:c,targets:[s.element],position:"replace",memberPath:s.property};if("memberExpression"===e){const e=l.object,n=l.property;if("selector"===e?.type?p=e.value:"identifier"===e?.type&&(p=e.name),p&&n?.name)d=n.name;else{const e=await t.evaluate(l,r);"string"==typeof e&&(p=e)}}else if("identifier"===e&&"me"===l.name)p=null;else if("selector"===e||"cssSelector"===e)p=l.value||l.selector;else if("literal"===e){const e=l.value;if("string"==typeof e&&fa(e)){const t=ya(e,r);if(t)return{value:c,targets:[t.element],position:"replace",memberPath:t.property}}"string"==typeof e&&this.looksLikeCss(e)?p=e:m=e+""}else if("identifier"===e){const e=l.name;if(this.looksLikeCss(e))p=e;else{const n=await t.evaluate(l,r),s=this.resolveEvaluatedAsElements(n);if(s)return{value:c,targets:s,position:u,memberPath:d};m=e}}else{const e=await t.evaluate(l,r),n=this.resolveEvaluatedAsElements(e);if(n)return{value:c,targets:n,position:u,memberPath:d};"string"==typeof e&&(this.looksLikeCss(e)?p=e:m=e)}}return m?{value:c,targets:[],position:u,memberPath:d,variableName:m}:{value:c,targets:await this.resolveTargets(p,r),position:u,memberPath:d}}async execute(e,t){const{value:r,targets:n,position:s,memberPath:i,variableName:a}=e;if(a)return t.locals&&t.locals.set(a,r),t[a]=r,void Object.assign(t,{it:r});if(i)for(const e of n)this.setProperty(e,i,r);else for(const e of n){const t=this.parseValue(r);this.insertContent(e,t,s)}return n}mapPosition(e){switch(e){case"into":return"replace";case"before":return"beforebegin";case"after":return"afterend";case"at start of":return"afterbegin";case"at end of":return"beforeend";default:throw Error("Invalid position: "+e)}}async resolveTargets(e,t){if(!e||"me"===e){if(!t.me||!Ci(t.me))throw Error("put: no target and context.me is null");return[t.me]}const r=Array.from(document.querySelectorAll(e)).filter(e=>Ci(e));if(!r.length)throw Error(`No elements: "${e}"`);return r}parseValue(e){return Ci(e)?e:null==e?"":e+""}insertContent(e,t,r){if("replace"!==r)if(Ci(t)){const n=t;switch(r){case"beforebegin":e.parentElement?.insertBefore(n,e);break;case"afterbegin":e.insertBefore(n,e.firstChild);break;case"beforeend":e.appendChild(n);break;case"afterend":e.parentElement?.insertBefore(n,e.nextSibling)}}else t.includes("<")&&t.includes(">")?e.insertAdjacentHTML(r,t):e.insertAdjacentText(r,t);else Ci(t)?(e.innerHTML="",e.appendChild(t)):t.includes("<")&&t.includes(">")?e.innerHTML=t:e.textContent=t}resolveEvaluatedAsElements(e){if(Ci(e))return[e];if(Array.isArray(e)){const t=e.filter(Ci);return t.length>0?t:null}if("undefined"!=typeof NodeList&&e instanceof NodeList){const t=Array.from(e).filter(Ci);return t.length>0?t:null}return null}looksLikeCss(e){return!!e&&(!!/^[#.\[]/.test(e)||(!(!/[>+~\s]/.test(e)||1>=e.length)||["div","span","p","a","button","input","form","ul","li","ol","table","tr","td","th","img","h1","h2","h3","h4","h5","h6","section","article","header","footer","nav","main","aside","dialog","label","select","option","textarea"].includes(e.toLowerCase())))}setProperty(e,t,r){const n=t.split(".");let s=e;for(let e=0;n.length-1>e;e++){if(!s[n[e]])throw Error(`Property path "${t}" does not exist`);s=s[n[e]]}s[n[n.length-1]]=r}},gi(t,"PutCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})());function xa(e){if(null==e)return 0;if("number"==typeof e)return isFinite(e)?e:0;if("string"==typeof e)return parseFloat(e);if("boolean"==typeof e)return e?1:0;if(Array.isArray(e))return e.length;if("object"==typeof e){if("length"in e&&"number"==typeof e.length)return e.length;if("function"==typeof e.valueOf){const t=e.valueOf();if("number"==typeof t)return t}return NaN}return 0}function Ca(e,t,r){return"global"===r&&t.globals&&t.globals.has(e)?t.globals.get(e):"global"!==r&&t.locals&&t.locals.has(e)?t.locals.get(e):t.globals&&t.globals.has(e)?t.globals.get(e):t.variables&&t.variables.has(e)?t.variables.get(e):"global"===r&&t.locals&&t.locals.has(e)?t.locals.get(e):"undefined"!=typeof window&&e in window?window[e]:"undefined"!=typeof globalThis&&e in globalThis?globalThis[e]:void 0}function Aa(e,t,r,n){if("global"===n)return r.globals.set(e,t),void("undefined"!=typeof window&&(window[e]=t));if(r.locals&&r.locals.has(e))r.locals.set(e,t);else{if(r.globals&&r.globals.has(e))return r.globals.set(e,t),void("undefined"!=typeof window&&e in window&&(window[e]=t));if(!r.variables||!r.variables.has(e))return"undefined"!=typeof window&&e in window?(window[e]=t,void r.globals.set(e,t)):void r.locals.set(e,t);r.variables.set(e,t)}}function Sa(e,t){return"me"===e?t.me:"it"===e?t.it:"you"===e?t.you:Ca(e,t)}let Ta=(()=>{let e,t,r=[Ei({description:"Create DOM elements or class instances",syntax:["make a <tag#id.class1.class2/>","make a <ClassName> from <args> called <identifier>"],examples:["make an <a.navlink/> called linkElement",'make a URL from "/path/", "https://origin.example.com"'],sideEffects:["dom-creation","data-mutation"]}),ki({name:"make",category:"dom"})],n=[];return t=class{async parseInput(e,t,r){const n=e.args.length>0?await t.evaluate(e.args[0],r):void 0;if(!n)throw Error("Make command requires class name or DOM element expression");const s=void 0!==e.modifiers.an?"an":"a",i=await async function(e,t,r){if(!e)return[];if("arrayLiteral"===e.type&&Array.isArray(e.args)){const n=[];for(const s of e.args)n.push(await t.evaluate(s,r));return n}const n=await t.evaluate(e,r);return Array.isArray(n)?n:[n]}(e.modifiers.from,t,r),a=await async function(e,t,r){if(!e)return;if("symbol"===e.type&&"string"==typeof e.name)return e.name;const n=await t.evaluate(e,r);return"string"==typeof n?n:n+""}(e.modifiers.called,t,r);return{article:s,expression:n,constructorArgs:i,variableName:a}}async execute(e,t){const{expression:r,constructorArgs:n=[],variableName:s}=e,i="string"==typeof r&&r.startsWith("<")&&r.endsWith("/>")?function(e){const t=e.slice(1,-2);let r="div",n=t;const s=t.match(/^([a-zA-Z][a-zA-Z0-9]*)/);s&&(r=s[1],n=t.slice(s[0].length));const i=document.createElement(r),a=n.split(/(?=[.#])/);for(const e of a)if(e.startsWith("#")){const t=e.slice(1);t&&(i.id=t)}else if(e.startsWith(".")){const t=e.slice(1);t&&i.classList.add(t)}return i}(r):function(e,t,r){if(Ci(e))return e;const n=e+"";let s;if("undefined"!=typeof window&&(s=window[n]),s||"undefined"==typeof global||(s=global[n]),!s&&r.variables?.has(n)&&(s=r.variables.get(n)),!s||"function"!=typeof s)throw Error(`Constructor '${n}' not found or is not a function`);return 0===t.length?new s:new s(...t)}(r,n,t);return Object.assign(t,{it:i}),s&&Aa(s,i,t),i}},gi(t,"MakeCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})();const Oa=xi(Ta);function La(e,t,r){return e?new Promise(r=>{const n=Na(()=>{e.removeEventListener(t,s)},r),s=e=>{n({event:e,timedOut:!1,cancelled:!1})};e.addEventListener(t,s)}):Promise.reject(Error("waitForEvent: no target provided"))}function Pa(e){return new Promise(t=>setTimeout(t,e))}function Na(e,t){let r=!1;return n=>{r||(r=!0,e(),t(n))}}const Ia=xi((()=>{let e,t,r=[Ei({description:"Wait for time delay, event, or race condition",syntax:["wait <time>","wait for <event>","wait for <event> or <condition>"],examples:["wait 2s","wait for click","wait for click or 1s","wait for mousemove(clientX, clientY)"],sideEffects:["time","event-listening"]}),ki({name:"wait",category:"async"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("wait command requires an argument");if(e.modifiers.or)return this.parseRaceCondition(e,t,r);if(e.modifiers.for)return this.parseEventWait(e.modifiers.for,e.modifiers.from,t,r);const n=e.args[0];return"arrayLiteral"===n.type&&n.elements?this.parseEventArrayWait(n.elements,e.args[1],t,r):this.parseTimeWait(e.args[0],t,r)}async execute(e,t){const r=Date.now();if("time"===e.type)return await Pa(e.milliseconds),{type:"time",result:e.milliseconds,duration:Date.now()-r};if("event"===e.type){const n=e.target??t.me??document,s=(await La(n,e.eventName)).event;if(Object.assign(t,{it:s}),e.destructure)for(const r of e.destructure)r in s&&t.locals.set(r,s[r]);return{type:"event",result:s,duration:Date.now()-r}}const{result:n,winningCondition:s}=await this.executeRace(e.conditions,t);if(Object.assign(t,{it:n}),n instanceof Event&&"event"===s?.type&&s.destructure)for(const e of s.destructure)e in n&&t.locals.set(e,n[e]);return{type:n instanceof Event?"event":"time",result:n,duration:Date.now()-r}}async parseTimeWait(e,t,r){return{type:"time",milliseconds:sa(await t.evaluate(e,r))}}async parseEventWait(e,t,r,n){const s=await r.evaluate(e,n);if("string"!=typeof s)throw Error("wait for: event name must be a string");const i=s.match(/^(\w+)\(([^)]+)\)$/),a=i?i[1]:s,o=i?i[2].split(",").map(e=>e.trim()):void 0;let l;if(t){const e=await r.evaluate(t,n);if(!e||"object"!=typeof e||!("addEventListener"in e))throw Error("wait for from: target must be an EventTarget");l=e}else l=n.me??void 0;return{type:"event",eventName:a,target:l,destructure:o}}async parseEventArrayWait(e,t,r,n){const s=[];for(const t of e){const e=t;if("objectLiteral"===e.type&&e.properties){let t="",r=[];for(const n of e.properties){const e=n.key?.name||n.key?.value;"name"===e&&n.value?t=n.value.value||"":"args"===e&&n.value?.elements&&(r=n.value.elements.map(e=>e.value||e.name||""))}t&&s.push({name:t,params:r})}}let i;if(t){const e=await r.evaluate(t,n);e&&"object"==typeof e&&"addEventListener"in e&&(i=e)}return i||(i=n.me??void 0),1===s.length?{type:"event",eventName:s[0].name,target:i,destructure:s[0].params.length>0?s[0].params:void 0}:{type:"race",conditions:s.map(e=>({type:"event",eventName:e.name,target:i,destructure:e.params.length>0?e.params:void 0}))}}async parseRaceCondition(e,t,r){const n=[];e.modifiers.for?n.push(await this.parseEventWait(e.modifiers.for,e.modifiers.from,t,r)):e.args[0]&&n.push(await this.parseTimeWait(e.args[0],t,r));const s=await t.evaluate(e.modifiers.or,r),i=Array.isArray(s)?s:[s];for(const e of i)try{n.push({type:"time",milliseconds:sa(e)})}catch{if("string"==typeof e){const t=e.match(/^(\w+)\(([^)]+)\)$/);n.push(t?{type:"event",eventName:t[1],target:r.me??void 0,destructure:t[2].split(",").map(e=>e.trim())}:{type:"event",eventName:e,target:r.me??void 0})}}if(2>n.length)throw Error("wait: race requires at least 2 conditions");return{type:"race",conditions:n}}async executeRace(e,t){const r=e.map(e=>"time"===e.type?Pa(e.milliseconds).then(()=>({result:e.milliseconds,winningCondition:e})):La(e.target??t.me??document,e.eventName).then(t=>({result:t.event,winningCondition:e})));return Promise.race(r)}},gi(t,"WaitCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})()),Ra=new Map;const ja=xi((()=>{let e,t,r=[Ei({description:"Make HTTP requests with lifecycle event support",syntax:["fetch <url>","fetch <url> as <type>","fetch <url> with <options>"],examples:['fetch "/api/data"','fetch "/api/users" as json','fetch "/api/save" with { method:"POST" }'],sideEffects:["network","event-dispatching"]}),ki({name:"fetch",category:"async"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("fetch requires a URL");return{url:await this.parseURL(e.args[0],t,r),responseType:this.parseResponseType(e.modifiers.as),options:await this.parseRequestOptions(e.modifiers.with,t,r)}}async execute(e,t){const r=Date.now(),{url:n,responseType:s,options:i}=e,a=new AbortController;let o;t.me&&(o=()=>a.abort(),t.me.addEventListener("fetch:abort",o,{once:!0}));const l={...i,signal:a.signal},c=Ra.get(s);if(c?.accept){const e=new Headers(l.headers);e.has("Accept")||e.set("Accept",c.accept),l.headers=e}if(t.me){const e={...l,sender:t.me,headers:l.headers||{}};this.dispatchEvent(t.me,"fetch:beforeRequest",e),l.headers=e.headers}let u;i.timeout&&(u=setTimeout(()=>a.abort(),i.timeout));try{let e=await fetch(n,l);if(t.me){const r={response:e};this.dispatchEvent(t.me,"fetch:afterResponse",r),e=r.response}const i=await this.handleResponse(e,s,t);t.me&&this.dispatchEvent(t.me,"fetch:afterRequest",{result:i});const a={status:e.status,statusText:e.statusText,headers:e.headers,data:i,url:e.url,duration:Date.now()-r};return Object.assign(t,{it:i}),a}catch(e){if(t.me&&this.dispatchEvent(t.me,"fetch:error",{reason:e instanceof Error?e.message:e+"",error:e}),e instanceof Error&&"AbortError"===e.name)throw Error("Fetch aborted for "+n);throw Error(`Fetch failed for ${n}: ${e instanceof Error?e.message:e+""}`)}finally{u&&clearTimeout(u),t.me&&o&&t.me.removeEventListener("fetch:abort",o)}}async parseURL(e,t,r){const n=await t.evaluate(e,r);if("string"!=typeof n||!n)throw Error("fetch: URL must be a non-empty string");return n}parseResponseType(e){if(!e)return"text";if(("identifier"===e.type||"expression"===e.type)&&e.name){const t=e.name.toLowerCase();if("object"===t)return"json";if(["text","json","html","response","blob","arraybuffer"].includes(t))return"arraybuffer"===t?"arrayBuffer":t;if(Ra.has(t))return t;throw Error(`fetch: invalid response type "${t}"`)}return"text"}async parseRequestOptions(e,t,r){if(!e)return{};const n=await t.evaluate(e,r);if("object"!=typeof n||null===n)throw Error('fetch: "with" options must be an object');const s={};return"method"in n&&(s.method=(n.method+"").toUpperCase()),"headers"in n&&(s.headers=this.parseHeaders(n.headers)),"body"in n&&(s.body=this.parseBody(n.body)),"credentials"in n&&(s.credentials=n.credentials),"mode"in n&&(s.mode=n.mode),"cache"in n&&(s.cache=n.cache),s}parseHeaders(e){if(e instanceof Headers)return e;const t=new Headers;if("object"==typeof e&&null!==e)for(const[r,n]of Object.entries(e))t.set(r,n+"");return t}parseBody(e){return null==e?null:e instanceof FormData||e instanceof Blob||e instanceof ArrayBuffer||e instanceof URLSearchParams||"string"==typeof e?e:"object"==typeof e?JSON.stringify(e):e+""}async handleResponse(e,t,r){switch(t){case"response":return e;case"json":return e.json();case"html":return this.parseHTML(await e.text());case"blob":return e.blob();case"arrayBuffer":return e.arrayBuffer();case"text":return e.text();default:{const n=Ra.get(t);return n?n.handler(e,r):e.text()}}}parseHTML(e){const t=(new DOMParser).parseFromString(e,"text/html"),r=document.createDocumentFragment();return Array.from(t.body.childNodes).forEach(e=>r.appendChild(e.cloneNode(!0))),1===r.childNodes.length&&Ci(r.firstChild)?r.firstChild:r}dispatchEvent(e,t,r){e.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:!0,cancelable:!0}))}},gi(t,"FetchCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})()),_a=xi((()=>{let e,t,r=[Ei({description:"Set values to variables, attributes, or properties",syntax:["set <target> to <value>"],examples:['set myVar to "value"','set @data-theme to "dark"','set my innerHTML to "content"'],sideEffects:["state-mutation","dom-mutation"]}),ki({name:"set",category:"data"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("set command requires a target");const n=e.args[0],s=n?.name||n?.value,i=await ga(n,t,r);if(i){const n=await this.extractValue(e,t,r);if(i.property.startsWith("*")){const e=i.property.substring(1);return{type:"style",element:i.element,property:e,value:n+""}}return{type:"property",element:i.element,property:i.property,value:n}}if("memberExpression"===n?.type||"propertyAccess"===n?.type){const s=await this.tryParseMemberExpression(n,e,t,r);if(s)return s}let a;if(a="identifier"!==n?.type&&"variable"!==n?.type||"string"!=typeof s?await t.evaluate(n,r):s,function(e){if("object"!=typeof e||null===e||Array.isArray(e))return!1;if(Ci(e)||e instanceof Node)return!1;const t=Object.getPrototypeOf(e);return t===Object.prototype||null===t}(a))return{type:"object-literal",properties:a,targets:await this.resolveTargets(e.modifiers.on,t,r)};if(fa(a)){const n=ya(a,r);if(n){const s=await this.extractValue(e,t,r);return{type:"property",element:n.element,property:n.property,value:s}}return this.parseTheXofY(a,e,t,r)}if("string"==typeof a&&Ui(a)){const n=a.substring(1).trim(),s=await this.extractValue(e,t,r);return{type:"style",element:await this.resolveElement(e.modifiers.on,t,r),property:n,value:s+""}}if("string"==typeof a&&qi(a)){const n=a.substring(1).trim(),s=await this.extractValue(e,t,r);return{type:"attribute",element:await this.resolveElement(e.modifiers.on,t,r),name:n,value:s}}if("string"==typeof a){const n=a.match(/^(my|me|its?|your?)\s+(.+)$/i);if(n){const s=Oi(n[1],r),i=await this.extractValue(e,t,r);return{type:"property",element:s,property:n[2],value:i}}}if(Ci(a))return{type:"property",element:a,property:"textContent",value:await this.extractValue(e,t,r)};if(Array.isArray(a)&&a.length>0&&Ci(a[0])){const n=await this.extractValue(e,t,r);return{type:"property",element:a[0],property:"textContent",value:n}}if("string"!=typeof a)throw Error("set command target must be a string or object literal");return{type:"variable",name:a,value:await this.extractValue(e,t,r)}}async execute(e,t){switch(e.type){case"variable":return t.locals.set(e.name,e.value),"result"!==e.name&&"it"!==e.name||Object.assign(t,{[e.name]:e.value}),Object.assign(t,{it:e.value}),{target:e.name,value:e.value,targetType:"variable"};case"attribute":return e.element.setAttribute(e.name,e.value+""),Object.assign(t,{it:e.value}),{target:"@"+e.name,value:e.value,targetType:"attribute"};case"property":return da(e.element,e.property,e.value),Object.assign(t,{it:e.value}),{target:e.element,value:e.value,targetType:"property"};case"style":return Wi(e.element,e.property,e.value),Object.assign(t,{it:e.value}),{target:e.element,value:e.value,targetType:"property"};case"object-literal":for(const t of e.targets)for(const[r,n]of Object.entries(e.properties))da(t,r,n);return Object.assign(t,{it:e.properties}),{target:e.targets[0]||"unknown",value:e.properties,targetType:"property"};case"member-assignment":return e.container[e.property]=e.value,Object.assign(t,{it:e.value}),{target:e.property,value:e.value,targetType:"property"};default:throw Error("Unknown input type: "+e.type)}}async tryParseMemberExpression(e,t,r,n){const s=e.object,i=e.property;if(s?.name&&i?.name){const e=s.name.toLowerCase();if(["me","my","it","its","you","your"].includes(e)){const s=Oi(e,n),a=await this.extractValue(t,r,n);return{type:"property",element:s,property:i.name,value:a}}}const a=e.object,o=e.computed;if(a){const s=await r.evaluate(a,n);if(null!=s&&"object"==typeof s){const a=o?await r.evaluate(e.property,n)+"":i?.name||"";if(a)return{type:"member-assignment",container:s,property:a,value:await this.extractValue(t,r,n)}}}return null}async extractValue(e,t,r){if(e.modifiers.to)return t.evaluate(e.modifiers.to,r);const n=e.args.findIndex(e=>"identifier"===e.type&&"to"===e.name);if(n>=0&&e.args.length>n+1)return t.evaluate(e.args[n+1],r);if(e.args.length>=2)return t.evaluate(e.args[1],r);throw Error('set command requires a value (use "to" keyword)')}async resolveElement(e,t,r){return Ai(e?await t.evaluate(e,r):void 0,r)}async resolveTargets(e,t,r){return Si(e?await t.evaluate(e,r):void 0,r)}async parseTheXofY(e,t,r,n){const s=e.match(/^the\s+(.+?)\s+of\s+(.+)$/i);if(!s)throw Error('Invalid "the X of Y" syntax');const[,i,a]=s,o=Ai(a,n),l=await this.extractValue(t,r,n);return{type:"property",element:o,property:i.trim(),value:l}}validate(e){if(!e||"object"!=typeof e)return!1;const t=e;if(!t.type||"string"!=typeof t.type)return!1;if(!["variable","attribute","property","style","object-literal"].includes(t.type))return!1;switch(t.type){case"variable":return"string"==typeof t.name&&"value"in t;case"attribute":return"string"==typeof t.name&&Ci(t.element)&&"value"in t;case"property":return"string"==typeof t.property&&Ci(t.element)&&"value"in t;case"style":return"string"==typeof t.property&&""!==t.property&&Ci(t.element)&&"string"==typeof t.value;case"object-literal":return null!==t.properties&&"object"==typeof t.properties&&Array.isArray(t.targets)&&t.targets.length>0;default:return!1}}},gi(t,"SetCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})());let qa=(()=>{let e,t,r=[Ei({description:"Modify a variable or property by a specified amount (default: 1)",syntax:["increment <target> [by <number>]","decrement <target> [by <number>]"],examples:["increment counter","increment counter by 5","decrement counter","decrement counter by 5"],sideEffects:["data-mutation","context-modification"],aliases:["decrement"]}),ki({name:"increment",category:"data"})],n=[];return t=class{async parseInput(e,t,r){const n="decrement"===e.commandName?.toLowerCase()?"decrement":"increment",s=await async function(e,t,r,n){if(!e.args||0===e.args.length)throw Error(n+" command requires a target");const s=e.args[0];let i,a;const o=(l=s)&&"object"==typeof l&&l.type||"unknown";var l;if("identifier"===o)i=s.name,s.scope&&(a=s.scope);else if("literal"===o)i=s.value;else{const e=await t.evaluate(s,r);i=Array.isArray(e)&&e.length>0?e[0]:e}let c=1,u=a;for(let n=1;e.args.length>n;n++){const s=e.args[n];if(s&&"literal"===s.type){const e=s.value;"global"===e?u="global":"number"==typeof e&&(c=e)}else if(s&&"literal"!==s.type){const e=await t.evaluate(s,r);"number"==typeof e&&(c=e)}}return{target:i,amount:c,...u&&{scope:u}}}(e,t,r,n);return{...s,operation:n}}async execute(e,t){const{target:r,property:n,scope:s,amount:i=1,operation:a="increment"}=e,o=function(e,t,r,n){if("number"==typeof e)return e;if(Ci(e)){const r=e;return t?t.startsWith("data-")||["id","class","title","alt","src","href"].includes(t)?xa(r.getAttribute(t)):xa(r[t]):xa(r.value||r.textContent)}return"string"==typeof e?"global"===r?xa(Ca(e,n,"global")):e.includes(".")?function(e,t){const r=e.split("."),n=r[1],s=Sa(r[0],t);return s?xa(s[n]):0}(e,n):xa("me"===e&&n.me?n.me.value||0:"it"===e?n.it||0:"you"===e&&n.you?n.you.value||0:Ca(e,n)):xa(e)}(r,n,s,t);let l;if(isNaN(o))l=NaN;else{const e=isFinite(i)?i:1;l="increment"===a?o+e:o-e}return function(e,t,r,n,s){if(Ci(e)){const r=e;return void(t?t.startsWith("data-")||["id","class","title","alt","src","href"].includes(t)?r.setAttribute(t,n+""):r[t]=n:"value"in r&&void 0!==r.value?r.value=n+"":r.textContent=n+"")}if("string"==typeof e){if("global"===r)return void Aa(e,n,s,"global");if(e.includes("."))return void function(e,t,r){const n=e.split("."),s=n[1],i=Sa(n[0],r);i&&(i[s]=t)}(e,n,s);if("me"===e&&s.me)return void(s.me.value=n);if("it"===e)return void Object.assign(s,{it:n});if("you"===e&&s.you)return void(s.you.value=n);Aa(e,n,s)}}(r,n,s,l,t),Object.assign(t,{it:l}),l}},gi(t,"NumericModifyCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})();const Ma=xi(qa),$a=xi(qa),Va=xi((()=>{let e,t,r=[Ei({description:"Log values to the console",syntax:"log [<values...>]",examples:['log "Hello World"',"log me.value","log x y z",'log "Result:" result'],sideEffects:["console-output"]}),ki({name:"log",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){return e.args&&0!==e.args.length?{values:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}:{values:[]}}async execute(e,t){const r="undefined"!=typeof window?window.console:console;0===e.values.length?r.log():r.log(...e.values)}validate(e){return"object"==typeof e&&null!==e&&Array.isArray(e.values)}},gi(t,"LogCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})());function Da(e){const t=e.trim();return/^\d+$/.test(t)?parseInt(t,10):/^\d*\.\d+$/.test(t)?parseFloat(t):"true"===t||"false"!==t&&("null"===t?null:"undefined"!==t?t.startsWith('"')&&t.endsWith('"')||t.startsWith("'")&&t.endsWith("'")?t.slice(1,-1):t:void 0)}let Ba=(()=>{let e,t,r=[Ei({description:"Dispatch events on elements",syntax:["trigger <event> on <target>","trigger <event>(<detail>) on <target>","send <event> to <target>","send <event>(<detail>) to <target>"],examples:["trigger click on #button","trigger customEvent on me","send dataEvent to #target","send myEvent(count: 42) to me"],sideEffects:["event-dispatch"],aliases:["send"]}),ki({name:"trigger",category:"event"})],n=[];return t=class{async parseInput(e,t,r){const n="send"===e.commandName?.toLowerCase()?"send":"trigger",s=n;if(!e.args?.length)throw Error(s+" command requires an event name");const i=e=>e?.type||"unknown",a=e.args[0];let o,l,c;if("functionCall"===i(a)||"callExpression"===i(a)){o=a.name||a.callee?.name;const e=a.args||a.arguments;e?.length&&(l=await this.parseEventDetail(e,t,r))}else if("identifier"===i(a)||"keyword"===i(a))o=a.name;else{const e=await t.evaluate(a,r);o="string"==typeof e?e:e+""}const u=e.modifiers?.on||e.modifiers?.to;if(u)c=await this.resolveTargets([u],t,r,s);else{const n=e.args.findIndex((e,t)=>{if(0===t)return!1;const r=e.name||e.value;return"on"===r||"to"===r});if(-1!==n&&e.args.length-1>n){const i=e.args.slice(n+1),a=i.findIndex(e=>"with"===(e.name||e.value)),o=-1===a?i:i.slice(0,a);c=await this.resolveTargets(o,t,r,s)}else{if(!r.me)throw Error(s+": no target specified and context.me is null");c=[r.me]}}return{eventName:o,detail:l,targets:c,options:await this.parseEventOptions(e.args,t,r),mode:n}}async execute(e,t){const r=function(e,t,r={}){return new CustomEvent(e,{detail:void 0!==t?t:{},bubbles:void 0===r.bubbles||r.bubbles,cancelable:void 0===r.cancelable||r.cancelable,composed:void 0!==r.composed&&r.composed})}(e.eventName,e.detail,e.options);for(const t of e.targets)t.dispatchEvent(r);t.it=r}async resolveTargets(e,t,r,n){const s=[];for(const n of e){const e=await t.evaluate(n,r);if("window"!==e&&e!==window)if("document"!==e&&e!==document)if("me"===e&&r.me)s.push(r.me);else if("you"===e&&r.you)s.push(r.you);else if("it"===e&&r.it)s.push(r.it);else if(Ci(e))s.push(e);else if(e instanceof NodeList)s.push(...Array.from(e).filter(Ci));else if(Array.isArray(e))s.push(...e.filter(Ci));else{if("string"==typeof e){const t=document.querySelectorAll(e);if(0===t.length)throw Error(`No elements found: "${e}"`);s.push(...Array.from(t).filter(Ci));continue}if(!e||"object"!=typeof e||!("addEventListener"in e))throw Error("Invalid target: "+typeof e);s.push(e)}else s.push(document);else s.push(window)}if(!s.length)throw Error(n+": no valid targets");return s}async parseEventDetail(e,t,r){if(!e?.length)return;if(1===e.length){const n=e[0];if("objectLiteral"!==n?.type)return await t.evaluate(n,r)}const n={};for(const s of e){const e=await t.evaluate(s,r);if("object"!=typeof e||null===e||Array.isArray(e)){if("string"==typeof e&&e.includes(":")){const[t,r]=e.split(":",2);n[t.trim()]=Da(r.trim())}}else Object.assign(n,e)}return Object.keys(n).length?n:void 0}async parseEventOptions(e,t,r){const n={bubbles:!0,cancelable:!0,composed:!1},s=e.findIndex(e=>"with"===(e.name||e.value));if(-1===s)return n;for(const i of e.slice(s+1)){const e=await t.evaluate(i,r);if("string"==typeof e){const t=e.toLowerCase();"bubbles"===t?n.bubbles=!0:"nobubbles"===t?n.bubbles=!1:"cancelable"===t?n.cancelable=!0:"nocancelable"===t?n.cancelable=!1:"composed"===t&&(n.composed=!0)}}return n}},gi(t,"EventDispatchCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})();const Fa=xi(Ba),za=xi(Ba),Ha=xi((()=>{let e,t,r=[Ei({description:"Navigation functionality including URL navigation, element scrolling, and browser history",syntax:["go back","go to url <url> [in new window]","go to [position] [of] <element>"],examples:["go back",'go to url "https://example.com"',"go to top of #header"],sideEffects:["navigation","scrolling"]}),ki({name:"go",category:"navigation"})],n=[];return t=class{async parseInput(e,t,r){return e.args&&0!==e.args.length?{args:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}:{args:[]}}async execute(e,t){const{args:r}=e;if(0===r.length)throw Error("Go command requires arguments");return"string"==typeof r[0]&&"back"===r[0].toLowerCase()?(await this.goBack(),{result:"back",type:"back"}):this.isUrlNavigation(r)?{result:await this.navigateToUrl(r,t),type:"url"}:{result:await this.scrollToElement(r,t),type:"scroll"}}isUrlNavigation(e){return-1!==e.findIndex(e=>"url"===e)}async goBack(){if("undefined"==typeof window||!window.history)throw Error("Browser history API not available");window.history.back()}async navigateToUrl(e,t){const r=e.findIndex(e=>"url"===e),n=e[r+1];if(!n)throw Error('URL is required after "url" keyword');const s="string"==typeof n?n:n+"",i=e.includes("new")&&e.includes("window");if(!this.isValidUrl(s))throw Error(`Invalid URL: "${s}"`);if(i){if("undefined"!=typeof window&&window.open){const e=window.open(s,"_blank");e?.focus&&e.focus()}}else s.startsWith("#")?"undefined"!=typeof window&&(window.location.hash=s):"undefined"!=typeof window&&(window.location.assign?.(s)??(window.location.href=s));return s}isValidUrl(e){try{return e.startsWith("/")||e.startsWith("#")||new URL(e),!0}catch{return!1}}async scrollToElement(e,t){const r=this.parseScrollPosition(e),n=this.parseScrollTarget(e),s=this.parseScrollOffset(e),i=!e.includes("instantly"),a=this.resolveScrollTarget(n,t);if(!a)throw Error("Target element not found: "+n);if("undefined"!=typeof window){const e=i?"smooth":"instant",t=this.mapVerticalPosition(r.vertical),n=this.mapHorizontalPosition(r.horizontal);if(0!==s){a.scrollIntoView?.({behavior:e,block:t,inline:n});const{x:i,y:o}=this.calculateScrollPosition(a,r,s);window.scrollTo?.({left:i,top:o,behavior:e})}else a.scrollIntoView?.({behavior:e,block:t,inline:n})}return a}mapVerticalPosition(e){return{top:"start",middle:"center",bottom:"end",nearest:"nearest"}[e]||"start"}mapHorizontalPosition(e){return{left:"start",center:"center",right:"end",nearest:"nearest"}[e]||"nearest"}parseScrollPosition(e){const t={vertical:"top",horizontal:"nearest"},r=["top","middle","bottom"],n=["left","center","right"];let s=!1,i=!1;for(const a of e)"string"==typeof a&&(r.includes(a)?(t.vertical=a,s=!0):n.includes(a)&&(t.horizontal=a,i=!0));return i&&!s&&(t.vertical="nearest"),t}parseScrollTarget(e){const t=e.findIndex(e=>"of"===e);if(-1!==t&&e.length>t+1){let r=e[t+1];return"the"===r&&e.length>t+2&&(r=e[t+2]),r}for(const t of e)if("object"==typeof t&&t&&t.nodeType)return t;const r=["top","middle","bottom","left","center","right","of","the","to","smoothly","instantly"];for(const t of e)if("string"==typeof t&&!r.includes(t)&&(t.startsWith("#")||t.startsWith(".")||t.includes("[")||/^[a-zA-Z][a-zA-Z0-9-]*$/.test(t)))return t;return"body"}parseScrollOffset(e){for(let t=0;e.length>t;t++){const r=e[t];if("string"==typeof r){const e=r.match(/^([+-]?\d+)(px)?$/);if(e)return parseInt(e[1],10)}if(("+"===r||"-"===r)&&e.length>t+1){const n=e[t+1],s="number"==typeof n?n:parseInt((n+"").replace("px",""),10);if(!isNaN(s))return"-"===r?-s:s}}return 0}resolveScrollTarget(e,t){if("object"==typeof e&&e&&e.nodeType)return e;const r="string"==typeof e?e:e+"";if("body"===r&&"undefined"!=typeof document)return document.body;if("html"===r&&"undefined"!=typeof document)return document.documentElement;if("me"===r&&Ci(t.me))return t.me;if("it"===r&&Ci(t.it))return t.it;if("you"===r&&Ci(t.you))return t.you;const n=Ca(r,t);if(Ci(n))return n;if("undefined"!=typeof document)try{const e=document.querySelector(r);if(e)return e}catch{try{const e=document.getElementsByTagName(r);if(e.length>0)return e[0]}catch{}}return null}calculateScrollPosition(e,t,r){if("undefined"==typeof window||!e.getBoundingClientRect)return{x:0,y:0};const n=e.getBoundingClientRect(),s=window.pageXOffset||document.documentElement?.scrollLeft||0,i=window.pageYOffset||document.documentElement?.scrollTop||0,a=window.innerWidth||800,o=window.innerHeight||600;let l=s,c=i;switch(t.horizontal){case"left":l=n.left+s;break;case"center":l=n.left+s+n.width/2-a/2;break;case"right":l=n.right+s-a}switch(t.vertical){case"top":c=n.top+i+r;break;case"middle":c=n.top+i+n.height/2-o/2+r;break;case"bottom":c=n.bottom+i-o+r}return{x:Math.max(0,l),y:Math.max(0,c)}}},gi(t,"GoCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})());function Ua(e,t){if("boolean"==typeof e)return e;if("function"==typeof e)return!0;if(e instanceof Promise)throw Error("Condition must be awaited - use await in the condition expression");if("string"==typeof e){if("me"===e)return!!t.me;if("it"===e)return!!t.it;if("you"===e)return!!t.you;const r=Ca(e,t);return void 0!==r?!!r:!!e}return!!e}const Wa=xi((()=>{let e,t,r=[Ei({description:"Conditional execution based on boolean expressions",syntax:["if <condition> then <commands>","if <condition> then <commands> else <commands>","unless <condition> <commands>"],examples:["if x > 5 then add .active","if user.isAdmin then show #adminPanel else hide #adminPanel","unless user.isLoggedIn showLoginForm"],sideEffects:["conditional-execution"],aliases:["unless"]}),ki({name:"if",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){const n="unless"===e.commandName?.toLowerCase()?"unless":"if";if(!e.args||0===e.args.length)throw Error(n+" command requires a condition to evaluate");let s,i;if("unless"===n){if(2>e.args.length)throw Error("unless command requires a condition and at least one command");s=e.args.slice(1)}else if(e.args.length>=2&&e.args[1]?(s=e.args[1],i=3>e.args.length?void 0:e.args[2]):e.modifiers?.then&&(s=e.modifiers.then,i=e.modifiers.else),!s)throw Error('if command requires "then" branch with commands');return{mode:n,condition:await t.evaluate(e.args[0],r),thenCommands:s,elseCommands:i}}async execute(e,t){const{mode:r,condition:n,thenCommands:s,elseCommands:i}=e,a=Ua(n,t);let o,l;return("unless"===r?!a:a)?(o="then",l=await this.executeCommandsOrBlock(s,t),"unless"===r&&Object.assign(t,{it:l})):i&&"if"===r?(o="else",l=await this.executeCommandsOrBlock(i,t)):o="none",{mode:r,conditionResult:a,executedBranch:o,result:l}}async executeCommandsOrBlock(e,t){return"block"===e?.type?this.executeBlock(e,t):Array.isArray(e)?this.executeCommands(e,t):e}async executeBlock(e,t){const r=t.locals.get("_runtimeExecute");if(!r)throw Error("Runtime execute function not available");let n;if(e.commands?.length)for(const s of e.commands)n=await r(s,t);return n}async executeCommands(e,t){let r;for(const n of e)r=n?.execute?await n.execute(t):"function"==typeof n?await n():n;return r}},gi(t,"ConditionalCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})()),Ja=Wa,Ka=Wa;let Ya=(()=>{let e,t,r=[Ei({description:"Iteration in hyperscript - for-in, counted, conditional, event-driven, and infinite loops",syntax:["repeat for <var> in <collection> { <commands> }","repeat <count> times { <commands> }","repeat while <condition> { <commands> }","repeat until <condition> { <commands> }","repeat forever { <commands> }"],examples:["repeat for item in items { log item }",'repeat 5 times { log "hello" }'],sideEffects:["iteration","conditional-execution"]}),ki({name:"repeat",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){let n;if(e.modifiers?.index){const s=await t.evaluate(e.modifiers.index,r);"string"==typeof s&&(n=s)}let s=e.modifiers?.block||e.modifiers?.commands;if(!s)for(let t=e.args.length-1;t>=0;t--){const r=e.args[t];if("block"===r?.type&&r.commands){s=r;break}}const i=e.args[0],a="identifier"===i?.type?i.name:null;if("for"===a||e.modifiers?.for){const i=e.args[1],a=i?.value||i?.name,o=e.args[2]?await t.evaluate(e.args[2],r):void 0;if(!a||void 0===o)throw Error("for loops require variable and collection");return{type:"for",variable:a,collection:Array.isArray(o)?o:[o],indexVariable:n,commands:s}}if("times"===a||e.modifiers?.times){const i=e.args[1],a=i?await t.evaluate(i,r):void 0,o="number"==typeof a?a:parseInt(a+"",10);if(isNaN(o))throw Error("times loops require a count number");return{type:"times",count:o,indexVariable:n,commands:s}}if("while"===a||e.modifiers?.while){const t=e.args[1]||e.modifiers?.while;if(!t)throw Error("while loops require a condition");return{type:"while",condition:t,indexVariable:n,commands:s}}if("until"===a&&e.modifiers?.from||"until-event"===a){const i=e.args[1],a=i?.value||i?.name;if(!a)throw Error("until-event loops require an event name");let o=r.me;if(e.args[2]){const n=await t.evaluate(e.args[2],r);n instanceof EventTarget?o=n:"document"===n&&(o=document)}return{type:"until-event",eventName:a,eventTarget:o,indexVariable:n,commands:s}}if("until"===a||e.modifiers?.until){const t=e.args[1]||e.modifiers?.until;if(!t)throw Error("until loops require a condition");return{type:"until",condition:t,indexVariable:n,commands:s}}if("forever"===a||e.modifiers?.forever)return{type:"forever",indexVariable:n,commands:s};throw Error("repeat command requires a loop type (for/times/while/until/forever)")}async execute(e,t){const{type:r,variable:n,collection:s,condition:i,count:a,indexVariable:o,commands:l,eventName:c,eventTarget:u}=e;let d,m;switch(r){case"for":({config:d,iterCtx:m}=function(e,t,r){return{config:{type:"for",shouldContinue:e=>(e.collection?.length??0)>e.index,beforeIteration:(e,t)=>{e.item=e.collection?.[e.index],e.itemVariable&&t.locals&&t.locals.set(e.itemVariable,e.item)}},iterCtx:{index:0,collection:e,itemVariable:t,indexVariable:r}}}(s,n,o));break;case"times":({config:d,iterCtx:m}=function(e,t){return{config:{type:"times",shouldContinue:e=>(e.count??0)>e.index,beforeIteration:(e,t)=>{Object.assign(t,{it:e.index+1})}},iterCtx:{index:0,count:e,indexVariable:t}}}(a,o));break;case"while":({config:d,iterCtx:m}=function(e,t,r,n){return{config:{type:"while",shouldContinue:()=>t(e,r)},iterCtx:{index:0,conditionExpr:e,indexVariable:n}}}(i,Ua,t,o));break;case"until":({config:d,iterCtx:m}=function(e,t,r,n){return{config:{type:"until",shouldContinue:()=>!t(e,r)},iterCtx:{index:0,conditionExpr:e,indexVariable:n}}}(i,Ua,t,o));break;case"until-event":({config:d,iterCtx:m}=function(e,t,r){const n={index:0,eventFired:!1,indexVariable:r};return{config:{type:"until-event",shouldContinue:e=>!e.eventFired,eventSetup:{eventName:e,target:t,onEvent:()=>{n.eventFired=!0}}},iterCtx:n}}(c,u,o));break;case"forever":({config:d,iterCtx:m}=function(e,t=1e4){return{config:{type:"forever",maxIterations:t,shouldContinue:()=>!0},iterCtx:{index:0,indexVariable:e}}}(o));break;default:throw Error("Unknown repeat type: "+r)}try{const e=await async function(e,t,r,n,s){const i=e.maxIterations??1e4;let a,o=0,l=!1;e.eventSetup&&e.eventSetup.target.addEventListener(e.eventSetup.eventName,e.eventSetup.onEvent,{once:!0});try{for(;i>o&&await e.shouldContinue(n);){e.beforeIteration&&await e.beforeIteration(n,r),n.indexVariable&&r.locals&&r.locals.set(n.indexVariable,o);try{a=await s(t,r)}catch(t){if(t instanceof Error){if(t.message.includes("BREAK")){l=!0;break}if(t.message.includes("CONTINUE")){o++,n.index=o,"until-event"===e.type&&await new Promise(e=>setTimeout(e,0));continue}}throw t}o++,n.index=o,"until-event"===e.type&&await new Promise(e=>setTimeout(e,0))}}finally{e.eventSetup&&!n.eventFired&&e.eventSetup.target.removeEventListener(e.eventSetup.eventName,e.eventSetup.onEvent)}return{iterations:o,lastResult:a,interrupted:l}}(d,l,t,m,this.executeCommands.bind(this));return Object.assign(t,{it:e.lastResult}),{type:r,iterations:e.iterations,completed:!e.interrupted,lastResult:e.lastResult,interrupted:e.interrupted}}catch(e){if(e instanceof Error&&(e.message.includes("BREAK")||e.message.includes("CONTINUE")))return{type:r,iterations:0,completed:!0,interrupted:e.message.includes("BREAK")};throw e}}async executeCommands(e,t){if(e&&"object"==typeof e&&"block"===e.type){const r=e,n=t.locals.get("_runtimeExecute");if(!n)throw Error("Runtime execute function not available");let s;if(r.commands)for(const e of r.commands)s=await n(e,t);return s}if(Array.isArray(e)){let r;for(const n of e)r="function"==typeof n?await n(t):n&&"function"==typeof n.execute?await n.execute(t):n;return r}return"function"==typeof e?await e(t):e}},gi(t,"RepeatCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})();const Ga=xi(Ya);class Xa{async parseInput(e,t,r){return{signalType:this.signalType}}async execute(e,t){const r=Error(this.errorMessage);throw r[this.errorFlag]=!0,"exit"===this.signalType&&(r.returnValue=void 0,r.timestamp=Date.now()),r}}let Za=(()=>{let e,t,r=[Ei({description:"Exit from the current loop (repeat, for, while, until)",syntax:["break"],examples:["break","if found then break","repeat for item in items { if item == target then break }"],sideEffects:["control-flow"]}),ki({name:"break",category:"control-flow"})],n=[],s=Xa;return t=class extends s{constructor(){super(...arguments),this.signalType="break",this.errorMessage="BREAK_LOOP",this.errorFlag="isBreak"}},gi(t,"BreakCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),yi(t,n)})(),t})();const Qa=xi(Za);let eo=(()=>{let e,t,r=[Ei({description:"Skip to the next iteration of the current loop",syntax:["continue"],examples:["continue","if item.isInvalid then continue","repeat for item in items { if item.skip then continue; process item }"],sideEffects:["control-flow"]}),ki({name:"continue",category:"control-flow"})],n=[],s=Xa;return t=class extends s{constructor(){super(...arguments),this.signalType="continue",this.errorMessage="CONTINUE_LOOP",this.errorFlag="isContinue"}},gi(t,"ContinueCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),yi(t,n)})(),t})();const to=xi(eo),ro=xi((()=>{let e,t,r=[Ei({description:"Stop command execution or prevent event defaults",syntax:["halt","halt the event"],examples:["halt","halt the event","if error then halt",'on click halt the event then log "clicked"'],sideEffects:["control-flow","event-prevention"]}),ki({name:"halt",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){if(e.args&&e.args.length>0){const n=e.args[0],s=e.args.length>1?e.args[1]:null;return"identifier"===n.type&&"the"===n.name&&s&&"identifier"===s.type&&"event"===s.name?{target:r.event}:{target:await t.evaluate(e.args[0],r)}}return{}}async execute(e,t){let r=e.target;if(("the"===r&&t.event||"object"==typeof r&&null!==r&&"the"===r.target&&t.event)&&(r=t.event),this.isEvent(r)){const e=r;return e.preventDefault(),e.stopPropagation(),{halted:!0,timestamp:Date.now(),eventHalted:!0}}"halted"in t&&(t.halted=!0);const n=Error("HALT_EXECUTION");throw n.isHalt=!0,n}isEvent(e){return null!==e&&"object"==typeof e&&"preventDefault"in e&&"stopPropagation"in e}},gi(t,"HaltCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})()),no=xi((()=>{let e,t,r=[Ei({description:"Return a value from a command sequence or function, terminating execution",syntax:["return","return <value>"],examples:["return","return 42","return user.name","if found then return result"],sideEffects:["control-flow","context-mutation"]}),ki({name:"return",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){return e.args&&0!==e.args.length?{value:await t.evaluate(e.args[0],r)}:{value:void 0}}async execute(e,t){const{value:r}=e;"returnValue"in t&&(t.returnValue=r),Object.assign(t,{it:r});const n=Error("RETURN_VALUE");throw n.isReturn=!0,n.returnValue=r,n}},gi(t,"ReturnCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})());let so=(()=>{let e,t,r=[Ei({description:"Immediately terminate execution of the current event handler or behavior",syntax:["exit"],examples:["exit","if no draggedItem exit","on click if disabled exit"],sideEffects:["control-flow"]}),ki({name:"exit",category:"control-flow"})],n=[],s=Xa;return t=class extends s{constructor(){super(...arguments),this.signalType="exit",this.errorMessage="EXIT_COMMAND",this.errorFlag="isExit"}},gi(t,"ExitCommand"),(()=>{const i="function"==typeof Symbol&&Symbol.metadata?Object.create(s[Symbol.metadata]??null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:i},null,n),t=e.value,i&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:i}),yi(t,n)})(),t})();const io=xi(so),ao=xi((()=>{let e,t,r=[Ei({description:"Evaluate an expression and store the result in the it variable",syntax:["call <expression>"],examples:["call myFunction()",'call fetch("/api/data")',"call element.focus()"],sideEffects:["function-execution","context-mutation"]}),ki({name:"call",category:"execution"})],n=[];return t=class{parseInput(e,t,r){if(!e.args?.length)throw Error("call command requires an expression");return Promise.resolve({expression:e.args[0]})}async execute(e,t){const{expression:r}=e,n=t.locals?.get("__evaluator");if(!n)throw Error("[CALL.execute] No evaluator available in context");const s=await n.evaluate(r,t);let i,a,o=!1;return"function"==typeof s?(a="function",i=s(),i instanceof Promise&&(o=!0,i=await i)):s instanceof Promise?(a="promise",o=!0,i=await s):(a="value",i=s),Object.assign(t,{it:i,result:i}),{result:i,wasAsync:o,expressionType:a}}},gi(t,"CallCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})()),oo=xi((()=>{let e,t,r=[Ei({description:"Add content to the end of a string, array, or HTML element",syntax:["append <content>","append <content> to <target>"],examples:['append "Hello"','append "World" to greeting',"append item to myArray",'append "<p>New</p>" to #content'],sideEffects:["data-mutation","dom-mutation"]}),ki({name:"append",category:"content"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("append requires content");const n=await t.evaluate(e.args[0],r);let s;return e.modifiers?.to?s=await t.evaluate(e.modifiers.to,r):e.target&&(s=e.target),{content:n,target:s}}async execute(e,t){const{content:r,target:n}=e,s=r+"";if(!n)return Object.assign(t,void 0===t.it?{it:s}:{it:t.it+""+s}),{result:t.it,targetType:"result"};if("string"==typeof n){if(n.startsWith("#")||n.startsWith(".")||n.includes("[")){const e=this.resolveDOMElement(n);return e.innerHTML+=s,{result:e,targetType:"element",target:e}}if("me"===n||"it"===n||"you"===n){const e=this.resolveContextRef(n,t);if(Ci(e))return e.innerHTML+=s,{result:e,targetType:"element",target:e}}const e=Ca(n,t);if(void 0!==e){if(Array.isArray(e))return e.push(r),{result:e,targetType:"array",target:n};const i=(null==e?"":e+"")+s;return Aa(n,i,t),{result:i,targetType:"variable",target:n}}return Aa(n,s,t),{result:s,targetType:"variable",target:n}}if(Array.isArray(n))return n.push(r),{result:n,targetType:"array"};if(Ci(n))return n.innerHTML+=s,{result:n,targetType:"element",target:n};{const e=n+""+s;return Object.assign(t,{it:e}),{result:e,targetType:"string"}}}resolveDOMElement(e){if("undefined"==typeof document)throw Error("DOM not available");const t=document.querySelector(e);if(!t)throw Error("Element not found: "+e);return t}resolveContextRef(e,t){switch(e){case"me":return t.me;case"it":return t.it;case"you":return t.you;default:throw Error("Unknown context ref: "+e)}}},gi(t,"AppendCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})()),lo=xi((()=>{let e,t,r=[Ei({description:"Animate CSS properties using CSS transitions",syntax:"transition <property> to <value> [over <duration>] [with <timing>]",examples:["transition opacity to 0.5","transition left to 100px over 500ms","transition background-color to red over 1s with ease-in-out"],sideEffects:["style-change","timing"]}),ki({name:"transition",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args?.length)throw Error("transition requires property and value");let n,s;const i=await t.evaluate(e.args[0],r);if(Ci(i)||"string"==typeof i&&/^[#.]|^(?:me|it|you)$/.test(i)?(s=i,n=await t.evaluate(e.args[1],r)+""):n=i+"",!n)throw Error("transition requires a CSS property");if(!e.modifiers?.to)throw Error('transition requires "to <value>"');let a=await t.evaluate(e.modifiers.to,r);void 0===a&&"identifier"===e.modifiers.to.type&&(a=e.modifiers.to.name);const o={property:n,value:a};return void 0!==s&&(o.target=s),e.modifiers?.over&&(o.duration=await t.evaluate(e.modifiers.over,r)),e.modifiers?.with&&(o.timingFunction=await t.evaluate(e.modifiers.with,r)+""),o}async execute(e,t){let{property:r}=e;const{target:n,value:s,duration:i,timingFunction:a}=e;r.startsWith("*")&&(r=r.substring(1)),r=r.replace(/([A-Z])/g,"-$1").toLowerCase();const o=Ai(n,t),l=na(i,300),c=getComputedStyle(o).getPropertyValue(r),u=o.style.transition,d=`${r} ${l}ms ${a||"ease"}`;o.style.transition=u?`${u}, ${d}`:d;let m=s+"",p=!1;if("initial"===m||"inherit"===m||"unset"===m||"revert"===m){const e=o.style.getPropertyValue(r);o.style.removeProperty(r),m=getComputedStyle(o).getPropertyValue(r),e&&o.style.setProperty(r,e),p=!0}o.style.setProperty(r,m);const h=await function(e,t,r){return new Promise(n=>{const s=r=>{r.target===e&&r.propertyName===t&&a({completed:!0,cancelled:!1})},i=r=>{r.target===e&&r.propertyName===t&&a({completed:!1,cancelled:!0})},a=Na(()=>{e.removeEventListener("transitionend",s),e.removeEventListener("transitioncancel",i),clearTimeout(o)},n);e.addEventListener("transitionend",s),e.addEventListener("transitioncancel",i);const o=setTimeout(()=>{a({completed:!0,cancelled:!1})},r+50)})}(o,r,l);return o.style.transition=u,p&&o.style.removeProperty(r),Object.assign(t,{it:o}),{element:o,property:r,fromValue:c,toValue:m,duration:l,completed:h.completed}}},gi(t,"TransitionCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})()),co=xi((()=>{let e,t,r=[Ei({description:"Measure DOM element dimensions, positions, and properties",syntax:["measure","measure <property>","measure <target> <property>"],examples:["measure","measure width","measure #element height","measure x and set dragX"],sideEffects:["data-mutation"]}),ki({name:"measure",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){let n,s,i;if(e.args?.length){const i=e.args[0];if("identifier"===i.type&&i.name){const a=i.name.toLowerCase();if("me"===a||"it"===a||"you"===a){const a=await t.evaluate(i,r);if(Ci(a)&&(n=a,e.args.length>1)){const n=e.args[1];s="identifier"===n.type?n.name:await t.evaluate(n,r)+""}}else s=i.name}else{const a=await t.evaluate(i,r);if(Ci(a)||"string"==typeof a&&/^[#.]/.test(a)){if(n=a,e.args.length>1){const n=e.args[1];s="identifier"===n.type?n.name:await t.evaluate(n,r)+""}}else"string"==typeof a&&(s=a)}}e.modifiers?.set&&(i=await t.evaluate(e.modifiers.set,r)+"");const a={};return void 0!==n&&(a.target=n),void 0!==s&&(a.property=s),void 0!==i&&(a.variable=i),a}async execute(e,t){const r=Ai(e.target,t),n=e.property||"width",s=this.getMeasurement(r,n);return e.variable&&t.locals&&t.locals.set(e.variable,s.value),Object.assign(t,{it:s.value}),{result:s.value,wasAsync:!1,element:r,property:n,value:s.value,unit:s.unit,stored:!!e.variable}}getMeasurement(e,t){const r=getComputedStyle(e);if(t.startsWith("*")){const e=r.getPropertyValue(t.substring(1)),n=parseFloat(e);if(!isNaN(n)){const t=e.match(/([a-zA-Z%]+)$/);return{value:n,unit:t?t[1]:""}}return{value:e,unit:""}}const n=t.toLowerCase(),s=e.getBoundingClientRect(),i={width:()=>s.width,height:()=>s.height,top:()=>s.top,left:()=>s.left,right:()=>s.right,bottom:()=>s.bottom,x:()=>e.offsetLeft,y:()=>e.offsetTop,clientwidth:()=>e.clientWidth,"client-width":()=>e.clientWidth,clientheight:()=>e.clientHeight,"client-height":()=>e.clientHeight,offsetwidth:()=>e.offsetWidth,"offset-width":()=>e.offsetWidth,offsetheight:()=>e.offsetHeight,"offset-height":()=>e.offsetHeight,scrollwidth:()=>e.scrollWidth,"scroll-width":()=>e.scrollWidth,scrollheight:()=>e.scrollHeight,"scroll-height":()=>e.scrollHeight,scrolltop:()=>e.scrollTop,"scroll-top":()=>e.scrollTop,scrollleft:()=>e.scrollLeft,"scroll-left":()=>e.scrollLeft,offsettop:()=>e.offsetTop,"offset-top":()=>e.offsetTop,offsetleft:()=>e.offsetLeft,"offset-left":()=>e.offsetLeft};if(i[n])return{value:i[n](),unit:"px"};const a=r.getPropertyValue(t),o=parseFloat(a);if(!isNaN(o)){const e=a.match(/([a-zA-Z%]+)$/);return{value:o,unit:e?e[1]:"px"}}return{value:0,unit:"px"}}},gi(t,"MeasureCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})()),uo=xi((()=>{let e,t,r=[Ei({description:"Wait for CSS transitions and animations to complete",syntax:"settle [<target>] [for <timeout>]",examples:["settle","settle #animated-element","settle for 3000"],sideEffects:["timing"]}),ki({name:"settle",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){let n,s;if(e.args&&e.args.length>0){const s=await t.evaluate(e.args[0],r);(Ci(s)||"string"==typeof s&&(s.startsWith("#")||s.startsWith(".")||"me"===s||"it"===s||"you"===s))&&(n=s)}e.modifiers?.for&&(s=await t.evaluate(e.modifiers.for,r));const i={};return void 0!==n&&(i.target=n),void 0!==s&&(i.timeout=s),i}async execute(e,t){const{target:r,timeout:n}=e,s=Ai(r,t),i=na(n,5e3),a=Date.now(),o=getComputedStyle(s),l=ia(o.transitionDuration),c=ia(o.transitionDelay),u=ia(o.animationDuration),d=ia(o.animationDelay),m=aa(l,c),p=aa(u,d),h=Math.max(m,p),f=await(y=s,g=h,v=i,g>0?new Promise(e=>{const t=e=>{e.target===y&&n({completed:!0,type:"transition"})},r=e=>{e.target===y&&n({completed:!0,type:"animation"})},n=Na(()=>{y.removeEventListener("transitionend",t),y.removeEventListener("animationend",r),clearTimeout(s),clearTimeout(i)},e);y.addEventListener("transitionend",t),y.addEventListener("animationend",r);const s=setTimeout(()=>{n({completed:!0,type:"timeout"})},g+50),i=setTimeout(()=>{n({completed:!1,type:"timeout"})},v)}):Promise.resolve({completed:!0,type:"timeout"}));var y,g,v;const b=Date.now()-a;return Object.assign(t,{it:s}),{element:s,settled:f.completed,timeout:i,duration:b}}},gi(t,"SettleCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})()),mo=xi((()=>{let e,t,r=[Ei({description:"Execute inline JavaScript code with access to hyperscript context",syntax:["js <code> end","js(param1, param2) <code> end"],examples:['js console.log("Hello") end',"js(x, y) return x + y end",'js me.style.color = "red" end'],sideEffects:["code-execution","data-mutation"]}),ki({name:"js",category:"advanced"})],n=[];return t=class{async parseInput(e,t,r){let n,s;if(0===e.args.length)throw Error("js command requires JavaScript code");const i=e.args[0],a=e.args[1];if(i&&"literal"===i.type&&"string"==typeof i.value)n=i.value;else{if(!i||void 0===i.value)throw Error("js command requires JavaScript code");n=i.value+""}a&&"arrayLiteral"===a.type&&Array.isArray(a.elements)&&(s=a.elements.map(e=>"string"==typeof e.value?e.value:e.value+"").filter(e=>e&&e.length>0));const o={code:n};return s&&s.length>0&&(o.parameters=s),o}async execute(e,t){const{code:r,parameters:n=[]}=e;if(!r.trim())return{result:void 0,executed:!1,codeLength:r.length,parameters:n,preserveArrayResult:!0};try{const e=this.createExecutionContext(t,n),s=Function(...Object.keys(e),r),i=await s(...Object.values(e));return void 0!==i&&Object.assign(t,{it:i}),{result:i,executed:!0,codeLength:r.length,parameters:n,preserveArrayResult:!0}}catch(e){throw Error("JavaScript execution failed: "+(e instanceof Error?e.message:"Unknown error"))}}createExecutionContext(e,t){return{me:e.me,it:e.it,you:e.you,locals:e.locals,globals:e.globals,variables:e.variables,console:console,document:"undefined"!=typeof document?document:void 0,window:"undefined"!=typeof window?window:void 0,...t.reduce((t,r)=>{let n=e.locals?.get(r);return void 0===n&&(n=e.variables?.get(r)),void 0===n&&(n=e[r]),t[r]=n,t},{})}}},gi(t,"JsCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})()),po=xi((()=>{let e,t,r=[Ei({description:"Execute commands asynchronously without blocking",syntax:["async <command> [<command> ...]"],examples:["async command1 command2","async fetchData processData","async animateIn showContent"],sideEffects:["async-execution"]}),ki({name:"async",category:"advanced"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("async command requires at least one command to execute");return{commands:e.args}}async execute(e,t){const{commands:r}=e,n=Date.now();try{const e=await this.executeCommandsAsync(t,r),s=Date.now()-n;return e.length>0&&Object.assign(t,{it:e[e.length-1]}),{commandCount:r.length,results:e,executed:!0,duration:s}}catch(e){throw Error("Async command execution failed: "+(e instanceof Error?e.message:"Unknown error"))}}async executeCommandsAsync(e,t){const r=[];for(let n=0;t.length>n;n++){const s=t[n];try{const t=await this.executeCommand(s,e);r.push(t),Object.assign(e,{it:t})}catch(e){const r=this.getCommandName(s);throw Error(`Command '${r}' (${n+1}/${t.length}) failed: ${e instanceof Error?e.message:"Unknown error"}`)}}return r}async executeCommand(e,t){if("function"==typeof e)return await e(t);if(e&&"object"==typeof e&&"function"==typeof e.execute)return await e.execute(t);throw Error("Invalid command: must be a function or object with execute method")}getCommandName(e){return"function"==typeof e?e.name||"anonymous function":e&&"object"==typeof e?e.name||"unnamed command":"unknown"}},gi(t,"AsyncCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})()),ho=xi((()=>{let e,t,r=[Ei({description:"Set a value only if it doesn't already exist",syntax:["default <expression> to <expression>"],examples:['default myVar to "fallback"','default @data-theme to "light"','default my innerHTML to "No content"'],sideEffects:["data-mutation","dom-mutation"]}),ki({name:"default",category:"data"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("default command requires a target");const n=await t.evaluate(e.args[0],r);let s;if(e.modifiers?.to)s=await t.evaluate(e.modifiers.to,r);else{if(2>e.args.length)throw Error('default command requires a value (use "to <value>")');s=await t.evaluate(e.args[1],r)}return{target:n,value:s}}async execute(e,t){const{target:r,value:n}=e;if("string"==typeof r){if(r.startsWith("@"))return this.defaultAttribute(t,r.substring(1),n);const e=r.match(/^(my|its?|your?)\s+(.+)$/);if(e){const[,r,s]=e;return this.defaultElementProperty(t,r,s,n)}return this.defaultVariable(t,r,n)}if(Ci(r))return this.defaultElementValue(t,r,n);throw Error("Invalid target type: "+typeof r)}defaultVariable(e,t,r){const n=Ca(t,e);return void 0!==n?{target:t,value:r,wasSet:!1,existingValue:n,targetType:"variable"}:(Aa(t,r,e),Object.assign(e,{it:r}),{target:t,value:r,wasSet:!0,targetType:"variable"})}defaultAttribute(e,t,r){if(!e.me)throw Error("No element context available for attribute default");const n=e.me.getAttribute(t);return null!==n?{target:"@"+t,value:r,wasSet:!1,existingValue:n,targetType:"attribute"}:(e.me.setAttribute(t,r+""),Object.assign(e,{it:r}),{target:"@"+t,value:r,wasSet:!0,targetType:"attribute"})}defaultElementProperty(e,t,r,n){const s=Oi(t,e),i=function(e,t){if(t.startsWith("@"))return e.getAttribute(t.substring(1));switch(t){case"textContent":return e.textContent;case"innerHTML":return e.innerHTML;case"innerText":return e.innerText;case"id":return e.id;case"className":return e.className;case"value":return"value"in e?e.value:void 0;case"checked":return"checked"in e?e.checked:void 0}if(t.includes(".")){const r=t.split(".");let n=e;for(const e of r){if(null==n)break;n=n[e]}return n}return t.includes("-")||t in e.style?e.style.getPropertyValue(t)||e.style[t]:e[t]}(s,r),a=`${t} ${r}`;return ma(i)?(da(s,r,n),Object.assign(e,{it:n}),{target:a,value:n,wasSet:!0,targetType:"property"}):{target:a,value:n,wasSet:!1,existingValue:i,targetType:"property"}}defaultElementValue(e,t,r){const n=function(e){return"value"in e?e.value:e.textContent}(t);return ma(n)?(function(e,t){"value"in e?e.value=t+"":e.textContent=t+""}(t,r),Object.assign(e,{it:r}),{target:"element",value:r,wasSet:!0,targetType:"element"}):{target:"element",value:r,wasSet:!1,existingValue:n,targetType:"element"}}},gi(t,"DefaultCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})());class fo{constructor(){this.name="pseudo-command"}get metadata(){return fo.metadata}async parseInput(e,t,r){if(1===e.args.length&&"objectLiteral"===e.args[0].type){const n=e.args[0].properties||[];let s,i,a="",o=[];for(const e of n){const n=e.value;switch(e.key?.name||e.key?.value){case"methodName":a=n?.value||await t.evaluate(n,r)+"";break;case"methodArgs":"arrayLiteral"===n?.type&&n.elements?o=await Promise.all(n.elements.map(e=>t.evaluate(e,r))):"literal"===n?.type&&Array.isArray(n.value)&&(o=await Promise.all(n.value.map(e=>t.evaluate(e,r))));break;case"preposition":const e=n?.value;e&&"null"!==e&&(s=e);break;case"target":case"targetExpression":i=await t.evaluate(n,r)}}if(!a)throw Error("pseudo-command requires method name");if(null==i)throw Error("pseudo-command requires a target expression");return{methodName:a,methodArgs:o,preposition:s,targetExpression:i}}if(2>e.args.length)throw Error("pseudo-command requires method name and target expression");const n=await t.evaluate(e.args[0],r)+"",s=Array.isArray(e.args[1])?await Promise.all(e.args[1].map(e=>t.evaluate(e,r))):[];let i,a;const o=["from","on","with","into","at","to"];for(const n of o)if(e.modifiers?.[n]){a=n,i=await t.evaluate(e.modifiers[n],r);break}if(i||3>e.args.length||(i=await t.evaluate(e.args[2],r)),!i)throw Error("pseudo-command requires a target expression");return{methodName:n,methodArgs:s,preposition:a,targetExpression:i}}async execute(e,t){const{methodName:r,methodArgs:n,targetExpression:s}=e;try{const e=await this.resolveTarget(s,t);if(null==e)throw Error("Target expression resolved to "+e);const i=this.resolveMethod(e,r);if(!i)throw Error(`Method "${r}" not found on target object`);if("function"!=typeof i)throw Error(`"${r}" is not a function (it's a ${typeof i})`);const a=await this.executeMethod(i,e,n);return t.locals.set("result",a),Object.assign(t,{it:a}),{result:a,methodName:r,target:e}}catch(e){throw Error("Pseudo-command failed: "+(e instanceof Error?e.message:e+""))}}async resolveTarget(e,t){return"object"==typeof e&&null!==e?e:"string"==typeof e?t.locals.has(e)?t.locals.get(e):t.variables?.has(e)?t.variables.get(e):t.globals.has(e)?t.globals.get(e):"me"===e&&t.me?t.me:"it"===e&&t.it?t.it:"document"===e?"undefined"!=typeof document?document:null:"window"===e?"undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:null:this.resolvePropertyPath(e,t):e}resolvePropertyPath(e,t){const r=e.split(".");let n="undefined"!=typeof window?window:"undefined"!=typeof globalThis?globalThis:null;t.locals.has(r[0])?(n=t.locals.get(r[0]),r.shift()):t.variables?.has(r[0])?(n=t.variables.get(r[0]),r.shift()):t.globals.has(r[0])&&(n=t.globals.get(r[0]),r.shift());for(const e of r){if(null==n)return null;n=n[e]}return n}resolveMethod(e,t){if(!e)return null;if(t in e)return e[t];const r=t.split(".");let n=e;for(let e=0;r.length>e;e++){const t=r[e];if(null==n)return null;if(!(t in n))return null;if(n=n[t],e===r.length-1&&"function"==typeof n)return n}return null}async executeMethod(e,t,r){try{const n=e.apply(t,r);return n&&"object"==typeof n&&"then"in n?await n:n}catch(e){throw Error("Method execution failed: "+(e instanceof Error?e.message:e+""))}}}function yo(){return new fo}fo.metadata={description:"Treat a method on an object as a top-level command",syntax:["<method>(<args>) [(to|on|with|into|from|at)] <expression>"],examples:['getElementById("d1") from the document',"reload() the location of the window",'setAttribute("foo", "bar") on me',"foo() on me"],category:"execution",sideEffects:["method-execution"]};const go=xi((()=>{let e,t,r=[Ei({description:"Execute commands in the context of target elements",syntax:["tell <target> <command> [<command> ...]"],examples:["tell #sidebar hide","tell .buttons add .disabled","tell closest <form/> submit"],sideEffects:["context-switching","command-execution"]}),ki({name:"tell",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){if(2>e.args.length)throw Error("tell command requires a target and at least one command");return{target:await t.evaluate(e.args[0],r),commands:e.args.slice(1)}}async execute(e,t){const{target:r,commands:n}=e,s=Si(r,t);if(0===s.length)throw Error("tell command found no target elements");const i=t.locals.get("_runtimeExecute"),a=[];for(const e of s){const r={...t,me:e,you:e};for(const e of n)try{const t=await this.executeCommand(e,r,i);a.push(t),Object.assign(r,{it:t})}catch(e){throw Error("Command execution failed in tell block: "+(e instanceof Error?e.message:"Unknown error"))}}return{targetElements:s,commandResults:a,executionCount:s.length*n.length}}async executeCommand(e,t,r){if(e&&"object"==typeof e&&"command"===e.type&&r)return await r(e,t);if("function"==typeof e)return await e(t);if(e&&"object"==typeof e&&"function"==typeof e.execute)return await e.execute(t);throw Error("Invalid command: must be a function or object with execute method")}},gi(t,"TellCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})());let vo=(()=>{let e,t,r=[Ei({description:"Copy text or element content to the clipboard",syntax:["copy <source>","copy <source> to clipboard"],examples:['copy "Hello World"',"copy #code-snippet","copy my textContent"],sideEffects:["clipboard-write","custom-events"]}),ki({name:"copy",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("copy command requires a source (text or element)");const n=await t.evaluate(e.args[0],r);let s="text";if(e.modifiers?.format){const n=await t.evaluate(e.modifiers.format,r);"html"!==n&&"text"!==n||(s=n)}return{source:n,format:s}}async execute(e,t){const{source:r,format:n="text"}=e,s=this.extractText(r,n,t);if("undefined"!=typeof navigator&&navigator.clipboard)try{return await navigator.clipboard.writeText(s),this.dispatchCopyEvent(t,"copy:success",{text:s,method:"clipboard-api"}),{success:!0,text:s,format:n,method:"clipboard-api"}}catch{}try{if(this.copyUsingExecCommand(s))return this.dispatchCopyEvent(t,"copy:success",{text:s,method:"execCommand"}),{success:!0,text:s,format:n,method:"execCommand"}}catch{}return this.dispatchCopyEvent(t,"copy:error",{text:s,error:"All copy methods failed"}),{success:!1,text:s,format:n,method:"fallback"}}extractText(e,t,r){if("string"==typeof e)return e;if(Ci(e))return"html"===t?e.outerHTML:e.textContent||"";if(e===r.me&&Ci(r.me)){const e=r.me;return"html"===t?e.outerHTML:e.textContent||""}return e+""}copyUsingExecCommand(e){if("undefined"==typeof document)return!1;const t=document.createElement("textarea");t.value=e,t.style.cssText="position:fixed;top:0;left:-9999px",t.setAttribute("readonly",""),document.body.appendChild(t);try{t.select(),t.setSelectionRange(0,e.length);const r=document.execCommand("copy");return document.body.removeChild(t),r}catch{return t.parentNode?.removeChild(t),!1}}dispatchCopyEvent(e,t,r){if(Ci(e.me)){const n=new CustomEvent(t,{detail:r,bubbles:!0,cancelable:!1});e.me.dispatchEvent(n)}}},gi(t,"CopyCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})();const bo=xi(vo),wo=xi((()=>{let e,t,r=[Ei({description:"Select a random element from a collection",syntax:["pick <item1>, <item2>, ...","pick from <array>"],examples:['pick "red", "green", "blue"',"pick from colors","pick 1, 2, 3, 4, 5"],sideEffects:["random-selection"]}),ki({name:"pick",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){if(e.modifiers?.from){const n=await t.evaluate(e.modifiers.from,r);if(!Array.isArray(n))throw Error("pick from requires an array");if(0===n.length)throw Error("Cannot pick from empty array");return{array:n}}if(0===e.args.length)throw Error("pick command requires items to choose from");return{items:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}}async execute(e,t){const{items:r,array:n}=e,s=r||n,i=r?"items":"array",a=Math.floor(Math.random()*s.length),o=s[a];return Object.assign(t,{it:o}),{selectedItem:o,selectedIndex:a,sourceLength:s.length,sourceType:i}}},gi(t,"PickCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})()),ko=xi((()=>{let e,t,r=[Ei({description:"Throw an error with a specified message",syntax:["throw <message>"],examples:['throw "Invalid input"','if not valid then throw "Validation failed"'],sideEffects:["error-throwing","execution-termination"]}),ki({name:"throw",category:"control-flow"})],n=[];return t=class{async parseInput(e,t,r){if(1>e.args.length)throw Error("throw command requires a message or error object");return{message:await t.evaluate(e.args[0],r)}}async execute(e,t){const{message:r}=e;let n;throw n=r instanceof Error?r:Error("string"==typeof r?r:r+""),n}},gi(t,"ThrowCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})());const Eo=xi((()=>{let e,t,r=[Ei({description:"Debug output for expressions with type information",syntax:["beep!","beep! <expression>","beep! <expression>, <expression>, ..."],examples:["beep!","beep! myValue","beep! me.id, me.className"],sideEffects:["console-output","debugging"]}),ki({name:"beep",category:"utility"})],n=[];return t=class{async parseInput(e,t,r){return 0===e.args.length?{expressions:[]}:{expressions:await Promise.all(e.args.map(e=>t.evaluate(e,r)))}}async execute(e,t){const r=e.expressions||[];if(0===r.length)return this.debugContext(t),{expressionCount:0,debugged:!0,outputs:[]};const n=[];console.group("🔔 beep! Debug Output");for(const e of r){const t=this.debugExpression(e);n.push(t),console.log("Value:",e),console.log("Type:",t.type),console.log("Representation:",t.representation),console.log("---")}return console.groupEnd(),{expressionCount:r.length,debugged:!0,outputs:n}}debugContext(e){console.group("🔔 beep! Context Debug"),console.log("me:",e.me),console.log("it:",e.it),console.log("you:",e.you),console.log("locals:",e.locals),console.log("globals:",e.globals),console.log("variables:",e.variables),console.groupEnd()}debugExpression(e){return{value:e,type:this.getType(e),representation:this.getRepresentation(e)}}getType(e){return null===e?"null":void 0===e?"undefined":Array.isArray(e)?"array":Ci(e)?"HTMLElement":e instanceof Element?"Element":e instanceof Node?"Node":e instanceof Error?"Error":e instanceof Date?"Date":e instanceof RegExp?"RegExp":typeof e}getRepresentation(e){if(null===e)return"null";if(void 0===e)return"undefined";if(Array.isArray(e))return`Array(${e.length}) [${e.slice(0,3).map(e=>this.getRepresentation(e)).join(", ")}${e.length>3?"...":""}]`;if(Ci(e)){const t=e;return`<${t.tagName.toLowerCase()}${t.id?"#"+t.id:""}${t.className?"."+t.className.split(" ").join("."):""}/>`}if(e instanceof Error)return"Error: "+e.message;if("string"==typeof e)return e.length>50?`"${e.substring(0,47)}..."`:`"${e}"`;if("object"==typeof e)try{const t=Object.keys(e);return`Object {${t.slice(0,3).join(", ")}${t.length>3?"...":""}}`}catch{return"[Object]"}return e+""}},gi(t,"BeepCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})());class xo{constructor(){this.name="install"}get metadata(){return xo.metadata}async parseInput(e,t,r){if(1>e.args.length)throw Error("install command requires a behavior name");const n=e.args[0];let s,i,a;if(s="identifier"===n?.type&&"string"==typeof n.name?n.name:await t.evaluate(n,r)+"",!/^[A-Z][a-zA-Z0-9_]*$/.test(s))throw Error(`Behavior name must be PascalCase (start with uppercase): "${s}"`);if(e.args.length>=2){const n=await t.evaluate(e.args[1],r);if(n&&"object"==typeof n&&!Array.isArray(n)){i=n;for(const e of Object.keys(i))if(!/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(e))throw Error(`Invalid parameter name: "${e}"`)}}return e.modifiers?.on&&(a=await t.evaluate(e.modifiers.on,r)),{behaviorName:s,parameters:i,target:a}}async execute(e,t){const{behaviorName:r,parameters:n={},target:s}=e;try{const e=this.resolveTarget(s,t);if(0===e.length)throw Error("No target elements found to install behavior on");if(!this.behaviorExists(r,t))throw Error(`Behavior "${r}" is not defined. Define it using the 'behavior' keyword before installing.`);const i=[];for(const s of e){const e=await this.installBehavior(r,s,n,t);i.push(e)}return{success:!0,behaviorName:r,installedCount:i.length,instances:i}}catch(e){throw Error(`Failed to install behavior "${r}": ${e instanceof Error?e.message:e+""}`)}}resolveTarget(e,t){if(null==e){const e=t.me||t.locals.get("me");if(Ci(e))return[e];throw Error('No target specified and "me" is not available in context')}if(Ci(e))return[e];if(Array.isArray(e)){const t=e.filter(e=>Ci(e));if(0===t.length)throw Error("Target array contains no valid HTMLElements");return t}if("string"==typeof e){if("me"===e){const e=t.me||t.locals.get("me");if(Ci(e))return[e];throw Error('"me" is not available in context')}if("undefined"!=typeof document){const t=document.querySelectorAll(e),r=Array.from(t).filter(e=>Ci(e));if(0===r.length)throw Error(`No elements found matching selector: "${e}"`);return r}throw Error("document is not available (not in browser environment)")}if(e&&"object"==typeof e&&"length"in e){const t=Array.from(e).filter(e=>Ci(e));if(0===t.length)throw Error("Target collection contains no valid HTMLElements");return t}if("object"==typeof e&&"element"in e){const t=e.element;if(Ci(t))return[t]}throw Error("Cannot resolve target to HTMLElement(s): "+e)}behaviorExists(e,t){const r=t.locals.get("_behaviors");if(r&&"object"==typeof r)return r.has(e);if("undefined"!=typeof globalThis){const t=globalThis._hyperscript;if(t?.behaviors)return t.behaviors.has(e)}return!1}async installBehavior(e,t,r,n){const s=n.locals.get("_behaviors");if(s&&"object"==typeof s){const n=s;if(n.install&&"function"==typeof n.install)return await n.install(e,t,r)}if("undefined"!=typeof globalThis){const n=globalThis._hyperscript;if(n?.behaviors?.install)return await n.behaviors.install(e,t,r)}throw Error("Behavior system not available in context")}}function Co(){return new xo}xo.metadata={description:"Install a behavior on an element with optional parameters",syntax:["install <BehaviorName>","install <BehaviorName> on <element>","install <BehaviorName>(param: value)","install <BehaviorName>(param: value) on <element>"],examples:["install Removable","install Draggable on #box",'install Tooltip(text: "Help", position: "top")','install Sortable(axis: "y") on .list',"install MyBehavior(foo: 42) on the first <div/>"],category:"behaviors",sideEffects:["behavior-installation","element-modification"]};const Ao=xi((()=>{let e,t,r=[Ei({description:"Move classes, attributes, and properties from one element to another",syntax:["take <property> from <source>","take <property> from <source> and put it on <target>"],examples:["take class from <#source/>","take @data-value from <.source/> and put it on <#target/>"],sideEffects:["dom-mutation","property-transfer"]}),ki({name:"take",category:"animation"})],n=[];return t=class{async parseInput(e,t,r){if(3>e.args.length)throw Error('take requires property, "from", and source');const n=await t.evaluate(e.args[0],r)+"";if("from"!==await t.evaluate(e.args[1],r))throw Error("take syntax: take <property> from <source>");const s=await t.evaluate(e.args[2],r);let i;if(8>e.args.length)e.args.length>3&&(i=await t.evaluate(e.args[3],r));else{const n=await Promise.all([3,4,5,6].map(n=>t.evaluate(e.args[n],r)));"and"===n[0]&&"put"===n[1]&&"it"===n[2]&&"on"===n[3]&&e.args[7]&&(i=await t.evaluate(e.args[7],r))}return!i&&e.modifiers?.on&&(i=await t.evaluate(e.modifiers.on,r)),{property:n,source:s,target:i}}async execute(e,t){const r=Ai(e.source,t),n=Ai(e.target?e.target:void 0,t),s=this.takeProperty(r,e.property);return this.putProperty(n,e.property,s),{targetElement:n,property:e.property,value:s}}takeProperty(e,t){const r=t.trim(),n=r.toLowerCase();if("class"===n||"classes"===n){const t=Array.from(e.classList);return e.className="",t}if(r.startsWith(".")){const t=r.substring(1);return e.classList.contains(t)?(e.classList.remove(t),t):null}if(r.startsWith("@")){const t=r.substring(1),n=e.getAttribute(t);return e.removeAttribute(t),n}if(r.startsWith("data-")){const t=e.getAttribute(r);return e.removeAttribute(r),t}if("id"===n){const t=e.id;return e.id="",t}if("title"===n){const t=e.title;return e.title="",t}if("value"===n&&"value"in e){const t=e.value;return e.value="",t}const s=r.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());if(r.includes("-")||s in e.style||r in e.style){let t;return s in e.style?(t=e.style[s],e.style[s]=""):r in e.style?(t=e.style[r],e.style[r]=""):(t=e.style.getPropertyValue(r),e.style.removeProperty(r)),t}const i=e.getAttribute(t);return null!==i?(e.removeAttribute(t),i):null}putProperty(e,t,r){if(null==r)return;const n=t.trim(),s=n.toLowerCase();if("class"===s||"classes"===s)return void(Array.isArray(r)?r.forEach(t=>t&&"string"==typeof t&&e.classList.add(t)):"string"==typeof r&&(e.className=r));if(n.startsWith("."))return void(r&&e.classList.add(n.substring(1)));if(n.startsWith("@"))return void e.setAttribute(n.substring(1),r+"");if(n.startsWith("data-"))return void e.setAttribute(n,r+"");if("id"===s)return void(e.id=r+"");if("title"===s)return void(e.title=r+"");if("value"===s&&"value"in e)return void(e.value=r+"");const i=n.replace(/-([a-z])/g,(e,t)=>t.toUpperCase());n.includes("-")||i in e.style||n in e.style?i in e.style?e.style[i]=r+"":n in e.style?e.style[n]=r+"":e.style.setProperty(n,r+""):e.setAttribute(t,r+"")}},gi(t,"TakeCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})());class So{constructor(){this.name="render"}get metadata(){return So.metadata}async parseInput(e,t,r){if(1>e.args.length)throw Error("render command requires a template");const n=await t.evaluate(e.args[0],r);let s;if(e.args.length>=3&&"with"===await t.evaluate(e.args[1],r)){const n=await t.evaluate(e.args[2],r);n&&"object"==typeof n&&(s=n)}if(!s&&e.modifiers?.with){const n=await t.evaluate(e.modifiers.with,r);n&&"object"==typeof n&&(s=n)}return{template:n,variables:s}}async execute(e,t){const{template:r,variables:n={}}=e,s=this.extractTemplateContent(r,t),i=this.createTemplateContext(t,n),a=[],o=await this.processTemplate(s,i,a),l=this.createDOMElement(o);return Object.assign(t,{it:l}),{element:l,rendered:o,directivesProcessed:a}}extractTemplateContent(e,t){if(e instanceof HTMLTemplateElement)return e.innerHTML;if("string"==typeof e){let r=e;if(!r.includes("<")&&!r.includes("$")){const e=this.resolveVariable(r,t);if(e instanceof HTMLTemplateElement)return e.innerHTML;"string"==typeof e&&(r=e)}const n=r.match(/<template[^>]*>([\s\S]*?)<\/template>/i);return n?n[1]:r}if(e&&"object"==typeof e&&"innerHTML"in e)return e.innerHTML;throw Error("Invalid template format")}createTemplateContext(e,t){return{...e,locals:new Map([...Array.from(e.locals.entries()),...Object.entries(t)])}}async processTemplate(e,t,r){const n=e.split("\n"),s=[];let i=0;for(;n.length>i;){const e=n[i].trim();if(e.startsWith("@repeat ")){const{nextIndex:e,rendered:a}=await this.processRepeatDirective(n,i,t);s.push(a),i=e,r.push("@repeat")}else if(e.startsWith("@if ")){const{nextIndex:e,rendered:a}=await this.processIfDirective(n,i,t,r);s.push(a),i=e,r.push("@if")}else if("@else"===e||"@end"===e)i++;else{const r=this.processVariableInterpolation(e,t);s.push(r),i++}}return s.join("\n")}async processRepeatDirective(e,t,r){const n=e[t].trim(),s=n.match(/^@repeat\s+in\s+(.+)$/);if(!s)throw Error("Invalid @repeat syntax: "+n);const i=this.evaluateExpression(s[1],r),{endIndex:a,blockContent:o}=this.extractDirectiveBlock(e,t+1),l=[];if(Array.isArray(i))for(const e of i){const t={...r,locals:new Map([...r.locals.entries(),["it",e]])},n=await this.processTemplate(o.join("\n"),t,[]);l.push(n)}return{nextIndex:a+1,rendered:l.join("\n")}}async processIfDirective(e,t,r,n){const s=e[t].trim(),i=s.match(/^@if\s+(.+)$/);if(!i)throw Error("Invalid @if syntax: "+s);const a=!!this.evaluateExpression(i[1],r),{endIndex:o,blockContent:l,elseContent:c}=this.extractIfElseBlock(e,t+1);let u="";return a?u=await this.processTemplate(l.join("\n"),r,[]):c.length>0&&(u=await this.processTemplate(c.join("\n"),r,[]),n.push("@else")),{nextIndex:o+1,rendered:u}}extractDirectiveBlock(e,t){const r=[];let n=1,s=t;for(;e.length>s&&n>0;){const t=e[s].trim();t.startsWith("@repeat ")||t.startsWith("@if ")?(n++,r.push(e[s])):"@end"===t?(n--,n>0&&r.push(e[s])):r.push(e[s]),s++}return{endIndex:s-1,blockContent:r}}extractIfElseBlock(e,t){const r=[],n=[];let s=1,i=t,a=!1;for(;e.length>i&&s>0;){const t=e[i].trim();if(t.startsWith("@if "))s++;else{if("@else"===t&&1===s){a=!0,i++;continue}if("@end"===t&&(s--,0===s))break}a?n.push(e[i]):r.push(e[i]),i++}return{endIndex:i,blockContent:r,elseContent:n}}processVariableInterpolation(e,t){return e.replace(/\$\{([^}]+)\}/g,(e,r)=>{try{const e=r.trim();if(e.startsWith("unescaped ")){const r=e.substring(10).trim();return(this.evaluateExpression(r,t)||"")+""}const n=this.evaluateExpression(e,t);return this.escapeHtml((n||"")+"")}catch(t){return console.warn(`Template interpolation error for ${r}:`,t),e}})}evaluateExpression(e,t){if("true"===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"===e)return;const r=Number(e);if(!isNaN(r)&&""!==e.trim())return r;if(e.startsWith("[")&&e.endsWith("]"))try{return JSON.parse(e)}catch{}if(e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'"))return e.slice(1,-1);if(e.includes(".")){const r=e.split(".");let n=this.resolveVariable(r[0],t);for(let e=1;r.length>e&&null!=n;e++){if("object"!=typeof n||null===n)return;n=n[r[e]]}return n}return this.resolveVariable(e,t)}resolveVariable(e,t){return t.locals?.has(e)?t.locals.get(e):"me"===e?t.me:"it"===e?t.it:"you"===e?t.you:"result"===e?t.result:t.globals?.has(e)?t.globals.get(e):void 0}escapeHtml(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")}createDOMElement(e){if("undefined"==typeof document)return null;const t=document.createElement("div");return t.innerHTML=e,1===t.children.length?t.firstElementChild:t}}function To(){return new So}So.metadata={description:"Render templates with @if, @else, and @repeat directives",syntax:["render <template>","render <template> with <variables>","render <template> with (key: value, ...)"],examples:["render myTemplate",'render myTemplate with (name: "Alice")','render "<template>Hello ${name}!</template>" with (name: "World")',"render template with (items: data)"],category:"templates",sideEffects:["dom-creation","template-execution"]};class Oo extends mi{constructor(e={}){const t=e.registry||new ni;let r;e.registry||(t.register(Ri()),t.register(_i()),t.register(Zi()),t.register(ta()),t.register(ka()),t.register(Ea()),t.register(Oa()),t.register(Ia()),t.register(ja()),t.register(_a()),t.register(Ma()),t.register($a()),t.register(Va()),t.register(Fa()),t.register(za()),t.register(Ha()),t.register(Ja()),t.register(Ga()),t.register(Qa()),t.register(to()),t.register(ro()),t.register(no()),t.register(io()),t.register(ao()),t.register(oo()),t.register(lo()),t.register(co()),t.register(uo()),t.register(mo()),t.register(po()),t.register(Ka()),t.register(ho()),t.register(yo()),t.register(go()),t.register(bo()),t.register(wo()),t.register(ko()),t.register(Eo()),t.register(Co()),t.register(Ao()),t.register(To()),console.log("RuntimeExperimental: Registered 43 V2 commands (Phase 6 COMPLETE - All commands migrated)")),r=e.expressionEvaluator?e.expressionEvaluator:e.lazyLoad?new hi({preload:e.expressionPreload||"core"}):new ei;const n={registry:t,expressionEvaluator:r};void 0!==e.enableAsyncCommands&&(n.enableAsyncCommands=e.enableAsyncCommands),void 0!==e.commandTimeout&&(n.commandTimeout=e.commandTimeout),void 0!==e.enableErrorReporting&&(n.enableErrorReporting=e.enableErrorReporting),super(n)}}const Lo=xi((()=>{let e,t,r=[Ei({description:"Evaluate an expression and store the result in it",syntax:"get <expression>",examples:["get #my-dialog","get <button/>","get me.parentElement"],sideEffects:["context-mutation"]}),ki({name:"get",category:"data"})],n=[];return t=class{async parseInput(e,t,r){if(!e.args||0===e.args.length)throw Error("get command requires an expression argument");const n=e.args[0],s=await t.evaluate(n,r);return s instanceof NodeList&&1===s.length||Array.isArray(s)&&1===s.length?{value:s[0]}:{value:s}}execute(e,t){return t.it=e.value,Object.assign(t,{result:e.value}),{value:e.value}}validate(e){return"object"==typeof e&&null!==e&&"value"in e}},gi(t,"GetCommand"),(()=>{const s="function"==typeof Symbol&&Symbol.metadata?Object.create(null):void 0;fi(null,e={value:t},r,{kind:"class",name:t.name,metadata:s},null,n),t=e.value,s&&Object.defineProperty(t,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:s}),yi(t,n)})(),t})());var Po={to:"destination",into:"destination",from:"source",with:"style",by:"quantity",as:"method",on:"event",over:"duration",for:"duration"},No=new Set(["to","from","into","with","at","in","of","as","by","before","after","without"]),Io=new Set(["add","append","async","beep","break","call","continue","decrement","default","exit","fetch","for","get","go","halt","hide","if","increment","install","js","log","make","measure","morph","pick","process","push","put","remove","render","repeat","replace","return","send","set","settle","show","swap","take","tell","throw","toggle","transition","trigger","unless","wait"]),Ro=new Set(["then","else","end","and","or","not","if","unless","for","while","until","forever","times","each","index","in","to","from","into","with","without","of","at","by","as","matches","contains","is","exists","on","when","every","event","init","def","behavior","global","local","the","a","an","first","last","start","before","after"]),jo=new Set(["click","dblclick","mousedown","mouseup","mouseenter","mouseleave","mouseover","mouseout","mousemove","keydown","keyup","keypress","focus","blur","change","input","submit","reset","load","unload","resize","scroll","touchstart","touchend","touchmove","touchcancel","dragstart","dragend","dragenter","dragleave","dragover","drop","contextmenu","wheel","pointerdown","pointerup","pointermove","ms","s"]),_o=new Set(["and","or","not","is","exists","matches","contains","then","else"]),qo=new Set(["true","false","null","undefined","it","me","my","result"]),Mo=new Set(["first","last","next","previous","prev","at","random","closest","parent","children","within","no","empty","some","starts with","ends with"]),$o=new Set(["if","unless","when","where","もし","時に","ときに","どこで","如果","当","إذا","عندما","حيث","si","cuando","donde","wenn","wann","wo","quand","lorsque","où","quando","onde","eğer","zaman","nerede","ketika","saat","dimana","때","어디서","maypi","wakati","wapi"]),Vo=new Set(["then","それから","那么","ثم","entonces","alors","dann","sonra","lalu","chayqa","kisha"]);function Do(e,t,r={}){const{allowEnglishFallback:n=!0}=r,s=new Map,i=new Map,a=new Map,o=new Map,l=new Map,c=new Map,u=new Map,d=new Map,m=new Map,p=new Map;function h(e,t,r=!1){for(const[n,s]of Object.entries(e)){const e=s.toLowerCase();t.set(e,n.toLowerCase()),!r&&m.has(e)||m.set(e,n.toLowerCase()),p.set(n.toLowerCase(),s.toLowerCase())}}e.commands&&h(e.commands,s,!0),e.logical&&h(e.logical,o,!0),e.events&&h(e.events,a),e.values&&h(e.values,c),e.temporal&&h(e.temporal,l),e.modifiers&&h(e.modifiers,i),e.attributes&&h(e.attributes,u),e.expressions&&h(e.expressions,d);const f=new Set(s.keys()),y=new Set(m.keys());if(n){for(const e of Io)f.add(e);for(const e of Ro)y.add(e);for(const e of jo)y.add(e)}return{locale:t,resolve(e){const t=e.toLowerCase(),r=m.get(t);if(void 0!==r)return r;if(n){if(Io.has(t)||Ro.has(t))return t;if(jo.has(t))return t}},isCommand(e){const t=e.toLowerCase();return!!s.has(t)||!(!n||!Io.has(t))},isKeyword(e){const t=e.toLowerCase();return!!(i.has(t)||o.has(t)||l.has(t)||c.has(t))||!(!n||!Ro.has(t))},isEvent(e){const t=e.toLowerCase();return!!a.has(t)||!!jo.has(t)},isModifier(e){const t=e.toLowerCase();return i.has(t)||n&&No.has(t)},isLogical(e){const t=e.toLowerCase();return o.has(t)||n&&_o.has(t)},isValue(e){const t=e.toLowerCase();return c.has(t)||n&&qo.has(t)},isExpression(e){const t=e.toLowerCase();return d.has(t)||n&&Mo.has(t)},getCommands:()=>Array.from(f),getKeywords:()=>Array.from(y),toLocale:e=>p.get(e.toLowerCase())}}function Bo(){return{locale:"en",resolve(e){const t=e.toLowerCase();if(Io.has(t)||Ro.has(t)||jo.has(t))return t},isCommand:e=>Io.has(e.toLowerCase()),isKeyword:e=>Ro.has(e.toLowerCase()),isEvent:e=>jo.has(e.toLowerCase()),isModifier:e=>No.has(e.toLowerCase()),isLogical:e=>_o.has(e.toLowerCase()),isValue:e=>qo.has(e.toLowerCase()),isExpression:e=>Mo.has(e.toLowerCase()),getCommands:()=>Array.from(Io),getKeywords:()=>Array.from(Ro),toLocale:e=>e.toLowerCase()}}var Fo={commands:{on:"en",tell:"decir",trigger:"disparar",send:"enviar",take:"tomar",put:"poner",set:"establecer",get:"obtener",add:"agregar",remove:"quitar",toggle:"alternar",hide:"ocultar",show:"mostrar",if:"si",unless:"menos",repeat:"repetir",for:"para",while:"mientras",until:"hasta",continue:"continuar",break:"romper",halt:"detener",wait:"esperar",fetch:"buscar",call:"llamar",return:"retornar",make:"hacer",log:"registrar",throw:"lanzar",catch:"atrapar",measure:"medir",transition:"transición",increment:"incrementar",decrement:"decrementar",default:"predeterminar",go:"ir",pushUrl:"pushUrl",replaceUrl:"reemplazarUrl",copy:"copiar",pick:"escoger",beep:"pitido",js:"js",async:"asíncrono",render:"renderizar",swap:"intercambiar",morph:"transformar",settle:"estabilizar",append:"añadir",exit:"salir",install:"instalar"},modifiers:{to:"a",from:"de",into:"en",with:"con",at:"en",in:"en",of:"de",as:"como",by:"por",before:"antes",after:"después",over:"sobre",under:"bajo",between:"entre",through:"través",without:"sin"},events:{click:"clic",dblclick:"dobleclic",mousedown:"ratónabajo",mouseup:"ratónarriba",mouseenter:"ratónentrar",mouseleave:"ratónsalir",mouseover:"ratónencima",mouseout:"ratónfuera",mousemove:"ratónmover",keydown:"teclaabajo",keyup:"teclaarriba",keypress:"teclapresar",focus:"enfocar",blur:"desenfocar",change:"cambiar",input:"entrada",submit:"enviar",reset:"reiniciar",load:"cargar",unload:"descargar",resize:"redimensionar",scroll:"desplazar",touchstart:"toqueempezar",touchend:"toqueterminar",touchmove:"toquemover",touchcancel:"toquecancelar"},logical:{when:"cuando",where:"donde",and:"y",or:"o",not:"no",is:"es",exists:"existe",matches:"coincide",contains:"contiene",includes:"incluye",equals:"iguala",has:"tiene",have:"tengo",then:"entonces",else:"sino",otherwise:"delocontrario",end:"fin"},temporal:{seconds:"segundos",second:"segundo",milliseconds:"milisegundos",millisecond:"milisegundo",minutes:"minutos",minute:"minuto",hours:"horas",hour:"hora",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"verdadero",false:"falso",null:"nulo",undefined:"indefinido",it:"ello",its:"su",me:"yo",my:"mi",you:"tu",your:"tu",yourself:"ti mismo",myself:"yo mismo",element:"elemento",target:"objetivo",detail:"detalle",event:"evento",window:"ventana",document:"documento",body:"cuerpo",result:"resultado",value:"valor"},attributes:{class:"clase",classes:"clases",style:"estilo",styles:"estilos",attribute:"atributo",attributes:"atributos",property:"propiedad",properties:"propiedades"},expressions:{first:"primero",last:"último",next:"siguiente",previous:"anterior",prev:"ant",at:"en",random:"aleatorio",closest:"máscercano",parent:"padre",children:"hijos",within:"dentro",no:"ningún",empty:"vacío",some:"algún","starts with":"empieza con","ends with":"termina con"}},zo=Do(Fo,"es",{allowEnglishFallback:!0}),Ho={commands:{on:"で",tell:"伝える",trigger:"引き金",send:"送る",take:"取る",put:"置く",set:"設定",get:"取得",add:"追加",remove:"削除",toggle:"切り替え",hide:"隠す",show:"表示",if:"もし",unless:"でなければ",repeat:"繰り返し",for:"ために",while:"の間",until:"まで",continue:"続ける",break:"中断",halt:"停止",wait:"待つ",fetch:"取得",call:"呼び出し",return:"戻る",make:"作る",log:"記録",throw:"投げる",catch:"捕まえる",measure:"測定",transition:"遷移",increment:"増加",decrement:"減少",default:"既定",go:"移動",pushUrl:"URLプッシュ",replaceUrl:"URL置換",copy:"コピー",pick:"選択",beep:"ビープ",js:"JS実行",async:"非同期",render:"描画",swap:"交換",morph:"変形",settle:"安定",append:"末尾追加",exit:"終了",install:"インストール"},modifiers:{to:"に",from:"から",into:"へ",with:"と",at:"で",in:"の中",of:"の",as:"として",by:"によって",before:"前に",after:"後に",over:"上に",under:"下に",between:"間に",through:"通して",without:"なしで"},events:{click:"クリック",dblclick:"ダブルクリック",mousedown:"マウス押下",mouseup:"マウス解放",mouseenter:"マウス入る",mouseleave:"マウス離れる",mouseover:"マウス上",mouseout:"マウス外",mousemove:"マウス移動",keydown:"キー押下",keyup:"キー解放",keypress:"キー押す",focus:"フォーカス",blur:"ぼかし",change:"変更",input:"入力",submit:"送信",reset:"リセット",load:"読み込み",unload:"読み込み解除",resize:"サイズ変更",scroll:"スクロール",touchstart:"タッチ開始",touchend:"タッチ終了",touchmove:"タッチ移動",touchcancel:"タッチキャンセル"},logical:{when:"とき",where:"どこ",and:"そして",or:"または",not:"ではない",is:"である",exists:"存在する",matches:"一致する",contains:"含む",includes:"含める",equals:"等しい",has:"ある",have:"ある",then:"それから",else:"そうでなければ",otherwise:"そうでなければ",end:"終わり"},temporal:{seconds:"秒",second:"秒",milliseconds:"ミリ秒",millisecond:"ミリ秒",minutes:"分",minute:"分",hours:"時間",hour:"時間",ms:"ms",s:"秒",min:"分",h:"時"},values:{true:"真",false:"偽",null:"null",undefined:"未定義",it:"それ",its:"その",me:"私",my:"私の",you:"あなた",your:"あなたの",yourself:"あなた自身",myself:"私自身",element:"要素",target:"対象",detail:"詳細",event:"イベント",window:"ウィンドウ",document:"ドキュメント",body:"ボディ",result:"結果",value:"値"},attributes:{class:"クラス",classes:"クラス群",style:"スタイル",styles:"スタイル群",attribute:"属性",attributes:"属性群",property:"プロパティ",properties:"プロパティ群"},expressions:{first:"最初",last:"最後",next:"次",previous:"前",prev:"前",at:"で",random:"ランダム",closest:"最も近い",parent:"親",children:"子",within:"以内",no:"ない",empty:"空",some:"いくつか","starts with":"で始まる","ends with":"で終わる"}},Uo=Do(Ho,"ja",{allowEnglishFallback:!0}),Wo={commands:{on:"sur",tell:"dire",trigger:"déclencher",send:"envoyer",take:"prendre",put:"mettre",set:"définir",get:"obtenir",add:"ajouter",remove:"supprimer",toggle:"basculer",hide:"cacher",show:"montrer",if:"si",unless:"saufsi",repeat:"répéter",for:"pour",while:"tantque",until:"jusquà",continue:"continuer",break:"arrêter",halt:"stopper",wait:"attendre",fetch:"récupérer",call:"appeler",return:"retourner",make:"créer",log:"enregistrer",throw:"lancer",catch:"attraper",measure:"mesurer",transition:"transition",increment:"incrémenter",decrement:"décrémenter",default:"défaut",go:"aller",pushUrl:"pousserUrl",replaceUrl:"remplacerUrl",copy:"copier",pick:"choisir",beep:"bip",js:"js",async:"asynchrone",render:"rendu",swap:"échanger",morph:"transformer",settle:"stabiliser",append:"ajouter",exit:"sortir",install:"installer"},modifiers:{to:"à",from:"de",into:"dans",with:"avec",at:"à",in:"en",of:"de",as:"comme",by:"par",before:"avant",after:"après",over:"sur",under:"sous",between:"entre",through:"à travers",without:"sans"},events:{click:"clic",dblclick:"doubleclic",mousedown:"sourisappuyée",mouseup:"sourisrelâchée",mouseenter:"sourisentrer",mouseleave:"sourissortir",mouseover:"sourissur",mouseout:"sourisdehors",mousemove:"sourisbouger",keydown:"toucheappuyée",keyup:"toucherelâchée",keypress:"touchepressée",focus:"focus",blur:"flou",change:"changer",input:"saisie",submit:"soumettre",reset:"réinitialiser",load:"charger",unload:"décharger",resize:"redimensionner",scroll:"défiler",touchstart:"touchercommencer",touchend:"toucherfin",touchmove:"toucherbouger",touchcancel:"toucherannuler"},logical:{when:"quand",where:"où",and:"et",or:"ou",not:"non",is:"est",exists:"existe",matches:"correspond",contains:"contient",includes:"inclut",equals:"égale",has:"a",have:"ai",then:"alors",else:"sinon",otherwise:"autrement",end:"fin"},temporal:{seconds:"secondes",second:"seconde",milliseconds:"millisecondes",millisecond:"milliseconde",minutes:"minutes",minute:"minute",hours:"heures",hour:"heure",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"vrai",false:"faux",null:"nul",undefined:"indéfini",it:"ça",its:"son",me:"moi",my:"mon",you:"tu",your:"ton",yourself:"toi-même",myself:"moi-même",element:"élément",target:"cible",detail:"détail",event:"événement",window:"fenêtre",document:"document",body:"corps",result:"résultat",value:"valeur"},attributes:{class:"classe",classes:"classes",style:"style",styles:"styles",attribute:"attribut",attributes:"attributs",property:"propriété",properties:"propriétés"},expressions:{first:"premier",last:"dernier",next:"suivant",previous:"précédent",prev:"préc",at:"à",random:"aléatoire",closest:"plusproche",parent:"parent",children:"enfants",within:"dans",no:"aucun",empty:"vide",some:"quelques","starts with":"commence par","ends with":"finit par"}},Jo=Do(Wo,"fr",{allowEnglishFallback:!0}),Ko={commands:{on:"bei",tell:"sagen",trigger:"auslösen",send:"senden",take:"nehmen",put:"setzen",set:"festlegen",get:"erhalten",add:"hinzufügen",remove:"entfernen",toggle:"umschalten",hide:"verstecken",show:"zeigen",if:"wenn",unless:"wennnicht",repeat:"wiederholen",for:"für",while:"während",until:"bis",continue:"weiter",break:"unterbrechen",halt:"anhalten",wait:"warten",fetch:"holen",call:"aufrufen",return:"zurückgeben",make:"erstellen",log:"protokollieren",throw:"werfen",catch:"fangen",measure:"messen",transition:"übergang",increment:"erhöhen",decrement:"verringern",default:"standard",go:"gehen",pushUrl:"urlHinzufügen",replaceUrl:"urlErsetzen",copy:"kopieren",pick:"auswählen",beep:"piepton",js:"js",async:"asynchron",render:"rendern",swap:"tauschen",morph:"verwandeln",settle:"stabilisieren",append:"anhängen",exit:"beenden",install:"installieren"},modifiers:{to:"zu",from:"von",into:"in",with:"mit",at:"bei",in:"in",of:"von",as:"als",by:"durch",before:"vor",after:"nach",over:"über",under:"unter",between:"zwischen",through:"durch",without:"ohne"},events:{click:"klick",dblclick:"doppelklick",mousedown:"mausunten",mouseup:"mausoben",mouseenter:"mauseintreten",mouseleave:"mausverlassen",mouseover:"mausüber",mouseout:"maushinaus",mousemove:"mausbewegen",keydown:"tasteunten",keyup:"tasteoben",keypress:"tastedrücken",focus:"fokus",blur:"unscharf",change:"ändern",input:"eingabe",submit:"absenden",reset:"zurücksetzen",load:"laden",unload:"entladen",resize:"größeändern",scroll:"scrollen",touchstart:"berührungstart",touchend:"berührungend",touchmove:"berührungbewegen",touchcancel:"berührungabbrechen"},logical:{when:"wenn",where:"wo",and:"und",or:"oder",not:"nicht",is:"ist",exists:"existiert",matches:"passt",contains:"enthält",includes:"beinhaltet",equals:"gleicht",has:"hat",have:"habe",then:"dann",else:"sonst",otherwise:"andernfalls",end:"ende"},temporal:{seconds:"sekunden",second:"sekunde",milliseconds:"millisekunden",millisecond:"millisekunde",minutes:"minuten",minute:"minute",hours:"stunden",hour:"stunde",ms:"ms",s:"s",min:"min",h:"std"},values:{true:"wahr",false:"falsch",null:"null",undefined:"undefiniert",it:"es",its:"sein",me:"ich",my:"mein",you:"du",your:"dein",yourself:"dich selbst",myself:"ich selbst",element:"element",target:"ziel",detail:"detail",event:"ereignis",window:"fenster",document:"dokument",body:"körper",result:"ergebnis",value:"wert"},attributes:{class:"klasse",classes:"klassen",style:"stil",styles:"stile",attribute:"attribut",attributes:"attribute",property:"eigenschaft",properties:"eigenschaften"},expressions:{first:"erste",last:"letzte",next:"nächste",previous:"vorherige",prev:"vorh",at:"bei",random:"zufällig",closest:"nächste",parent:"elternteil",children:"kinder",within:"innerhalb",no:"kein",empty:"leer",some:"einige","starts with":"beginnt mit","ends with":"endet mit"}},Yo=Do(Ko,"de",{allowEnglishFallback:!0}),Go={commands:{on:"على",tell:"أخبر",trigger:"تشغيل",send:"أرسل",take:"خذ",put:"ضع",set:"اضبط",get:"احصل",add:"أضف",remove:"احذف",toggle:"بدل",hide:"اخف",show:"اظهر",if:"إذا",unless:"إلا إذا",repeat:"كرر",for:"لكل",while:"بينما",until:"حتى",continue:"واصل",break:"توقف",halt:"أوقف",wait:"انتظر",fetch:"احضر",call:"استدع",return:"ارجع",make:"اصنع",log:"سجل",throw:"ارم",catch:"التقط",measure:"قس",transition:"انتقال",increment:"زِد",decrement:"أنقص",default:"افتراضي",go:"اذهب",pushUrl:"ادفع رابط",replaceUrl:"استبدل رابط",copy:"انسخ",pick:"اختر",beep:"صفّر",js:"جافاسكربت",async:"متزامن",render:"ارسم",swap:"بدّل",morph:"حوّل",settle:"استقر",append:"ألحق",exit:"اخرج",install:"ثبّت"},modifiers:{to:"إلى",from:"من",into:"في",with:"مع",at:"عند",in:"في",of:"من",as:"كـ",by:"بواسطة",before:"قبل",after:"بعد",over:"فوق",under:"تحت",between:"بين",through:"عبر",without:"بدون"},events:{click:"نقر",dblclick:"نقر مزدوج",mousedown:"فأرة أسفل",mouseup:"فأرة أعلى",mouseenter:"فأرة دخول",mouseleave:"فأرة خروج",mouseover:"فأرة فوق",mouseout:"فأرة خارج",mousemove:"فأرة تحرك",keydown:"مفتاح أسفل",keyup:"مفتاح أعلى",keypress:"مفتاح ضغط",focus:"تركيز",blur:"ضبابية",change:"تغيير",input:"إدخال",submit:"إرسال",reset:"إعادة تعيين",load:"تحميل",unload:"إلغاء تحميل",resize:"تغيير حجم",scroll:"تمرير",touchstart:"بداية لمس",touchend:"نهاية لمس",touchmove:"تحرك لمس",touchcancel:"إلغاء لمس"},logical:{when:"عندما",where:"أين",and:"و",or:"أو",not:"ليس",is:"هو",exists:"موجود",matches:"يطابق",contains:"يحتوي",includes:"يشمل",equals:"يساوي",has:"لديه",have:"لدي",then:"ثم",else:"وإلا",otherwise:"خلاف ذلك",end:"النهاية"},temporal:{seconds:"ثوانِ",second:"ثانية",milliseconds:"ميلي ثانية",millisecond:"ميلي ثانية",minutes:"دقائق",minute:"دقيقة",hours:"ساعات",hour:"ساعة",ms:"م.ث",s:"ث",min:"د",h:"س"},values:{true:"صحيح",false:"خطأ",null:"فارغ",undefined:"غير معرف",it:"هو",its:"له",me:"أنا",my:"لي",myself:"نفسي",you:"أنت",your:"لك",yourself:"نفسك",element:"عنصر",target:"هدف",detail:"تفاصيل",event:"حدث",window:"نافذة",document:"وثيقة",body:"جسم",result:"نتيجة",value:"قيمة"},attributes:{class:"فئة",classes:"فئات",style:"أسلوب",styles:"أساليب",attribute:"خاصية",attributes:"خصائص",property:"خاصية",properties:"خصائص"},expressions:{first:"أول",last:"آخر",next:"التالي",previous:"السابق",prev:"سابق",at:"عند",random:"عشوائي",closest:"الأقرب",parent:"والد",children:"أطفال",within:"داخل",no:"لا يوجد",empty:"فارغ",some:"بعض","starts with":"يبدأ بـ","ends with":"ينتهي بـ"}},Xo=Do(Go,"ar",{allowEnglishFallback:!0}),Zo={commands:{on:"에",tell:"말하다",trigger:"트리거",send:"보내다",take:"가져오다",put:"넣다",set:"설정",get:"얻다",add:"추가",remove:"제거",toggle:"토글",hide:"숨기다",show:"보이다",if:"만약",unless:"아니면",repeat:"반복",for:"동안",while:"동안",until:"까지",continue:"계속",break:"중단",halt:"정지",wait:"대기",fetch:"가져오기",call:"호출",return:"반환",make:"만들다",log:"로그",throw:"던지다",catch:"잡다",measure:"측정",transition:"전환",increment:"증가",decrement:"감소",default:"기본값",go:"이동",pushUrl:"URL푸시",replaceUrl:"URL교체",copy:"복사",pick:"선택",beep:"비프",js:"JS실행",async:"비동기",render:"렌더링",swap:"교환",morph:"변형",settle:"안정",append:"추가",exit:"종료",install:"설치"},modifiers:{to:"에",from:"에서",into:"으로",with:"와",at:"에",in:"안에",of:"의",as:"로",by:"에의해",before:"전에",after:"후에",over:"위에",under:"아래",between:"사이",through:"통해",without:"없이"},events:{click:"클릭",dblclick:"더블클릭",mousedown:"마우스다운",mouseup:"마우스업",mouseenter:"마우스엔터",mouseleave:"마우스리브",mouseover:"마우스오버",mouseout:"마우스아웃",mousemove:"마우스무브",keydown:"키다운",keyup:"키업",keypress:"키프레스",focus:"포커스",blur:"블러",change:"변경",input:"입력",submit:"제출",reset:"리셋",load:"로드",unload:"언로드",resize:"리사이즈",scroll:"스크롤",touchstart:"터치시작",touchend:"터치종료",touchmove:"터치이동",touchcancel:"터치취소"},logical:{when:"때",where:"어디",and:"그리고",or:"또는",not:"아니",is:"이다",exists:"존재",matches:"일치",contains:"포함",includes:"포함하다",equals:"같다",has:"있다",have:"있다",then:"그러면",else:"아니면",otherwise:"그렇지않으면",end:"끝"},temporal:{seconds:"초",second:"초",milliseconds:"밀리초",millisecond:"밀리초",minutes:"분",minute:"분",hours:"시간",hour:"시간",ms:"ms",s:"초",min:"분",h:"시"},values:{true:"참",false:"거짓",null:"널",undefined:"정의안됨",it:"그것",its:"그것의",me:"나",my:"내",myself:"나자신",you:"너",your:"네",yourself:"너자신",element:"요소",target:"대상",detail:"세부",event:"이벤트",window:"창",document:"문서",body:"바디",result:"결과",value:"값"},attributes:{class:"클래스",classes:"클래스들",style:"스타일",styles:"스타일들",attribute:"속성",attributes:"속성들",property:"프로퍼티",properties:"프로퍼티들"},expressions:{first:"첫번째",last:"마지막",next:"다음",previous:"이전",prev:"이전",at:"에서",random:"무작위",closest:"가장가까운",parent:"부모",children:"자식",within:"이내",no:"없음",empty:"비어있는",some:"일부","starts with":"로시작","ends with":"로끝나는"}},Qo=Do(Zo,"ko",{allowEnglishFallback:!0}),el={commands:{on:"当",tell:"告诉",trigger:"触发",send:"发送",take:"获取",put:"放置",set:"设置",get:"获得",add:"添加",remove:"移除",toggle:"切换",hide:"隐藏",show:"显示",if:"如果",unless:"除非",repeat:"重复",for:"为",while:"当",until:"直到",continue:"继续",break:"中断",halt:"停止",wait:"等待",fetch:"获取",call:"调用",return:"返回",make:"制作",log:"日志",throw:"抛出",catch:"捕获",measure:"测量",transition:"过渡",increment:"增加",decrement:"减少",default:"默认",go:"前往",pushUrl:"推送网址",replaceUrl:"替换网址",copy:"复制",pick:"选取",beep:"蜂鸣",js:"JS执行",async:"异步",render:"渲染",swap:"交换",morph:"变形",settle:"稳定",append:"追加",exit:"退出",install:"安装"},modifiers:{to:"到",from:"从",into:"进入",with:"与",at:"在",in:"在",of:"的",as:"作为",by:"通过",before:"之前",after:"之后",over:"在上",under:"在下",between:"之间",through:"通过",without:"没有"},events:{click:"点击",dblclick:"双击",mousedown:"鼠标按下",mouseup:"鼠标抬起",mouseenter:"鼠标进入",mouseleave:"鼠标离开",mouseover:"鼠标悬停",mouseout:"鼠标移出",mousemove:"鼠标移动",keydown:"按键按下",keyup:"按键抬起",keypress:"按键",focus:"聚焦",blur:"失焦",change:"改变",input:"输入",submit:"提交",reset:"重置",load:"加载",unload:"卸载",resize:"调整大小",scroll:"滚动",touchstart:"触摸开始",touchend:"触摸结束",touchmove:"触摸移动",touchcancel:"触摸取消"},logical:{when:"当",where:"哪里",and:"和",or:"或",not:"非",is:"是",exists:"存在",matches:"匹配",contains:"包含",includes:"包括",equals:"等于",has:"有",have:"有",then:"那么",else:"否则",otherwise:"要不然",end:"结束"},temporal:{seconds:"秒",second:"秒",milliseconds:"毫秒",millisecond:"毫秒",minutes:"分钟",minute:"分钟",hours:"小时",hour:"小时",ms:"毫秒",s:"秒",min:"分",h:"时"},values:{true:"真",false:"假",null:"空",undefined:"未定义",it:"它",its:"它的",me:"我",my:"我的",myself:"我自己",you:"你",your:"你的",yourself:"你自己",element:"元素",target:"目标",detail:"详情",event:"事件",window:"窗口",document:"文档",body:"主体",result:"结果",value:"值"},attributes:{class:"类",classes:"类别",style:"样式",styles:"样式集",attribute:"属性",attributes:"属性集",property:"特性",properties:"特性集"},expressions:{first:"第一个",last:"最后一个",next:"下一个",previous:"上一个",prev:"上个",at:"在",random:"随机",closest:"最近的",parent:"父级",children:"子级",within:"之内",no:"没有",empty:"空的",some:"一些","starts with":"以开头","ends with":"以结尾"}},tl=Do(el,"zh",{allowEnglishFallback:!0}),rl={commands:{on:"üzerinde",tell:"söyle",trigger:"tetikle",send:"gönder",take:"al",put:"koy",set:"ayarla",get:"al",add:"ekle",remove:"kaldır",toggle:"değiştir",hide:"gizle",show:"göster",if:"eğer",unless:"değilse",repeat:"tekrarla",for:"için",while:"iken",until:"kadar",continue:"devam",break:"dur",halt:"durdur",wait:"bekle",fetch:"getir",call:"çağır",return:"dön",make:"yap",log:"kaydet",throw:"fırlat",catch:"yakala",measure:"ölç",transition:"geçiş",increment:"artır",decrement:"azalt",default:"varsayılan",go:"git",pushUrl:"urlEkle",replaceUrl:"urlDeğiştir",copy:"kopyala",pick:"seç",beep:"bip",js:"js",async:"asenkron",render:"render",swap:"takas",morph:"dönüştür",settle:"sabitlen",append:"ekle",exit:"çık",install:"kur"},modifiers:{to:"e",from:"den",into:"içine",with:"ile",at:"de",in:"içinde",of:"nin",as:"olarak",by:"tarafından",before:"önce",after:"sonra",over:"üzerinde",under:"altında",between:"arasında",through:"boyunca",without:"olmadan"},events:{click:"tıklama",dblclick:"çift_tıklama",mousedown:"fare_bas",mouseup:"fare_bırak",mouseenter:"fare_gir",mouseleave:"fare_çık",mouseover:"fare_üstü",mouseout:"fare_dışı",mousemove:"fare_hareket",keydown:"tuş_bas",keyup:"tuş_bırak",keypress:"tuş_basım",focus:"odak",blur:"bulanık",change:"değişim",input:"giriş",submit:"gönder",reset:"sıfırla",load:"yükle",unload:"yükle_kaldır",resize:"boyut_değiştir",scroll:"kaydır",touchstart:"dokunma_başla",touchend:"dokunma_bitir",touchmove:"dokunma_hareket",touchcancel:"dokunma_iptal"},logical:{when:"iken",where:"nerede",and:"ve",or:"veya",not:"değil",is:"dir",exists:"var",matches:"eşleşir",contains:"içerir",includes:"dahil",equals:"eşittir",has:"var",have:"var",then:"sonra",else:"yoksa",otherwise:"aksi_halde",end:"son"},temporal:{seconds:"saniye",second:"saniye",milliseconds:"milisaniye",millisecond:"milisaniye",minutes:"dakika",minute:"dakika",hours:"saat",hour:"saat",ms:"ms",s:"s",min:"dk",h:"sa"},values:{true:"doğru",false:"yanlış",null:"boş",undefined:"tanımsız",it:"o",its:"onun",me:"ben",my:"benim",myself:"kendim",you:"sen",your:"senin",yourself:"kendin",element:"öğe",target:"hedef",detail:"detay",event:"olay",window:"pencere",document:"belge",body:"gövde",result:"sonuç",value:"değer"},attributes:{class:"sınıf",classes:"sınıflar",style:"stil",styles:"stiller",attribute:"özellik",attributes:"özellikler",property:"özellik",properties:"özellikler"},expressions:{first:"ilk",last:"son",next:"sonraki",previous:"önceki",prev:"önc",at:"de",random:"rastgele",closest:"en_yakın",parent:"ebeveyn",children:"çocuklar",within:"içinde",no:"yok",empty:"boş",some:"bazı","starts with":"ile başlar","ends with":"ile biter"}},nl=Do(rl,"tr",{allowEnglishFallback:!0}),sl={commands:{on:"pada",tell:"katakan",trigger:"picu",send:"kirim",take:"ambil",put:"taruh",set:"atur",get:"dapatkan",add:"tambah",remove:"hapus",toggle:"ganti",hide:"sembunyikan",show:"tampilkan",if:"jika",unless:"kecuali",repeat:"ulangi",for:"untuk",while:"selama",until:"sampai",continue:"lanjutkan",break:"hentikan",halt:"berhenti",wait:"tunggu",fetch:"ambil",call:"panggil",return:"kembali",make:"buat",log:"catat",throw:"lempar",catch:"tangkap",measure:"ukur",transition:"transisi",increment:"tambahkan",decrement:"kurangi",default:"bawaan",go:"pergi",pushUrl:"tambahUrl",replaceUrl:"gantiUrl",copy:"salin",pick:"pilih",beep:"bunyi",js:"js",async:"asinkron",render:"tampilkan",swap:"tukar",morph:"ubah_bentuk",settle:"stabil",append:"tambah_akhir",exit:"keluar",install:"pasang"},modifiers:{to:"ke",from:"dari",into:"ke_dalam",with:"dengan",at:"di",in:"dalam",of:"dari",as:"sebagai",by:"oleh",before:"sebelum",after:"setelah",over:"di_atas",under:"di_bawah",between:"antara",through:"melalui",without:"tanpa"},events:{click:"klik",dblclick:"klik_ganda",mousedown:"tekan_mouse",mouseup:"lepas_mouse",mouseenter:"mouse_masuk",mouseleave:"mouse_keluar",mouseover:"mouse_atas",mouseout:"mouse_luar",mousemove:"gerak_mouse",keydown:"tekan_tombol",keyup:"lepas_tombol",keypress:"pencet_tombol",focus:"fokus",blur:"blur",change:"ubah",input:"masukan",submit:"kirim",reset:"reset",load:"muat",unload:"bongkar",resize:"ubah_ukuran",scroll:"gulir",touchstart:"mulai_sentuh",touchend:"akhir_sentuh",touchmove:"gerak_sentuh",touchcancel:"batal_sentuh"},logical:{when:"ketika",where:"di_mana",and:"dan",or:"atau",not:"bukan",is:"adalah",exists:"ada",matches:"cocok",contains:"berisi",includes:"termasuk",equals:"sama",has:"punya",have:"punya",then:"lalu",else:"lainnya",otherwise:"sebaliknya",end:"akhir"},temporal:{seconds:"detik",second:"detik",milliseconds:"milidetik",millisecond:"milidetik",minutes:"menit",minute:"menit",hours:"jam",hour:"jam",ms:"ms",s:"d",min:"mnt",h:"j"},values:{true:"benar",false:"salah",null:"kosong",undefined:"tidak_terdefinisi",it:"itu",its:"miliknya",me:"saya",my:"saya punya",myself:"saya sendiri",you:"kamu",your:"kamu punya",yourself:"kamu sendiri",element:"elemen",target:"target",detail:"detail",event:"peristiwa",window:"jendela",document:"dokumen",body:"badan",result:"hasil",value:"nilai"},attributes:{class:"kelas",classes:"kelas_kelas",style:"gaya",styles:"gaya_gaya",attribute:"atribut",attributes:"atribut_atribut",property:"properti",properties:"properti_properti"},expressions:{first:"pertama",last:"terakhir",next:"berikutnya",previous:"sebelumnya",prev:"sblm",at:"di",random:"acak",closest:"terdekat",parent:"induk",children:"anak_anak",within:"dalam",no:"tidak_ada",empty:"kosong",some:"beberapa","starts with":"dimulai dengan","ends with":"diakhiri dengan"}},il=Do(sl,"id",{allowEnglishFallback:!0}),al={commands:{on:"kaqpi",tell:"niy",trigger:"kichay",send:"kachay",take:"hurquy",put:"churay",set:"churay",get:"chaskiy",add:"yapay",remove:"qichuy",toggle:"tikray",hide:"pakay",show:"rikuchiy",if:"sichus",unless:"mana_sichus",repeat:"kutichiy",for:"rayku",while:"kay_kaq",until:"hayk_akama",continue:"purichiy",break:"p_akiy",halt:"sayay",wait:"suyay",fetch:"apamuy",call:"qayay",return:"kutimuy",make:"ruray",log:"qillqay",throw:"wikchuy",catch:"hapsiy",measure:"tupuy",transition:"tikray",increment:"yapay",decrement:"pisiyachiy",default:"ñawpaq_kaq",go:"riy",pushUrl:"url_tanqay",replaceUrl:"url_tikray",copy:"qillqay",pick:"akllay",beep:"waqay",js:"js",async:"mana_suyaspa",render:"rikuchiy",swap:"rantin_tikray",morph:"tikrachiy",settle:"tiyay",append:"qhipaman_yapay",exit:"lluqsiy",install:"churay"},modifiers:{to:"man",from:"manta",into:"ukupi",with:"wan",at:"pi",in:"ukupi",of:"pa",as:"hina",by:"rayku",before:"ñawpaqpi",after:"qhepapi",over:"hawapi",under:"urapi",between:"chawpipi",through:"pasaspa",without:"mana"},events:{click:"ñitiy",dblclick:"iskay_ñitiy",mousedown:"rat_ñitiy",mouseup:"rat_huqariy",mouseenter:"rat_yaykuy",mouseleave:"rat_lluqsiy",mouseover:"rat_hawapi",mouseout:"rat_hawamanta",mousemove:"rat_kuyuy",keydown:"yupana_ñitiy",keyup:"yupana_huqariy",keypress:"yupana_ñitana",focus:"qhaway",blur:"paqariy",change:"tikray",input:"yaykuchiy",submit:"kachay",reset:"qallariy",load:"apakuy",unload:"urmay",resize:"hatun_kay",scroll:"kunray",touchstart:"llamiy_qallay",touchend:"llamiy_tukuy",touchmove:"llamiy_kuyuy",touchcancel:"llamiy_hark_ay"},logical:{when:"maykama",where:"maypi",and:"chaymanta",or:"utaq",not:"mana",is:"kanqa",exists:"tiyan",matches:"tupan",contains:"ukupi_kan",includes:"churasqa",equals:"kikin",has:"kachkan",have:"kachkani",then:"chayqa",else:"mana_chayqa",otherwise:"huk_kaqpi",end:"tukuy"},temporal:{seconds:"sikundukuna",second:"sikundu",milliseconds:"iskay_paqta_sikundukuna",millisecond:"iskay_paqta_sikundu",minutes:"minutukuna",minute:"minutu",hours:"horakuna",hour:"hora",ms:"ms",s:"s",min:"m",h:"h"},values:{true:"cheqaq",false:"llulla",null:"ch_usaq",undefined:"mana_riqsisqa",it:"chay",its:"chaypaq",me:"noqa",my:"noqaq",myself:"noqa killa",you:"qam",your:"qampaq",yourself:"qam killa",element:"raku",target:"punta",detail:"sut_iy",event:"ruway",window:"k_iri",document:"qillqa",body:"kurku",result:"lluqsiy",value:"chanin"},attributes:{class:"ayllu",classes:"ayllukuna",style:"sami",styles:"samikuna",attribute:"kaq",attributes:"kaqkuna",property:"kanay",properties:"kanaykuna"},expressions:{first:"ñawpaq",last:"qhipa",next:"qhipantin",previous:"ñawpaqnin",prev:"ñawpaq",at:"pi",random:"imaymanata",closest:"aswan_kaylla",parent:"mama_tayta",children:"wawakuna",within:"ukupi",no:"mana_kanchu",empty:"ch_usaq",some:"wakin","starts with":"qallarisqa wan","ends with":"tukusqa wan"}},ol=Do(al,"qu",{allowEnglishFallback:!0}),ll={commands:{on:"kwenye",tell:"ambia",trigger:"chochea",send:"tuma",take:"chukua",put:"weka",set:"weka",get:"pata",add:"ongeza",remove:"ondoa",toggle:"badilisha",hide:"ficha",show:"onyesha",if:"kama",unless:"isipokuwa",repeat:"rudia",for:"kwa",while:"wakati",until:"hadi",continue:"endelea",break:"vunja",halt:"simama",wait:"ngoja",fetch:"leta",call:"ita",return:"rudi",make:"fanya",log:"andika",throw:"tupa",catch:"shika",measure:"pima",transition:"mpito",increment:"ongeza",decrement:"punguza",default:"msingi",go:"nenda",pushUrl:"sukumaUrl",replaceUrl:"badilishaUrl",copy:"nakili",pick:"chagua",beep:"lia",js:"js",async:"sainkroni",render:"chora",swap:"badilishana",morph:"badilishaUmbo",settle:"tulia",append:"ongezaMwisho",exit:"toka",install:"sakinisha"},modifiers:{to:"kwa",from:"kutoka",into:"ndani",with:"na",at:"katika",in:"ndani",of:"ya",as:"kama",by:"na",before:"kabla",after:"baada",over:"juu",under:"chini",between:"kati",through:"kupitia",without:"bila"},events:{click:"bonyeza",dblclick:"bonyeza_mara_mbili",mousedown:"panya_shuka",mouseup:"panya_juu",mouseenter:"panya_ingia",mouseleave:"panya_toka",mouseover:"panya_juu",mouseout:"panya_nje",mousemove:"panya_sogea",keydown:"kitufe_shuka",keyup:"kitufe_juu",keypress:"kitufe_bonyeza",focus:"zingatia",blur:"poteza_macho",change:"badilisha",input:"ingizo",submit:"wasilisha",reset:"weka_upya",load:"pakia",unload:"shuka",resize:"badilisha_ukubwa",scroll:"sogeza",touchstart:"gusa_anza",touchend:"gusa_mwisho",touchmove:"gusa_sogea",touchcancel:"gusa_ghairi"},logical:{when:"wakati",where:"wapi",and:"na",or:"au",not:"si",is:"ni",exists:"ipo",matches:"inafanana",contains:"ina",includes:"pamoja",equals:"sawa",has:"ana",have:"nina",then:"kisha",else:"sivyo",otherwise:"vinginevyo",end:"mwisho"},temporal:{seconds:"sekunde",second:"sekunde",milliseconds:"millisekunde",millisecond:"millisekunde",minutes:"dakika",minute:"dakika",hours:"masaa",hour:"saa",ms:"ms",s:"s",min:"dk",h:"sa"},values:{true:"kweli",false:"uongo",null:"tupu",undefined:"haijafafanuliwa",it:"hiyo",its:"yake",me:"mimi",my:"yangu",myself:"mimi mwenyewe",you:"wewe",your:"yako",yourself:"wewe mwenyewe",element:"kipengele",target:"lengo",detail:"maelezo",event:"tukio",window:"dirisha",document:"hati",body:"mwili",result:"matokeo",value:"thamani"},attributes:{class:"darasa",classes:"madarasa",style:"mtindo",styles:"mitindo",attribute:"sifa",attributes:"sifa",property:"mali",properties:"mali"},expressions:{first:"kwanza",last:"mwisho",next:"ijayo",previous:"iliyopita",prev:"awali",at:"katika",random:"nasibu",closest:"karibu_zaidi",parent:"mzazi",children:"watoto",within:"ndani_ya",no:"hakuna",empty:"tupu",some:"baadhi","starts with":"huanza na","ends with":"huisha na"}},cl=Do(ll,"sw",{allowEnglishFallback:!0}),ul={commands:{on:"em",tell:"dizer",trigger:"disparar",send:"enviar",take:"pegar",put:"colocar",set:"definir",get:"obter",add:"adicionar",remove:"remover",toggle:"alternar",hide:"esconder",show:"mostrar",if:"se",unless:"a_menos",repeat:"repetir",for:"para",while:"enquanto",until:"até",continue:"continuar",break:"parar",halt:"interromper",wait:"esperar",fetch:"buscar",call:"chamar",return:"retornar",make:"fazer",log:"registrar",throw:"lançar",catch:"capturar",measure:"medir",transition:"transição",increment:"incrementar",decrement:"decrementar",default:"padrão",go:"ir",pushUrl:"pushUrl",replaceUrl:"substituirUrl",copy:"copiar",pick:"escolher",beep:"apitar",js:"js",async:"assíncrono",render:"renderizar",swap:"trocar",morph:"transformar",settle:"estabilizar",append:"anexar",exit:"sair",install:"instalar"},modifiers:{to:"para",from:"de",into:"em",with:"com",at:"em",in:"dentro",of:"de",as:"como",by:"por",before:"antes",after:"depois",over:"sobre",under:"sob",between:"entre",through:"através",without:"sem"},events:{click:"clique",dblclick:"duploClique",mousedown:"mouseBaixo",mouseup:"mouseCima",mouseenter:"mouseEntrar",mouseleave:"mouseSair",mouseover:"mouseSobre",mouseout:"mouseFora",mousemove:"mouseMover",keydown:"teclaBaixo",keyup:"teclaCima",keypress:"teclaPressionar",focus:"foco",blur:"desfoque",change:"mudança",input:"entrada",submit:"envio",reset:"reiniciar",load:"carregar",unload:"descarregar",resize:"redimensionar",scroll:"rolar",touchstart:"toqueInício",touchend:"toqueFim",touchmove:"toqueMover",touchcancel:"toqueCancelar"},logical:{when:"quando",where:"onde",and:"e",or:"ou",not:"não",is:"é",exists:"existe",matches:"corresponde",contains:"contém",includes:"inclui",equals:"igual",has:"tem",have:"tenho",then:"então",else:"senão",otherwise:"caso_contrário",end:"fim"},temporal:{seconds:"segundos",second:"segundo",milliseconds:"milissegundos",millisecond:"milissegundo",minutes:"minutos",minute:"minuto",hours:"horas",hour:"hora",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"verdadeiro",false:"falso",null:"nulo",undefined:"indefinido",it:"isso",its:"seu",me:"eu",my:"meu",myself:"eu mesmo",you:"você",your:"seu",yourself:"você mesmo",element:"elemento",target:"alvo",detail:"detalhe",event:"evento",window:"janela",document:"documento",body:"corpo",result:"resultado",value:"valor"},attributes:{class:"classe",classes:"classes",style:"estilo",styles:"estilos",attribute:"atributo",attributes:"atributos",property:"propriedade",properties:"propriedades"},expressions:{first:"primeiro",last:"último",next:"próximo",previous:"anterior",prev:"ant",at:"em",random:"aleatório",closest:"mais_próximo",parent:"pai",children:"filhos",within:"dentro",no:"nenhum",empty:"vazio",some:"algum","starts with":"começa com","ends with":"termina com"}},dl=Do(ul,"pt",{allowEnglishFallback:!0}),ml={commands:{on:"su",tell:"dire",trigger:"scatenare",send:"inviare",take:"prendere",put:"mettere",set:"impostare",get:"ottenere",add:"aggiungere",remove:"rimuovere",toggle:"commutare",hide:"nascondere",show:"mostrare",if:"se",unless:"a meno che",repeat:"ripetere",for:"per",while:"mentre",until:"fino",continue:"continuare",break:"interrompere",halt:"fermare",wait:"aspettare",fetch:"recuperare",call:"chiamare",return:"ritornare",make:"fare",log:"registrare",throw:"lanciare",catch:"catturare",measure:"misurare",transition:"transizione",increment:"incrementare",decrement:"decrementare",default:"predefinito",go:"andare",pushUrl:"pushUrl",replaceUrl:"sostituireUrl",copy:"copiare",pick:"scegliere",beep:"beep",js:"js",async:"asincrono",render:"renderizzare",swap:"scambiare",morph:"trasformare",settle:"stabilizzare",append:"aggiungere",exit:"uscire",install:"installare"},modifiers:{to:"a",from:"da",into:"in",with:"con",at:"a",in:"in",of:"di",as:"come",by:"per",before:"prima",after:"dopo",over:"sopra",under:"sotto",between:"tra",through:"attraverso",without:"senza"},events:{click:"clic",dblclick:"doppioclic",mousedown:"mousegiù",mouseup:"mousesu",mouseenter:"mouseentra",mouseleave:"mouseesce",mouseover:"mousesopra",mouseout:"mousefuori",mousemove:"mousemuovi",keydown:"tastogiù",keyup:"tastosu",keypress:"tastopremi",focus:"fuoco",blur:"sfuocatura",change:"cambio",input:"input",submit:"invio",reset:"reset",load:"carica",unload:"scarica",resize:"ridimensiona",scroll:"scorrimento",touchstart:"toccoinizia",touchend:"toccofine",touchmove:"toccomuovi",touchcancel:"toccoannulla"},logical:{when:"quando",where:"dove",and:"e",or:"o",not:"non",is:"è",exists:"esiste",matches:"corrisponde",contains:"contiene",includes:"include",equals:"uguale",has:"ha",have:"ho",then:"allora",else:"altrimenti",otherwise:"altrimenti",end:"fine"},temporal:{seconds:"secondi",second:"secondo",milliseconds:"millisecondi",millisecond:"millisecondo",minutes:"minuti",minute:"minuto",hours:"ore",hour:"ora",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"vero",false:"falso",null:"nullo",undefined:"indefinito",it:"esso",its:"suo",me:"io",my:"mio",you:"tu",your:"tuo",yourself:"te stesso",myself:"me stesso",element:"elemento",target:"obiettivo",detail:"dettaglio",event:"evento",window:"finestra",document:"documento",body:"corpo",result:"risultato",value:"valore"},attributes:{class:"classe",classes:"classi",style:"stile",styles:"stili",attribute:"attributo",attributes:"attributi",property:"proprietà",properties:"proprietà"},expressions:{first:"primo",last:"ultimo",next:"prossimo",previous:"precedente",prev:"prec",at:"a",random:"casuale",closest:"piùvicino",parent:"genitore",children:"figli",within:"dentro",no:"nessun",empty:"vuoto",some:"qualche","starts with":"inizia con","ends with":"finisce con"}};Do(ml,"it",{allowEnglishFallback:!0});var pl={commands:{on:"khi",tell:"nói với",trigger:"kích hoạt",send:"gửi",take:"lấy",put:"đặt",set:"gán",get:"lấy giá trị",add:"thêm",remove:"xóa",toggle:"chuyển đổi",hide:"ẩn",show:"hiển thị",if:"nếu",unless:"trừ khi",repeat:"lặp lại",for:"với mỗi",while:"trong khi",until:"cho đến khi",continue:"tiếp tục",break:"dừng",halt:"dừng lại",wait:"chờ",fetch:"tải",call:"gọi",return:"trả về",make:"tạo",log:"in ra",throw:"ném",catch:"bắt",measure:"đo lường",transition:"chuyển tiếp",increment:"tăng",decrement:"giảm",default:"mặc định",go:"đi đến",pushUrl:"pushUrl",replaceUrl:"thayThếUrl",copy:"sao chép",pick:"chọn",beep:"beep",js:"js",async:"bất đồng bộ",render:"hiển thị",swap:"hoán đổi",morph:"biến đổi",settle:"ổn định",append:"nối",exit:"thoát",focus:"tập trung",blur:"mất tập trung",init:"khởi tạo",behavior:"hành vi",install:"cài đặt",clone:"sao chép",prepend:"thêm đầu",else:"không thì"},modifiers:{into:"vào",before:"trước",after:"sau",then:"rồi",end:"kết thúc",from:"từ",to:"đến",with:"với",as:"như",by:"bởi",on:"trên",in:"trong",at:"tại",of:"của",the:"",times:"lần"},events:{click:"nhấp",dblclick:"nhấp đúp",input:"nhập",change:"thay đổi",submit:"gửi",keydown:"phím xuống",keyup:"phím lên",keypress:"nhấn phím",mouseover:"chuột vào",mouseout:"chuột ra",mouseenter:"chuột vào",mouseleave:"chuột rời",focus:"tập trung",blur:"mất tập trung",load:"tải",scroll:"cuộn",resize:"đổi kích thước"},logical:{when:"khi",where:"ở_đâu",and:"và",or:"hoặc",not:"không",is:"là",equals:"bằng",contains:"chứa",matches:"khớp",exists:"tồn tại",has:"có",have:"có",empty:"trống",true:"đúng",false:"sai",null:"rỗng"},temporal:{now:"bây giờ",today:"hôm nay",tomorrow:"ngày mai",yesterday:"hôm qua",always:"luôn luôn",never:"không bao giờ",sometimes:"đôi khi",once:"một lần",twice:"hai lần",forever:"mãi mãi"},values:{true:"đúng",false:"sai",null:"rỗng",undefined:"không xác định",none:"không có",all:"tất cả",any:"bất kỳ",some:"một số",each:"mỗi",every:"tất cả"},attributes:{id:"id",class:"lớp",style:"kiểu",value:"giá trị",text:"văn bản",html:"html",src:"nguồn",href:"liên kết",disabled:"vô hiệu",hidden:"ẩn",checked:"được chọn",selected:"được chọn"},expressions:{me:"tôi",my:"của tôi",it:"nó",its:"của nó",result:"kết quả",event:"sự kiện",target:"mục tiêu",first:"đầu tiên",last:"cuối cùng",next:"tiếp theo",previous:"trước đó",parent:"cha",children:"con",closest:"gần nhất"}};Do(pl,"vi",{allowEnglishFallback:!0});var hl={commands:{on:"gdy",tell:"powiedz",trigger:"wywołaj",send:"wyślij",take:"weź",put:"umieść",set:"ustaw",get:"pobierz",add:"dodaj",remove:"usuń",toggle:"przełącz",hide:"ukryj",show:"pokaż",if:"jeśli",unless:"chyba",repeat:"powtórz",for:"dla",while:"dopóki",until:"aż",continue:"kontynuuj",break:"przerwij",halt:"zatrzymaj",wait:"czekaj",fetch:"pobierz",call:"wywołaj",return:"zwróć",make:"utwórz",log:"loguj",throw:"rzuć",catch:"złap",measure:"zmierz",transition:"animuj",increment:"zwiększ",decrement:"zmniejsz",default:"domyślnie",go:"idź",pushUrl:"dodajUrl",replaceUrl:"zamieńUrl",copy:"kopiuj",pick:"wybierz",beep:"sygnał",js:"js",async:"async",render:"renderuj",swap:"zamień",morph:"przekształć",settle:"ustabilizuj",append:"dołącz",exit:"wyjdź",install:"zainstaluj"},modifiers:{to:"do",from:"z",into:"do",with:"z",at:"przy",in:"w",of:"z",as:"jako",by:"przez",before:"przed",after:"po",over:"nad",under:"pod",between:"między",through:"przez",without:"bez"},events:{click:"kliknięcie",dblclick:"podwójnekliknięcie",mousedown:"myszdół",mouseup:"myszgóra",mouseenter:"myszwejście",mouseleave:"myszwyjście",mouseover:"mysznad",mouseout:"myszpoza",mousemove:"myszruch",keydown:"klawiszdół",keyup:"klawiszgóra",keypress:"klawisznaciśnięcie",focus:"fokus",blur:"rozmycie",change:"zmiana",input:"wejście",submit:"wyślij",reset:"resetuj",load:"załaduj",unload:"wyładuj",resize:"zmieńrozmiar",scroll:"przewiń",touchstart:"dotykstart",touchend:"dotykkoniec",touchmove:"dotykruch",touchcancel:"dotykanuluj"},logical:{when:"kiedy",where:"gdzie",and:"i",or:"lub",not:"nie",is:"jest",exists:"istnieje",matches:"pasuje",contains:"zawiera",includes:"obejmuje",equals:"równa się",has:"ma",have:"mam",then:"wtedy",else:"inaczej",otherwise:"wpp",end:"koniec"},temporal:{seconds:"sekundy",second:"sekunda",milliseconds:"milisekundy",millisecond:"milisekunda",minutes:"minuty",minute:"minuta",hours:"godziny",hour:"godzina",ms:"ms",s:"s",min:"min",h:"godz"},values:{true:"prawda",false:"fałsz",null:"null",undefined:"niezdefiniowane",it:"to",its:"jego",me:"ja",my:"mój",you:"ty",your:"twój",yourself:"ty sam",myself:"ja sam",element:"element",target:"cel",detail:"szczegół",event:"zdarzenie",window:"okno",document:"dokument",body:"body",result:"wynik",value:"wartość"},attributes:{class:"klasa",classes:"klasy",style:"styl",styles:"style",attribute:"atrybut",attributes:"atrybuty",property:"właściwość",properties:"właściwości"},expressions:{first:"pierwszy",last:"ostatni",next:"następny",previous:"poprzedni",prev:"poprz",at:"przy",random:"losowy",closest:"najbliższy",parent:"rodzic",children:"dzieci",within:"wewnątrz",no:"brak",empty:"pusty",some:"jakiś","starts with":"zaczyna się od","ends with":"kończy się na"}};Do(hl,"pl",{allowEnglishFallback:!0});var fl={commands:{on:"при",tell:"сказать",trigger:"вызвать",send:"отправить",take:"взять",put:"положить",set:"установить",get:"получить",add:"добавить",remove:"удалить",toggle:"переключить",hide:"скрыть",show:"показать",if:"если",unless:"если_не",repeat:"повторить",for:"для",while:"пока",until:"до",continue:"продолжить",break:"прервать",halt:"остановить",wait:"ждать",fetch:"загрузить",call:"вызвать",return:"вернуть",make:"создать",log:"записать",throw:"бросить",catch:"поймать",measure:"измерить",transition:"анимировать",increment:"увеличить",decrement:"уменьшить",default:"по_умолчанию",go:"перейти",pushUrl:"добавить_url",replaceUrl:"заменить_url",copy:"копировать",pick:"выбрать",beep:"звук",js:"js",async:"асинхронно",render:"отобразить",swap:"поменять",morph:"трансформировать",settle:"стабилизировать",append:"добавить_в_конец",exit:"выйти",else:"иначе",install:"установить",init:"инициализировать",behavior:"поведение",focus:"сфокусировать",blur:"размыть",clone:"клонировать",prepend:"добавить_в_начало"},modifiers:{to:"к",from:"из",into:"в",with:"с",at:"у",in:"в",of:"из",as:"как",by:"на",before:"до",after:"после",over:"над",under:"под",between:"между",through:"через",without:"без",on:"на"},events:{click:"клик",dblclick:"двойной_клик",mousedown:"мышь_вниз",mouseup:"мышь_вверх",mouseenter:"мышь_вход",mouseleave:"мышь_выход",mouseover:"наведение",mouseout:"уход",mousemove:"движение_мыши",keydown:"клавиша_вниз",keyup:"клавиша_вверх",keypress:"нажатие_клавиши",focus:"фокус",blur:"потеря_фокуса",change:"изменение",input:"ввод",submit:"отправка",reset:"сброс",load:"загрузка",unload:"выгрузка",resize:"изменение_размера",scroll:"прокрутка",touchstart:"касание_начало",touchend:"касание_конец",touchmove:"касание_движение",touchcancel:"касание_отмена"},logical:{when:"когда",where:"где",and:"и",or:"или",not:"не",is:"есть",exists:"существует",matches:"соответствует",contains:"содержит",includes:"включает",equals:"равно",then:"затем",else:"иначе",otherwise:"в_противном_случае",end:"конец",has:"имеет",have:"имею",isNot:"не_есть",empty:"пустой"},temporal:{seconds:"секунд",second:"секунда",milliseconds:"миллисекунд",millisecond:"миллисекунда",minutes:"минут",minute:"минута",hours:"часов",hour:"час",ms:"мс",s:"с",min:"мин",h:"ч",forever:"всегда",once:"однажды",every:"каждый",until:"до"},values:{true:"истина",false:"ложь",null:"ничего",undefined:"неопределено",it:"это",its:"его",me:"я",my:"мой",you:"ты",your:"твой",yourself:"сам",myself:"я_сам",element:"элемент",target:"цель",detail:"детали",event:"событие",window:"окно",document:"документ",body:"тело",result:"результат",value:"значение",first:"первый",last:"последний",next:"следующий",previous:"предыдущий",closest:"ближайший",parent:"родитель"},attributes:{class:"класс",classes:"классы",style:"стиль",styles:"стили",attribute:"атрибут",attributes:"атрибуты",property:"свойство",properties:"свойства",disabled:"отключено",hidden:"скрыто",checked:"отмечено",selected:"выбрано",readonly:"только_чтение",required:"обязательно",text:"текст",html:"html"},expressions:{first:"первый",last:"последний",next:"следующий",previous:"предыдущий",prev:"пред",at:"в",random:"случайный",closest:"ближайший",parent:"родитель",children:"дети",within:"внутри",no:"нет",empty:"пустой",some:"некоторые","starts with":"начинается_с","ends with":"заканчивается_на"}};Do(fl,"ru",{allowEnglishFallback:!0});var yl={commands:{on:"при",tell:"сказати",trigger:"викликати",send:"надіслати",take:"взяти",put:"покласти",set:"встановити",get:"отримати",add:"додати",remove:"видалити",toggle:"перемкнути",hide:"сховати",show:"показати",if:"якщо",unless:"якщо_не",repeat:"повторити",for:"для",while:"поки",until:"до",continue:"продовжити",break:"перервати",halt:"зупинити",wait:"чекати",fetch:"завантажити",call:"викликати",return:"повернути",make:"створити",log:"записати",throw:"кинути",catch:"зловити",measure:"виміряти",transition:"анімувати",increment:"збільшити",decrement:"зменшити",default:"за_замовчуванням",go:"перейти",pushUrl:"додати_url",replaceUrl:"замінити_url",copy:"копіювати",pick:"вибрати",beep:"звук",js:"js",async:"асинхронно",render:"відобразити",swap:"поміняти",morph:"трансформувати",settle:"стабілізувати",append:"додати_в_кінець",exit:"вийти",else:"інакше",install:"встановити",init:"ініціалізувати",behavior:"поведінка",focus:"сфокусувати",blur:"розфокусувати",clone:"клонувати",prepend:"додати_на_початок"},modifiers:{to:"до",from:"з",into:"в",with:"з",at:"в",in:"у",of:"з",as:"як",by:"на",before:"до",after:"після",over:"над",under:"під",between:"між",through:"через",without:"без",on:"на"},events:{click:"клік",dblclick:"подвійний_клік",mousedown:"миша_вниз",mouseup:"миша_вгору",mouseenter:"миша_вхід",mouseleave:"миша_вихід",mouseover:"наведення",mouseout:"відведення",mousemove:"рух_миші",keydown:"клавіша_вниз",keyup:"клавіша_вгору",keypress:"натискання_клавіші",focus:"фокус",blur:"розфокус",change:"зміна",input:"введення",submit:"надсилання",reset:"скидання",load:"завантаження",unload:"вивантаження",resize:"зміна_розміру",scroll:"прокрутка",touchstart:"дотик_початок",touchend:"дотик_кінець",touchmove:"дотик_рух",touchcancel:"дотик_скасування"},logical:{when:"коли",where:"де",and:"і",or:"або",not:"не",is:"є",exists:"існує",matches:"відповідає",contains:"містить",includes:"включає",equals:"дорівнює",then:"тоді",else:"інакше",otherwise:"в_іншому_випадку",end:"кінець",has:"має",have:"маю",isNot:"не_є",empty:"порожній"},temporal:{seconds:"секунд",second:"секунда",milliseconds:"мілісекунд",millisecond:"мілісекунда",minutes:"хвилин",minute:"хвилина",hours:"годин",hour:"година",ms:"мс",s:"с",min:"хв",h:"год",forever:"завжди",once:"один_раз",every:"кожний",until:"до"},values:{true:"істина",false:"хибність",null:"нічого",undefined:"невизначено",it:"це",its:"його",me:"я",my:"мій",you:"ти",your:"твій",yourself:"сам",myself:"я_сам",element:"елемент",target:"ціль",detail:"деталі",event:"подія",window:"вікно",document:"документ",body:"тіло",result:"результат",value:"значення",first:"перший",last:"останній",next:"наступний",previous:"попередній",closest:"найближчий",parent:"батьківський"},attributes:{class:"клас",classes:"класи",style:"стиль",styles:"стилі",attribute:"атрибут",attributes:"атрибути",property:"властивість",properties:"властивості",disabled:"вимкнено",hidden:"приховано",checked:"позначено",selected:"вибрано",readonly:"лише_читання",required:"обов'язково",text:"текст",html:"html"},expressions:{first:"перший",last:"останній",next:"наступний",previous:"попередній",prev:"попер",at:"в",random:"випадковий",closest:"найближчий",parent:"батьківський",children:"діти",within:"всередині",no:"ні",empty:"порожній",some:"деякі","starts with":"починається_з","ends with":"закінчується_на"}};Do(yl,"uk",{allowEnglishFallback:!0});var gl={commands:{on:"पर",tell:"बताएं",trigger:"ट्रिगर",send:"भेजें",take:"लें",put:"रखें",set:"सेट",get:"प्राप्त",add:"जोड़ें",remove:"हटाएं",toggle:"टॉगल",hide:"छिपाएं",show:"दिखाएं",if:"अगर",unless:"जब_तक_नहीं",repeat:"दोहराएं",for:"के_लिए",while:"जब_तक",until:"तक",continue:"जारी",break:"रोकें",halt:"रोकें",wait:"प्रतीक्षा",fetch:"लाएं",call:"कॉल",return:"लौटाएं",make:"बनाएं",log:"लॉग",throw:"फेंकें",catch:"पकड़ें",measure:"मापें",transition:"संक्रमण",increment:"बढ़ाएं",decrement:"घटाएं",default:"डिफ़ॉल्ट",go:"जाएं",pushUrl:"url_जोड़ें",replaceUrl:"url_बदलें",copy:"कॉपी",pick:"चुनें",beep:"बीप",js:"जेएस",async:"असिंक",render:"रेंडर",swap:"बदलें",morph:"रूपांतर",settle:"स्थिर",append:"जोड़ें_अंत",exit:"बाहर",else:"वरना",install:"इंस्टॉल",init:"प्रारंभ",behavior:"व्यवहार",focus:"फोकस",blur:"धुंधला",clone:"कॉपी",prepend:"जोड़ें_शुरू"},modifiers:{to:"को",from:"से",into:"में",with:"के_साथ",at:"पर",in:"में",of:"का",as:"के_रूप_में",by:"द्वारा",before:"से_पहले",after:"के_बाद",over:"के_ऊपर",under:"के_नीचे",between:"के_बीच",through:"के_माध्यम_से",without:"के_बिना",on:"पर"},events:{click:"क्लिक",dblclick:"डबल_क्लिक",mousedown:"माउस_नीचे",mouseup:"माउस_ऊपर",mouseenter:"माउस_प्रवेश",mouseleave:"माउस_बाहर",mouseover:"माउस_ओवर",mouseout:"माउस_आउट",mousemove:"माउस_मूव",keydown:"की_नीचे",keyup:"की_ऊपर",keypress:"की_प्रेस",focus:"फोकस",blur:"धुंधला",change:"परिवर्तन",input:"इनपुट",submit:"जमा",reset:"रीसेट",load:"लोड",unload:"अनलोड",resize:"आकार_बदलें",scroll:"स्क्रॉल",touchstart:"टच_शुरू",touchend:"टच_समाप्त",touchmove:"टच_मूव",touchcancel:"टच_रद्द"},logical:{when:"जब",where:"कहाँ",and:"और",or:"या",not:"नहीं",is:"है",exists:"मौजूद",matches:"मेल_खाता",contains:"शामिल",includes:"में_है",equals:"बराबर",then:"फिर",else:"वरना",otherwise:"अन्यथा",end:"समाप्त",has:"है",have:"है",isNot:"नहीं_है",empty:"खाली"},temporal:{seconds:"सेकंड",second:"सेकंड",milliseconds:"मिलीसेकंड",millisecond:"मिलीसेकंड",minutes:"मिनट",minute:"मिनट",hours:"घंटे",hour:"घंटा",ms:"मिसे",s:"से",min:"मि",h:"घं",forever:"हमेशा",once:"एक_बार",every:"हर",until:"तक"},values:{true:"सच",false:"झूठ",null:"खाली",undefined:"अपरिभाषित",it:"यह",its:"इसका",me:"मैं",my:"मेरा",you:"आप",your:"आपका",yourself:"स्वयं",myself:"मैं_स्वयं",element:"तत्व",target:"लक्ष्य",detail:"विवरण",event:"घटना",window:"विंडो",document:"दस्तावेज़",body:"बॉडी",result:"परिणाम",value:"मान",first:"पहला",last:"अंतिम",next:"अगला",previous:"पिछला",closest:"निकटतम",parent:"मूल"},attributes:{class:"क्लास",classes:"क्लासेस",style:"स्टाइल",styles:"स्टाइल्स",attribute:"गुण",attributes:"गुण",property:"संपत्ति",properties:"संपत्तियाँ",disabled:"अक्षम",hidden:"छिपा",checked:"चेक",selected:"चयनित",readonly:"केवल_पढ़ने",required:"आवश्यक",text:"पाठ",html:"html"},expressions:{first:"पहला",last:"अंतिम",next:"अगला",previous:"पिछला",prev:"पिछ",at:"पर",random:"यादृच्छिक",closest:"निकटतम",parent:"मूल",children:"बच्चे",within:"के_अंदर",no:"नहीं",empty:"खाली",some:"कुछ","starts with":"से_शुरू","ends with":"पर_समाप्त"}};Do(gl,"hi",{allowEnglishFallback:!0});var vl={commands:{on:"তে",toggle:"টগল",add:"যোগ",remove:"সরান",set:"সেট",get:"পান",put:"রাখুন",take:"নিন",show:"দেখান",hide:"লুকান",increment:"বৃদ্ধি",decrement:"হ্রাস",if:"যদি",else:"নতুবা",repeat:"পুনরাবৃত্তি",for:"জন্য",while:"যতক্ষণ",wait:"অপেক্ষা",fetch:"আনুন",call:"কল",return:"ফিরুন",log:"লগ",trigger:"ট্রিগার",send:"পাঠান",go:"যান",halt:"থামুন",throw:"নিক্ষেপ",continue:"চালিয়ে যান",make:"তৈরি করুন",append:"শেষে যোগ",prepend:"শুরুতে যোগ",focus:"ফোকাস",blur:"ঝাপসা",transition:"সংক্রমণ",settle:"স্থির",measure:"মাপুন",async:"অ্যাসিঙ্ক",tell:"বলুন",default:"ডিফল্ট",init:"শুরু",behavior:"আচরণ",install:"ইনস্টল",clone:"কপি",swap:"বদল",morph:"রূপান্তর"},modifiers:{to:"কে",from:"থেকে",into:"তে",on:"তে",with:"সাথে",by:"দ্বারা",as:"হিসাবে",before:"আগে",after:"পরে",at:"এ",in:"এ",over:"উপর",then:"তারপর",and:"এবং",end:"শেষ",until:"পর্যন্ত",of:"র"},events:{click:"ক্লিক",change:"পরিবর্তন",input:"ইনপুট",submit:"জমা",load:"লোড",focus:"ফোকাস",blur:"ঝাপসা",keydown:"কি-ডাউন",keyup:"কি-আপ",mouseover:"মাউস-ওভার",mouseout:"মাউস-আউট",scroll:"স্ক্রোল",resize:"রিসাইজ",every:"প্রতি"},logical:{if:"যদি",when:"যখন",where:"কোথায়",else:"নতুবা",not:"না",and:"এবং",or:"অথবা",is:"হয়",exists:"আছে",has:"আছে",have:"আছি",empty:"খালি",true:"সত্য",false:"মিথ্যা",null:"শূন্য",undefined:"অনির্ধারিত"},temporal:{now:"এখন",seconds:"সেকেন্ড",milliseconds:"মিলিসেকেন্ড",minutes:"মিনিট",hours:"ঘণ্টা",forever:"চিরকাল",times:"বার",s:"সে",ms:"মিসে"},values:{me:"আমি",my:"আমার",it:"এটি",its:"এর",result:"ফলাফল",event:"ঘটনা",target:"লক্ষ্য",body:"বডি"},attributes:{class:"শ্রেণি",id:"আইডি",style:"শৈলী",value:"মান",text:"পাঠ্য",html:"এইচটিএমএল",disabled:"অক্ষম",checked:"চেক করা"},expressions:{first:"প্রথম",last:"শেষ",next:"পরবর্তী",previous:"আগের",closest:"নিকটতম",parent:"মূল",children:"সন্তান",random:"এলোমেলো",length:"দৈর্ঘ্য",index:"সূচক"}};Do(vl,"bn",{allowEnglishFallback:!0});var bl={commands:{on:"เมื่อ",toggle:"สลับ",add:"เพิ่ม",remove:"ลบ",set:"ตั้ง",get:"รับค่า",put:"ใส่",take:"รับ",show:"แสดง",hide:"ซ่อน",increment:"เพิ่มค่า",decrement:"ลดค่า",if:"ถ้า",else:"ไม่งั้น",repeat:"ทำซ้ำ",for:"สำหรับ",while:"ในขณะที่",wait:"รอ",fetch:"ดึงข้อมูล",call:"เรียก",return:"คืนค่า",log:"บันทึก",trigger:"ทริกเกอร์",send:"ส่ง",go:"ไป",halt:"หยุด",throw:"โยน",continue:"ต่อไป",make:"สร้าง",append:"เพิ่มท้าย",prepend:"เพิ่มหน้า",focus:"โฟกัส",blur:"เบลอ",transition:"เปลี่ยน",settle:"คงที่",measure:"วัด",async:"อะซิงค์",tell:"บอก",default:"ค่าเริ่มต้น",init:"เริ่มต้น",behavior:"พฤติกรรม",install:"ติดตั้ง",clone:"คัดลอก",swap:"สลับที่",morph:"แปลงร่าง"},modifiers:{to:"ไปยัง",from:"จาก",into:"ใน",on:"เมื่อ",with:"ด้วย",by:"โดย",as:"เป็น",before:"ก่อน",after:"หลัง",at:"ที่",in:"ใน",over:"เหนือ",then:"แล้ว",and:"และ",end:"จบ",until:"จนถึง",of:"ของ"},events:{click:"คลิก",change:"เปลี่ยนแปลง",input:"อินพุต",submit:"ส่ง",load:"โหลด",focus:"โฟกัส",blur:"เบลอ",keydown:"กดคีย์",keyup:"ปล่อยคีย์",mouseover:"เมาส์เข้า",mouseout:"เมาส์ออก",scroll:"เลื่อน",resize:"ปรับขนาด",every:"ทุก"},logical:{if:"ถ้า",when:"เมื่อ",where:"ที่ไหน",else:"ไม่งั้น",not:"ไม่",and:"และ",or:"หรือ",is:"เป็น",exists:"มีอยู่",has:"มี",have:"มี",empty:"ว่าง",true:"จริง",false:"เท็จ",null:"ว่าง",undefined:"ไม่กำหนด"},temporal:{now:"ตอนนี้",seconds:"วินาที",milliseconds:"มิลลิวินาที",minutes:"นาที",hours:"ชั่วโมง",forever:"ตลอดไป",times:"ครั้ง",s:"วิ",ms:"มว"},values:{me:"ฉัน",my:"ของฉัน",it:"มัน",its:"ของมัน",result:"ผลลัพธ์",event:"เหตุการณ์",target:"เป้าหมาย",body:"บอดี้"},attributes:{class:"คลาส",id:"ไอดี",style:"สไตล์",value:"ค่า",text:"ข้อความ",html:"เอชทีเอ็มแอล",disabled:"ปิดใช้งาน",checked:"เลือกแล้ว"},expressions:{first:"แรก",last:"สุดท้าย",next:"ถัดไป",previous:"ก่อนหน้า",closest:"ใกล้สุด",parent:"ต้นทาง",children:"ลูก",random:"สุ่ม",length:"ความยาว",index:"ดัชนี"}};Do(bl,"th",{allowEnglishFallback:!0});var wl={commands:{on:"apabila",tell:"beritahu",trigger:"cetuskan",send:"hantar",take:"ambil",put:"letak",set:"tetapkan",get:"dapatkan",add:"tambah",remove:"buang",toggle:"togol",hide:"sembunyi",show:"tunjuk",if:"jika",unless:"kecuali",repeat:"ulang",for:"untuk",while:"selagi",until:"sehingga",continue:"teruskan",break:"henti",halt:"henti",wait:"tunggu",fetch:"ambil_dari",call:"panggil",return:"pulang",make:"buat",log:"catat",throw:"lempar",catch:"tangkap",measure:"ukur",transition:"peralihan",increment:"tambah_satu",decrement:"kurang_satu",default:"lalai",go:"pergi",pushUrl:"tolak_url",replaceUrl:"ganti_url",copy:"salin",pick:"pilih",beep:"bunyi",js:"js",async:"tak_segerak",render:"papar",swap:"tukar_tempat",morph:"ubah_bentuk",settle:"selesai",append:"tambah_hujung",prepend:"tambah_mula",exit:"keluar",else:"kalau_tidak",focus:"fokus",blur:"kabur",install:"pasang",behavior:"kelakuan",init:"mula",clone:"klon"},modifiers:{to:"ke",from:"dari",into:"ke_dalam",with:"dengan",at:"di",in:"dalam",of:"daripada",as:"sebagai",by:"oleh",before:"sebelum",after:"selepas",over:"atas",under:"bawah",between:"antara",through:"melalui",without:"tanpa",on:"pada",then:"kemudian",and:"dan",end:"tamat",until:"sehingga"},events:{click:"click",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"keydown",keyup:"keyup",keypress:"keypress",focus:"focus",blur:"blur",change:"change",input:"input",submit:"submit",reset:"reset",load:"load",unload:"unload",resize:"resize",scroll:"scroll",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel",every:"setiap"},logical:{when:"apabila",where:"di_mana",and:"dan",or:"atau",not:"bukan",is:"adalah",exists:"wujud",matches:"sepadan",contains:"mengandungi",includes:"termasuk",equals:"sama",has:"ada",have:"ada",then:"kemudian",else:"kalau_tidak",otherwise:"jika_tidak",end:"tamat",if:"jika",empty:"kosong",true:"benar",false:"salah",null:"null",undefined:"tidak_ditakrifkan"},temporal:{seconds:"saat",second:"saat",milliseconds:"milisaat",millisecond:"milisaat",minutes:"minit",minute:"minit",hours:"jam",hour:"jam",ms:"ms",s:"s",min:"min",h:"j",now:"sekarang",forever:"selamanya",times:"kali"},values:{true:"benar",false:"salah",null:"null",undefined:"tidak_ditakrifkan",it:"ia",its:"nya",me:"saya",my:"saya_punya",myself:"diri_saya",you:"kamu",your:"kamu_punya",yourself:"diri_kamu",element:"elemen",target:"sasaran",detail:"perincian",event:"peristiwa",window:"tetingkap",document:"dokumen",body:"badan",result:"hasil",value:"nilai"},attributes:{class:"kelas",classes:"kelas_kelas",style:"gaya",styles:"gaya_gaya",attribute:"atribut",attributes:"atribut_atribut",property:"sifat",properties:"sifat_sifat",id:"id",value:"nilai",text:"teks",html:"html",disabled:"dilumpuhkan",checked:"ditanda"},expressions:{first:"pertama",last:"terakhir",next:"seterusnya",previous:"sebelumnya",prev:"sebelum",at:"di",random:"rawak",closest:"terdekat",parent:"induk",children:"anak_anak",within:"dalam",no:"tiada",empty:"kosong",some:"beberapa","starts with":"bermula_dengan","ends with":"berakhir_dengan",length:"panjang",index:"indeks"}};Do(wl,"ms",{allowEnglishFallback:!0});var kl={commands:{on:"kapag",tell:"sabihin",trigger:"palitawin",send:"ipadala",take:"kunin",put:"ilagay",set:"itakda",get:"kuhanin",add:"idagdag",remove:"alisin",toggle:"palitan",hide:"itago",show:"ipakita",if:"kung",unless:"maliban_kung",repeat:"ulitin",for:"para_sa",while:"habang",until:"hanggang",continue:"magpatuloy",break:"itigil",halt:"huminto",wait:"maghintay",fetch:"kuhanin_mula",call:"tawagin",return:"ibalik",make:"gumawa",log:"itala",throw:"ihagis",catch:"hulihin",measure:"sukatin",transition:"baguhin",increment:"dagdagan",decrement:"bawasan",default:"pamantayan",go:"pumunta",pushUrl:"itulak_url",replaceUrl:"palitan_url",copy:"kopyahin",pick:"pumili",beep:"tunog",js:"js",async:"sabay",render:"ipakita",swap:"palitan_pwesto",morph:"baguhin_hugis",settle:"ayusin",append:"idagdag_sa_dulo",prepend:"idagdag_sa_simula",exit:"lumabas",else:"kung_hindi",focus:"ituon",blur:"alisin_tuon",install:"ikabit",behavior:"ugali",init:"simulan",clone:"kopyahin"},modifiers:{to:"sa",from:"mula_sa",into:"papasok_sa",with:"kasama",at:"sa",in:"sa_loob",of:"ng",as:"bilang",by:"sa_pamamagitan_ng",before:"bago",after:"pagkatapos",over:"sa_ibabaw",under:"sa_ilalim",between:"sa_pagitan",through:"sa_pamamagitan",without:"walang",on:"sa",then:"pagkatapos",and:"at",end:"wakas",until:"hanggang"},events:{click:"click",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"keydown",keyup:"keyup",keypress:"keypress",focus:"focus",blur:"blur",change:"change",input:"input",submit:"submit",reset:"reset",load:"load",unload:"unload",resize:"resize",scroll:"scroll",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel",every:"bawat"},logical:{when:"kapag",where:"kung_saan",and:"at",or:"o",not:"hindi",is:"ay",exists:"may",matches:"tumutugma",contains:"naglalaman",includes:"kasama",equals:"katumbas",has:"may",have:"may",then:"pagkatapos",else:"kung_hindi",otherwise:"kung_hindi_man",end:"wakas",if:"kung",empty:"walang_laman",true:"totoo",false:"mali",null:"wala",undefined:"hindi_tinukoy"},temporal:{seconds:"segundo",second:"segundo",milliseconds:"milisegundo",millisecond:"milisegundo",minutes:"minuto",minute:"minuto",hours:"oras",hour:"oras",ms:"ms",s:"s",min:"min",h:"h",now:"ngayon",forever:"magpakailanman",times:"beses"},values:{true:"totoo",false:"mali",null:"wala",undefined:"hindi_tinukoy",it:"ito",its:"nito",me:"ako",my:"aking",myself:"sarili_ko",you:"ikaw",your:"iyong",yourself:"sarili_mo",element:"elemento",target:"target",detail:"detalye",event:"pangyayari",window:"bintana",document:"dokumento",body:"katawan",result:"resulta",value:"halaga"},attributes:{class:"klase",classes:"mga_klase",style:"estilo",styles:"mga_estilo",attribute:"katangian",attributes:"mga_katangian",property:"ari_arian",properties:"mga_ari_arian",id:"id",value:"halaga",text:"teksto",html:"html",disabled:"hindi_pinagana",checked:"naka_tsek"},expressions:{first:"una",last:"huli",next:"susunod",previous:"nakaraan",prev:"nakaraan",at:"sa",random:"random",closest:"pinakamalapit",parent:"magulang",children:"mga_anak",within:"sa_loob_ng",no:"walang",empty:"walang_laman",some:"ilan","starts with":"nagsisimula_sa","ends with":"nagtatapos_sa",length:"haba",index:"indeks"}};Do(kl,"tl",{allowEnglishFallback:!0});var El=class e{static register(t,r){e.providers.set(t.toLowerCase(),r)}static unregister(t){e.providers.delete(t.toLowerCase())}static setDefault(t){const r=t.toLowerCase();if("en"!==r&&!e.providers.has(r))throw Error(`Locale '${t}' is not registered. Available locales: ${e.getAvailable().join(", ")}`);e.defaultLocale=r}static getDefault(){return e.defaultLocale}static get(t){const r=(t||e.defaultLocale).toLowerCase();if("en"===r)return e.englishProvider;const n=e.providers.get(r);if(!n)throw Error(`Locale '${r}' is not registered. Available locales: ${e.getAvailable().join(", ")}`);return n}static has(t){const r=t.toLowerCase();return"en"===r||e.providers.has(r)}static getAvailable(){return["en",...Array.from(e.providers.keys())]}static reset(){e.providers.clear(),e.defaultLocale="en"}static registerAll(t){for(const[r,n]of Object.entries(t))e.register(r,n)}};El.providers=new Map,El.defaultLocale="en",El.englishProvider=Bo();var xl=El;function Cl(e){if(0===e.length)return"";let t="";for(let r=0;e.length>r;r++){const n=e[r],s=e[r+1],i=n.endsWith("-"),a=n.startsWith("-");let o=n;if(i&&(o=n.slice(0,-1)),a&&(o=n.substring(1)),t+=o,s){const e=s.startsWith("-");i||e||(t+=" ")}}return t}var Al={en:{code:"en",name:"English",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","source","destination","quantity","duration","method","style"],markers:[{form:"on",role:"event",position:"preposition",required:!0},{form:"to",role:"destination",position:"preposition",required:!1},{form:"into",role:"destination",position:"preposition",required:!1},{form:"from",role:"source",position:"preposition",required:!1},{form:"with",role:"style",position:"preposition",required:!1},{form:"by",role:"quantity",position:"preposition",required:!1},{form:"as",role:"method",position:"preposition",required:!1},{form:"over",role:"duration",position:"preposition",required:!1},{form:"for",role:"duration",position:"preposition",required:!1}]},ja:{code:"ja",name:"日本語",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"を",role:"patient",position:"postposition",required:!0},{form:"に",role:"destination",position:"postposition",required:!0},{form:"から",role:"source",position:"postposition",required:!0},{form:"で",role:"event",position:"postposition",required:!0},{form:"で",role:"style",position:"postposition",required:!1},{form:"と",role:"style",position:"postposition",required:!1},{form:"へ",role:"destination",position:"postposition",required:!1}],rules:[{name:"event-handler",description:"Transform event handlers to Japanese SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"],optionalRoles:["patient"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}},{name:"put-into",description:"Transform put X into Y to Japanese order",priority:90,match:{commands:["put","置く"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","destination","action"],insertMarkers:!0}}]},ko:{code:"ko",name:"한국어",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"를",role:"patient",position:"postposition",required:!0,alternatives:["을"]},{form:"에",role:"destination",position:"postposition",required:!0},{form:"에서",role:"source",position:"postposition",required:!0},{form:"로",role:"style",position:"postposition",required:!1,alternatives:["으로"]},{form:"와",role:"style",position:"postposition",required:!1,alternatives:["과"]},{form:"로",role:"method",position:"postposition",required:!1,alternatives:["으로"]}],rules:[{name:"event-handler",description:"Transform event handlers to Korean SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}}]},zh:{code:"zh",name:"中文",wordOrder:"SVO",adpositionType:"preposition",morphology:"isolating",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"当",role:"event",position:"preposition",required:!0},{form:"时",role:"event",position:"postposition",required:!0},{form:"把",role:"patient",position:"preposition",required:!1},{form:"到",role:"destination",position:"preposition",required:!1},{form:"从",role:"source",position:"preposition",required:!1},{form:"用",role:"style",position:"preposition",required:!1},{form:"的",role:"method",position:"postposition",required:!1}],rules:[{name:"event-handler-standard",description:"Standard event handler: 当 X 时 Y",priority:100,match:{requiredRoles:["event","action"]},transform:{roleOrder:["event","action","patient"],insertMarkers:!0,custom:(e,t)=>{const r=e.roles.get("event"),n=e.roles.get("action"),s=e.roles.get("patient"),i=["当",r?.translated||r?.value,"时"];return i.push(n?.translated||n?.value||""),s&&i.push(s.translated||s.value),i.filter(Boolean).join(" ")}}},{name:"ba-construction",description:"BA construction for object-fronting: 把 X Y",priority:80,match:{commands:["put","set","move"],requiredRoles:["action","patient","destination"]},transform:{roleOrder:["patient","action","destination"],insertMarkers:!0}}]},ar:{code:"ar",name:"العربية",wordOrder:"VSO",adpositionType:"preposition",morphology:"fusional",direction:"rtl",canonicalOrder:["action","agent","patient","destination","source"],markers:[{form:"عند",role:"event",position:"preposition",required:!0},{form:"إلى",role:"destination",position:"preposition",required:!1},{form:"في",role:"destination",position:"preposition",required:!1},{form:"من",role:"source",position:"preposition",required:!1},{form:"بـ-",role:"style",position:"preposition",required:!1},{form:"مع",role:"style",position:"preposition",required:!1},{form:"كـ-",role:"method",position:"preposition",required:!1}],rules:[{name:"event-handler-vso",description:"VSO event handler: VERB TARGET عند EVENT",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["action","patient","event"],insertMarkers:!0}}]},tr:{code:"tr",name:"Türkçe",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"i",role:"patient",position:"postposition",required:!0,alternatives:["ı","u","ü"]},{form:"e",role:"destination",position:"postposition",required:!0,alternatives:["a"]},{form:"den",role:"source",position:"postposition",required:!0,alternatives:["dan"]},{form:"de",role:"event",position:"postposition",required:!0,alternatives:["da"]},{form:"ile",role:"style",position:"postposition",required:!1},{form:"olarak",role:"method",position:"postposition",required:!1}],rules:[{name:"event-handler-sov",description:"SOV event handler",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}}]},es:{code:"es",name:"Español",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"en",role:"event",position:"preposition",required:!0},{form:"a",role:"destination",position:"preposition",required:!1},{form:"hacia",role:"destination",position:"preposition",required:!1},{form:"de",role:"source",position:"preposition",required:!1},{form:"con",role:"style",position:"preposition",required:!1},{form:"por",role:"quantity",position:"preposition",required:!1},{form:"como",role:"method",position:"preposition",required:!1}]},de:{code:"de",name:"Deutsch",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"bei",role:"event",position:"preposition",required:!0},{form:"zu",role:"destination",position:"preposition",required:!1},{form:"in",role:"destination",position:"preposition",required:!1},{form:"von",role:"source",position:"preposition",required:!1},{form:"aus",role:"source",position:"preposition",required:!1},{form:"mit",role:"style",position:"preposition",required:!1},{form:"um",role:"quantity",position:"preposition",required:!1},{form:"als",role:"method",position:"preposition",required:!1}]},fr:{code:"fr",name:"Français",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"sur",role:"event",position:"preposition",required:!0},{form:"à",role:"destination",position:"preposition",required:!1},{form:"dans",role:"destination",position:"preposition",required:!1},{form:"de",role:"source",position:"preposition",required:!1},{form:"avec",role:"style",position:"preposition",required:!1},{form:"par",role:"quantity",position:"preposition",required:!1},{form:"comme",role:"method",position:"preposition",required:!1}]},pt:{code:"pt",name:"Português",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"em",role:"event",position:"preposition",required:!0},{form:"para",role:"destination",position:"preposition",required:!1},{form:"em",role:"destination",position:"preposition",required:!1},{form:"de",role:"source",position:"preposition",required:!1},{form:"com",role:"style",position:"preposition",required:!1},{form:"por",role:"quantity",position:"preposition",required:!1},{form:"como",role:"method",position:"preposition",required:!1}]},id:{code:"id",name:"Bahasa Indonesia",wordOrder:"SVO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"pada",role:"event",position:"preposition",required:!0},{form:"ke",role:"destination",position:"preposition",required:!1},{form:"dari",role:"source",position:"preposition",required:!1},{form:"dengan",role:"style",position:"preposition",required:!1},{form:"sebagai",role:"method",position:"preposition",required:!1}]},qu:{code:"qu",name:"Runasimi",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","source","destination","event","action"],markers:[{form:"ta",role:"patient",position:"postposition",required:!0},{form:"man",role:"destination",position:"postposition",required:!0},{form:"manta",role:"source",position:"postposition",required:!0},{form:"pi",role:"event",position:"postposition",required:!0},{form:"wan",role:"style",position:"postposition",required:!1},{form:"hina",role:"method",position:"postposition",required:!1}]},sw:{code:"sw",name:"Kiswahili",wordOrder:"SVO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"kwenye",role:"event",position:"preposition",required:!0},{form:"kwa",role:"destination",position:"preposition",required:!1},{form:"kutoka",role:"source",position:"preposition",required:!1},{form:"na",role:"style",position:"preposition",required:!1},{form:"kama",role:"method",position:"preposition",required:!1}]},bn:{code:"bn",name:"বাংলা",wordOrder:"SOV",adpositionType:"postposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"কে",role:"patient",position:"postposition",required:!0},{form:"তে",role:"destination",position:"postposition",required:!0},{form:"এ",role:"event",position:"postposition",required:!0},{form:"থেকে",role:"source",position:"postposition",required:!0},{form:"দিয়ে",role:"style",position:"postposition",required:!1},{form:"জন্য",role:"duration",position:"postposition",required:!1}],rules:[{name:"event-handler",description:"Transform event handlers to Bengali SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"],optionalRoles:["patient"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}}]},it:{code:"it",name:"Italiano",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"su",role:"event",position:"preposition",required:!0},{form:"in",role:"destination",position:"preposition",required:!1},{form:"a",role:"destination",position:"preposition",required:!1},{form:"da",role:"source",position:"preposition",required:!1},{form:"di",role:"source",position:"preposition",required:!1},{form:"con",role:"style",position:"preposition",required:!1},{form:"come",role:"method",position:"preposition",required:!1}]},ru:{code:"ru",name:"Русский",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"при",role:"event",position:"preposition",required:!0},{form:"в",role:"destination",position:"preposition",required:!1},{form:"на",role:"destination",position:"preposition",required:!1},{form:"к",role:"destination",position:"preposition",required:!1},{form:"из",role:"source",position:"preposition",required:!1},{form:"от",role:"source",position:"preposition",required:!1},{form:"с",role:"source",position:"preposition",required:!1},{form:"с",role:"style",position:"preposition",required:!1},{form:"со",role:"style",position:"preposition",required:!1},{form:"как",role:"method",position:"preposition",required:!1}]},uk:{code:"uk",name:"Українська",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"при",role:"event",position:"preposition",required:!0},{form:"в",role:"destination",position:"preposition",required:!1},{form:"на",role:"destination",position:"preposition",required:!1},{form:"до",role:"destination",position:"preposition",required:!1},{form:"з",role:"source",position:"preposition",required:!1},{form:"від",role:"source",position:"preposition",required:!1},{form:"із",role:"source",position:"preposition",required:!1},{form:"з",role:"style",position:"preposition",required:!1},{form:"із",role:"style",position:"preposition",required:!1},{form:"як",role:"method",position:"preposition",required:!1}]},vi:{code:"vi",name:"Tiếng Việt",wordOrder:"SVO",adpositionType:"preposition",morphology:"isolating",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"khi",role:"event",position:"preposition",required:!0},{form:"vào",role:"destination",position:"preposition",required:!1},{form:"cho",role:"destination",position:"preposition",required:!1},{form:"đến",role:"destination",position:"preposition",required:!1},{form:"từ",role:"source",position:"preposition",required:!1},{form:"khỏi",role:"source",position:"preposition",required:!1},{form:"với",role:"style",position:"preposition",required:!1},{form:"như",role:"method",position:"preposition",required:!1}]},hi:{code:"hi",name:"हिन्दी",wordOrder:"SOV",adpositionType:"postposition",morphology:"fusional",direction:"ltr",canonicalOrder:["patient","event","action"],markers:[{form:"को",role:"patient",position:"postposition",required:!0},{form:"में",role:"destination",position:"postposition",required:!0},{form:"पर",role:"destination",position:"postposition",required:!1},{form:"पर",role:"event",position:"postposition",required:!0},{form:"से",role:"source",position:"postposition",required:!0},{form:"से",role:"style",position:"postposition",required:!1},{form:"साथ",role:"style",position:"postposition",required:!1},{form:"के रूप में",role:"method",position:"postposition",required:!1}],rules:[{name:"event-handler",description:"Transform event handlers to Hindi SOV order",priority:100,match:{commands:["on"],requiredRoles:["event","action"],optionalRoles:["patient"]},transform:{roleOrder:["patient","event","action"],insertMarkers:!0}}]},tl:{code:"tl",name:"Tagalog",wordOrder:"VSO",adpositionType:"preposition",morphology:"agglutinative",direction:"ltr",canonicalOrder:["action","agent","patient","destination","source"],markers:[{form:"kapag",role:"event",position:"preposition",required:!0},{form:"sa",role:"destination",position:"preposition",required:!1},{form:"mula sa",role:"source",position:"preposition",required:!1},{form:"nang",role:"style",position:"preposition",required:!1},{form:"bilang",role:"method",position:"preposition",required:!1}],rules:[{name:"event-handler-vso",description:"VSO event handler: VERB TARGET kapag EVENT",priority:100,match:{commands:["on"],requiredRoles:["event","action"]},transform:{roleOrder:["action","patient","event"],insertMarkers:!0}}]},th:{code:"th",name:"ไทย",wordOrder:"SVO",adpositionType:"preposition",morphology:"isolating",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"เมื่อ",role:"event",position:"preposition",required:!0},{form:"ใน",role:"destination",position:"preposition",required:!1},{form:"ไปยัง",role:"destination",position:"preposition",required:!1},{form:"จาก",role:"source",position:"preposition",required:!1},{form:"ด้วย",role:"style",position:"preposition",required:!1},{form:"เป็น",role:"method",position:"preposition",required:!1}]},pl:{code:"pl",name:"Polski",wordOrder:"SVO",adpositionType:"preposition",morphology:"fusional",direction:"ltr",canonicalOrder:["event","action","patient","destination"],markers:[{form:"gdy",role:"event",position:"preposition",required:!0},{form:"przy",role:"event",position:"preposition",required:!1},{form:"do",role:"destination",position:"preposition",required:!1},{form:"w",role:"destination",position:"preposition",required:!1},{form:"na",role:"destination",position:"preposition",required:!1},{form:"z",role:"source",position:"preposition",required:!1},{form:"od",role:"source",position:"preposition",required:!1},{form:"ze",role:"source",position:"preposition",required:!1},{form:"z",role:"style",position:"preposition",required:!1},{form:"ze",role:"style",position:"preposition",required:!1},{form:"jako",role:"method",position:"preposition",required:!1}]}};function Sl(e){return Al[e]}function Tl(e){const t={};for(const[r,n]of Object.entries(e.words))t[n]=r;const r={};if(e.categories)for(const[t,n]of Object.entries(e.categories)){r[t]={};for(const[e,s]of Object.entries(n))r[t][s]=e}const n={source:e.target,target:e.source,words:t};return Object.keys(r).length>0&&(n.categories=r),n}function Ol(e,t,r,n){const s={},i={};for(const r of["commands","modifiers","events","logical","temporal","values","attributes"]){const n=e[r],a=t[r];if(n&&a){i[r]={};for(const[e,t]of Object.entries(n)){const n=a[e];n&&t!==n&&(s[t]=n,i[r][t]=n)}}}return{source:r,target:n,words:s,categories:i}}var Ll=Ol(Ho,el,"ja","zh"),Pl=Tl(Ll),Nl=Ol(Zo,Ho,"ko","ja"),Il=Tl(Nl),Rl={source:"es",target:"pt",words:{en:"em",decir:"dizer",disparar:"disparar",enviar:"enviar",tomar:"pegar",poner:"colocar",establecer:"definir",obtener:"obter",agregar:"adicionar",quitar:"remover",alternar:"alternar",ocultar:"esconder",mostrar:"mostrar",si:"se",menos:"a menos",repetir:"repetir",para:"para",mientras:"enquanto",hasta:"até",continuar:"continuar",romper:"parar",detener:"parar",esperar:"esperar",buscar:"buscar",llamar:"chamar",retornar:"retornar",hacer:"fazer",registrar:"registrar",lanzar:"lançar",atrapar:"capturar",medir:"medir","transición":"transição",incrementar:"incrementar",decrementar:"decrementar",predeterminar:"padrão",ir:"ir",copiar:"copiar",escoger:"escolher",intercambiar:"trocar",transformar:"transformar","añadir":"anexar",salir:"sair",a:"para",de:"de",dentro:"em",con:"com",como:"como",por:"por",clic:"clique",cambio:"mudança",entrada:"entrada","envío":"envio",carga:"carregar",enfoque:"foco",desenfoque:"desfoque",verdadero:"verdadeiro",falso:"falso",y:"e",o:"ou",no:"não",es:"é",segundos:"segundos",milisegundos:"milissegundos",nulo:"nulo",indefinido:"indefinido","vacío":"vazio"},categories:{commands:{en:"em",decir:"dizer",tomar:"pegar",poner:"colocar",establecer:"definir",obtener:"obter",agregar:"adicionar",quitar:"remover",ocultar:"esconder",si:"se",mientras:"enquanto",hasta:"até",romper:"parar",detener:"parar",llamar:"chamar",hacer:"fazer",lanzar:"lançar",atrapar:"capturar",escoger:"escolher",intercambiar:"trocar","añadir":"anexar",salir:"sair"},events:{clic:"clique",cambio:"mudança",carga:"carregar",enfoque:"foco",desenfoque:"desfoque"},logical:{verdadero:"verdadeiro",y:"e",o:"ou",no:"não",es:"é"}}},jl=Tl(Rl),_l=new Map([["ja->zh",Ll],["zh->ja",Pl],["ko->ja",Nl],["ja->ko",Il],["es->pt",Rl],["pt->es",jl]]),ql={en:{commands:{on:"on",tell:"tell",trigger:"trigger",send:"send",take:"take",put:"put",set:"set",get:"get",add:"add",remove:"remove",toggle:"toggle",hide:"hide",show:"show",if:"if",unless:"unless",repeat:"repeat",for:"for",while:"while",until:"until",continue:"continue",break:"break",halt:"halt",wait:"wait",fetch:"fetch",call:"call",return:"return",make:"make",log:"log",throw:"throw",catch:"catch",measure:"measure",transition:"transition",increment:"increment",decrement:"decrement",default:"default",go:"go",pushUrl:"pushUrl",replaceUrl:"replaceUrl",copy:"copy",pick:"pick",beep:"beep",js:"js",async:"async",render:"render",swap:"swap",morph:"morph",settle:"settle",append:"append",exit:"exit",install:"install"},modifiers:{to:"to",from:"from",into:"into",with:"with",at:"at",in:"in",of:"of",as:"as",by:"by",before:"before",after:"after",over:"over",under:"under",between:"between",through:"through",without:"without"},events:{click:"click",dblclick:"dblclick",mousedown:"mousedown",mouseup:"mouseup",mouseenter:"mouseenter",mouseleave:"mouseleave",mouseover:"mouseover",mouseout:"mouseout",mousemove:"mousemove",keydown:"keydown",keyup:"keyup",keypress:"keypress",focus:"focus",blur:"blur",change:"change",input:"input",submit:"submit",reset:"reset",load:"load",unload:"unload",resize:"resize",scroll:"scroll",touchstart:"touchstart",touchend:"touchend",touchmove:"touchmove",touchcancel:"touchcancel"},logical:{when:"when",where:"where",and:"and",or:"or",not:"not",is:"is",exists:"exists",matches:"matches",contains:"contains",includes:"includes",equals:"equals",has:"has",have:"have",then:"then",else:"else",otherwise:"otherwise",end:"end"},temporal:{seconds:"seconds",second:"second",milliseconds:"milliseconds",millisecond:"millisecond",minutes:"minutes",minute:"minute",hours:"hours",hour:"hour",ms:"ms",s:"s",min:"min",h:"h"},values:{true:"true",false:"false",null:"null",undefined:"undefined",it:"it",its:"its",me:"me",my:"my",myself:"myself",you:"you",your:"your",yourself:"yourself",element:"element",target:"target",detail:"detail",event:"event",window:"window",document:"document",body:"body",result:"result",value:"value"},attributes:{class:"class",classes:"classes",style:"style",styles:"styles",attribute:"attribute",attributes:"attributes",property:"property",properties:"properties"},expressions:{first:"first",last:"last",next:"next",previous:"previous",prev:"prev",at:"at",random:"random",closest:"closest",parent:"parent",children:"children",within:"within",no:"no",empty:"empty",some:"some","starts with":"starts with","ends with":"ends with"}},es:Fo,ko:Zo,zh:el,fr:Wo,de:Ko,ja:Ho,ar:Go,tr:rl,id:sl,qu:al,sw:ll,pt:ul,it:ml,vi:pl,pl:hl,ru:fl,uk:yl,hi:gl,bn:vl,th:bl,ms:wl,tl:kl},Ml=["commands","modifiers","events","logical","temporal","values","attributes","expressions"];function $l(e){const t=e.filter(e=>!e.isBlank&&e.originalIndent.length>0);if(0===t.length)return e.map(()=>"");const r=t.map(e=>e.originalIndent.replace(/\t/g," ").length),n=Math.min(...r),s=n>0?n:4;return e.map(e=>{if(e.isBlank)return"";if(0===e.originalIndent.length)return"";const t=e.originalIndent.replace(/\t/g," ");return" ".repeat(Math.round(t.length/s))})}var Vl=new Set(["to","into","from","with","by","as","at","in","on","of","over"]);function Dl(e,t){const r=function(e){const t=new Set(Io),r=ql[e];return r?.commands&&Object.values(r.commands).forEach(e=>{"string"==typeof e&&t.add(e.toLowerCase())}),t}(t),n=e.split(/\s+/);if(0===n.length)return[e];const s=[];let i=[];const a=n[0]?.toLowerCase();let o=!Fl.has(a);for(let e=0;n.length>e;e++){const t=n[e],a=t.toLowerCase();if(r.has(a)&&i.length>0){const e=i[i.length-1].toLowerCase();if(!o){o=!0,i.push(t);continue}if(!Vl.has(e)&&!r.has(e)){s.push(i.join(" ")),i=[t];continue}}i.push(t)}return i.length>0&&s.push(i.join(" ")),s.filter(e=>e.length>0)}function Bl(e,t){const r=Array.from(Vo),n="en"===t?null:ql[t];n?.modifiers?.then&&r.push(n.modifiers.then),n?.logical?.then&&r.push((n?.logical).then);const s=r.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),i=RegExp(`\\s+(${s.join("|")})\\s+`,"gi");return e.split(i).filter(e=>{const t=e.toLowerCase().trim();return t&&!r.some(e=>e.toLowerCase()===t)}).map(e=>e.trim()).filter(e=>e.length>0)}var Fl=function(){const e=new Set;e.add("on");for(const t of Object.values(Al))for(const r of t.markers)if("event"===r.role){const t=r.form.replace(/^-|-$/g,"").toLowerCase();t&&e.add(t),r.alternatives?.forEach(t=>{const r=t.replace(/^-|-$/g,"").toLowerCase();r&&e.add(r)})}return e}();function zl(e){const t={};e.markers.forEach(e=>{const r=e.form.replace(/^-|-$/g,"").toLowerCase();r&&(t[r]=e.role),e.alternatives?.forEach(r=>{const n=r.replace(/^-|-$/g,"").toLowerCase();n&&(t[n]=e.role)})});for(const[e,r]of Object.entries(Po))e in t||(t[e]=r);return t}var Hl={zh:["时","的","地","得"],ja:[],ko:[]},Ul={zh:["当"],ar:["بـ","كـ","و"]};function Wl(e,t,r){if(/^[#.<@]/.test(e))return e;if(/^\d+/.test(e))return e;const n="en"===t?null:ql[t],s=ql[r];if(!s)return e;let i=e;if(n){const t=function(e,t){const r=t.toLowerCase();for(const t of Ml){const n=e[t];for(const[e,s]of Object.entries(n))if(s.toLowerCase()===r)return{category:t,englishKey:e}}}(n,e);t&&(i=t.englishKey)}const a=function(e,t){const r=t.toLowerCase();for(const t of Ml){const n=e[t][r];if(n)return n}}(s,i);return a??e}var Jl={en:{type:"suffix",marker:"'s"},es:{type:"preposition",marker:"de"},pt:{type:"preposition",marker:"de"},fr:{type:"preposition",marker:"de"},de:{type:"preposition",marker:"von"},ja:{type:"suffix",marker:"の"},ko:{type:"suffix",marker:"의"},zh:{type:"suffix",marker:"的"},ar:{type:"preposition",marker:"لـ"},tr:{type:"suffix",marker:"'ın"},id:{type:"preposition",marker:"dari"},qu:{type:"suffix",marker:"-pa"},sw:{type:"preposition",marker:"ya"}};function Kl(e,t,r){const n=e.match(/^(.+)'s$/i);if(!n)return e;const s=n[1],i=Jl[r]||Jl.en,a={me:"my",it:"its",you:"your"},o=s.toLowerCase();if(a[o])return Wl(a[o],"en",r);const l=Wl(s,t,r);switch(i.type){case"suffix":return`${l}${i.marker}`;case"preposition":return`__POSS__${i.marker}__${l}__POSS__`;default:return l+"'s"}}var Yl=/^(my|its|your|me|it|you)(\??\..+)$/i,Gl={me:"my",it:"its",you:"your",my:"my",its:"its",your:"your"};function Xl(e,t,r){const n=e.match(Yl);if(!n)return null;const s=n[1].toLowerCase(),i=n[2],a=Gl[s]||s,o=Wl(a,t,r);if(o.includes(" "))return null;if(o!==a)return o+i;if(s!==a){const e=Wl(s,t,r);if(e!==s&&!e.includes(" "))return e+i}return null}function Zl(e,t,r){if(!e.includes(" ")){if(e.includes("'s"))return Kl(e,t,r);const n=Xl(e,t,r);return null!==n?n:Wl(e,t,r)}const n=e.split(/\s+/),s=[];let i=0;for(;n.length>i;){const e=n[i];if(e.includes("'s")){const a=Kl(e,t,r),o=a.match(/^__POSS__(.+)__(.+)__POSS__$/);if(o&&n.length>i+1){const e=o[1],a=o[2],l=Wl(n[i+1],t,r);s.push(`${l} ${e} ${a}`),i+=2;continue}if(o){s.push(`${o[1]} ${o[2]}`),i++;continue}s.push(a),i++;continue}if(/^[#.<@]/.test(e)||/^\d+/.test(e)){s.push(e),i++;continue}if(/^["'].*["']$/.test(e)){s.push(e),i++;continue}const a=Xl(e,t,r);null===a?(s.push(Wl(e,t,r)),i++):(s.push(a),i++)}return s.join(" ")}var Ql=class{constructor(e="en",t){const r=Sl(e),n=Sl(t);if(!r)throw Error("Unknown source locale: "+e);if(!n)throw Error("Unknown target locale: "+t);this.sourceProfile=r,this.targetProfile=n}transform(e){const t=function(e){if("en"===e)return"then";const t=ql[e];return t&&(t.modifiers?.then||t.logical?.then)||"then"}(this.targetProfile.code);if(e.includes("\n")){const{parts:r,lineMetadata:n,partToLineIndex:s}=function(e,t){const r=e.split("\n"),n=[],s=[],i=[];for(let e=0;r.length>e;e++){const a=r[e],o=a.match(/^(\s*)/),l=o?o[1]:"",c=a.trim();if(n.push({content:c,originalIndent:l,isBlank:0===c.length}),c.length>0){const r=Bl(c,t);for(const n of r){const r=Dl(n,t);for(const t of r)s.push(t),i.push(e)}}}return{parts:s,lineMetadata:n,partToLineIndex:i}}(e,this.sourceProfile.code);return function(e,t,r,n){if(1>=t.filter(e=>!e.isBlank).length&&1>=e.length){const r=$l(t),n=[];for(let s=0;t.length>s;s++)t[s].isBlank?n.push(""):e.length>0&&n.push(r[s]+e[0]);return n.join("\n")}const s=$l(t),i=new Map;for(let t=0;e.length>t;t++){const n=r[t];i.has(n)||i.set(n,[]),i.get(n).push(e[t])}const a=[];for(let e=0;t.length>e;e++){const r=s[e];if(t[e].isBlank)a.push("");else{const t=i.get(e)||[];if(t.length>0){const e=t.join(` ${n} `);a.push(r+e)}}}return a.join("\n")}(r.map(e=>this.transformSingle(e)),n,s,t)}const r=function(e,t){const r=e.split(/\n/).map(e=>e.trim()).filter(e=>e.length>0),n=[];for(const e of r){const r=Bl(e,t);for(const e of r){const r=Dl(e,t);n.push(...r)}}return n}(e,this.sourceProfile.code);return r.length>1?r.map(e=>this.transformSingle(e)).join(` ${t} `):this.transformSingle(e)}transformSingle(e){const t=function(e,t="en"){const r=Sl(t);if(!r)return null;const n=function(e,t){const r=[];let n="",s=!1,i=0;for(let t=0;e.length>t;t++){const a=e[t];"<"===a?(s=!0,i++):">"===a&&s&&(i--,0===i&&(s=!1)),/\s/.test(a)&&!s?n&&(r.push(n),n=""):n+=a}return n&&r.push(n),function(e,t){const r=Hl[t]||[],n=Ul[t]||[];if(0===r.length&&0===n.length)return e;const s=[];for(const t of e){if(/^[#.<@]/.test(t)||/^\d+/.test(t)){s.push(t);continue}let e=t,i="",a="";for(const t of n)if(e.startsWith(t)&&e.length>t.length){i=t,e=e.slice(t.length);break}for(const t of r)if(e.endsWith(t)&&e.length>t.length){a=t,e=e.slice(0,-t.length);break}i&&s.push(i),e&&s.push(e),a&&s.push(a)}return s}(r,t.code)}(e,r),s=function(e,t){if(0===e.length)return"unknown";const r=e[0].toLowerCase(),n=t.markers.find(e=>"event"===e.role&&"preposition"===e.position);return n&&r===n.form.toLowerCase()||Fl.has(r)?"event-handler":$o.has(r)?"conditional":"command"}(n,r);switch(s){case"event-handler":return function(e,t){const r=new Map;let n=Fl.has(e[0]?.toLowerCase())?1:0;if(e[n]&&(r.set("event",{role:"event",value:e[n]}),n++),e[n]&&"from"===e[n].toLowerCase()&&e[n+1]){n++;const t=[];for(;e[n]&&!Io.has(e[n].toLowerCase());)t.push(e[n]),n++;if(t.length>0){const e=t.join(" ");r.set("source",{role:"source",value:e,isSelector:/^[#.<@]/.test(e)})}}if(e[n]&&(r.set("action",{role:"action",value:e[n]}),n++),e[n]){const s=zl(t);let i="patient",a=[];for(let t=n;e.length>t;t++){const n=e[t],o=s[n.toLowerCase()];if(o){if(a.length>0){const e=a.join(" ");r.set(i,{role:i,value:e,isSelector:/^[#.<@]/.test(e)})}i=o,a=[]}else a.push(n)}if(a.length>0){const e=a.join(" ");r.set(i,{role:i,value:e,isSelector:/^[#.<@]/.test(e)})}}return{type:"event-handler",roles:r,original:e.join(" ")}}(n,r);case"command":return function(e,t){const r=new Map;if(0===e.length)return{type:"command",roles:r,original:""};r.set("action",{role:"action",value:e[0]});const n=zl(t);let s="patient",i=[];for(let t=1;e.length>t;t++){const a=e[t],o=n[a.toLowerCase()];if(o){if(i.length>0){const e=i.join(" ");r.set(s,{role:s,value:e,isSelector:/^[#.<@]/.test(e)})}s=o,i=[]}else i.push(a)}if(i.length>0){const e=i.join(" ");r.set(s,{role:s,value:e,isSelector:/^[#.<@]/.test(e)})}return{type:"command",roles:r,original:e.join(" ")}}(n,r);case"conditional":return function(e){const t=new Map;t.set("action",{role:"action",value:e[0]});const r=e.findIndex(e=>Vo.has(e.toLowerCase()));if(r>1){const n=e.slice(1,r).join(" ");t.set("condition",{role:"condition",value:n})}return{type:"conditional",roles:t,original:e.join(" ")}}(n);default:return null}}(e,this.sourceProfile.code);if(!t)return e;!function(e,t,r){for(const[n,s]of e.roles)s.translated=s.value.includes("'s")?Zl(s.value,t,r):s.isSelector||s.isLiteral?s.value:Zl(s.value,t,r)}(t,this.sourceProfile.code,this.targetProfile.code);const r=this.findRule(t);if(r?.transform.custom)return r.transform.custom(t,this.targetProfile);const n=function(e,t){const r=[],n=new Set;for(const s of t){const t=e.get(s);t&&(r.push(t),n.add(s))}for(const[t,s]of e)n.has(t)||r.push(s);return r}(t.roles,r?.transform.roleOrder||this.targetProfile.canonicalOrder);return Cl(r?.transform.insertMarkers??1?function(e,t,r){const n=[];for(const s of e){const e=t.find(e=>e.role===s.role);e?"preposition"===r?(e.form&&n.push(e.form),n.push(s.translated||s.value)):"postposition"===r?(n.push(s.translated||s.value),e.form&&n.push(e.form)):n.push(s.translated||s.value):n.push(s.translated||s.value)}return n}(n,this.targetProfile.markers,this.targetProfile.adpositionType):n.map(e=>e.translated||e.value))}findRule(e){if(this.targetProfile.rules)return this.targetProfile.rules.filter(t=>this.matchesRule(e,t)).sort((e,t)=>t.priority-e.priority)[0]}matchesRule(e,t){const{match:r}=t;for(const t of r.requiredRoles)if(!e.roles.has(t))return!1;if(r.commands&&r.commands.length>0){const t=e.roles.get("action");if(!t)return!1;const n=t.value.toLowerCase();if(!r.commands.some(e=>e.toLowerCase()===n))return!1}return!(r.predicate&&!r.predicate(e))}};function ec(e,t){return new Ql("en",t).transform(e)}function tc(e,t){return new Ql(t,"en").transform(e)}xl.register("en",Bo()),xl.register("es",zo),xl.register("ja",Uo),xl.register("fr",Jo),xl.register("de",Yo),xl.register("ar",Xo),xl.register("ko",Qo),xl.register("zh",tl),xl.register("tr",nl),xl.register("id",il),xl.register("pt",dl),xl.register("qu",ol),xl.register("sw",cl);let rc="en";const nc=new class extends er{constructor(e){super();for(const t of e)this.registerCategory(t)}}([Ur,$n,Zs,js,es,Es]),sc=function(e,t={}){const r=new ni;for(const t of e)r.register(t);return new Oo({...t,registry:r})}([Zi(),ta(),ka(),Ea(),Ri(),_i(),Oa(),Ja(),Ka(),Ga(),Qa(),to(),ro(),no(),io(),ko(),_a(),Lo(),Ma(),$a(),ho(),Ia(),ja(),Fa(),za(),lo(),co(),uo(),Ao(),Va(),go(),ao(),bo(),wo(),Eo(),mo(),po(),Ha(),Co(),oo(),To(),yo()],{expressionEvaluator:nc});function ic(e){const t=function(){if("en"!==rc)return xl.get(rc)}();return function(e,t){const r=function(e){const t={input:"",position:0,line:1,column:1,tokens:[]};t.input=e;const r=e.length;for(;r>t.position&&(U(t),r>t.position);){const r=e[t.position];if("-"!==r||"-"!==z(t,1))if('"'!==r){if("'"===r||"'"===r){const e=z(t,1),r=t.tokens[t.tokens.length-1];if("s"!==e||!r||r.kind!==M.IDENTIFIER&&r.kind!==M.SELECTOR&&"]"!==r.value&&")"!==r.value&&"}"!==r.value)Y(t);else{const e=t.position;H(t),H(t),W(t,$.OPERATOR,"'s",e)}continue}if("`"!==r)if("<"!==r)if("#"!==r){if("."===r){if("."===z(t,1)){const e=t.position;H(t),H(t),W(t,$.OPERATOR,"..",e);continue}const e=t.tokens[t.tokens.length-1],r=new Set(["from","to","into","on","in","at","first","last","next","previous","closest","random"]),n=e&&e.kind===M.IDENTIFIER&&k.has(e.value.toLowerCase()),s=e&&e.kind===M.IDENTIFIER&&r.has(e.value.toLowerCase());if((!e||e.kind===M.OPERATOR&&")"!==e.value&&"]"!==e.value||n||s||"("===e.value||"["===e.value||"{"===e.value||","===e.value||";"===e.value)&&se(z(t))){X(t);continue}}if("@"!==r)if("{"!==r)if("}"!==r){if("["===r){const e=t.tokens[t.tokens.length-1],r=e&&(e.kind===$.EVENT||e.kind===$.IDENTIFIER&&_.has(e.value))&&t.tokens.length>=2&&"on"===t.tokens[t.tokens.length-2]?.value;(!e||e.kind!==$.IDENTIFIER&&e.kind!==$.CONTEXT_VAR&&")"!==e.value&&"]"!==e.value||r)&&r?(W(t,$.SYMBOL,"["),H(t)):(W(t,$.OPERATOR,"["),H(t));continue}if("]"!==r){if("$"===r){const e=z(t,1);if(e>="a"&&"z">=e||e>="A"&&"Z">=e||"_"===e){ne(t);continue}}oe(r)?ee(t):"0">r||r>"9"?("a">r||r>"z")&&("A">r||r>"Z")&&"_"!==r?(W(t,$.UNKNOWN,r),H(t)):re(t):te(t)}else W(t,$.OPERATOR,"]"),H(t)}else W(t,$.OPERATOR,"}"),H(t);else W(t,$.OPERATOR,"{"),H(t);else Q(t)}else X(t);else ae(t)?Z(t):ee(t);else G(t)}else Y(t);else K(t)}return t.tokens}(e);return new Et(r,t,e).parse()}(e,t?{keywords:t}:void 0)}const ac={parse:e=>ic(e),execute:async(e,t)=>{const r=Nt(t),n=ic(e);if(!n.success||!n.node)throw Error(n.error?.message||"Parse failed");return await sc.execute(n.node,r)}},oc=new class{constructor(e){this.observer=null,this.initialized=!1,this.runtime=e}init(){"undefined"!=typeof document&&(this.initialized||(this.initialized=!0,this.scanDocument(),this.observer=new MutationObserver(e=>{for(const t of e)"childList"===t.type?t.addedNodes.forEach(e=>{e.nodeType===Node.ELEMENT_NODE&&(this.processElement(e),this.scanElement(e))}):"attributes"===t.type&&"_"===t.attributeName&&this.processElement(t.target)}),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["_"]})))}destroy(){this.observer&&(this.observer.disconnect(),this.observer=null),this.initialized=!1}reset(){this.destroy()}scanAndProcessAll(){this.scanDocument()}scanDocument(){document.body&&this.scanElement(document.body)}scanElement(e){e.hasAttribute("_")&&this.processElement(e),e.querySelectorAll("[_]").forEach(e=>this.processElement(e))}processElement(e){const t=e.getAttribute("_");if(!t)return;const r=Pt(e);this.runtime.execute(t,r).catch(r=>{console.error('[HyperFixi] Error executing _="" attribute:',r),console.error("Element:",e),console.error("Code:",t)})}}(ac),lc={getLocale:()=>rc,setLocale(e){if(xl.has(e)){if(rc=e,xl.setDefault(e),"undefined"!=typeof document){document.documentElement.setAttribute("lang",e);const t=Sl(e);"rtl"===t?.direction?document.documentElement.setAttribute("dir","rtl"):document.documentElement.setAttribute("dir","ltr")}}else console.warn(`Locale '${e}' not registered. Available: ${xl.getAvailable().join(", ")}`)},getAvailableLocales:()=>xl.getAvailable(),detectAndSetLocale(){if("undefined"==typeof navigator)return"en";const e=navigator.languages||[navigator.language];for(const t of e){const e=t.split("-")[0].toLowerCase();if(xl.has(e))return this.setLocale(e),e}return"en"},registerLocale(e,t){xl.register(e,t)},toLocale:(e,t)=>ec(e,t||rc),toEnglish:(e,t)=>tc(e,t||rc),translate:function(e,t,r){return t===r?e:"en"===t?ec(e,r):"en"===r?tc(e,t):_l.has(`${t}->${r}`)?function(e,t,r){const n=_l.get(`${t}->${r}`);if(!n)return ec(tc(e,t),r);return e.split(/\s+/).map(e=>{if(e.startsWith("#")||e.startsWith(".")||e.startsWith("@"))return e;if(e.startsWith('"')||e.startsWith("'"))return e;const t=n.words[e];if(t)return t;const r=e.match(/^(.+?)(-.+)$/);if(r){const[,e,t]=r;return(n.words[e]||e)+t}return e}).join(" ")}(e,t,r):ec(tc(e,t),r)},createTransformer:(e,t)=>new Ql(e,t),getProfile:Sl,getSupportedGrammarLocales:function(){return Object.keys(Al)},profiles:Al,dictionaries:{en:{},es:Fo,ja:Ho,fr:Wo,de:Ko,ar:Go,ko:Zo,zh:el,tr:rl,id:sl,pt:ul,qu:al,sw:ll},createKeywordProvider:Do},cc={runtime:ac,parse:e=>ic(e),compile:e=>{const t=performance.now();try{const r=ic(e);return{success:r.success,ast:r.node,errors:r.error?[r.error]:[],tokens:r.tokens||[],compilationTime:performance.now()-t}}catch(e){return{success:!1,ast:void 0,errors:[{message:e instanceof Error?e.message:e+"",line:1,column:1}],tokens:[],compilationTime:performance.now()-t}}},execute:async(e,t)=>{const r=Nt(t);if("string"==typeof e){const t=ic(e);if(!t.success||!t.node)throw Error(t.error?.message||"Parse failed");return await sc.execute(t.node,r)}if(e&&"object"==typeof e)return await sc.execute(e,r);throw Error("execute() requires a code string or compiled AST")},run:async(e,t)=>{const r=Nt(t),n=ic(e);if(!n.success||!n.node)throw Error(n.error?.message||"Parse failed");return await sc.execute(n.node,r)},evaluate:async(e,t)=>cc.run(e,t),processNode:e=>{e===document?oc.scanAndProcessAll():e instanceof HTMLElement&&oc.processElement(e)},process:e=>cc.processNode(e),createContext:Pt,attributeProcessor:oc,version:"1.1.0-classic-i18n",i18n:lc,commands:["add","remove","toggle","put","hide","show","make","if","unless","repeat","break","continue","halt","return","exit","throw","set","get","increment","decrement","default","wait","fetch","trigger","send","transition","measure","settle","take","log","tell","call","copy","pick","beep","js","async","go","install","append","render","pseudo-command"],locales:["en","es","ja","fr","de","ar","ko","zh","tr","id","pt","qu","sw"],eval:async(e,t)=>ac.execute(e,t),init:e=>{!1!==e?.autoDetectLocale&&lc.detectAndSetLocale(),oc.init()}};return"undefined"!=typeof window&&(window.hyperfixi=cc,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>{cc.init()}):cc.init()),cc}();
2
2
  //# sourceMappingURL=hyperfixi-classic-i18n.js.map