@hyperscript-tools/multilingual 2.3.1 → 2.4.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.
- package/LICENSE +20 -0
- package/README.md +118 -0
- package/dist/hyperscript-i18n-ar.global.js +4 -0
- package/dist/hyperscript-i18n-bn.global.js +4 -0
- package/dist/hyperscript-i18n-de.global.js +4 -0
- package/dist/hyperscript-i18n-east-asian.global.js +4 -0
- package/dist/hyperscript-i18n-en.global.js +6 -0
- package/dist/hyperscript-i18n-es.global.js +4 -0
- package/dist/hyperscript-i18n-fr.global.js +4 -0
- package/dist/hyperscript-i18n-he.global.js +4 -0
- package/dist/hyperscript-i18n-hi.global.js +4 -0
- package/dist/hyperscript-i18n-id.global.js +4 -0
- package/dist/hyperscript-i18n-it.global.js +4 -0
- package/dist/hyperscript-i18n-ja.global.js +4 -0
- package/dist/hyperscript-i18n-ko.global.js +4 -0
- package/dist/hyperscript-i18n-lite.global.js +1 -0
- package/dist/hyperscript-i18n-ms.global.js +4 -0
- package/dist/hyperscript-i18n-pl.global.js +4 -0
- package/dist/hyperscript-i18n-pt.global.js +4 -0
- package/dist/hyperscript-i18n-qu.global.js +4 -0
- package/dist/hyperscript-i18n-ru.global.js +4 -0
- package/dist/hyperscript-i18n-slavic.global.js +4 -0
- package/dist/hyperscript-i18n-south-asian.global.js +4 -0
- package/dist/hyperscript-i18n-southeast-asian.global.js +4 -0
- package/dist/hyperscript-i18n-sw.global.js +4 -0
- package/dist/hyperscript-i18n-th.global.js +4 -0
- package/dist/hyperscript-i18n-tl.global.js +4 -0
- package/dist/hyperscript-i18n-tr.global.js +4 -0
- package/dist/hyperscript-i18n-uk.global.js +4 -0
- package/dist/hyperscript-i18n-vi.global.js +4 -0
- package/dist/hyperscript-i18n-western.global.js +4 -0
- package/dist/hyperscript-i18n-zh.global.js +4 -0
- package/dist/hyperscript-i18n.global.js +63 -0
- package/package.json +101 -4
- package/scripts/copy-bundles.mjs +25 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 LokaScript Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
6
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
7
|
+
the Software without restriction, including without limitation the rights to
|
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
|
10
|
+
subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
17
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
18
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
19
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
20
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# @hyperscript-tools/multilingual
|
|
2
|
+
|
|
3
|
+
Write original [\_hyperscript](https://hyperscript.org) in **24 languages** —
|
|
4
|
+
Spanish, Japanese, Korean, Arabic, Chinese, Turkish, French, Portuguese,
|
|
5
|
+
German, Hindi, Indonesian, Italian, Polish, Russian, Swahili, Thai, Tagalog,
|
|
6
|
+
Ukrainian, Vietnamese, Hebrew, Bengali, Malay, Quechua, English.
|
|
7
|
+
|
|
8
|
+
The plugin intercepts `_="..."` attributes at runtime, translates non-English
|
|
9
|
+
input to English via semantic analysis, and hands the result to the standard
|
|
10
|
+
\_hyperscript parser. **No fork, no patches, no AST changes.**
|
|
11
|
+
|
|
12
|
+
## Quick start (CDN, single language)
|
|
13
|
+
|
|
14
|
+
```html
|
|
15
|
+
<script src="https://unpkg.com/hyperscript.org"></script>
|
|
16
|
+
<script src="https://unpkg.com/@hyperscript-tools/multilingual/dist/hyperscript-i18n-es.global.js"></script>
|
|
17
|
+
|
|
18
|
+
<button _="on click alternar .active on me">Alternar</button>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
That's it. The script auto-registers as a \_hyperscript plugin on load.
|
|
22
|
+
|
|
23
|
+
## Quick start (CDN, all languages)
|
|
24
|
+
|
|
25
|
+
```html
|
|
26
|
+
<script src="https://unpkg.com/hyperscript.org"></script>
|
|
27
|
+
<script src="https://unpkg.com/@hyperscript-tools/multilingual/dist/hyperscript-i18n.global.js"></script>
|
|
28
|
+
|
|
29
|
+
<button _="on click alternar .active on me" data-hyperscript-lang="es">ES</button>
|
|
30
|
+
<button _="on click 切り替え .active on me" data-hyperscript-lang="ja">JA</button>
|
|
31
|
+
<button _="on click 토글 .active on me" data-hyperscript-lang="ko">KO</button>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
`data-hyperscript-lang` cascades up the DOM, so you can set it once on
|
|
35
|
+
`<html>` or `<body>` and have every descendant inherit.
|
|
36
|
+
|
|
37
|
+
## Bundle size table
|
|
38
|
+
|
|
39
|
+
| Bundle | URL suffix | Size | Languages |
|
|
40
|
+
| --------------------------- | ------------------------------------------------- | ------- | ------------------ |
|
|
41
|
+
| All 24 | `dist/hyperscript-i18n.global.js` | ~720 KB | All |
|
|
42
|
+
| Western | `dist/hyperscript-i18n-western.global.js` | ~190 KB | en, es, pt, fr, de |
|
|
43
|
+
| East Asian | `dist/hyperscript-i18n-east-asian.global.js` | ~186 KB | ja, ko, zh |
|
|
44
|
+
| South Asian | `dist/hyperscript-i18n-south-asian.global.js` | ~160 KB | hi, bn |
|
|
45
|
+
| Southeast Asian | `dist/hyperscript-i18n-southeast-asian.global.js` | ~183 KB | id, ms, th, tl, vi |
|
|
46
|
+
| Slavic | `dist/hyperscript-i18n-slavic.global.js` | ~195 KB | pl, ru, uk |
|
|
47
|
+
| Single language (e.g. `es`) | `dist/hyperscript-i18n-es.global.js` | ~140 KB | es |
|
|
48
|
+
| Lite (BYO semantic) | `dist/hyperscript-i18n-lite.global.js` | ~2 KB | (external bundle) |
|
|
49
|
+
|
|
50
|
+
## npm / bundler usage
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
npm install @hyperscript-tools/multilingual
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
```ts
|
|
57
|
+
import { hyperscriptI18n, preprocess } from '@hyperscript-tools/multilingual';
|
|
58
|
+
|
|
59
|
+
// Plugin registration (default language: 'es')
|
|
60
|
+
_hyperscript.use(hyperscriptI18n({ defaultLanguage: 'es' }));
|
|
61
|
+
|
|
62
|
+
// Standalone preprocessing
|
|
63
|
+
const english = preprocess('alternar .active', 'es'); // → 'toggle .active'
|
|
64
|
+
_hyperscript(english);
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Subpath imports for browser bundles work too:
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
import '@hyperscript-tools/multilingual/browser/es';
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Per-element language
|
|
74
|
+
|
|
75
|
+
Each `_=` attribute can declare its own language:
|
|
76
|
+
|
|
77
|
+
```html
|
|
78
|
+
<body data-hyperscript-lang="ja">
|
|
79
|
+
<!-- Inherits ja from <body> -->
|
|
80
|
+
<button _="on click 切り替え .active on me">JA default</button>
|
|
81
|
+
|
|
82
|
+
<!-- Override per element -->
|
|
83
|
+
<button _="on click alternar .active on me" data-hyperscript-lang="es">ES override</button>
|
|
84
|
+
</body>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Resolution order: element → ancestor `data-hyperscript-lang` → `<html lang>` →
|
|
88
|
+
plugin's `defaultLanguage`.
|
|
89
|
+
|
|
90
|
+
## How it works
|
|
91
|
+
|
|
92
|
+
1. The plugin overrides _hyperscript's `runtime.getScript()` (the function
|
|
93
|
+
that reads `_=` attributes and returns raw strings).
|
|
94
|
+
2. The override calls a semantic parser to analyze the input. If parse
|
|
95
|
+
confidence clears the per-language threshold, the parser produces a
|
|
96
|
+
language-neutral semantic node.
|
|
97
|
+
3. A deterministic English renderer turns the semantic node back into
|
|
98
|
+
English \_hyperscript text.
|
|
99
|
+
4. \_hyperscript's standard lexer + parser see English and execute normally.
|
|
100
|
+
|
|
101
|
+
If parse confidence is below the threshold, the original text falls through
|
|
102
|
+
unchanged — the plugin never substitutes a low-confidence guess.
|
|
103
|
+
|
|
104
|
+
## Known limitations
|
|
105
|
+
|
|
106
|
+
- **Expressions** (standalone boolean expressions outside a command body)
|
|
107
|
+
don't translate; only command bodies do.
|
|
108
|
+
- **Feature keywords** `def` and `worker` must stay English. `behavior` is
|
|
109
|
+
supported.
|
|
110
|
+
- **SOV/VSO accuracy**: Japanese, Korean, Turkish, Arabic produce lower
|
|
111
|
+
confidence than SVO languages because their word order requires more
|
|
112
|
+
reordering. Per-language thresholds are tuned to compensate.
|
|
113
|
+
- **Programmatic `_hyperscript(string)`** calls bypass `getScript()` — call
|
|
114
|
+
`preprocess(text, lang)` first if you need translation in that path.
|
|
115
|
+
|
|
116
|
+
## License
|
|
117
|
+
|
|
118
|
+
MIT.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var HyperscriptI18n=(function(exports){'use strict';function S(i,e){return e?{type:"literal",value:i,dataType:e}:{type:"literal",value:i}}function ue(i,e){return e?{type:"selector",value:i,selectorKind:e}:{type:"selector",value:i}}function Y(i){return {type:"reference",value:i}}function se(i,e){return {type:"property-path",object:i,property:e}}var Te=new Set(["me","you","it","result","event","target","body"]);function ge(i,e=Te){return e.has(i)}var Br=class{constructor(i){this.namespace=i,this.enabled=this.checkEnabled();}checkEnabled(){if(typeof process<"u"&&process.env){let i=process.env.DEBUG||"";return i==="*"||i.includes("framework:*")||i.includes(`framework:${this.namespace}`)}return false}log(i,e,...r){if(!this.enabled)return;let t=`[framework:${this.namespace}]`,a=new Date().toISOString();switch(i){case "debug":console.debug(`${a} ${t} DEBUG:`,e,...r);break;case "info":console.info(`${a} ${t} INFO:`,e,...r);break;case "warn":console.warn(`${a} ${t} WARN:`,e,...r);break;case "error":console.error(`${a} ${t} ERROR:`,e,...r);break}}debug(i,...e){this.log("debug",i,...e);}info(i,...e){this.log("info",i,...e);}warn(i,...e){this.log("warn",i,...e);}error(i,...e){this.log("error",i,...e);}isEnabled(){return this.enabled}enable(){this.enabled=true;}disable(){this.enabled=false;}};function Tr(i){return new Br(i)}function V(i,e){return !e||e.length===0||e.includes(i)||e.includes("expression")?true:i==="property-path"?e.some(r=>["selector","reference","expression"].includes(r)):false}function Fr(i,e){return i?.possessive?.keywords?.[e]}var J=class q{constructor(){this.logger=Tr("pattern-matcher"),this.stemMatchCount=0,this.totalKeywordMatches=0;}safeToLowerCase(e){return typeof e=="string"?e.toLowerCase():e==null?"":String(e).toLowerCase()}matchPattern(e,r,t){let a=e.mark(),n=new Map;if(this.logger.debug("========================================"),this.logger.debug("matchPattern ENTRY"),this.logger.debug("Pattern ID:",r.id),this.logger.debug("Pattern command:",r.command),this.logger.debug("Pattern language:",r.language),this.logger.debug("Pattern template:",JSON.stringify(r.template,null,2)),this.logger.isEnabled()){let s=[];for(let c=0;c<10;c++){let l=e.peek(c);if(l)s.push({type:l.type,value:l.value,kind:l.kind});else break}this.logger.debug("Input tokens (first 10):",s),this.logger.debug("Profile code:",t?.code);}this.currentProfile=t,this.stemMatchCount=0,this.totalKeywordMatches=0,this.logger.debug("--- Calling matchTokenSequence ---"),this.logger.debug("Pattern tokens to match:",JSON.stringify(r.template.tokens,null,2));let o=this.matchTokenSequence(e,r.template.tokens,n);if(this.logger.debug("matchTokenSequence returned:",o),this.logger.debug("Captured roles:",Array.from(n.entries()).map(([s,c])=>[s,JSON.stringify(c)])),!o)return this.logger.debug(">>> MATCH FAILED - resetting token position"),e.reset(a),null;let u=this.calculateConfidence(r,n);return this.applyExtractionRules(r,n),{pattern:r,captured:n,consumedTokens:e.position()-a.position,confidence:u}}matchBest(e,r,t){let a=[];for(let o of r){let u=e.mark(),s=this.matchPattern(e,o,t);s&&a.push(s),e.reset(u);}if(a.length===0)return null;a.sort((o,u)=>{let s=u.pattern.priority-o.pattern.priority;if(s!==0)return s;let c=u.confidence-o.confidence;return Math.abs(c)>.001?c:u.consumedTokens-o.consumedTokens});let n=a[0];return this.matchPattern(e,n.pattern),n}matchTokenSequence(e,r,t,a){let n=r[0],o=n?.type==="literal"&&(n.value==="and"||n.value==="then"||n.alternatives?.includes("and")||n.alternatives?.includes("then"));if(this.currentProfile?.code==="ar"&&!o)for(;e.peek()?.kind==="conjunction";)e.advance();let u=null,s=null;for(let c=0;c<r.length;c++){let l=r[c];this.logger.debug(" >> Matching pattern token:",JSON.stringify(l,null,2));let m=e.peek();if(this.logger.debug(" >> Current input token:",m?JSON.stringify({type:m.type,value:m.value,kind:m.kind}):"EOF"),l.type==="role"&&l.greedy){let h=this.collectStopMarkers(r,c+1);if(a)for(let z of a)h.add(z);let g=[];for(;!e.isAtEnd();){let z=e.peek();if(!z||this.isStopMarker(z,h))break;g.push(z.value),e.advance();}if(g.length>0){t.set(l.role,{type:"expression",raw:g.join(" ")}),u=null,s=null;continue}else {if(l.optional)continue;return false}}if(l.type==="group"){let h=this.collectStopMarkers(r,c+1);if(a)for(let z of a)h.add(z);if(this.matchGroupToken(e,l,t,h)){u=null,s=null;continue}if(this.isOptional(l))continue;return false}let p=l.type==="role"&&l.optional===true,d=p?e.mark():null;if(l.type==="role"&&!p){let h=c+1<r.length?r[c+1]:null;if(h?.type==="literal"){let g=e.peek();if(g&&this.getMatchType(g,h.value)!=="none"){if(this.logger.debug(" >> MARKER-STEAL GUARD: current token matches next literal, skipping role"),this.logger.debug(" >> Token match FAILED"),this.isOptional(l))continue;if(u&&s){this.logger.debug(" >> BACKTRACKING: undoing optional role",s),e.reset(u),t.delete(s),u=null,s=null;let z=this.matchPatternToken(e,l,t);if(this.logger.debug(" >> Backtrack retry result:",z),z)continue}return false}}}let v=this.matchPatternToken(e,l,t);if(this.logger.debug(" >> Match result:",v),v){p?(u=d,s=l.role):(u=null,s=null);continue}if(this.logger.debug(" >> Token match FAILED"),!this.isOptional(l)){if(u&&s){this.logger.debug(" >> BACKTRACKING: undoing optional role",s),e.reset(u),t.delete(s),u=null,s=null;let h=this.matchPatternToken(e,l,t);if(this.logger.debug(" >> Backtrack retry result:",h),h)continue}return false}}return true}matchPatternToken(e,r,t){switch(r.type){case "literal":return this.matchLiteralToken(e,r);case "role":return this.matchRoleToken(e,r,t);case "group":return this.matchGroupToken(e,r,t);default:return false}}matchLiteralToken(e,r){let t=e.peek();if(this.logger.debug(" >>> matchLiteralToken: expecting",r.value),this.logger.debug(" >>> matchLiteralToken: got token",t?JSON.stringify({type:t.type,value:t.value,kind:t.kind}):"null"),!t)return this.logger.debug(" >>> matchLiteralToken: FAIL - no token"),false;let a=this.getMatchType(t,r.value);if(this.logger.debug(" >>> matchType for",t.value,"vs",r.value,":",a),a!=="none")return this.totalKeywordMatches++,a==="stem"&&this.stemMatchCount++,e.advance(),true;if(r.alternatives)for(let n of r.alternatives){let o=this.getMatchType(t,n);if(o!=="none")return this.totalKeywordMatches++,o==="stem"&&this.stemMatchCount++,e.advance(),true}return false}matchRoleToken(e,r,t){this.logger.debug(" >>> matchRoleToken ENTRY: capturing role",r.role),this.logger.debug(" >>> matchRoleToken: expected types",r.expectedTypes),this.logger.debug(" >>> matchRoleToken: optional?",r.optional),this.skipNoiseWords(e);let a=e.peek();if(this.logger.debug(" >>> After skipNoiseWords, current token:",a?JSON.stringify({value:a.value,kind:a.kind}):"null"),!a)return r.optional||false;let n=this.tryMatchPossessiveExpression(e);if(n)return r.expectedTypes&&r.expectedTypes.length>0&&!V(n.type,r.expectedTypes)?r.optional||false:(t.set(r.role,n),true);let o=this.tryMatchMethodCallExpression(e);if(o)return r.expectedTypes&&r.expectedTypes.length>0&&!V(o.type,r.expectedTypes)?r.optional||false:(t.set(r.role,o),true);let u=this.tryMatchPossessiveSelectorExpression(e);if(u)return r.expectedTypes&&r.expectedTypes.length>0&&!V(u.type,r.expectedTypes)?r.optional||false:(t.set(r.role,u),true);let s=this.tryMatchPropertyAccessExpression(e);if(s)return r.expectedTypes&&r.expectedTypes.length>0&&!V(s.type,r.expectedTypes)?r.optional||false:(t.set(r.role,s),true);let c=this.tryMatchSelectorPropertyExpression(e);if(c)return r.expectedTypes&&r.expectedTypes.length>0&&!V(c.type,r.expectedTypes)?r.optional||false:(t.set(r.role,c),true);this.logger.debug(" >>> Trying tokenToSemanticValue for token:",a?JSON.stringify({value:a.value,kind:a.kind}):"null");let l=this.tokenToSemanticValue(a);return this.logger.debug(" >>> tokenToSemanticValue returned:",l?JSON.stringify(l):"null"),l?(this.logger.debug(" >>> Validating type:",l.type,"against expected:",r.expectedTypes),r.expectedTypes&&r.expectedTypes.length>0&&!V(l.type,r.expectedTypes)?(this.logger.debug(" >>> TYPE MISMATCH - returning",r.optional||false),r.optional||false):(this.logger.debug(" >>> Type validation PASSED"),t.set(r.role,l),e.advance(),true)):r.optional||false}tryMatchPossessiveExpression(e){let r=e.peek();if(!r||!this.currentProfile)return null;let t=r.normalized||r.value,a=this.safeToLowerCase(t),n=Fr(this.currentProfile,a);if(!n)return null;let o=e.mark();e.advance();let u=e.peek();if(!u)return e.reset(o),null;if(u.kind==="identifier"||u.kind==="keyword"&&!this.isStructuralKeyword(u.value)||u.kind==="selector"&&u.value.startsWith("*")||u.kind==="selector"&&u.value.startsWith("@")||u.kind==="selector"&&u.value.startsWith(".")&&/^\.[a-zA-Z_]\w*/.test(u.value)){e.advance();let s=u.value;u.kind==="selector"&&s.startsWith(".")&&/^\.[a-zA-Z_]\w*/.test(s)&&(s=s.substring(1));let c=s;for(;e.peek()?.kind==="selector"&&e.peek().value.startsWith(".")&&/^\.[a-zA-Z_]\w*/.test(e.peek().value);)c+=e.peek().value,e.advance();let l=e.peek();return l?.kind==="literal"&&l.value.startsWith("(")&&(c+=l.value,e.advance()),se(Y(n),c)}return e.reset(o),null}isStructuralKeyword(e){return new Set(["into","in","to","from","at","by","with","without","before","after","of","as","on","then","end","else","if","repeat","while","for","toggle","add","remove","put","set","show","hide","increment","decrement","send","trigger","call"]).has(e.toLowerCase())}tryMatchMethodCallExpression(e){let r=e.peek();if(!r||r.kind!=="selector")return null;let t=e.mark();e.advance();let a=e.peek();if(!a||a.kind!=="operator"||a.value!==".")return e.reset(t),null;e.advance();let n=e.peek();if(!n||n.kind!=="identifier")return e.reset(t),null;e.advance();let o=e.peek();if(!o||o.kind!=="punctuation"||o.value!=="(")return e.reset(t),null;e.advance();let u=[];for(;!e.isAtEnd()&&u.length<q.MAX_METHOD_ARGS;){let c=e.peek();if(!c)break;if(c.kind==="punctuation"&&c.value===")"){e.advance();break}if(c.kind==="punctuation"&&c.value===","){e.advance();continue}u.push(c.value),e.advance();}return {type:"expression",raw:`${r.value}.${n.value}(${u.join(", ")})`}}tryMatchPropertyAccessExpression(e){let r=e.peek();if(!r||r.kind!=="identifier"&&r.kind!=="keyword")return null;let t=e.mark();e.advance();let a=e.peek();if(!a||a.kind!=="operator"||a.value!==".")return e.reset(t),null;e.advance();let n=e.peek();if(!n||n.kind!=="identifier")return e.reset(t),null;e.advance();let o=`${r.value}.${n.value}`,u=1;for(;!e.isAtEnd()&&u<q.MAX_PROPERTY_DEPTH;){let c=e.peek();if(!c||c.kind!=="operator"||c.value!==".")break;e.advance();let l=e.peek();if(!l||l.kind!=="identifier")break;e.advance(),o+=`.${l.value}`,u++;}let s=e.peek();if(s&&s.kind==="punctuation"&&s.value==="("){e.advance();let c=[],l=0;for(;!e.isAtEnd()&&c.length<q.MAX_METHOD_ARGS;){let p=e.peek();if(!p)break;if(p.kind==="punctuation"&&p.value===")"){if(l===0){e.advance();break}l--;}if(p.kind==="punctuation"&&p.value==="("&&l++,p.kind==="punctuation"&&p.value===","){e.advance();continue}c.push(p.value),e.advance();}return {type:"expression",raw:`${o}(${c.join(", ")})`}}return {type:"expression",raw:o}}tryMatchPossessiveSelectorExpression(e){let r=e.peek();if(!r||r.kind!=="selector")return null;let t=e.mark();e.advance();let a=e.peek();if(!a||a.kind!=="punctuation"||a.value!=="'s")return e.reset(t),null;e.advance();let n=e.peek();return !n||n.kind!=="selector"&&n.kind!=="identifier"?(e.reset(t),null):(e.advance(),se(ue(r.value),n.value))}tryMatchSelectorPropertyExpression(e){let r=e.peek();if(!r||r.kind!=="selector"||typeof r.value!="string"||!r.value.startsWith("#"))return null;let t=e.mark();e.advance();let a=e.peek();if(!a||a.kind!=="selector"||!a.value.startsWith("."))return e.reset(t),null;let n=e.peek(1);n&&n.kind,e.advance();let o=a.value.slice(1);return se(ue(r.value),o)}matchGroupToken(e,r,t,a){let n=e.mark(),o=new Set(t.keys());if(this.matchTokenSequence(e,r.tokens,t,a))return true;e.reset(n);for(let c of t.keys())o.has(c)||t.delete(c);if(!r.optional)return false;let s=this.getGroupLeadingMarker(r);if(s)for(let c=1;c<=q.MAX_MARKER_SCAN;c++){let l=e.peek(c);if(!l)break;if((l.normalized||l.value).toLowerCase()===s){this.logger.debug(" >> MARKER SCAN: found",s,"at offset",c,"- skipping intervening tokens");for(let d=0;d<c;d++)e.advance();if(this.matchTokenSequence(e,r.tokens,t,a))return true;e.reset(n);for(let d of t.keys())o.has(d)||t.delete(d);break}}return true}getGroupLeadingMarker(e){let r=e.tokens[0];return r?.type==="literal"?r.value.toLowerCase():null}getMatchType(e,r){return e.value===r?"exact":e.normalized===r?"normalized":e.stem===r&&e.stemConfidence!==void 0&&e.stemConfidence>=.7?"stem":e.kind==="keyword"&&this.safeToLowerCase(e.value)===r.toLowerCase()?"case-insensitive":"none"}collectStopMarkers(e,r){let t=new Set;for(let a=r;a<e.length;a++){let n=e[a];if(n.type==="literal"){if(t.add(n.value.toLowerCase()),n.alternatives)for(let o of n.alternatives)t.add(o.toLowerCase());break}if(n.type==="group"){for(let o of n.tokens)if(o.type==="literal"){if(t.add(o.value.toLowerCase()),o.alternatives)for(let u of o.alternatives)t.add(u.toLowerCase());break}if(!n.optional)break}}return t}isStopMarker(e,r){return r.size===0?false:!!(r.has(e.value.toLowerCase())||e.normalized&&r.has(e.normalized.toLowerCase()))}tokenToSemanticValue(e){switch(e.kind){case "selector":return ue(e.value);case "literal":return this.parseLiteralValue(e.value);case "keyword":let r=e.normalized||e.value;this.safeToLowerCase(r);return S(e.normalized||e.value);case "identifier":if(typeof e.value=="string"&&e.value.startsWith(":"))return Y(e.value);this.safeToLowerCase(e.value);return {type:"expression",raw:e.value};case "url":return S(e.value,"string");default:return null}}parseLiteralValue(e){if(e.startsWith('"')||e.startsWith("'")||e.startsWith("`")||e.startsWith("\u300C")){let a=e.slice(1,-1);return S(a,"string")}if(e==="true")return S(true,"boolean");if(e==="false")return S(false,"boolean");let r=e.match(/^(\d+(?:\.\d+)?)(ms|s|m|h)?$/);if(r){let a=parseFloat(r[1]);return r[2]?S(e,"duration"):S(a,"number")}let t=parseFloat(e);return isNaN(t)?S(e,"string"):S(t,"number")}applyExtractionRules(e,r){for(let[t,a]of Object.entries(e.extraction))r.has(t)||(a.value!==void 0?r.set(t,{type:"literal",value:a.value}):a.default&&r.set(t,a.default));}isOptional(e){return e.type!=="literal"&&e.optional===true}calculateConfidence(e,r){let t=0,a=0,n=c=>e.extraction?.[c]?.default!==void 0;for(let c of e.template.tokens)if(c.type==="role")a+=1,r.has(c.role)&&(t+=1);else if(c.type==="group"){for(let l of c.tokens)if(l.type==="role"){let m=n(l.role),p=.8;a+=p,r.has(l.role)?t+=p:m&&(t+=p*.6);}}let o=a>0?t/a:1;if(this.stemMatchCount>0&&this.totalKeywordMatches>0){let c=this.stemMatchCount/this.totalKeywordMatches*.15;o=Math.max(.5,o-c);}let u=this.calculateVSOConfidenceBoost(e);o=Math.min(1,o+u);let s=this.arabicPrepositionDisambiguation(e,r);return o=Math.max(0,Math.min(1,o+s)),o}calculateVSOConfidenceBoost(e){if(e.language!=="ar")return 0;let r=e.template.tokens[0];if(!r||r.type!=="literal")return 0;let t=new Set(["\u0628\u062F\u0644","\u063A\u064A\u0631","\u0623\u0636\u0641","\u0623\u0632\u0644","\u0636\u0639","\u0627\u062C\u0639\u0644","\u0639\u064A\u0646","\u0632\u062F","\u0627\u0646\u0642\u0635","\u0633\u062C\u0644","\u0623\u0638\u0647\u0631","\u0623\u062E\u0641","\u0634\u063A\u0644","\u0623\u0631\u0633\u0644","\u0631\u0643\u0632","\u0634\u0648\u0634","\u062A\u0648\u0642\u0641","\u0627\u0646\u0633\u062E","\u0627\u062D\u0630\u0641","\u0627\u0635\u0646\u0639","\u0627\u0646\u062A\u0638\u0631","\u0627\u0646\u062A\u0642\u0627\u0644","\u0623\u0648"]);if(t.has(r.value))return .15;if(r.alternatives){for(let a of r.alternatives)if(t.has(a))return .15}return 0}arabicPrepositionDisambiguation(e,r){if(e.language!=="ar")return 0;let t=0,a={patient:["\u0639\u0644\u0649"],destination:["\u0625\u0644\u0649","\u0627\u0644\u0649"],source:["\u0645\u0646"],agent:["\u0645\u0646"],manner:["\u0628"],style:["\u0628"],goal:["\u0625\u0644\u0649","\u0627\u0644\u0649"],method:["\u0628"]};for(let[n,o]of r.entries()){let u=a[n];if(!u||u.length===0)continue;let s="metadata"in o?o.metadata:void 0;if(s&&typeof s.prepositionValue=="string"){let c=s.prepositionValue;u.includes(c)?t+=.1:t-=.1;}}return Math.max(-0.1,Math.min(.1,t))}skipNoiseWords(e){let r=e.peek();if(!r)return;let t=this.safeToLowerCase(r.value);if(q.ENGLISH_NOISE_WORDS.has(t)){let a=e.mark();e.advance();let n=e.peek();if(n&&n.kind==="selector")return;e.reset(a);}t==="class"&&e.advance();}extractEventModifiers(e){let r={},t=false;for(;!e.isAtEnd();){let a=e.peek();if(!a||a.kind!=="event-modifier")break;let n=a.metadata;if(!n)break;switch(t=true,n.modifierName){case "once":r.once=true;break;case "debounce":typeof n.value=="number"&&(r.debounce=n.value);break;case "throttle":typeof n.value=="number"&&(r.throttle=n.value);break;case "queue":(n.value==="first"||n.value==="last"||n.value==="all"||n.value==="none")&&(r.queue=n.value);break}e.advance();}return t?r:void 0}};J.MAX_MARKER_SCAN=3;J.MAX_PROPERTY_DEPTH=10;J.MAX_METHOD_ARGS=20;J.ENGLISH_NOISE_WORDS=new Set(["the","a","an"]);var Pr=J;new Pr;var Re=class{constructor(){this.name="string-literal";}canExtract(i,e){let r=i[e];return r==='"'||r==="'"||r==="`"||r==="\u201C"||r==="\u2018"}extract(i,e){let r=i[e];if(r==="\u201C"){let n=1;for(;e+n<i.length;){if(i[e+n]==="\u201D")return n++,{value:i.substring(e,e+n),length:n};n++;}return null}if(r==="\u2018"){let n=1;for(;e+n<i.length;){if(i[e+n]==="\u2019")return n++,{value:i.substring(e,e+n),length:n};n++;}return null}let t=1,a=false;for(;e+t<i.length;){let n=i[e+t];if(a){a=false,t++;continue}if(n==="\\"){a=true,t++;continue}if(n===r)return t++,{value:i.substring(e,e+t),length:t};t++;}return null}},_e=class{constructor(){this.name="number";}canExtract(i,e){return /\d/.test(i[e])}extract(i,e){let r=0,t=false;for(;e+r<i.length;){let o=i[e+r];if(/\d/.test(o))r++;else if(o==="."&&!t)t=true,r++;else break}if(r===0)return null;let a=i.substring(e,e+r),n=e+r;if(n<i.length){let o=i.slice(n),u=[{pattern:"\u6BEB\u79D2",suffix:"ms"},{pattern:"\u5206\u949F",suffix:"m"},{pattern:"\u5C0F\u65F6",suffix:"h"},{pattern:"\u30DF\u30EA\u79D2",suffix:"ms"},{pattern:"\u6642\u9593",suffix:"h"}];for(let c of u)if(o.startsWith(c.pattern))return {value:a+c.suffix,length:r+c.pattern.length,metadata:{hasTimeUnit:true}};if(o.startsWith("ms"))return {value:a+"ms",length:r+2,metadata:{hasTimeUnit:true}};let s=[{pattern:"\u79D2",suffix:"s"},{pattern:"\u5206",suffix:"m"}];for(let c of s)if(o.startsWith(c.pattern))return {value:a+c.suffix,length:r+1,metadata:{hasTimeUnit:true}};if(/^[smh](?![a-zA-Z])/.test(o))return {value:a+o[0],length:r+1,metadata:{hasTimeUnit:true}}}return {value:a,length:r}}};function Rr(i){return "setContext"in i&&typeof i.setContext=="function"}function _r(i){let e={language:i.language,direction:i.direction,lookupKeyword:i.lookupKeyword.bind(i),isKeyword:i.isKeyword.bind(i),isKeywordStart:i.isKeywordStart.bind(i)};return i.normalizer?{...e,normalizer:i.normalizer}:e}var M=class{constructor(i,e){this.pos=0,this.tokens=i,this.language=e;}peek(i=0){let e=this.pos+i;return e<0||e>=this.tokens.length?null:this.tokens[e]}advance(){if(this.isAtEnd())throw new Error("Unexpected end of token stream");return this.tokens[this.pos++]}isAtEnd(){return this.pos>=this.tokens.length}mark(){return {position:this.pos}}reset(i){this.pos=i.position;}position(){return this.pos}remaining(){return this.tokens.slice(this.pos)}takeWhile(i){let e=[];for(;!this.isAtEnd()&&i(this.peek());)e.push(this.advance());return e}skipWhile(i){for(;!this.isAtEnd()&&i(this.peek());)this.advance();}};function k(i,e){return {start:i,end:e}}function b(i,e,r,t){if(typeof i=="object"){let{value:n,kind:o,position:u,normalized:s,stem:c,stemConfidence:l,metadata:m}=i;return {value:n,kind:o,position:u,...s!==void 0&&{normalized:s},...c!==void 0&&{stem:c},...l!==void 0&&{stemConfidence:l},...m!==void 0&&{metadata:m}}}let a=i;if(!e||!r)throw new Error("createToken requires kind and position parameters");if(typeof t=="string")return {value:a,kind:e,position:r,normalized:t};if(t){let{normalized:n,stem:o,stemConfidence:u,metadata:s}=t;return {value:a,kind:e,position:r,...n!==void 0&&{normalized:n},...o!==void 0&&{stem:o},...u!==void 0&&{stemConfidence:u},...s!==void 0&&{metadata:s}}}return {value:a,kind:e,position:r}}function N(i){return /\s/.test(i)}function Or(i){return i==="#"||i==="."||i==="["||i==="@"||i==="*"||i==="<"}function Nr(i){return i==='"'||i==="'"||i==="`"||i==="\u300C"||i==="\u300D"}function O(i){return /\d/.test(i)}function Mr(i){return /[a-zA-Z]/.test(i)}function w(i){return /[a-zA-Z0-9_-]/.test(i)}function Ir(i,e){if(e>=i.length)return null;let r=i[e];if(!Or(r))return null;let t=e,a="";if(r==="#"||r==="."){for(a+=i[t++];t<i.length&&w(i[t]);)a+=i[t++];if(a.length<=1)return null;if(t<i.length&&i[t]==="."&&r==="#"){let o=t+1;for(;o<i.length&&w(i[o]);)o++;if(o<i.length&&i[o]==="(")return a}}else if(r==="["){let n=1,o=false,u=null,s=false;for(a+=i[t++];t<i.length&&n>0;){let c=i[t];a+=c,s?s=false:c==="\\"?s=true:o?c===u&&(o=false,u=null):c==='"'||c==="'"||c==="`"?(o=true,u=c):c==="["?n++:c==="]"&&n--,t++;}if(n!==0)return null}else if(r==="@"){for(a+=i[t++];t<i.length&&w(i[t]);)a+=i[t++];if(a.length<=1)return null}else if(r==="*"){for(a+=i[t++];t<i.length&&w(i[t]);)a+=i[t++];if(a.length<=1)return null}else if(r==="<"){if(a+=i[t++],t>=i.length||!Mr(i[t]))return null;for(;t<i.length&&w(i[t]);)a+=i[t++];for(;t<i.length;){let n=i[t];if(n==="."){if(a+=i[t++],t>=i.length||!w(i[t]))return null;for(;t<i.length&&w(i[t]);)a+=i[t++];}else if(n==="#"){if(a+=i[t++],t>=i.length||!w(i[t]))return null;for(;t<i.length&&w(i[t]);)a+=i[t++];}else if(n==="["){let o=1,u=false,s=null,c=false;for(a+=i[t++];t<i.length&&o>0;){let l=i[t];a+=l,c?c=false:l==="\\"?c=true:u?l===s&&(u=false,s=null):l==='"'||l==="'"||l==="`"?(u=true,s=l):l==="["?o++:l==="]"&&o--,t++;}if(o!==0)return null}else break}for(;t<i.length&&N(i[t]);)a+=i[t++];if(t<i.length&&i[t]==="/")for(a+=i[t++];t<i.length&&N(i[t]);)a+=i[t++];if(t>=i.length||i[t]!==">")return null;a+=i[t++];}return a||null}function Lr(i,e){if(e>=i.length||i[e]!=="'"||e+1>=i.length||i[e+1].toLowerCase()!=="s")return false;if(e+2>=i.length)return true;let t=i[e+2];return N(t)||t==="*"||!w(t)}function jr(i,e){if(e>=i.length)return null;let r=i[e];if(!Nr(r)||r==="'"&&Lr(i,e))return null;let a={'"':'"',"'":"'","`":"`","\u300C":"\u300D"}[r];if(!a)return null;let n=e+1,o=r,u=false;for(;n<i.length;){let s=i[n];if(o+=s,u)u=false;else if(s==="\\")u=true;else if(s===a)return o;n++;}return o}function $r(i,e){if(e>=i.length)return false;let r=i[e],t=i[e+1]||"",a=i[e+2]||"";if(r==="/"&&t!=="/"&&/[a-zA-Z0-9._-]/.test(t)||r==="/"&&t==="/"&&/[a-zA-Z]/.test(a)||r==="."&&(t==="/"||t==="."&&a==="/"))return true;let n=i.slice(e,e+8).toLowerCase();return !!(n.startsWith("http://")||n.startsWith("https://"))}function Vr(i,e){if(!$r(i,e))return null;let r=e,t="",a=/[a-zA-Z0-9/:._\-?&=%@+~!$'()*,;[\]]/;for(;r<i.length;){let n=i[r];if(n==="#"){if(t.length>0&&/[a-zA-Z0-9/.]$/.test(t))for(t+=n,r++;r<i.length&&/[a-zA-Z0-9_-]/.test(i[r]);)t+=i[r++];break}if(a.test(n))t+=n,r++;else break}return t.length<2?null:t}function qr(i,e){if(e>=i.length)return null;let r=i[e];if(!O(r)&&r!=="-"&&r!=="+")return null;let t=e,a="";if((i[t]==="-"||i[t]==="+")&&(a+=i[t++]),t>=i.length||!O(i[t]))return null;for(;t<i.length&&O(i[t]);)a+=i[t++];if(t<i.length&&i[t]===".")for(a+=i[t++];t<i.length&&O(i[t]);)a+=i[t++];return t<i.length&&(i.slice(t,t+2)==="ms"?a+="ms":(i[t]==="s"||i[t]==="m"||i[t]==="h")&&(a+=i[t])),a}var Wr=["===","!==","->","==","!=","<=",">=","&&","||","**","+=","-=","*=","/=","+","-","*","/","=",">","<","!","&","|","%","^","~"];function le(i){return e=>{let r=e.charCodeAt(0);return i.some(([t,a])=>r>=t&&r<=a)}}new Set(Wr);var Oe=class Ne{constructor(){this.profileKeywords=[],this.profileKeywordMap=new Map,this.extractors=[];}tokenize(e){if(this.isUsingExtractors())return this.tokenizeWithExtractors(e);throw new Error(`${this.constructor.name}: tokenize() not implemented and no extractors registered. Either register extractors or override tokenize() method.`)}registerExtractor(e){Rr(e)&&e.setContext(_r(this)),this.extractors.push(e);}registerExtractors(e){for(let r of e)this.registerExtractor(r);}clearExtractors(){this.extractors=[];}isUsingExtractors(){return this.extractors.length>0}tokenizeWithExtractors(e){let r=[],t=0;for(;t<e.length;){for(;t<e.length&&N(e[t]);)t++;if(t>=e.length)break;let a=false;for(let n of this.extractors)if(n.canExtract(e,t)){let o=n.extract(e,t);if(o){let u=o.metadata?.normalized,s=o.metadata?.stem,c=o.metadata?.stemConfidence,l={};if(o.metadata)for(let[p,d]of Object.entries(o.metadata))p!=="normalized"&&p!=="stem"&&p!=="stemConfidence"&&(l[p]=d);let m={};u&&(m.normalized=u),s&&(m.stem=s),c!==void 0&&(m.stemConfidence=c),Object.keys(l).length>0&&(m.metadata=l),r.push(b(o.value,this.classifyToken(o.value),k(t,t+o.length),Object.keys(m).length>0?m:void 0)),t+=o.length,a=true;break}}if(!a){let n=e[t],o=this.classifyUnknownChar(n);r.push(b(n,o,k(t,t+1))),t++;}}return new M(r,this.language)}classifyUnknownChar(e){return "()[]{},:;".includes(e)?"punctuation":"+-*/<>=!&|".includes(e)?"operator":"identifier"}tryPropertyAccess(e,r,t){if(e[r]!==".")return false;let a=t[t.length-1],n=a&&a.position.end<r;if(a&&!n&&(a.kind==="identifier"||a.kind==="keyword"||a.kind==="selector"))return t.push(b(".","operator",k(r,r+1))),true;let s=r+1;for(;s<e.length&&w(e[s]);)s++;return s<e.length&&e[s]==="("?(t.push(b(".","operator",k(r,r+1))),true):false}initializeKeywordsFromProfile(e,r=[]){let t=new Map;if(e.keywords){for(let[a,n]of Object.entries(e.keywords))if(t.set(n.primary,{native:n.primary,normalized:n.normalized||a}),n.alternatives)for(let o of n.alternatives)t.set(o,{native:o,normalized:n.normalized||a});}if(e.references){for(let[a,n]of Object.entries(e.references))t.set(n,{native:n,normalized:a});for(let a of Object.keys(e.references))t.has(a)||t.set(a,{native:a,normalized:a});}if(e.roleMarkers){for(let[a,n]of Object.entries(e.roleMarkers))if(n.primary&&t.set(n.primary,{native:n.primary,normalized:a}),n.alternatives)for(let o of n.alternatives)t.set(o,{native:o,normalized:a});}if(e.possessive?.keywords)for(let[a,n]of Object.entries(e.possessive.keywords))t.set(a,{native:a,normalized:n});for(let a of r)t.set(a.native,a);this.profileKeywords=Array.from(t.values()).sort((a,n)=>n.native.length-a.native.length),this.profileKeywordMap=new Map;for(let a of this.profileKeywords){this.profileKeywordMap.set(a.native.toLowerCase(),a);let n=this.removeDiacritics(a.native);n!==a.native&&!this.profileKeywordMap.has(n.toLowerCase())&&this.profileKeywordMap.set(n.toLowerCase(),a);}}removeDiacritics(e){return e.replace(/[\u064B-\u0652\u0670]/g,"")}tryProfileKeyword(e,r){for(let t of this.profileKeywords)if(e.slice(r).startsWith(t.native))return b(t.native,"keyword",k(r,r+t.native.length),t.normalized);return null}isKeywordStart(e,r){let t=e.slice(r);return this.profileKeywords.some(a=>t.startsWith(a.native))}lookupKeyword(e){return this.profileKeywordMap.get(e.toLowerCase())}isKeyword(e){return this.profileKeywordMap.has(e.toLowerCase())}setNormalizer(e){this.normalizer=e;}tryNormalize(e){if(!this.normalizer)return null;let r=this.normalizer.normalize(e);return r.stem!==e&&r.confidence>=.7?r:null}tryMorphKeywordMatch(e,r,t){let a=this.tryNormalize(e);if(!a)return null;let n=this.lookupKeyword(a.stem);if(!n)return null;let o={normalized:n.normalized,stem:a.stem,stemConfidence:a.confidence};return b(e,"keyword",k(r,t),o)}trySelector(e,r){let t=Ir(e,r);return t?b(t,"selector",k(r,r+t.length)):null}tryEventModifier(e,r){if(e[r]!==".")return null;let t=e.slice(r).match(/^\.(?:once|debounce|throttle|queue)(?:\(([^)]+)\))?(?:\s|$|\.)/);if(!t)return null;let a=t[0].replace(/(\s|\.)$/,""),n=a.slice(1).split("(")[0],o=t[1];return {...b(a,"event-modifier",k(r,r+a.length)),metadata:{modifierName:n,value:o?n==="queue"?o:parseInt(o,10):void 0}}}tryString(e,r){let t=jr(e,r);return t?b(t,"literal",k(r,r+t.length)):null}tryNumber(e,r){let t=qr(e,r);return t?b(t,"literal",k(r,r+t.length)):null}tryMatchTimeUnit(e,r,t,a=false){let n=r;if(a)for(;n<e.length&&N(e[n]);)n++;let o=e.slice(n);for(let u of t){let s=o.slice(0,u.length);if(u.caseInsensitive?s.toLowerCase()===u.pattern.toLowerCase():s===u.pattern){if(u.notFollowedBy&&(o[u.length]||"")===u.notFollowedBy)continue;if(u.checkBoundary){let l=o[u.length]||"";if(w(l))continue}return {suffix:u.suffix,endPos:n+u.length}}}return null}parseBaseNumber(e,r,t=true){let a=r,n="";if(t&&(e[a]==="-"||e[a]==="+")&&(n+=e[a++]),a>=e.length||!O(e[a]))return null;for(;a<e.length&&O(e[a]);)n+=e[a++];if(a<e.length&&e[a]===".")for(n+=e[a++];a<e.length&&O(e[a]);)n+=e[a++];return !n||n==="-"||n==="+"?null:{number:n,endPos:a}}tryNumberWithTimeUnits(e,r,t,a={}){let{allowSign:n=true,skipWhitespace:o=false}=a,u=this.parseBaseNumber(e,r,n);if(!u)return null;let{number:s,endPos:c}=u,l=[...t,...Ne.STANDARD_TIME_UNITS],m=this.tryMatchTimeUnit(e,c,l,o);return m&&(s+=m.suffix,c=m.endPos),b(s,"literal",k(r,c))}tryUrl(e,r){let t=Vr(e,r);return t?b(t,"url",k(r,r+t.length)):null}tryVariableRef(e,r){if(e[r]!==":"||r+1>=e.length||!w(e[r+1]))return null;let t=r+1;for(;t<e.length&&w(e[t]);)t++;let a=e.slice(r,t);return b(a,"identifier",k(r,t))}tryOperator(e,r){let t=e.slice(r,r+2);if(["==","!=","<=",">=","&&","||","->"].includes(t))return b(t,"operator",k(r,r+2));let a=e[r];return ["<",">","!","+","-","*","/","="].includes(a)?b(a,"operator",k(r,r+1)):["(",")","{","}",",",";",":"].includes(a)?b(a,"punctuation",k(r,r+1)):null}tryMultiCharParticle(e,r,t){for(let a of t)if(e.slice(r,r+a.length)===a)return b(a,"particle",k(r,r+a.length));return null}};Oe.STANDARD_TIME_UNITS=[{pattern:"ms",suffix:"ms",length:2},{pattern:"s",suffix:"s",length:1,checkBoundary:true},{pattern:"m",suffix:"m",length:1,checkBoundary:true,notFollowedBy:"s"},{pattern:"h",suffix:"h",length:1,checkBoundary:true}];var Me=Oe;function Ie(i){return {stem:i,confidence:1}}function Le(i,e,r){return r?{stem:i,confidence:e,metadata:r}:{stem:i,confidence:e}}var Kr=Object.defineProperty,Ur=Object.getOwnPropertyNames,Qe=(i,e)=>function(){return i&&(e=(0, i[Ur(i)[0]])(i=0)),e},Hr=(i,e)=>{for(var r in e)Kr(i,r,{get:e[r],enumerable:true});};function je(i,e){return i.replace(/\{(\w+)\}/g,(r,t)=>String(e[t]??`{${t}}`))}function D(i,e,r={},t){let a=Ze[i],n=je(a,r),o=er[i],u=o?je(o,r):void 0;return {code:i,message:n,severity:e,...t&&{role:t},...u&&{suggestion:u}}}var f,Ze,er,Gr=Qe({"src/generators/schema-error-codes.ts"(){f={AMBIGUOUS_TYPE_LITERAL_SELECTOR:"SCHEMA_AMBIGUOUS_TYPE_LITERAL_SELECTOR",TOO_MANY_EXPECTED_TYPES:"SCHEMA_TOO_MANY_EXPECTED_TYPES",MULTI_TYPE_PATIENT_EXPECTED:"SCHEMA_MULTI_TYPE_PATIENT_EXPECTED",NO_REQUIRED_ROLES:"SCHEMA_NO_REQUIRED_ROLES",NO_REQUIRED_ROLES_EXPECTED:"SCHEMA_NO_REQUIRED_ROLES_EXPECTED",TRANSITION_PATIENT_ACCEPTS_SELECTOR:"SCHEMA_TRANSITION_PATIENT_ACCEPTS_SELECTOR",TRANSITION_MISSING_GOAL:"SCHEMA_TRANSITION_MISSING_GOAL",EVENT_HANDLER_MISSING_EVENT:"SCHEMA_EVENT_HANDLER_MISSING_EVENT",EVENT_HANDLER_EVENT_NOT_REQUIRED:"SCHEMA_EVENT_HANDLER_EVENT_NOT_REQUIRED",CONDITIONAL_MISSING_CONDITION:"SCHEMA_CONDITIONAL_MISSING_CONDITION",CONDITIONAL_CONDITION_NOT_REQUIRED:"SCHEMA_CONDITIONAL_CONDITION_NOT_REQUIRED",FOR_LOOP_MISSING_SOURCE:"SCHEMA_FOR_LOOP_MISSING_SOURCE",WHILE_LOOP_MISSING_CONDITION:"SCHEMA_WHILE_LOOP_MISSING_CONDITION",VALUE_TYPE_MISMATCH:"SCHEMA_VALUE_TYPE_MISMATCH",SELECTOR_KIND_MISMATCH:"SCHEMA_SELECTOR_KIND_MISMATCH",SELECTOR_KINDS_WITHOUT_SELECTOR_TYPE:"SCHEMA_SELECTOR_KINDS_WITHOUT_SELECTOR_TYPE",KEYWORD_COLLISION:"PROFILE_KEYWORD_COLLISION"},Ze={[f.AMBIGUOUS_TYPE_LITERAL_SELECTOR]:"Role '{role}' accepts both 'literal' and 'selector'. This may cause ambiguous type inference for values starting with special characters (* . # etc.).",[f.TOO_MANY_EXPECTED_TYPES]:"Role '{role}' accepts {count} different types. This may make type inference unreliable.",[f.MULTI_TYPE_PATIENT_EXPECTED]:"Role '{role}' accepts multiple types (expected for {command} command).",[f.NO_REQUIRED_ROLES]:"Command has no required roles. Is this intentional?",[f.NO_REQUIRED_ROLES_EXPECTED]:"Command has no required roles (expected for {command}).",[f.TRANSITION_PATIENT_ACCEPTS_SELECTOR]:"Transition command 'patient' role (CSS property name) should only accept 'literal', not 'selector'. CSS property names like 'background-color' are strings, not CSS selectors.",[f.TRANSITION_MISSING_GOAL]:"Transition command requires a 'goal' role for the target value (to <value>). Without it, there's no way to specify what value to transition to.",[f.EVENT_HANDLER_MISSING_EVENT]:"Event handler command should have an 'event' role to specify which event to listen for.",[f.EVENT_HANDLER_EVENT_NOT_REQUIRED]:"Event role should be required - every event handler needs an event to listen for.",[f.CONDITIONAL_MISSING_CONDITION]:"Conditional command should have a 'condition' role for the boolean expression.",[f.CONDITIONAL_CONDITION_NOT_REQUIRED]:"Condition role should be required - conditionals need a condition to evaluate.",[f.FOR_LOOP_MISSING_SOURCE]:"For-loop should have a 'source' role for the collection to iterate over.",[f.WHILE_LOOP_MISSING_CONDITION]:"While-loop should have a 'condition' role for the loop condition.",[f.VALUE_TYPE_MISMATCH]:"Role '{role}' of command '{command}' expects type [{expectedTypes}], got '{actualType}'.",[f.SELECTOR_KIND_MISMATCH]:"Role '{role}' of command '{command}' expects selector kind [{selectorKinds}], got '{actualKind}'.",[f.SELECTOR_KINDS_WITHOUT_SELECTOR_TYPE]:"Role '{role}' has selectorKinds but expectedTypes does not include 'selector'.",[f.KEYWORD_COLLISION]:"Keyword '{keyword}' is used by multiple commands: {commands}. Only the first-registered command will be reachable."},er={[f.AMBIGUOUS_TYPE_LITERAL_SELECTOR]:"Consider being more specific about which type is expected, or use explicit type markers.",[f.TOO_MANY_EXPECTED_TYPES]:"Consider narrowing the accepted types to improve type inference reliability.",[f.TRANSITION_PATIENT_ACCEPTS_SELECTOR]:"Remove 'selector' from expectedTypes and only accept 'literal'.",[f.TRANSITION_MISSING_GOAL]:"Add a 'goal' role with expectedTypes ['literal', 'variable'].",[f.EVENT_HANDLER_MISSING_EVENT]:"Add an 'event' role with expectedTypes ['literal'].",[f.EVENT_HANDLER_EVENT_NOT_REQUIRED]:"Set required: true on the 'event' role.",[f.CONDITIONAL_MISSING_CONDITION]:"Add a 'condition' role with expectedTypes ['expression'].",[f.CONDITIONAL_CONDITION_NOT_REQUIRED]:"Set required: true on the 'condition' role.",[f.FOR_LOOP_MISSING_SOURCE]:"Add a 'source' role for the collection to iterate over.",[f.WHILE_LOOP_MISSING_CONDITION]:"Add a 'condition' role for the loop continuation condition.",[f.VALUE_TYPE_MISMATCH]:"Ensure the value matches one of the expected types: [{expectedTypes}].",[f.SELECTOR_KIND_MISMATCH]:"Use a selector of the correct kind: [{selectorKinds}].",[f.SELECTOR_KINDS_WITHOUT_SELECTOR_TYPE]:"Either add 'selector' to expectedTypes or remove selectorKinds.",[f.KEYWORD_COLLISION]:"Give each command a unique keyword. Move the shared keyword to alternatives on one command, or use a more specific translation."};}}),rr={};Hr(rr,{SchemaErrorCodes:()=>f,formatValidationResults:()=>rt,getValidationStats:()=>tt,validateAllKeywordCollisions:()=>at,validateAllSchemas:()=>et,validateCommandSchema:()=>tr,validateKeywordCollisions:()=>ir,validateRoleValues:()=>it});function Yr(i,e){return {action:i,items:e}}function tr(i){let e=[];for(let t of i.roles)t.expectedTypes.includes("literal")&&t.expectedTypes.includes("selector")&&(t.role==="patient"&&ke.has(i.action)?e.push(D(f.MULTI_TYPE_PATIENT_EXPECTED,"note",{role:t.role,command:i.action},t.role)):e.push(D(f.AMBIGUOUS_TYPE_LITERAL_SELECTOR,"warning",{role:t.role},t.role))),t.expectedTypes.length>3&&!ke.has(i.action)&&e.push(D(f.TOO_MANY_EXPECTED_TYPES,"warning",{role:t.role,count:t.expectedTypes.length},t.role));for(let t of i.roles)t.selectorKinds&&t.selectorKinds.length>0&&(t.expectedTypes.includes("selector")||e.push(D(f.SELECTOR_KINDS_WITHOUT_SELECTOR_TYPE,"warning",{role:t.role},t.role)));switch(i.action){case "transition":Jr(i,e);break;case "on":Xr(i,e);break;case "if":case "unless":Qr(i,e);break;case "repeat":case "for":case "while":Zr(i,e);break}return i.roles.filter(t=>t.required).length===0&&(ar.has(i.action)?e.push(D(f.NO_REQUIRED_ROLES_EXPECTED,"note",{command:i.action})):e.push(D(f.NO_REQUIRED_ROLES,"warning",{}))),Yr(i.action,e)}function Jr(i,e){let r=i.roles.find(a=>a.role==="patient"),t=i.roles.find(a=>a.role==="goal");r&&r.expectedTypes.includes("selector")&&e.push(D(f.TRANSITION_PATIENT_ACCEPTS_SELECTOR,"warning",{},"patient")),r&&!t&&e.push(D(f.TRANSITION_MISSING_GOAL,"error",{}));}function Xr(i,e){let r=i.roles.find(t=>t.role==="event");r||e.push(D(f.EVENT_HANDLER_MISSING_EVENT,"warning",{})),r&&!r.required&&e.push(D(f.EVENT_HANDLER_EVENT_NOT_REQUIRED,"warning",{}));}function Qr(i,e){let r=i.roles.find(t=>t.role==="condition");r||e.push(D(f.CONDITIONAL_MISSING_CONDITION,"warning",{})),r&&!r.required&&e.push(D(f.CONDITIONAL_CONDITION_NOT_REQUIRED,"warning",{}));}function Zr(i,e){i.action==="for"?i.roles.find(t=>t.role==="source")||e.push(D(f.FOR_LOOP_MISSING_SOURCE,"warning",{})):i.action==="while"&&(i.roles.find(t=>t.role==="condition")||e.push(D(f.WHILE_LOOP_MISSING_CONDITION,"warning",{})));}function et(i,e={}){let r=new Map,{includeNotes:t=false}=e;for(let[a,n]of Object.entries(i)){let o=tr(n),u=o.items.some(c=>c.severity==="warning"||c.severity==="error"),s=t&&o.items.some(c=>c.severity==="note");(u||s)&&r.set(a,o);}return r}function rt(i,e={}){let r=[],{showNotes:t=false,showCodes:a=true}=e;for(let[n,o]of i){let u=o.items.filter(l=>l.severity==="error"),s=o.items.filter(l=>l.severity==="warning"),c=o.items.filter(l=>l.severity==="note");if(u.length>0){r.push(` \u274C ${n}:`);for(let l of u){let m=a?` [${l.code}]`:"";r.push(` ERROR${m}: ${l.message}`),l.suggestion&&r.push(` \u{1F4A1} Suggestion: ${l.suggestion}`);}}if(s.length>0){r.push(` \u26A0\uFE0F ${n}:`);for(let l of s){let m=a?` [${l.code}]`:"";r.push(` ${m?`${l.code}: `:""}${l.message}`),l.suggestion&&r.push(` \u{1F4A1} ${l.suggestion}`);}}if(t&&c.length>0){r.push(` \u2139\uFE0F ${n}:`);for(let l of c){let m=a?` [${l.code}]`:"";r.push(` ${m?`${l.code}: `:""}${l.message}`);}}}return r.join(`
|
|
2
|
+
`)}function tt(i){let e=0,r=0,t=0,a={};for(let n of i.values())for(let o of n.items)o.severity==="error"?e++:o.severity==="warning"?r++:o.severity==="note"&&t++,a[o.code]=(a[o.code]||0)+1;return {totalCommands:i.size,errors:e,warnings:r,notes:t,byCode:a}}function it(i,e){let r=[];for(let t of e){let a=i.roles.find(n=>n.role===t.role);a&&(a.expectedTypes.length>0&&!a.expectedTypes.includes(t.type)&&(a.expectedTypes.includes("expression")||r.push({level:"error",role:t.role,message:`${i.action}.${t.role} expects type [${a.expectedTypes.join(", ")}], got '${t.type}'`,code:f.VALUE_TYPE_MISMATCH})),t.type==="selector"&&t.selectorKind&&a.selectorKinds&&a.selectorKinds.length>0&&(a.selectorKinds.includes(t.selectorKind)||r.push({level:"error",role:t.role,message:`${i.action}.${t.role} expects selector kind [${a.selectorKinds.join(", ")}], got '${t.selectorKind}'`,code:f.SELECTOR_KIND_MISMATCH})));}return r}function ir(i){let e=[];if(!i.keywords)return {language:i.code,collisions:e};let r=new Map;for(let[a,n]of Object.entries(i.keywords)){if(!n||!n.primary)continue;let o=r.get(n.primary)||[];if(o.push({command:a,isPrimary:true}),r.set(n.primary,o),n.alternatives)for(let u of n.alternatives){let s=r.get(u)||[];s.push({command:a,isPrimary:false}),r.set(u,s);}}for(let[a,n]of r){let o=[...new Set(n.map(c=>c.command))];if(o.length<=1)continue;let u=n.filter(c=>c.isPrimary).length,s;u>=2?s="primary-primary":u===1?s="primary-alternative":s="alternative-alternative",e.push({keyword:a,commands:o.sort(),type:s});}let t={"primary-primary":0,"primary-alternative":1,"alternative-alternative":2};return e.sort((a,n)=>t[a.type]-t[n.type]),{language:i.code,collisions:e}}function at(i){let e=[];for(let[,r]of Object.entries(i)){let t=ir(r);t.collisions.length>0&&e.push(t);}return e.sort((r,t)=>r.language.localeCompare(t.language))}var ke,ar,nt=Qe({"src/generators/schema-validator.ts"(){Gr(),ke=new Set(["put","append","prepend","log","throw","make","measure","return","swap","morph","beep","copy"]),ar=new Set(["compound","else","halt","continue","async","init","settle","focus","blur","return","js","measure","break","exit","beep","empty","open","close","select","clear","reset","breakpoint"]);}});var L=new Map,F=new Map,X=new Map,be=null;function nr(i,e){let r={...i};for(let t of Object.keys(e)){let a=e[t],n=i[t];a!==void 0&&(typeof a=="object"&&a!==null&&!Array.isArray(a)&&typeof n=="object"&&n!==null&&!Array.isArray(n)?r[t]=nr(n,a):r[t]=a);}return r}function ot(i,e){return nr(i,e)}function Ae(i){if(!i.extends)return i;let e=F.get(i.extends);if(!e)return console.warn(`[Registry] Profile '${i.code}' extends '${i.extends}' but base is not registered. Make sure to import the base language before the variant.`),i;let r=Ae(e);return ot(r,i)}function or(i,e,r){L.set(i,e),F.set(i,r),X.delete(i);}function ur(i){be=i;}var $e=new Map;function K(i){return i.split("-")[0]}function U(i){return i.includes("-")}function ut(i){let e=L.get(i);if(!e&&U(i)){let r=K(i);e=L.get(r);}if(!e){let r=Array.from(L.keys()).join(", ");throw new Error(`Language '${i}' is not registered. Registered languages: ${r||"none"}. Import the language module first: import '@lokascript/semantic/languages/${i}';`)}return e}function st(i){let e=F.get(i);if(!e&&U(i)){let r=K(i);e=F.get(r);}if(!e){let r=Array.from(F.keys()).join(", ");throw new Error(`Language profile '${i}' is not registered. Registered languages: ${r||"none"}. Import the language module first: import '@lokascript/semantic/languages/${i}';`)}return Ae(e)}function j(i){let e=F.get(i);return !e&&U(i)&&(e=F.get(K(i))),e?Ae(e):void 0}function lt(){return Array.from(L.keys())}function sr(i){if(L.has(i)&&F.has(i))return true;if(U(i)){let e=K(i);return L.has(e)&&F.has(e)}return false}function ct(i,e){return ut(e).tokenize(i)}function W(i){let e=X.get(i);if(!e&&U(i)&&(e=X.get(K(i))),e)return e;let r=$e.get(i);if(!r&&U(i)&&(r=$e.get(K(i))),r)return X.set(i,r),r;if(!be)throw new Error(`No patterns registered for language '${i}'. Either import the language module or set a pattern generator.`);let t=st(i),a=be(t);return X.set(i,a),a}function Z(i){let e="complex";return i.startsWith("#")&&!i.includes(" ")?e="id":i.startsWith(".")&&!i.includes(" ")?e="class":i.startsWith("[")&&i.endsWith("]")?e="attribute":/^[a-z][a-z0-9]*$/i.test(i)&&(e="element"),{type:"selector",value:i,selectorKind:e}}function A(i,e){let r={type:"literal",value:i};return e!==void 0?{type:"literal",value:i,dataType:e}:r}function Ve(i){return ge(i)}function I(i){return {type:"reference",value:i}}function Ee(i,e){return {type:"property-path",object:i,property:e}}function ce(i,e,r){let t={kind:"command",action:i,roles:new Map(Object.entries(e))};return r!==void 0?{...t,metadata:r}:t}function qe(i,e,r,t,a,n){let o=new Map;o.set("event",i);let u={kind:"event-handler",action:"on",roles:o,body:e};return r!==void 0&&(u.eventModifiers=r),t!==void 0&&(u.metadata=t),u}function We(i,e="then",r){let t={kind:"compound",action:"compound",roles:new Map,statements:i,chainType:e};return r!==void 0&&(t.metadata=r),t}function Ke(i,e){return !e||e.length===0||e.includes(i)||e.includes("expression")?true:i==="property-path"?e.some(r=>["selector","reference","expression"].includes(r)):false}function Nt(i,e){return i.possessive?.keywords?.[e]}var ze=.8,Mt=.6,It=.15,Lt=.5,Ue=.15,He=.1,Ge=new Set(["\u0628\u062F\u0644","\u063A\u064A\u0631","\u0623\u0636\u0641","\u0623\u0632\u0644","\u0636\u0639","\u0627\u062C\u0639\u0644","\u0639\u064A\u0646","\u0632\u062F","\u0627\u0646\u0642\u0635","\u0633\u062C\u0644","\u0623\u0638\u0647\u0631","\u0623\u062E\u0641","\u0634\u063A\u0644","\u0623\u0631\u0633\u0644","\u0631\u0643\u0632","\u0634\u0648\u0634","\u062A\u0648\u0642\u0641","\u0627\u0646\u0633\u062E","\u0627\u062D\u0630\u0641","\u0627\u0635\u0646\u0639","\u0627\u0646\u062A\u0638\u0631","\u0627\u0646\u062A\u0642\u0627\u0644","\u0623\u0648"]),jt={patient:["\u0639\u0644\u0649"],destination:["\u0625\u0644\u0649","\u0627\u0644\u0649"],source:["\u0645\u0646"],agent:["\u0645\u0646"],manner:["\u0628"],style:["\u0628"],goal:["\u0625\u0644\u0649","\u0627\u0644\u0649"],method:["\u0628"]},$t=class{calculate(i){return this.calculateWithBreakdown(i).final}calculateWithBreakdown(i){let e=this.scoreRoleCoverage(i),r=this.scoreStemPenalty(i),t=this.scoreLanguageBoost(i),a=this.scoreLanguageAdjustment(i),n=e;return n=Math.max(Lt,n+r),n=Math.min(1,n+t),n=Math.max(0,Math.min(1,n+a)),{roleCoverage:e,stemPenalty:r,languageBoost:t,languageAdjustment:a,final:n}}scoreRoleCoverage(i){let{pattern:e,captured:r}=i,t=0,a=0,n=o=>e.extraction?.[o]?.default!==void 0;for(let o of e.template.tokens)if(o.type==="role")a+=1,r.has(o.role)&&(t+=1);else if(o.type==="group")for(let u of o.tokens)u.type==="role"&&(a+=ze,r.has(u.role)?t+=ze:n(u.role)&&(t+=ze*Mt));return a>0?t/a:1}scoreStemPenalty(i){let{stemMatchCount:e,totalKeywordMatches:r}=i;return e<=0||r<=0?0:-(e/r)*It}scoreLanguageBoost(i){let{pattern:e}=i;if(e.language!=="ar")return 0;let r=e.template.tokens[0];return !r||r.type!=="literal"?0:Ge.has(r.value)||r.alternatives?.some(t=>Ge.has(t))?Ue:0}scoreLanguageAdjustment(i){let{pattern:e,captured:r}=i;if(e.language!=="ar")return 0;let t=0;for(let[a,n]of r.entries()){let o=jt[a];if(!o||o.length===0)continue;let u="metadata"in n?n.metadata:void 0;u&&typeof u.prepositionValue=="string"&&(o.includes(u.prepositionValue)?t+=.1:t-=.1);}return Math.max(-He,Math.min(He,t))}},Vt=new $t,pe=class Q{constructor(e){this.matchCache=new Map,this.stemMatchCount=0,this.totalKeywordMatches=0,this.confidenceModel=e??Vt;}matchPattern(e,r){let t=e.mark(),a=new Map;if(this.currentProfile=j(r.language),this.stemMatchCount=0,this.totalKeywordMatches=0,!this.matchTokenSequence(e,r.template.tokens,a))return e.reset(t),null;let o=this.confidenceModel.calculate({pattern:r,captured:a,stemMatchCount:this.stemMatchCount,totalKeywordMatches:this.totalKeywordMatches});return this.applyExtractionRules(r,a),{pattern:r,captured:a,consumedTokens:e.position()-t.position,confidence:o}}matchBest(e,r){this.matchCache.clear();let t=[],a=e.position();for(let o of r){let u=e.mark(),s=`${a}:${o.id}`,c;this.matchCache.has(s)?c=this.matchCache.get(s):(c=this.matchPattern(e,o),this.matchCache.set(s,c)),c&&t.push(c),e.reset(u);}if(t.length===0)return null;t.sort((o,u)=>{let s=u.pattern.priority-o.pattern.priority;return s!==0?s:u.confidence-o.confidence});let n=t[0];return this.matchPattern(e,n.pattern),n}matchTokenSequence(e,r,t){let a=r[0],n=a?.type==="literal"&&(a.value==="and"||a.value==="then"||a.alternatives?.includes("and")||a.alternatives?.includes("then"));if(this.currentProfile?.code==="ar"&&!n)for(;e.peek()?.kind==="conjunction";)e.advance();for(let o of r)if(!this.matchPatternToken(e,o,t)){if(this.isOptional(o))continue;return false}return true}matchPatternToken(e,r,t){switch(r.type){case "literal":return this.matchLiteralToken(e,r);case "role":return this.matchRoleToken(e,r,t);case "group":return this.matchGroupToken(e,r,t);default:return false}}matchLiteralToken(e,r){let t=e.peek();if(!t)return false;let a=this.getMatchType(t,r.value);if(a!=="none")return this.totalKeywordMatches++,a==="stem"&&this.stemMatchCount++,e.advance(),true;if(r.alternatives)for(let n of r.alternatives){let o=this.getMatchType(t,n);if(o!=="none")return this.totalKeywordMatches++,o==="stem"&&this.stemMatchCount++,e.advance(),true}return false}matchRoleToken(e,r,t){this.skipNoiseWords(e);let a=e.peek();if(!a)return r.optional||false;let n=this.tryMatchPossessiveExpression(e);if(n)return r.expectedTypes&&r.expectedTypes.length>0&&!r.expectedTypes.includes(n.type)&&!r.expectedTypes.includes("expression")?r.optional||false:(t.set(r.role,n),true);let o=this.tryMatchMethodCallExpression(e);if(o)return r.expectedTypes&&r.expectedTypes.length>0&&!r.expectedTypes.includes(o.type)&&!r.expectedTypes.includes("expression")?r.optional||false:(t.set(r.role,o),true);let u=this.tryMatchPossessiveSelectorExpression(e);if(u)return r.expectedTypes&&r.expectedTypes.length>0&&!Ke(u.type,r.expectedTypes)?r.optional||false:(t.set(r.role,u),true);let s=this.tryMatchPropertyAccessExpression(e);if(s)return r.expectedTypes&&r.expectedTypes.length>0&&!r.expectedTypes.includes(s.type)&&!r.expectedTypes.includes("expression")?r.optional||false:(t.set(r.role,s),true);let c=this.tryMatchSelectorPropertyExpression(e);if(c)return r.expectedTypes&&r.expectedTypes.length>0&&!Ke(c.type,r.expectedTypes)?r.optional||false:(t.set(r.role,c),true);let l=this.tokenToSemanticValue(a);return !l||r.expectedTypes&&r.expectedTypes.length>0&&!r.expectedTypes.includes(l.type)?r.optional||false:(t.set(r.role,l),e.advance(),true)}tryMatchPossessiveExpression(e){let r=e.peek();if(!r||!this.currentProfile)return null;let t=(r.normalized||r.value).toLowerCase(),a=Nt(this.currentProfile,t);if(!a)return null;let n=e.mark();e.advance();let o=e.peek();if(!o)return e.reset(n),null;if(o.kind==="identifier"||o.kind==="keyword"&&!this.isStructuralKeyword(o.value)||o.kind==="selector"&&o.value.startsWith("*")||o.kind==="selector"&&o.value.startsWith("@")||o.kind==="selector"&&o.value.startsWith(".")&&/^\.[a-zA-Z_]\w*/.test(o.value)){e.advance();let u=o.value;o.kind==="selector"&&u.startsWith(".")&&/^\.[a-zA-Z_]\w*/.test(u)&&(u=u.substring(1));let s=u;for(;e.peek()?.kind==="selector"&&e.peek().value.startsWith(".")&&/^\.[a-zA-Z_]\w*/.test(e.peek().value);)s+=e.peek().value,e.advance();let c=e.peek();return c?.kind==="literal"&&c.value.startsWith("(")&&(s+=c.value,e.advance()),Ee(I(a),s)}return e.reset(n),null}isStructuralKeyword(e){return new Set(["into","in","to","from","at","by","with","without","before","after","of","as","on","then","end","else","if","repeat","while","for","toggle","add","remove","put","set","show","hide","increment","decrement","send","trigger","call"]).has(e.toLowerCase())}tryMatchMethodCallExpression(e){let r=e.peek();if(!r||r.kind!=="selector")return null;let t=e.mark();e.advance();let a=e.peek();if(!a||a.kind!=="operator"||a.value!==".")return e.reset(t),null;e.advance();let n=e.peek();if(!n||n.kind!=="identifier")return e.reset(t),null;e.advance();let o=e.peek();if(!o||o.kind!=="punctuation"||o.value!=="(")return e.reset(t),null;e.advance();let u=[];for(;!e.isAtEnd()&&u.length<Q.MAX_METHOD_ARGS;){let c=e.peek();if(!c)break;if(c.kind==="punctuation"&&c.value===")"){e.advance();break}if(c.kind==="punctuation"&&c.value===","){e.advance();continue}u.push(c.value),e.advance();}return {type:"expression",raw:`${r.value}.${n.value}(${u.join(", ")})`}}tryMatchPropertyAccessExpression(e){let r=e.peek();if(!r||r.kind!=="identifier"&&r.kind!=="keyword")return null;let t=e.mark();e.advance();let a=e.peek();if(!a||a.kind!=="operator"||a.value!==".")return e.reset(t),null;e.advance();let n=e.peek();if(!n||n.kind!=="identifier")return e.reset(t),null;e.advance();let o=`${r.value}.${n.value}`,u=1;for(;!e.isAtEnd()&&u<Q.MAX_PROPERTY_DEPTH;){let c=e.peek();if(!c||c.kind!=="operator"||c.value!==".")break;e.advance();let l=e.peek();if(!l||l.kind!=="identifier")break;e.advance(),o+=`.${l.value}`,u++;}let s=e.peek();if(s&&s.kind==="punctuation"&&s.value==="("){e.advance();let c=[],l=0;for(;!e.isAtEnd()&&c.length<Q.MAX_METHOD_ARGS;){let p=e.peek();if(!p)break;if(p.kind==="punctuation"&&p.value===")"){if(l===0){e.advance();break}l--;}if(p.kind==="punctuation"&&p.value==="("&&l++,p.kind==="punctuation"&&p.value===","){e.advance();continue}c.push(p.value),e.advance();}return {type:"expression",raw:`${o}(${c.join(", ")})`}}return {type:"expression",raw:o}}tryMatchPossessiveSelectorExpression(e){let r=e.peek();if(!r||r.kind!=="selector")return null;let t=e.mark();e.advance();let a=e.peek();if(!a||a.kind!=="punctuation"||a.value!=="'s")return e.reset(t),null;e.advance();let n=e.peek();return !n||n.kind!=="selector"&&n.kind!=="identifier"?(e.reset(t),null):(e.advance(),Ee(Z(r.value),n.value))}tryMatchSelectorPropertyExpression(e){let r=e.peek();if(!r||r.kind!=="selector"||!r.value.startsWith("#"))return null;let t=e.mark();e.advance();let a=e.peek();if(!a||a.kind!=="selector"||!a.value.startsWith("."))return e.reset(t),null;let n=e.peek(1);n&&n.kind,e.advance();let o=a.value.slice(1);return Ee(Z(r.value),o)}matchGroupToken(e,r,t){let a=e.mark(),n=new Set(t.keys());if(!this.matchTokenSequence(e,r.tokens,t)){e.reset(a);for(let u of t.keys())n.has(u)||t.delete(u);return r.optional||false}return true}getMatchType(e,r){return e.value===r?"exact":e.normalized===r?"normalized":e.stem===r&&e.stemConfidence!==void 0&&e.stemConfidence>=.7?"stem":e.kind==="keyword"&&e.value.toLowerCase()===r.toLowerCase()?"case-insensitive":"none"}tokenToSemanticValue(e){switch(e.kind){case "selector":return Z(e.value);case "literal":return this.parseLiteralValue(e.value);case "keyword":let r=(e.normalized||e.value).toLowerCase();return Ve(r)?I(r):A(e.normalized||e.value);case "identifier":if(e.value.startsWith(":"))return I(e.value);let t=e.value.toLowerCase();return Ve(t)?I(t):{type:"expression",raw:e.value};case "url":return A(e.value,"string");default:return null}}parseLiteralValue(e){if(e.startsWith('"')||e.startsWith("'")||e.startsWith("`")||e.startsWith("\u300C")){let a=e.slice(1,-1);return A(a,"string")}if(e==="true")return A(true,"boolean");if(e==="false")return A(false,"boolean");let r=e.match(/^(\d+(?:\.\d+)?)(ms|s|m|h)?$/);if(r){let a=parseFloat(r[1]);return r[2]?A(e,"duration"):A(a,"number")}let t=parseFloat(e);return isNaN(t)?A(e,"string"):A(t,"number")}applyExtractionRules(e,r){for(let[t,a]of Object.entries(e.extraction))r.has(t)||(a.value!==void 0?r.set(t,{type:"literal",value:a.value}):a.default&&r.set(t,a.default));}isOptional(e){return e.type!=="literal"&&e.optional===true}skipNoiseWords(e){let r=e.peek();if(!r)return;let t=r.value.toLowerCase();if(Q.ENGLISH_NOISE_WORDS.has(t)){let a=e.mark();e.advance();let n=e.peek();if(n&&(n.kind==="selector"||n.kind==="identifier"))return;e.reset(a);}t==="class"&&e.advance();}extractEventModifiers(e){let r={},t=false;for(;!e.isAtEnd();){let a=e.peek();if(!a||a.kind!=="event-modifier")break;let n=a.metadata;if(!n)break;switch(t=true,n.modifierName){case "once":r.once=true;break;case "debounce":typeof n.value=="number"&&(r.debounce=n.value);break;case "throttle":typeof n.value=="number"&&(r.throttle=n.value);break;case "queue":(n.value==="first"||n.value==="last"||n.value==="all"||n.value==="none")&&(r.queue=n.value);break}e.advance();}return t?r:void 0}};pe.MAX_PROPERTY_DEPTH=10;pe.MAX_METHOD_ARGS=20;pe.ENGLISH_NOISE_WORDS=new Set(["the","a","an"]);var qt=pe,_=new qt;function ee(i,e){return ct(i,e)}function lr(){return lt()}var Wt={ko:{\uD074\uB9AD:"click",\uC785\uB825:"input",\uBCC0\uACBD:"change",\uC81C\uCD9C:"submit",\uD0A4\uB2E4\uC6B4:"keydown",\uD0A4\uC5C5:"keyup",\uB9C8\uC6B0\uC2A4\uC624\uBC84:"mouseover",\uB9C8\uC6B0\uC2A4\uC544\uC6C3:"mouseout",\uB9C8\uC6B0\uC2A4\uB2E4\uC6B4:"mousedown",\uB9C8\uC6B0\uC2A4\uC5C5:"mouseup",\uD3EC\uCEE4\uC2A4:"focus",\uBE14\uB7EC:"blur",\uB85C\uB4DC:"load",\uB9AC\uC0AC\uC774\uC988:"resize",\uC2A4\uD06C\uB864:"scroll"},ja:{\u30AF\u30EA\u30C3\u30AF:"click",\u5165\u529B:"input",\u5909\u66F4:"change",\u9001\u4FE1:"submit",\u30AD\u30FC\u30C0\u30A6\u30F3:"keydown",\u30AD\u30FC\u30A2\u30C3\u30D7:"keyup",\u30AD\u30FC\u30D7\u30EC\u30B9:"keypress",\u30DE\u30A6\u30B9\u30AA\u30FC\u30D0\u30FC:"mouseover",\u30DE\u30A6\u30B9\u30A2\u30A6\u30C8:"mouseout",\u30DE\u30A6\u30B9\u62BC\u4E0B:"mousedown",\u30DE\u30A6\u30B9\u89E3\u653E:"mouseup",\u30D5\u30A9\u30FC\u30AB\u30B9:"focus",\u30D6\u30E9\u30FC:"blur",\u30ED\u30FC\u30C9:"load",\u8AAD\u307F\u8FBC\u307F:"load",\u30B5\u30A4\u30BA\u5909\u66F4:"resize",\u30B9\u30AF\u30ED\u30FC\u30EB:"scroll"},ar:{\u0627\u0644\u0646\u0642\u0631:"click",\u0646\u0642\u0631:"click",\u0627\u0644\u0625\u062F\u062E\u0627\u0644:"input",\u0625\u062F\u062E\u0627\u0644:"input",\u0627\u0644\u062A\u063A\u064A\u064A\u0631:"change",\u062A\u063A\u064A\u064A\u0631:"change",\u0627\u0644\u0625\u0631\u0633\u0627\u0644:"submit",\u0625\u0631\u0633\u0627\u0644:"submit","\u0636\u063A\u0637 \u0627\u0644\u0645\u0641\u062A\u0627\u062D":"keydown","\u0631\u0641\u0639 \u0627\u0644\u0645\u0641\u062A\u0627\u062D":"keyup","\u062A\u0645\u0631\u064A\u0631 \u0627\u0644\u0645\u0627\u0648\u0633":"mouseover",\u0627\u0644\u062A\u0631\u0643\u064A\u0632:"focus",\u062A\u062D\u0645\u064A\u0644:"load",\u062A\u0645\u0631\u064A\u0631:"scroll"},es:{clic:"click",click:"click",entrada:"input",cambio:"change",env\u00EDo:"submit",enviar:"submit","tecla abajo":"keydown","tecla arriba":"keyup","rat\xF3n encima":"mouseover","rat\xF3n fuera":"mouseout",enfoque:"focus",desenfoque:"blur",carga:"load",desplazamiento:"scroll"},tr:{t\u0131klama:"click",t\u0131kla:"click",t\u0131k:"click",giri\u015F:"input",girdi:"input",de\u011Fi\u015Fiklik:"change",de\u011Fi\u015Fim:"change",g\u00F6nderme:"submit",g\u00F6nder:"submit",tu\u015Fbasma:"keydown",tu\u015Fb\u0131rakma:"keyup",fare_bas:"mousedown",fare_b\u0131rak:"mouseup",farei\u00E7inde:"mouseover",fared\u0131\u015F\u0131nda:"mouseout",odaklanma:"focus",odak:"focus",bulan\u0131kl\u0131k:"blur",y\u00FCkleme:"load",y\u00FCkle:"load",boyut_de\u011Fi\u015Ftir:"resize",kayd\u0131rma:"scroll"},pt:{clique:"click",clicar:"click",click:"click",entrada:"input",inserir:"input",mudan\u00E7a:"change",mudanca:"change",alterar:"change",envio:"submit",enviar:"submit","tecla baixo":"keydown","tecla cima":"keyup","pressionar tecla":"keydown","soltar tecla":"keyup","mouse sobre":"mouseover","mouse fora":"mouseout",foco:"focus",focar:"focus",desfoque:"blur",desfocar:"blur",carregar:"load",carregamento:"load",rolagem:"scroll",rolar:"scroll"},zh:{\u70B9\u51FB:"click",\u5355\u51FB:"click",\u53CC\u51FB:"dblclick",\u8F93\u5165:"input",\u6539\u53D8:"change",\u53D8\u5316:"change",\u53D8\u66F4:"change",\u63D0\u4EA4:"submit",\u53D1\u9001:"submit",\u6309\u952E:"keydown",\u952E\u5165:"keydown",\u677E\u952E:"keyup",\u9F20\u6807\u8FDB\u5165:"mouseover",\u9F20\u6807\u79FB\u5165:"mouseover",\u9F20\u6807\u79BB\u5F00:"mouseout",\u9F20\u6807\u79FB\u51FA:"mouseout",\u7126\u70B9:"focus",\u805A\u7126:"focus",\u5931\u7126:"blur",\u6A21\u7CCA:"blur",\u52A0\u8F7D:"load",\u8F7D\u5165:"load",\u6EDA\u52A8:"scroll"},fr:{clic:"click",cliquer:"click",click:"click",saisie:"input",entr\u00E9e:"input",changement:"change",changer:"change",soumettre:"submit",soumission:"submit",envoi:"submit","touche bas":"keydown","touche haut":"keyup","souris dessus":"mouseover","souris dehors":"mouseout",focus:"focus",focaliser:"focus",d\u00E9focus:"blur",d\u00E9focaliser:"blur",chargement:"load",charger:"load",d\u00E9filement:"scroll",d\u00E9filer:"scroll"},de:{klick:"click",klicken:"click",click:"click",eingabe:"input",eingeben:"input",\u00E4nderung:"change",\u00E4ndern:"change",absenden:"submit",einreichen:"submit","taste runter":"keydown","taste hoch":"keyup","maus \xFCber":"mouseover","maus raus":"mouseout",fokus:"focus",fokussieren:"focus",defokussieren:"blur",unsch\u00E4rfe:"blur",laden:"load",ladung:"load",scrollen:"scroll",bl\u00E4ttern:"scroll"},id:{klik:"click",click:"click",masukan:"input",input:"input",ubah:"change",perubahan:"change",kirim:"submit","tekan tombol":"keydown","lepas tombol":"keyup","mouse masuk":"mouseover","mouse keluar":"mouseout",fokus:"focus",blur:"blur",muat:"load",memuat:"load",gulir:"scroll",menggulir:"scroll"},bn:{\u0995\u09CD\u09B2\u09BF\u0995:"click",\u0987\u09A8\u09AA\u09C1\u099F:"input",\u099C\u09AE\u09BE:"submit",\u09B2\u09CB\u09A1:"load",\u09B8\u09CD\u0995\u09CD\u09B0\u09CB\u09B2:"scroll",\u09B0\u09BF\u09B8\u09BE\u0987\u099C:"resize",\u099D\u09BE\u09AA\u09B8\u09BE:"blur",\u09AB\u09CB\u0995\u09BE\u09B8:"focus",\u09AA\u09B0\u09BF\u09AC\u09B0\u09CD\u09A4\u09A8:"change"},qu:{click:"click","\xF1it'iy":"click",\u00F1itiy:"click",yaykuchiy:"input",yaykuy:"input",tikray:"change","t'ikray":"change",apachiy:"submit",kachay:"submit","llave uray":"keydown","llave hawa":"keyup","q'away":"focus",qhaway:"focus",paqariy:"blur","mana q'away":"blur",cargay:"load",apakuy:"load",apamuy:"load",kunray:"scroll",muyuy:"scroll",hatun_kay:"resize"},sw:{bofya:"click",click:"click",kubofya:"click",ingiza:"input",kubadilisha:"change",mabadiliko:"change",tuma:"submit",kutuma:"submit","bonyeza chini":"keydown","bonyeza juu":"keyup","panya juu":"mouseover","panya nje":"mouseout",lenga:"focus",kulenga:"focus",blur:"blur",pakia:"load",kupakia:"load",sogeza:"scroll",kusogeza:"scroll"}};var Ut={action:"toggle",description:"Toggle a class or attribute on/off",category:"dom-class",primaryRole:"patient",roles:[{role:"patient",description:"The class or attribute to toggle",required:true,expectedTypes:["selector"],selectorKinds:["class","attribute"],svoPosition:1,sovPosition:2},{role:"destination",description:"The target element (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:2,sovPosition:1}],errorCodes:["MISSING_ARGUMENT","NO_VALID_CLASS_NAMES","INVALID_CSS_PROPERTY"],preconditions:[{condition:"Command has at least one argument",errorCode:"MISSING_ARGUMENT",message:"toggle command requires an argument"},{condition:"Class names are valid CSS identifiers",errorCode:"NO_VALID_CLASS_NAMES",message:"toggle command: no valid class names found"}],recoveryHints:{MISSING_ARGUMENT:"Add a class selector (.classname) or attribute to toggle",NO_VALID_CLASS_NAMES:"Ensure class names start with a dot (.) and are valid CSS identifiers",INVALID_CSS_PROPERTY:"Check CSS property name syntax (use kebab-case)"}},Ht={action:"add",description:"Add a class or attribute to an element",category:"dom-class",primaryRole:"patient",roles:[{role:"patient",description:"The class or attribute to add",required:true,expectedTypes:["selector"],svoPosition:1,sovPosition:2},{role:"destination",description:"The target element (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:2,sovPosition:1,markerOverride:{en:"to"}}],errorCodes:["MISSING_ARGUMENT","NO_VALID_CLASS_NAMES","PROPERTY_REQUIRES_VALUE"],preconditions:[{condition:"Command has at least one argument",errorCode:"MISSING_ARGUMENT",message:"add command requires an argument"}],recoveryHints:{MISSING_ARGUMENT:"Add a class selector (.classname) or attribute to add",NO_VALID_CLASS_NAMES:"Ensure class names start with a dot (.) and are valid CSS identifiers",PROPERTY_REQUIRES_VALUE:"When adding a property (*prop), provide a value argument"}},Gt={action:"remove",description:"Remove a class or attribute from an element",category:"dom-class",primaryRole:"patient",targetRole:"source",roles:[{role:"patient",description:"The class or attribute to remove",required:true,expectedTypes:["selector"],svoPosition:1,sovPosition:2},{role:"source",description:"The element to remove from (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:2,sovPosition:1}],errorCodes:["MISSING_ARGUMENT","NO_VALID_CLASS_NAMES"],preconditions:[{condition:"Command has at least one argument",errorCode:"MISSING_ARGUMENT",message:"remove command requires an argument"}],recoveryHints:{MISSING_ARGUMENT:"Add a class selector (.classname) or attribute to remove",NO_VALID_CLASS_NAMES:"Ensure class names start with a dot (.) and are valid CSS identifiers"}},Yt={action:"put",description:"Put content into a target element or variable",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The content to put",required:true,expectedTypes:["literal","selector","reference","expression"],svoPosition:1,sovPosition:1},{role:"destination",description:"Where to put the content",required:true,expectedTypes:["selector","reference"],svoPosition:2,sovPosition:2,markerOverride:{en:"into"},markerVariants:{en:["before","after"]},methodCarrier:"method"}],errorCodes:["MISSING_ARGUMENTS","MISSING_CONTENT","MISSING_POSITION","INVALID_POSITION","NO_TARGET","NO_ELEMENTS"],preconditions:[{condition:"Command has content and position arguments",errorCode:"MISSING_ARGUMENTS",message:"put requires arguments"},{condition:"Content to put is specified",errorCode:"MISSING_CONTENT",message:"put requires content"},{condition:"Position keyword is specified (into, before, after, etc.)",errorCode:"MISSING_POSITION",message:"put requires position keyword"}],recoveryHints:{MISSING_ARGUMENTS:"Use syntax: put <content> into/before/after <target>",MISSING_CONTENT:"Add content to put (string, element, or expression)",MISSING_POSITION:"Add position keyword: into, before, after, at start of, at end of",INVALID_POSITION:"Valid positions: into, before, after, at start of, at end of",NO_TARGET:'Ensure target element exists or use "me" reference',NO_ELEMENTS:"Check that the selector matches existing elements"}},Jt={action:"set",description:"Set a property or variable to a value",category:"variable",primaryRole:"destination",roles:[{role:"destination",description:"The property or variable to set",required:true,expectedTypes:["selector","reference","expression"],svoPosition:1,sovPosition:1,markerOverride:{en:"",ja:"\u3092",ko:"\uB97C",tr:"i",ar:"",sw:"",tl:"",bn:"\u0995\u09C7",qu:"ta"}},{role:"patient",description:"The value to set",required:true,expectedTypes:["literal","expression","reference"],svoPosition:2,sovPosition:2,markerOverride:{en:"to",es:"a",pt:"para",fr:"\xE0",de:"auf",id:"ke",ja:"\u306B",ko:"\uC73C\uB85C",tr:"e",ar:"\u0625\u0644\u0649",sw:"kwenye",tl:"sa",bn:"\u09A4\u09C7",qu:"man"}}],errorCodes:["MISSING_TARGET","INVALID_TARGET","MISSING_VALUE","INVALID_SYNTAX"],preconditions:[{condition:"Command has a target variable or property",errorCode:"MISSING_TARGET",message:"set command requires a target"},{condition:"Target is a valid variable or property reference",errorCode:"INVALID_TARGET",message:"set command target must be a string or object literal"},{condition:'Value is specified with "to" keyword',errorCode:"MISSING_VALUE",message:'set command requires a value (use "to" keyword)'}],recoveryHints:{MISSING_TARGET:"Add a target: set :variable to value OR set element.property to value",INVALID_TARGET:'Use local variable (:name), element property (el.prop), or "the X of Y" syntax',MISSING_VALUE:'Add "to <value>" to specify what to set',INVALID_SYNTAX:"Use syntax: set <target> to <value>"}},Xt={action:"show",description:"Make an element visible",category:"dom-visibility",primaryRole:"patient",roles:[{role:"patient",description:"The element to show",required:true,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:1,sovPosition:1},{role:"style",description:"Animation style (fade, slide, etc.)",required:false,expectedTypes:["literal"],svoPosition:2,sovPosition:2}]},Qt={action:"hide",description:"Make an element invisible",category:"dom-visibility",primaryRole:"patient",roles:[{role:"patient",description:"The element to hide",required:true,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:1,sovPosition:1},{role:"style",description:"Animation style (fade, slide, etc.)",required:false,expectedTypes:["literal"],svoPosition:2,sovPosition:2}]},Zt={action:"on",description:"Handle an event",category:"event",primaryRole:"event",hasBody:true,roles:[{role:"event",description:"The event to handle",required:true,expectedTypes:["literal"],svoPosition:1,sovPosition:2},{role:"source",description:"The element to listen on (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:2,sovPosition:1}]},ei={action:"trigger",description:"Trigger/dispatch an event",category:"event",primaryRole:"event",roles:[{role:"event",description:"The event to trigger (supports namespaced events like draggable:start)",required:true,expectedTypes:["literal","expression"],svoPosition:1,sovPosition:2},{role:"destination",description:"The target element (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:2,sovPosition:1}]},ri={action:"wait",description:"Wait for a duration or event",category:"async",primaryRole:"duration",roles:[{role:"duration",description:"Duration or event to wait for",required:true,expectedTypes:["literal","expression"],svoPosition:1,sovPosition:1}]},ti={action:"fetch",description:"Fetch data from a URL",category:"async",primaryRole:"source",roles:[{role:"source",description:"The URL to fetch from",required:true,expectedTypes:["literal","expression"],svoPosition:1,sovPosition:1,renderOverride:{en:""}},{role:"responseType",description:"Response format (json, text, html, blob, etc.)",required:false,expectedTypes:["literal","expression"],svoPosition:2,sovPosition:2,markerOverride:{en:"as"}},{role:"method",description:"HTTP method (GET, POST, etc.)",required:false,expectedTypes:["literal"],svoPosition:3,sovPosition:3},{role:"destination",description:"Where to store the result",required:false,expectedTypes:["selector","reference"],svoPosition:4,sovPosition:4}]},ii={action:"increment",description:"Increment a numeric value",category:"variable",primaryRole:"patient",roles:[{role:"patient",description:"The value to increment",required:true,expectedTypes:["selector","reference","expression"],svoPosition:1,sovPosition:1},{role:"quantity",description:"Amount to increment by (defaults to 1)",required:false,expectedTypes:["literal"],default:{type:"literal",value:1,dataType:"number"},svoPosition:2,sovPosition:2,markerOverride:{en:"by"}}]},ai={action:"decrement",description:"Decrement a numeric value",category:"variable",primaryRole:"patient",roles:[{role:"patient",description:"The value to decrement",required:true,expectedTypes:["selector","reference","expression"],svoPosition:1,sovPosition:1},{role:"quantity",description:"Amount to decrement by (defaults to 1)",required:false,expectedTypes:["literal"],default:{type:"literal",value:1,dataType:"number"},svoPosition:2,sovPosition:2,markerOverride:{en:"by"}}]},ni={action:"append",description:"Append content to an element",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The content to append",required:true,expectedTypes:["literal","selector","expression"],svoPosition:1,sovPosition:2},{role:"destination",description:"The element to append to",required:true,expectedTypes:["selector","reference"],svoPosition:2,sovPosition:1,markerOverride:{en:"to"}}]},oi={action:"prepend",description:"Prepend content to an element",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The content to prepend",required:true,expectedTypes:["literal","selector","expression"],svoPosition:1,sovPosition:2},{role:"destination",description:"The element to prepend to",required:true,expectedTypes:["selector","reference"],svoPosition:2,sovPosition:1,markerOverride:{en:"to"}}]},ui={action:"log",description:"Log a value to the console",category:"variable",primaryRole:"patient",roles:[{role:"patient",description:"The value to log",required:true,expectedTypes:["literal","selector","reference","expression"],svoPosition:1,sovPosition:1}]},si={action:"get",description:"Get a value from a source",category:"variable",primaryRole:"source",roles:[{role:"source",description:"The source to get from",required:true,expectedTypes:["selector","reference","expression"],svoPosition:1,sovPosition:2,markerOverride:{en:"",es:"",pt:"",fr:"",de:"",ja:"\u3092",zh:"",ko:"\uB97C",ar:"\u0639\u0644\u0649",tr:"i",id:"",sw:"",tl:"",bn:"\u0995\u09C7",qu:"ta"}},{role:"destination",description:"Where to store the result (optional)",required:false,expectedTypes:["reference"],svoPosition:2,sovPosition:1}]},li={action:"take",description:"Take content from a source element",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The class or element to take",required:true,expectedTypes:["selector"],svoPosition:1,sovPosition:2},{role:"source",description:"The element to take from (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:2,sovPosition:1}]},ci={action:"make",description:"Create a new element",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The element type or selector to create",required:true,expectedTypes:["literal","selector"],svoPosition:1,sovPosition:1}]},mi={action:"halt",description:"Halt/stop execution or event propagation",category:"control-flow",primaryRole:"patient",roles:[{role:"patient",description:"What to halt (event, default, bubbling, etc.)",required:false,expectedTypes:["literal","reference","expression"],svoPosition:1,sovPosition:1}]},pi={action:"settle",description:"Wait for animations/transitions to settle",category:"async",primaryRole:"patient",roles:[{role:"patient",description:"The element to settle (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:1,sovPosition:1}]},di={action:"throw",description:"Throw an error",category:"control-flow",primaryRole:"patient",roles:[{role:"patient",description:"The error message or object to throw",required:true,expectedTypes:["literal","expression"],svoPosition:1,sovPosition:1}]},yi={action:"send",description:"Send an event to an element",category:"event",primaryRole:"event",roles:[{role:"event",description:"The event to send",required:true,expectedTypes:["literal","expression"],svoPosition:1,sovPosition:2},{role:"destination",description:"The target element (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:2,sovPosition:1,markerOverride:{en:"to",ja:"\u306B",ar:"\u0625\u0644\u0649",es:"a",ko:"\uC5D0\uAC8C",zh:"\u5230",tr:"-e",pt:"para",fr:"\xE0",de:"an",id:"ke",qu:"-man",sw:"kwa"}}]},fi={action:"if",description:"Conditional execution",category:"control-flow",primaryRole:"condition",hasBody:true,roles:[{role:"condition",description:"The condition to evaluate",required:true,expectedTypes:["expression"],svoPosition:1,sovPosition:1}]},hi={action:"unless",description:"Negated conditional execution (executes when condition is false)",category:"control-flow",primaryRole:"condition",hasBody:true,roles:[{role:"condition",description:"The condition to evaluate (body executes when false)",required:true,expectedTypes:["expression"],svoPosition:1,sovPosition:1}]},vi={action:"else",description:"Else branch of conditional",category:"control-flow",primaryRole:"patient",hasBody:true,roles:[]},gi={action:"repeat",description:"Repeat a block of commands",category:"control-flow",primaryRole:"loopType",hasBody:true,roles:[{role:"loopType",description:"Loop variant: forever, times, for, while, until, until-event",required:true,expectedTypes:["literal"],svoPosition:0,sovPosition:0},{role:"quantity",description:"Number of times to repeat",required:false,expectedTypes:["literal","expression"],svoPosition:1,sovPosition:1},{role:"event",description:"Event to wait for (terminates loop)",required:false,expectedTypes:["literal","expression"],svoPosition:2,sovPosition:2},{role:"source",description:"Element to listen for event on",required:false,expectedTypes:["selector","reference"],svoPosition:3,sovPosition:3}],notes:'Can also use "repeat forever", "repeat until condition", or "repeat until event X from Y"'},Ei={action:"for",description:"Iterate over a collection",category:"control-flow",primaryRole:"patient",hasBody:true,roles:[{role:"patient",description:"The iteration variable",required:true,expectedTypes:["reference"],svoPosition:1,sovPosition:2},{role:"source",description:"The collection to iterate over",required:true,expectedTypes:["selector","reference","expression"],svoPosition:2,sovPosition:1,markerOverride:{en:"in"}}]},zi={action:"while",description:"Loop while condition is true",category:"control-flow",primaryRole:"condition",hasBody:true,roles:[{role:"condition",description:"The condition to check",required:true,expectedTypes:["expression"],svoPosition:1,sovPosition:1}]},ki={action:"continue",description:"Continue to next loop iteration",category:"control-flow",primaryRole:"patient",roles:[]},bi={action:"go",description:"Navigate to a URL",category:"navigation",primaryRole:"destination",roles:[{role:"destination",description:"The URL to navigate to",required:true,expectedTypes:["literal","expression"],svoPosition:1,sovPosition:1,markerOverride:{en:"to"},renderOverride:{en:""}}]},Ai={action:"transition",description:"Transition an element with animation",category:"dom-visibility",primaryRole:"patient",roles:[{role:"patient",description:"The property to transition (opacity, *background-color, etc.)",required:true,expectedTypes:["literal"],svoPosition:1,sovPosition:2,markerOverride:{en:"",ar:"",tl:"",sw:""}},{role:"goal",description:"The target value to transition to",required:true,expectedTypes:["literal","expression"],svoPosition:2,sovPosition:3,markerOverride:{en:"to",ar:"\u0625\u0644\u0649",tl:"sa",sw:"kwenye",bn:"\u09A4\u09C7",qu:"man",es:"a",pt:"para",fr:"\xE0",de:"auf",ja:"\u306B",ko:"\uC73C\uB85C",tr:"e",id:"ke"}},{role:"destination",description:"The target element (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:3,sovPosition:1},{role:"duration",description:"Transition duration (over 500ms, for 2 seconds)",required:false,expectedTypes:["literal"],svoPosition:4,sovPosition:4,markerOverride:{en:"over"}},{role:"style",description:"Easing function (ease-in, linear, etc.)",required:false,expectedTypes:["literal"],svoPosition:5,sovPosition:5}]},Ci={action:"clone",description:"Clone an element",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The element to clone",required:true,expectedTypes:["selector","reference"],svoPosition:1,sovPosition:2},{role:"destination",description:"Where to put the clone",required:false,expectedTypes:["selector","reference"],svoPosition:2,sovPosition:1,markerOverride:{en:"into"}}]},wi={action:"focus",description:"Focus an element",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The element to focus (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:1,sovPosition:1}]},Di={action:"blur",description:"Remove focus from an element",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The element to blur (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:1,sovPosition:1}]},xi={action:"empty",description:"Remove all children from an element (sets innerHTML to empty)",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The element to empty (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:1,sovPosition:1}]},Si={action:"open",description:"Open a dialog, details element, or popover",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The element to open (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:2,sovPosition:2},{role:"style",description:"Open-mode variant (modal / non-modal) for <dialog>",required:false,expectedTypes:["literal","expression"],svoPosition:1,sovPosition:1,markerOverride:{en:"as"}}]},Bi={action:"close",description:"Close a dialog, details element, or popover",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The element to close (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:1,sovPosition:1}]},Ti={action:"select",description:"Select the contents of a text field or DOM element",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The element whose contents to select (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:1,sovPosition:1}]},Fi={action:"clear",description:"Clear a variable, local, or input element",category:"variable",primaryRole:"patient",roles:[{role:"patient",description:"The variable or element to clear (defaults to me)",required:false,expectedTypes:["selector","reference","expression"],default:{type:"reference",value:"me"},svoPosition:1,sovPosition:1}]},Pi={action:"reset",description:"Reset a <form> element to its default values",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The form element to reset (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:1,sovPosition:1}]},Ri={action:"breakpoint",description:"Drop into the debugger",category:"control-flow",primaryRole:"patient",roles:[]},_i={action:"call",description:"Call a function",category:"control-flow",primaryRole:"patient",roles:[{role:"patient",description:"The function to call",required:true,expectedTypes:["expression","reference"],svoPosition:1,sovPosition:1}]},Oi={action:"return",description:"Return a value from a function",category:"control-flow",primaryRole:"patient",roles:[{role:"patient",description:"The value to return",required:false,expectedTypes:["literal","expression","reference"],svoPosition:1,sovPosition:1}]},Ni={action:"js",description:"Execute raw JavaScript code",category:"control-flow",primaryRole:"patient",hasBody:true,roles:[{role:"patient",description:"The JavaScript code to execute",required:false,expectedTypes:["expression"],svoPosition:1,sovPosition:1}]},Mi={action:"async",description:"Execute commands asynchronously",category:"async",primaryRole:"patient",hasBody:true,roles:[]},Ii={action:"tell",description:"Execute commands in context of another element",category:"control-flow",primaryRole:"destination",hasBody:true,roles:[{role:"destination",description:"The element to tell",required:true,expectedTypes:["selector","reference"],svoPosition:1,sovPosition:1,markerOverride:{en:""}}]},Li={action:"default",description:"Set a default value for a variable",category:"variable",primaryRole:"destination",roles:[{role:"destination",description:"The variable to set default for",required:true,expectedTypes:["reference"],svoPosition:1,sovPosition:1,markerOverride:{en:"",ar:"",tl:"",sw:"",bn:"\u0995\u09C7",qu:"ta"}},{role:"patient",description:"The default value",required:true,expectedTypes:["literal","expression"],svoPosition:2,sovPosition:2,markerOverride:{en:"to",ar:"\u0625\u0644\u0649",tl:"sa",sw:"kwenye",bn:"\u09A4\u09C7",qu:"man"}}]},ji={action:"init",description:"Initialization block that runs once",category:"control-flow",primaryRole:"patient",hasBody:true,roles:[]},$i={action:"behavior",description:"Define a reusable behavior",category:"control-flow",primaryRole:"patient",hasBody:true,roles:[{role:"patient",description:"The behavior name (PascalCase identifier)",required:true,expectedTypes:["literal","reference","expression"],svoPosition:1,sovPosition:1}]},Vi={action:"install",description:"Install a behavior on an element",category:"control-flow",primaryRole:"patient",roles:[{role:"patient",description:"The behavior name to install",required:true,expectedTypes:["literal","reference","expression"],svoPosition:1,sovPosition:2},{role:"destination",description:"Element to install on (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:2,sovPosition:1}]},qi={action:"measure",description:"Measure element dimensions (x, y, width, height, etc.)",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"Property to measure (x, y, width, height, top, left, etc.)",required:false,expectedTypes:["literal","expression"],svoPosition:1,sovPosition:1},{role:"source",description:"Element to measure (defaults to me)",required:false,expectedTypes:["selector","reference"],default:{type:"reference",value:"me"},svoPosition:2,sovPosition:2,markerOverride:{en:"of"}}]},Wi={action:"swap",description:"Swap DOM content using various strategies (innerHTML, outerHTML, delete, etc.)",category:"dom-content",primaryRole:"destination",roles:[{role:"method",description:"The swap strategy (innerHTML, outerHTML, beforebegin, afterend, delete)",required:false,expectedTypes:["literal"],svoPosition:1,sovPosition:3,markerOverride:{en:""}},{role:"destination",description:"The element to swap content in/for",required:true,expectedTypes:["selector","reference"],svoPosition:2,sovPosition:1,markerOverride:{en:"of"}},{role:"patient",description:"The content to swap in (optional for delete)",required:false,expectedTypes:["literal","expression","selector"],svoPosition:3,sovPosition:2,markerOverride:{en:"with"}}]},Ki={action:"morph",description:"Morph an element into another using DOM diffing",category:"dom-content",primaryRole:"destination",roles:[{role:"destination",description:"The element to morph",required:true,expectedTypes:["selector","reference"],svoPosition:1,sovPosition:1,markerOverride:{en:""}},{role:"patient",description:"The target content/element to morph into",required:true,expectedTypes:["literal","expression","selector"],svoPosition:2,sovPosition:2,markerOverride:{en:"to"}}]},Ui={action:"beep",description:"Debug output for expressions with type information",category:"variable",primaryRole:"patient",roles:[{role:"patient",description:"The expression(s) to debug",required:false,expectedTypes:["literal","selector","reference","expression"],svoPosition:1,sovPosition:1}]},Hi={action:"break",description:"Exit from the current loop",category:"control-flow",primaryRole:"patient",roles:[]},Gi={action:"copy",description:"Copy text or element content to the clipboard",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The text or element to copy",required:true,expectedTypes:["literal","selector","reference","expression"],svoPosition:1,sovPosition:1}]},Yi={action:"exit",description:"Exit from the current event handler",category:"control-flow",primaryRole:"patient",roles:[]},Ji={action:"pick",description:"Select a random element from a collection",category:"variable",primaryRole:"patient",roles:[{role:"patient",description:"The items to pick from",required:true,expectedTypes:["literal","expression","reference"],svoPosition:1,sovPosition:1},{role:"source",description:'The array to pick from (with "from" keyword)',required:false,expectedTypes:["reference","expression"],svoPosition:2,sovPosition:2}]},Xi={action:"scroll",description:"Scroll the viewport to a target element",category:"navigation",primaryRole:"destination",argSkipTokens:["of","the","top","bottom","middle","center","nearest","left","right","smoothly","instantly"],roles:[{role:"destination",description:"The element to scroll to",required:true,expectedTypes:["selector","reference"],svoPosition:1,sovPosition:1,markerOverride:{en:"to"}}]},cr={en:"url",es:"url",pt:"url",fr:"url",de:"url",it:"url",ja:"url",ko:"url",zh:"url",ar:"url",he:"url",hi:"url",bn:"url",tr:"url",ru:"url",uk:"url",pl:"url",id:"url",vi:"url",th:"url",ms:"url",tl:"url",sw:"url",qu:"url"},Qi={en:"partials in",es:"partials in",pt:"partials in",fr:"partials in",de:"partials in",it:"partials in",ja:"partials in",ko:"partials in",zh:"partials in",ar:"partials in",he:"partials in",hi:"partials in",bn:"partials in",tr:"partials in",ru:"partials in",uk:"partials in",pl:"partials in",id:"partials in",vi:"partials in",th:"partials in",ms:"partials in",tl:"partials in",sw:"partials in",qu:"partials in"},Zi={action:"push",description:"Push a URL onto the browser history",category:"navigation",primaryRole:"patient",roles:[{role:"patient",description:"The URL to push (after the `url` keyword)",required:true,expectedTypes:["literal","expression"],svoPosition:1,sovPosition:1,markerOverride:cr}]},ea={action:"replace",description:"Replace the current browser history entry with a URL",category:"navigation",primaryRole:"patient",roles:[{role:"patient",description:"The URL to replace with (after the `url` keyword)",required:true,expectedTypes:["literal","expression"],svoPosition:1,sovPosition:1,markerOverride:cr}]},ra={action:"process",description:"Process hx-partial markup in HTML content",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The HTML content (string, element, or response) to process",required:true,expectedTypes:["literal","reference","expression"],svoPosition:1,sovPosition:1,markerOverride:Qi}]},ta={action:"render",description:"Render a template with optional variables",category:"dom-content",primaryRole:"patient",roles:[{role:"patient",description:"The template to render",required:true,expectedTypes:["selector","reference","expression"],svoPosition:1,sovPosition:2},{role:"style",description:"Variables to pass to the template (with keyword)",required:false,expectedTypes:["expression","reference"],svoPosition:2,sovPosition:1}]},mr={toggle:Ut,add:Ht,remove:Gt,put:Yt,set:Jt,show:Xt,hide:Qt,on:Zt,trigger:ei,wait:ri,fetch:ti,increment:ii,decrement:ai,append:ni,prepend:oi,log:ui,get:si,take:li,make:ci,halt:mi,settle:pi,throw:di,send:yi,if:fi,unless:hi,else:vi,repeat:gi,for:Ei,while:zi,continue:ki,go:bi,scroll:Xi,push:Zi,replace:ea,process:ra,transition:Ai,clone:Ci,focus:wi,blur:Di,empty:xi,open:Si,close:Bi,select:Ti,clear:Fi,reset:Pi,breakpoint:Ri,call:_i,return:Oi,js:Ni,async:Mi,tell:Ii,default:Li,init:ji,behavior:$i,install:Vi,measure:qi,swap:Wi,morph:Ki,beep:Ui,break:Hi,copy:Gi,exit:Yi,pick:Ji,render:ta,compound:{action:"compound",description:"A compound node representing chained statements",primaryRole:"patient",category:"control-flow",hasBody:true,roles:[]}};function ia(){return Object.values(mr).filter(i=>i.roles.length>0)}typeof process<"u"&&process.env.NODE_ENV!=="production"&&Promise.resolve().then(()=>(nt(),rr)).then(({validateAllSchemas:i,formatValidationResults:e})=>{let r=i(mr);r.size>0&&(console.warn("[SCHEMA VALIDATION] Found issues in command schemas:"),console.warn(e(r)),console.warn(`
|
|
3
|
+
These warnings help identify potential schema design issues.`),console.warn("Fix them to improve type inference and avoid runtime bugs."));}).catch(i=>{console.debug("Schema validation skipped:",i);});var Ye=class extends Error{constructor(i,e,r,t){super(i),this.name="SemanticParseError",this.language=e,this.input=r,this.diagnostics=t;}};function B(i,e,r){return {message:i,severity:e,source:"semantic-parser",...r&&{code:r}}}function me(i,e){return e.length===0?i:{...i,diagnostics:e}}var H=class T{parse(e,r){let{modifiers:t,remainingInput:a}=this.extractStandaloneModifiers(e,r),n=a||e,o=[],u=ee(n,r),s=W(r);if(s.length===0)throw new Ye(`No patterns available for language: ${r}`,r,n,[B(`No patterns registered for language '${r}'`,"error","no-patterns")]);let c=[...s].sort((h,g)=>g.priority-h.priority),l=c.filter(h=>h.command==="on"),m=_.matchBest(u,l);if(m){o.push(B(`event pattern matched: ${m.pattern.id} (confidence: ${m.confidence.toFixed(2)})`,"info","pattern-match"));let h=this.buildEventHandler(m,u,r),g=t?this.applyModifiers(h,t):h;return me(g,o)}o.push(B(`event patterns: ${l.length} tried, no match`,"info","stage-event"));let p=c.filter(h=>h.command!=="on"),d=_.matchBest(u,p);if(d)return o.push(B(`command pattern matched: ${d.pattern.id} (confidence: ${d.confidence.toFixed(2)})`,"info","pattern-match")),me(this.buildCommand(d,r),o);o.push(B(`command patterns: ${p.length} tried, no match`,"info","stage-command"));let y=this.trySOVEventExtraction(n,r,c);if(y){o.push(B("SOV event extraction succeeded","info","stage-sov"));let h=t?this.applyModifiers(y,t):y;return me(h,o)}o.push(B("SOV event extraction: no event keyword found","info","stage-sov"));let v=this.tryCompoundCommandParsing(u,p,r);if(v)return o.push(B("compound command parsing succeeded","info","stage-compound")),me(v,o);throw o.push(B("compound parsing: no then-keywords or no command matches","info","stage-compound")),o.push(B(`all parse stages exhausted for "${n}"`,"error","parse-failed")),new Ye(`Could not parse input in ${r}: ${n}`,r,n,o)}canParse(e,r){try{return this.parse(e,r),!0}catch{return false}}supportedLanguages(){return lr()}buildCommand(e,r){if(!e)throw new Error("No match to build command from");let t={};for(let[a,n]of e.captured)t[a]=n;return ce(e.pattern.command,t,{sourceLanguage:r,patternId:e.pattern.id,confidence:e.confidence})}buildEventHandler(e,r,t){if(!e)throw new Error("No match to build event handler from");let a=e.captured.get("event");if(!a)throw new Error("Event handler pattern matched but no event captured");let n=_.extractEventModifiers(r),o=this.extractOrConjunctionEvents(r,t),u=a;o.length>0&&a.type==="literal"&&(u={type:"literal",value:[String(a.value),...o.map(m=>String("value"in m?m.value:""))].join(" or ")});let s,c=e.captured.get("action");if(c&&c.type==="literal"){let l=c.value,m={};for(let[y,v]of e.captured)y!=="event"&&y!=="action"&&y!=="continues"&&(m[y]=v);let p=ce(l,m,{sourceLanguage:t,patternId:e.pattern.id,confidence:e.confidence}),d=e.captured.get("continues");if(d&&d.type==="literal"&&d.value==="then"){let y=W(t).filter(g=>g.command!=="on").sort((g,z)=>z.priority-g.priority),v=W(t).filter(g=>g.id.startsWith("grammar-")&&g.id.includes("-continuation")).sort((g,z)=>z.priority-g.priority),h=this.parseBodyWithGrammarPatterns(r,y,v,t);h.length>0?s=[p,...h]:s=[p];}else s=[p];}else {let l=W(t).filter(m=>m.command!=="on").sort((m,p)=>p.priority-m.priority);s=this.parseBodyWithClauses(r,l,t);}return qe(u,s,n,{sourceLanguage:t,patternId:e.pattern.id,confidence:e.confidence})}parseBodyWithClauses(e,r,t){let a=[],n=[];for(;!e.isAtEnd();){let o=e.peek();if(!o)break;let u=o.kind==="conjunction"||o.kind==="keyword"&&this.isThenKeyword(o.value,t),s=o.kind==="keyword"&&this.isEndKeyword(o.value,t);if(u){if(n.length>0){let c=this.parseClause(n,r,t);a.push(...c),n.length=0;}e.advance();continue}if(s){if(n.length>0){let c=this.parseClause(n,r,t);a.push(...c);}e.advance();break}n.push(o),e.advance();}if(n.length>0){let o=this.parseClause(n,r,t);a.push(...o);}return a.length>1?[We(a,"then",{sourceLanguage:t})]:a}parseClause(e,r,t){if(e.length===0)return [];let a=new M(e,t),n=[];for(;!a.isAtEnd();){let o=_.matchBest(a,r);o?n.push(this.buildCommand(o,t)):a.advance();}if(n.length===0){let o=this.parseSOVClauseByVerbAnchoring(e,t);if(o.length>0)return o}return n}static buildVerbLookup(e){let r=new Map;for(let[t,a]of Object.entries(e.keywords))if(!["on","if","else","when","where","while","for","end","then","and"].includes(t)&&(r.set(a.primary.toLowerCase(),t),a.alternatives))for(let n of a.alternatives)r.set(n.toLowerCase(),t);return r}static buildMarkerToRoleLookup(e){let r=new Map;for(let[t,a]of Object.entries(e.roleMarkers))if(a&&(r.set(a.primary,t),a.alternatives))for(let n of a.alternatives)r.has(n)||r.set(n,t);return r}parseSOVClauseByVerbAnchoring(e,r){let t=j(r);if(!t||t.wordOrder!=="SOV")return [];let a=T.buildVerbLookup(t),n=T.buildMarkerToRoleLookup(t),o=[],u=0;for(;u<e.length;){let s=-1,c="";for(let y=u;y<e.length;y++){let v=e[y],h=a.get(v.value.toLowerCase()),g=v.normalized?a.get(v.normalized.toLowerCase()):void 0,z=h||g;if(z){s=y,c=z;break}}if(s===-1)break;let l=e.slice(u,s),m=e.length;for(let y=s+1;y<e.length;y++){let v=e[y];if(v.kind==="conjunction"||this.isThenKeyword(v.value,r)){m=y;break}if(y>s+1&&(a.get(v.value.toLowerCase())||(v.normalized?a.get(v.normalized.toLowerCase()):void 0))){m=y;break}}let p=e.slice(s+1,m),d=this.extractRolesFromMarkedTokens(l,p,n,c,r);if(o.push(ce(c,d,{sourceLanguage:r,confidence:.7})),u=m,u<e.length){let y=e[u];(y.kind==="conjunction"||this.isThenKeyword(y.value,r))&&u++;}}return o}extractRolesFromMarkedTokens(e,r,t,a,n){let o={},u=s=>{let c=[];for(let l of s){let m=t.get(l.value);if(m&&l.kind==="particle"&&c.length>0){let p=this.tokensToSemanticValue(c);if(p){let d=this.mapRoleForCommand(m,a,o);d&&(o[d]=p);}c=[];}else c.push(l);}if(c.length>0){let l=this.tokensToSemanticValue(c);l&&(o.patient?o.destination||(o.destination=l):o.patient=l);}};return u(e),u(r),o}mapRoleForCommand(e,r,t){return t[e]?e==="patient"&&!t.destination?"destination":e==="destination"&&!t.patient?"patient":e==="source"&&!t.source?"source":null:e}tokensToSemanticValue(e){if(e.length===0)return null;let r=e.filter(n=>n.kind!=="whitespace");if(r.length===0)return null;if(r.length===1)return this.tokenToSemanticValue(r[0]);let t=r.map(n=>n.value).join(""),a=r[0];return a.kind==="selector"||a.value.startsWith("#")||a.value.startsWith(".")||a.value.startsWith("@")||a.value.startsWith("*")?Z(t):a.kind==="literal"||a.value.startsWith('"')||a.value.startsWith("'")?A(t):a.kind==="reference"?I(t):A(t)}tokenToSemanticValue(e){let r=e.value;if(e.kind==="selector"||r.startsWith("#")||r.startsWith(".")||r.startsWith("@")||r.startsWith("*"))return Z(r);if(r.startsWith('"')||r.startsWith("'"))return A(r);if(/^-?\d+(\.\d+)?$/.test(r))return A(parseFloat(r));if(r==="true"||r==="\u771F"||r==="\uCC38"||r==="do\u011Fru")return A(true);if(r==="false"||r==="\u507D"||r==="\uAC70\uC9D3"||r==="yanl\u0131\u015F")return A(false);let t=e.normalized?.toLowerCase();return t==="me"||t==="it"||t==="you"||t==="result"||t==="body"?I(t):e.kind==="reference"?I(e.normalized||"me"):A(r)}parseBodyWithGrammarPatterns(e,r,t,a){let n=[];for(;!e.isAtEnd();){let o=e.peek();if(o&&this.isThenKeyword(o.value,a)){e.advance();continue}if(o&&this.isEndKeyword(o.value,a)){e.advance();break}let u=false;if(t.length>0){let s=_.matchBest(e,t);if(s){let c=s.pattern.command,l={};for(let[d,y]of s.captured)d!=="event"&&d!=="action"&&d!=="continues"&&(l[d]=y);let m=ce(c,l,{sourceLanguage:a,patternId:s.pattern.id});n.push(m),u=true;let p=s.captured.get("continues");if(p&&p.type==="literal"&&p.value==="then")continue}}if(!u){let s=_.matchBest(e,r);s&&(n.push(this.buildCommand(s,a)),u=true);}u||e.advance();}return n}tryCompoundCommandParsing(e,r,t){let a=e.tokens;if(!a.some(s=>s.kind==="conjunction"||s.kind==="keyword"&&this.isThenKeyword(s.value,t)))return null;let o=new M(a,t),u=this.parseBodyWithClauses(o,r,t);return u.length===0?null:u.length===1?u[0]:We(u,"then",{sourceLanguage:t,confidence:.65})}trySOVEventExtraction(e,r,t){let a=T.SOV_EVENT_MARKERS[r];if(!a)return null;let o=ee(e,r).tokens,u=Wt[r],s=new Set;if(u)for(let E of Object.keys(u))s.add(E.toLowerCase());let c=T.SOV_SOURCE_MARKERS[r],l=-1,m="",p="",d=1;for(let E=0;E<o.length;E++){let C=o[E],P=C.value.toLowerCase(),R=P,$="",fe=P.indexOf("[");fe>0&&(R=P.slice(0,fe),$=C.value.slice(fe));let he=C.normalized?.toLowerCase(),Se=he&&T.KNOWN_EVENTS.has(he),Be=s.has(P)||s.has(R),xr=T.KNOWN_EVENTS.has(R);if(Se||Be||xr){let G;if(Se?G=he:Be?G=u?.[P]??u?.[R]??R:G=R,a.size>0){let ne=1,ve=o[E+1];ve&&ve.kind==="selector"&&ve.value.startsWith("[")&&(ne=2);let oe=o[E+ne];if(oe&&(oe.kind==="particle"||oe.kind==="keyword")&&a.has(oe.value)){l=E,m=G,p=$||(ne===2?o[E+1].value:""),d=ne+1;break}}else {l=E,m=G,p=$,d=1;break}}}if(l===-1)return null;let y=new Set;for(let E=l;E<l+d;E++)y.add(E);if(c){let E=l+d;if(E<o.length){let C=o[E];(C.kind==="particle"||C.kind==="keyword")&&c.markers.has(C.value)&&y.add(E);}for(let C=0;C<l;C++){let P=o[C],R=P.value.toLowerCase(),$=P.normalized?.toLowerCase();if(c.windowTokens.has(R)||$&&c.windowTokens.has($)){y.add(C);break}}}let v=o.filter((E,C)=>!y.has(C));if(v.length===0)return null;let h=t.filter(E=>E.command!=="on"),g=new M(v,r),z=this.parseBodyWithClauses(g,h,r);if(z.length===0)return null;let xe={sourceLanguage:r,confidence:.75};return p&&(xe.keyFilter=p),qe({type:"literal",value:m},z,void 0,xe)}isThenKeyword(e,r){let t={en:new Set(["then"]),ja:new Set(["\u305D\u308C\u304B\u3089","\u6B21\u306B","\u305D\u3057\u3066"]),ar:new Set(["\u062B\u0645","\u0628\u0639\u062F\u0647\u0627","\u062B\u0645\u0651"]),es:new Set(["entonces","luego","despu\xE9s"]),ko:new Set(["\uADF8\uB2E4\uC74C","\uADF8\uB9AC\uACE0","\uADF8\uB7F0\uD6C4","\uADF8\uB7EC\uBA74"]),zh:new Set(["\u7136\u540E","\u63A5\u7740","\u4E4B\u540E"]),tr:new Set(["sonra","ard\u0131ndan","daha sonra"]),pt:new Set(["ent\xE3o","depois","logo"]),fr:new Set(["puis","ensuite","alors"]),de:new Set(["dann","danach","anschlie\xDFend"]),id:new Set(["lalu","kemudian","setelah itu"]),tl:new Set(["pagkatapos","tapos"]),bn:new Set(["\u09A4\u09BE\u09B0\u09AA\u09B0","\u09AA\u09B0\u09C7"]),qu:new Set(["chaymantataq","hinaspa","chaymanta","chayqa"]),sw:new Set(["kisha","halafu","baadaye"])};return (t[r]||t.en).has(e.toLowerCase())}isEndKeyword(e,r){let t={en:new Set(["end"]),ja:new Set(["\u7D42\u308F\u308A","\u7D42\u4E86","\u304A\u308F\u308A"]),ar:new Set(["\u0646\u0647\u0627\u064A\u0629","\u0627\u0646\u062A\u0647\u0649","\u0622\u062E\u0631"]),es:new Set(["fin","final","terminar"]),ko:new Set(["\uB05D","\uC885\uB8CC","\uB9C8\uCE68"]),zh:new Set(["\u7ED3\u675F","\u7EC8\u6B62","\u5B8C"]),tr:new Set(["son","biti\u015F","bitti"]),pt:new Set(["fim","final","t\xE9rmino"]),fr:new Set(["fin","terminer","finir"]),de:new Set(["ende","beenden","fertig"]),id:new Set(["selesai","akhir","tamat"]),tl:new Set(["wakas","tapos"]),bn:new Set(["\u09B8\u09AE\u09BE\u09AA\u09CD\u09A4"]),qu:new Set(["tukukuy","tukuy","puchukay"]),sw:new Set(["mwisho","maliza","tamati"])};return (t[r]||t.en).has(e.toLowerCase())}extractStandaloneModifiers(e,r){let a=ee(e,r).tokens;if(a.length===0)return {modifiers:null,remainingInput:null};let o=a[0].value.toLowerCase(),u=T.STANDALONE_MODIFIERS[o];if(!u)return {modifiers:null,remainingInput:null};let s={},c=1;if(u==="once")s.once=true;else {let d=1;if(d<a.length){let y=a[d];(y.kind==="keyword"||y.kind==="particle")&&(d++,c++);}if(d<a.length){let y=a[d];if(y.kind==="literal"){let v=y.value.match(/^(\d+)(ms|s|m)?$/);if(v){let h=parseInt(v[1],10),g=v[2]||"ms";g==="s"?h*=1e3:g==="m"&&(h*=6e4),s[u]=h,c=d+1;}}}s[u]||(s[u]=u==="debounce"?300:100);}let l=a.slice(c);if(l.length===0)return {modifiers:null,remainingInput:null};let m=l[0].position.start,p=e.slice(m);return {modifiers:s,remainingInput:p}}applyModifiers(e,r){return {...e,eventModifiers:{...e.eventModifiers,...r}}}extractOrConjunctionEvents(e,r){let t=[];for(;;){let a=e.mark(),n=e.peek();if(!n)break;let o=(n.normalized||n.value).toLowerCase();if(!T.OR_KEYWORDS.has(o)){e.reset(a);break}e.advance();let u=e.peek();if(!u){e.reset(a);break}let s=(u.normalized||u.value).toLowerCase();e.advance(),t.push({type:"literal",value:s});}return t}};H.KNOWN_EVENTS=new Set(["click","dblclick","input","change","submit","keydown","keyup","keypress","mouseover","mouseout","mousedown","mouseup","focus","blur","load","scroll","resize","contextmenu"]);H.SOV_EVENT_MARKERS={ja:new Set(["\u3067"]),ko:new Set,tr:new Set(["de","da","te","ta"]),bn:new Set(["\u098F"]),qu:new Set(["pi"])};H.SOV_SOURCE_MARKERS={ja:{markers:new Set(["\u304B\u3089"]),windowTokens:new Set(["\u30A6\u30A3\u30F3\u30C9\u30A6","\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8","window","document"])},ko:{markers:new Set(["\uC5D0\uC11C"]),windowTokens:new Set(["\uCC3D","\uC708\uB3C4\uC6B0","\uBB38\uC11C","window","document"])},tr:{markers:new Set(["den","dan","ten","tan"]),windowTokens:new Set(["pencere","belge","window","document"])},bn:{markers:new Set(["\u09A5\u09C7\u0995\u09C7","\u09AE\u09A7\u09CD\u09AF\u09C7"]),windowTokens:new Set(["\u0989\u0987\u09A8\u09CD\u09A1\u09CB","\u09A1\u0995\u09C1\u09AE\u09C7\u09A8\u09CD\u099F","window","document"])},qu:{markers:new Set(["manta"]),windowTokens:new Set(["k_iri","ventana","window","document"])}};H.STANDALONE_MODIFIERS={once:"once",debounced:"debounce",debounce:"debounce",throttled:"throttle",throttle:"throttle"};H.OR_KEYWORDS=new Set(["or","\u0623\u0648","o","ou","oder","atau","atau","\u6216","\u307E\u305F\u306F","\uB610\uB294","veya","\u0985\u09A5\u09AC\u09BE","utaq","au","\u0430\u0431\u043E","\u0438\u043B\u0438","ho\u1EB7c","lub","\u05D0\u05D5","\u0E2B\u0E23\u0E37\u0E2D","o"]);var aa=H,na=new aa;function oa(i,e){return na.parse(i,e)}function ua(i,e){try{let r=ee(i,e),t=W(e);if(t.length===0)return {confidence:0,parseSuccess:!1,error:`No patterns available for language: ${e}`};let a=[...t].sort((c,l)=>l.priority-c.priority),n=a.filter(c=>c.command==="on"),o=_.matchBest(r,n);if(o)return {confidence:o.confidence,parseSuccess:!0,patternId:o.pattern.id,action:o.pattern.command,tokensConsumed:o.consumedTokens};r.reset(r.mark());let u=a.filter(c=>c.command!=="on"),s=_.matchBest(r,u);return s?{confidence:s.confidence,parseSuccess:!0,patternId:s.pattern.id,action:s.pattern.command,tokensConsumed:s.consumedTokens}:{confidence:0,parseSuccess:!1,error:`Could not match any patterns for: ${i}`}}catch(r){return {confidence:0,parseSuccess:false,error:r instanceof Error?r.message:String(r)}}}function pr(i,e){try{let t=oa(i,e);if(t)return {node:t,confidence:t.metadata?.confidence??.8,error:void 0,tokensConsumed:ee(i,e).tokens.length}}catch{}let r=ua(i,e);return r.parseSuccess?{node:null,confidence:r.confidence,error:void 0,tokensConsumed:r.tokensConsumed}:{node:null,confidence:0,error:r.error}}function dr(i,e){let r=e==="SOV"?"sovPosition":"svoPosition";return [...i].sort((t,a)=>{let n=t[r]??99,o=a[r]??99;return n-o})}function sa(i,e){let r=i.markerOverride?.[e.code],t=e.roleMarkers[i.role];if(r!==void 0)return {primary:r,position:t?.position??"before",isOverride:true};if(t&&t.primary){let a={primary:t.primary,position:t.position,isOverride:false};return t.alternatives&&(a.alternatives=t.alternatives),a}return null}function la(i,e,r,t,a){let n=[];if(n.push({type:"role",role:"event",optional:false}),t.position==="after"){let c=t.primary.split(/\s+/);if(c.length>1)for(let l of c)n.push({type:"literal",value:l});else {let l=t.alternatives?{type:"literal",value:t.primary,alternatives:t.alternatives}:{type:"literal",value:t.primary};n.push(l);}}let o=e.roleMarkers.destination;o&&n.push({type:"group",optional:true,tokens:[{type:"role",role:"destination",optional:true},o.alternatives?{type:"literal",value:o.primary,alternatives:o.alternatives}:{type:"literal",value:o.primary}]}),n.push({type:"role",role:"patient",optional:false});let u=e.roleMarkers.patient;if(u){let c=u.alternatives?{type:"literal",value:u.primary,alternatives:u.alternatives}:{type:"literal",value:u.primary};n.push(c);}let s=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};return n.push(s),{id:`${i.action}-event-${e.code}-sov`,language:e.code,command:"on",priority:(a.basePriority??100)+50,template:{format:`{event} ${t.primary} {destination?} {patient} ${u?.primary||""} ${r.primary}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},patient:{fromRole:"patient"},destination:{fromRole:"destination",default:{type:"reference",value:"me"}}}}}function ca(i,e,r,t,a){let n=[];n.push({type:"role",role:"patient",optional:false});let o=e.roleMarkers.patient;if(o){let s=o.alternatives?{type:"literal",value:o.primary,alternatives:o.alternatives}:{type:"literal",value:o.primary};n.push(s);}if(n.push({type:"role",role:"event",optional:false}),t.position==="after"){let s=t.primary.split(/\s+/);if(s.length>1)for(let c of s)n.push({type:"literal",value:c});else {let c=t.alternatives?{type:"literal",value:t.primary,alternatives:t.alternatives}:{type:"literal",value:t.primary};n.push(c);}}let u=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};return n.push(u),{id:`${i.action}-event-${e.code}-sov-patient-first`,language:e.code,command:"on",priority:(a.basePriority??100)+45,template:{format:`{patient} ${o?.primary||""} {event} ${t.primary} ${r.primary}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},patient:{fromRole:"patient"},destination:{fromRole:"destination",default:{type:"reference",value:"me"}}}}}function ma(i,e,r,t,a){let n=[];n.push({type:"role",role:"patient",optional:false});let o=e.roleMarkers.patient;if(o){let c=o.alternatives?{type:"literal",value:o.primary,alternatives:o.alternatives}:{type:"literal",value:o.primary};n.push(c);}let u=e.roleMarkers.destination;if(u&&(n.push({type:"role",role:"destination",optional:false}),n.push(u.alternatives?{type:"literal",value:u.primary,alternatives:u.alternatives}:{type:"literal",value:u.primary})),n.push({type:"role",role:"event",optional:false}),t.position==="after"){let c=t.primary.split(/\s+/);if(c.length>1)for(let l of c)n.push({type:"literal",value:l});else {let l=t.alternatives?{type:"literal",value:t.primary,alternatives:t.alternatives}:{type:"literal",value:t.primary};n.push(l);}}let s=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};return n.push(s),{id:`${i.action}-event-${e.code}-sov-patient-first-dest`,language:e.code,command:"on",priority:(a.basePriority??100)+40,template:{format:`{patient} ${o?.primary||""} {destination} ${u?.primary||""} {event} ${t.primary} ${r.primary}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},patient:{fromRole:"patient"},destination:{fromRole:"destination"}}}}function pa(i,e,r,t,a){let n=[];n.push({type:"role",role:"event",optional:false});let o=t.alternatives?.filter(l=>!l.includes(" ")&&l.length>1)||[];o.length>0&&n.push({type:"literal",value:o[0],alternatives:o.slice(1)});let u=e.roleMarkers.destination;u&&n.push({type:"group",optional:true,tokens:[{type:"role",role:"destination",optional:true},u.alternatives?{type:"literal",value:u.primary,alternatives:u.alternatives}:{type:"literal",value:u.primary}]}),n.push({type:"role",role:"patient",optional:false});let s=e.roleMarkers.patient;if(s){let l=s.alternatives?{type:"literal",value:s.primary,alternatives:s.alternatives}:{type:"literal",value:s.primary};n.push(l);}let c=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};return n.push(c),{id:`${i.action}-event-${e.code}-sov-compact`,language:e.code,command:"on",priority:(a.basePriority??100)+52,template:{format:`{event}${o[0]||""} {patient} ${r.primary}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},patient:{fromRole:"patient"},destination:{fromRole:"destination",default:{type:"reference",value:"me"}}}}}function da(i,e,r,t,a){let n=[];if(n.push({type:"role",role:"event",optional:false}),t.position==="after"){let u=t.primary.split(/\s+/);if(u.length>1)for(let s of u)n.push({type:"literal",value:s});else {let s=t.alternatives?{type:"literal",value:t.primary,alternatives:t.alternatives}:{type:"literal",value:t.primary};n.push(s);}}let o=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};return n.push(o),{id:`${i.action}-event-${e.code}-sov-simple`,language:e.code,command:"on",priority:(a.basePriority??100)+48,template:{format:`{event} ${t.primary} ${r.primary}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},patient:{default:{type:"reference",value:"me"}}}}}function ya(i,e,r,t){let a=e.eventHandler?.temporalMarkers;if(!a||a.length===0)return null;let n=[];n.push({type:"role",role:"event",optional:false}),e.possessive?.marker&&n.push({type:"group",optional:true,tokens:[{type:"literal",value:e.possessive.marker}]}),n.push({type:"literal",value:a[0],alternatives:a.slice(1)}),n.push({type:"role",role:"patient",optional:false});let o=e.roleMarkers.patient;if(o?.primary){let s=o.alternatives?{type:"literal",value:o.primary,alternatives:o.alternatives}:{type:"literal",value:o.primary};n.push(s);}let u=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};return n.push(u),{id:`${i.action}-event-${e.code}-sov-temporal`,language:e.code,command:"on",priority:(t.basePriority??100)+49,template:{format:`{event} ${a[0]} {patient} ${r.primary}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},patient:{fromRole:"patient"}}}}function fa(i,e,r,t,a){let n=[];if(n.push({type:"role",role:"event",optional:false}),t.position==="after"){let l=t.primary.split(/\s+/);if(l.length>1)for(let m of l)n.push({type:"literal",value:m});else {let m=t.alternatives?{type:"literal",value:t.primary,alternatives:t.alternatives}:{type:"literal",value:t.primary};n.push(m);}}let u=[...i.roles.filter(l=>l.required)].sort((l,m)=>{let p=l.sovPosition??999,d=m.sovPosition??999;return p-d});for(let l of u){n.push({type:"role",role:l.role,optional:false});let m,p;if(l.markerOverride&&l.markerOverride[e.code]!==void 0)m=l.markerOverride[e.code];else {let d=e.roleMarkers[l.role];d&&(m=d.primary,p=d.alternatives);}if(m){let d=p?{type:"literal",value:m,alternatives:p}:{type:"literal",value:m};n.push(d);}}let s=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};n.push(s);let c=u.map(l=>`{${l.role}}`).join(" ");return {id:`${i.action}-event-${e.code}-sov-2role`,language:e.code,command:"on",priority:(a.basePriority??100)+55,template:{format:`{event} ${t.primary} ${c} ${r.primary}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},...Object.fromEntries(u.map(l=>[l.role,{fromRole:l.role}]))}}}function ha(i,e,r,t,a){let n=[],u=[...i.roles.filter(y=>y.required)].sort((y,v)=>{let h=y.sovPosition??999,g=v.sovPosition??999;return h-g}),s=u[0];n.push({type:"role",role:s.role,optional:false});let c;if(s.markerOverride&&s.markerOverride[e.code]!==void 0)c=s.markerOverride[e.code];else {let y=e.roleMarkers[s.role];y&&(c=y.primary);}if(c&&n.push({type:"literal",value:c}),n.push({type:"role",role:"event",optional:false}),t.position==="after"){let y=t.primary.split(/\s+/);if(y.length>1)for(let v of y)n.push({type:"literal",value:v});else {let v=t.alternatives?{type:"literal",value:t.primary,alternatives:t.alternatives}:{type:"literal",value:t.primary};n.push(v);}}let l=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};n.push(l);let m=u[1];n.push({type:"role",role:m.role,optional:false});let p,d;if(m.markerOverride&&m.markerOverride[e.code]!==void 0)p=m.markerOverride[e.code];else {let y=e.roleMarkers[m.role];y&&(p=y.primary,d=y.alternatives);}if(p){let y=d?{type:"literal",value:p,alternatives:d}:{type:"literal",value:p};n.push(y);}return {id:`${i.action}-event-${e.code}-sov-2role-dest-first`,language:e.code,command:"on",priority:(a.basePriority??100)+48,template:{format:`{${s.role}} {event} ${t.primary} ${r.primary} {${m.role}}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},[s.role]:{fromRole:s.role},[m.role]:{fromRole:m.role}}}}function Je(i,e,r,t,a){let n=[];if(t.position==="before"){let s=t.alternatives?{type:"literal",value:t.primary,alternatives:t.alternatives}:{type:"literal",value:t.primary};n.push(s);}n.push({type:"role",role:"event",optional:false});let o=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};n.push(o),n.push({type:"role",role:"patient",optional:false});let u=e.roleMarkers.destination;return u&&n.push({type:"group",optional:true,tokens:[u.alternatives?{type:"literal",value:u.primary,alternatives:u.alternatives}:{type:"literal",value:u.primary},{type:"role",role:"destination",optional:true}]}),{id:`${i.action}-event-${e.code}-vso`,language:e.code,command:"on",priority:(a.basePriority??100)+50,template:{format:`${t.primary} {event} ${r.primary} {patient} ${u?.primary||""} {destination?}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},patient:{fromRole:"patient"},destination:{fromRole:"destination",default:{type:"reference",value:"me"}}}}}function va(i,e,r,t,a){let n=[],o=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};n.push(o),n.push({type:"role",role:"patient",optional:false});let u=e.roleMarkers.destination;if(u&&n.push({type:"group",optional:true,tokens:[u.alternatives?{type:"literal",value:u.primary,alternatives:u.alternatives}:{type:"literal",value:u.primary},{type:"role",role:"destination",optional:true}]}),t.position==="before"){let s=t.alternatives?{type:"literal",value:t.primary,alternatives:t.alternatives}:{type:"literal",value:t.primary};n.push(s);}return n.push({type:"role",role:"event",optional:false}),{id:`${i.action}-event-${e.code}-vso-verb-first`,language:e.code,command:"on",priority:(a.basePriority??100)+45,template:{format:`${r.primary} {patient} ${u?.primary||""} {destination?} ${t.primary} {event}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},patient:{fromRole:"patient"},destination:{fromRole:"destination",default:{type:"reference",value:"me"}}}}}function ga(i,e,r,t,a){let n=[],o=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};n.push(o);let s=[...i.roles.filter(l=>l.required)].sort((l,m)=>{let p=l.svoPosition??999,d=m.svoPosition??999;return p-d});for(let l of s){let m,p;if(l.markerOverride&&l.markerOverride[e.code]!==void 0)m=l.markerOverride[e.code];else {let d=e.roleMarkers[l.role];d&&(m=d.primary,p=d.alternatives);}if(m){let d=p?{type:"literal",value:m,alternatives:p}:{type:"literal",value:m};n.push(d);}n.push({type:"role",role:l.role,optional:false});}if(t.position==="before"){let l=t.alternatives?{type:"literal",value:t.primary,alternatives:t.alternatives}:{type:"literal",value:t.primary};n.push(l);}n.push({type:"role",role:"event",optional:false});let c=s.map(l=>`{${l.role}}`).join(" ");return {id:`${i.action}-event-${e.code}-vso-verb-first-2role`,language:e.code,command:"on",priority:(a.basePriority??100)+48,template:{format:`${r.primary} ${c} ${t.primary} {event}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},...Object.fromEntries(s.map(l=>[l.role,{fromRole:l.role}]))}}}function Xe(i,e,r,t,a){let n=[];if(t.position==="before"){let l=t.alternatives?{type:"literal",value:t.primary,alternatives:t.alternatives}:{type:"literal",value:t.primary};n.push(l);}n.push({type:"role",role:"event",optional:false});let o=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};n.push(o);let s=[...i.roles.filter(l=>l.required)].sort((l,m)=>{let p=l.svoPosition??999,d=m.svoPosition??999;return p-d});for(let l of s){let m,p;if(l.markerOverride&&l.markerOverride[e.code]!==void 0)m=l.markerOverride[e.code];else {let d=e.roleMarkers[l.role];d&&(m=d.primary,p=d.alternatives);}if(m){let d=p?{type:"literal",value:m,alternatives:p}:{type:"literal",value:m};n.push(d);}n.push({type:"role",role:l.role,optional:false});}let c=s.map(l=>`{${l.role}}`).join(" ");return {id:`${i.action}-event-${e.code}-vso-2role`,language:e.code,command:"on",priority:(a.basePriority??100)+55,template:{format:`${t.primary} {event} ${r.primary} ${c}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},...Object.fromEntries(s.map(l=>[l.role,{fromRole:l.role}]))}}}function Ea(i,e,r,t,a){let n=[],o=e.eventHandler?.negationMarker;if(t.position==="before"){let c=t.alternatives?{type:"literal",value:t.primary,alternatives:t.alternatives}:{type:"literal",value:t.primary};n.push(c);}if(o){let c=o.alternatives?{type:"literal",value:o.primary,alternatives:o.alternatives}:{type:"literal",value:o.primary};n.push(c);}n.push({type:"role",role:"event",optional:false});let u=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};n.push(u),n.push({type:"role",role:"patient",optional:false});let s=e.roleMarkers.destination;return s&&n.push({type:"group",optional:true,tokens:[s.alternatives?{type:"literal",value:s.primary,alternatives:s.alternatives}:{type:"literal",value:s.primary},{type:"role",role:"destination",optional:true}]}),{id:`${i.action}-event-${e.code}-vso-negated`,language:e.code,command:"on",priority:(a.basePriority??100)+48,template:{format:`${t.primary} ${o?.primary||""} {event} ${r.primary} {patient} ${s?.primary||""} {destination?}`,tokens:n},extraction:{action:{value:i.action},event:{fromRole:"event"},patient:{fromRole:"patient"},destination:{fromRole:"destination",default:{type:"reference",value:"me"}}}}}function za(i,e,r,t){let a=[];a.push({type:"literal",value:"and",alternatives:["then"]}),a.push({type:"role",role:"event",optional:false});let n=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary};a.push(n),a.push({type:"role",role:"patient",optional:false});let o=e.roleMarkers.destination;return o&&a.push({type:"group",optional:true,tokens:[o.alternatives?{type:"literal",value:o.primary,alternatives:o.alternatives}:{type:"literal",value:o.primary},{type:"role",role:"destination",optional:true}]}),{id:`${i.action}-event-${e.code}-vso-proclitic`,language:e.code,command:"on",priority:(t.basePriority??100)+45,template:{format:`[proclitic?] {event} ${r.primary} {patient} ${o?.primary||""} {destination?}`,tokens:a},extraction:{action:{value:i.action},event:{fromRole:"event"},patient:{fromRole:"patient"},destination:{fromRole:"destination",default:{type:"reference",value:"me"}}}}}var re={basePriority:100,generateSimpleVariants:true,generateAlternatives:true};function yr(i,e,r=re){let t=`${i.action}-${e.code}-generated`,a=r.basePriority??100,n=e.keywords[i.action];if(!n)throw new Error(`No keyword translation for '${i.action}' in ${e.code}`);let o=Ca(i,e,n),u=hr(i,e),s=Sa(i,e,n);return {id:t,language:e.code,command:i.action,priority:a,template:{format:s,tokens:o},extraction:u}}function ka(i,e,r=re){if(i.roles.filter(u=>!u.required).length===0)return null;let a=i.roles.filter(u=>u.required),n={...i,roles:a};return {...yr(n,e,r),id:`${i.action}-${e.code}-generated-simple`,priority:(r.basePriority??100)-5,extraction:hr(i,e)}}function ba(i,e,r=re){let t=[];if(t.push(yr(i,e,r)),r.generateSimpleVariants){let a=ka(i,e,r);a&&t.push(a);}return t}function fr(i,e=re){let r=[],t=ia();for(let a of t){if(!i.keywords[a.action])continue;let n=ba(a,i,e);if(r.push(...n),i.eventHandler?.eventMarker){let o=Aa(a,i,e);r.push(...o);}}return r}function Aa(i,e,r=re){if(!e.eventHandler||!e.eventHandler.eventMarker)return [];let t=[],a=e.eventHandler.eventMarker,n=e.keywords[i.action];if(!n)return [];let u=i.roles.filter(s=>s.required).length===2;if(e.wordOrder==="SOV")if(u)t.push(fa(i,e,n,a,r)),t.push(ha(i,e,n,a,r));else {t.push(la(i,e,n,a,r)),t.push(ca(i,e,n,a,r));let s=e.roleMarkers.destination;s&&s.primary!==a.primary&&t.push(ma(i,e,n,a,r));let c=a.primary.split(/\s+/),l=a.alternatives?.some(p=>!p.includes(" ")&&p.length>1);c.length>1&&l&&t.push(pa(i,e,n,a,r)),t.push(da(i,e,n,a,r));let m=ya(i,e,n,r);m&&t.push(m);}else e.wordOrder==="VSO"?u?(t.push(Xe(i,e,n,a,r)),t.push(ga(i,e,n,a,r))):(t.push(Je(i,e,n,a,r)),t.push(va(i,e,n,a,r)),e.eventHandler?.negationMarker&&t.push(Ea(i,e,n,a,r)),e.tokenization?.prefixes&&t.push(za(i,e,n,r))):u?t.push(Xe(i,e,n,a,r)):t.push(Je(i,e,n,a,r));return t}function Ca(i,e,r){let t=[],a=r.alternatives?{type:"literal",value:r.primary,alternatives:r.alternatives}:{type:"literal",value:r.primary},n=wa(i,e);switch(e.wordOrder){case "SVO":t.push(a),t.push(...n);break;case "SOV":t.push(...n),t.push(a);break;case "VSO":t.push(a),t.push(...n);break;default:t.push(a),t.push(...n);}return t}function wa(i,e){let r=[],t=dr(i.roles,e.wordOrder);for(let a of t){let n=Da(a,e);a.required?r.push(...n):r.push({type:"group",optional:true,tokens:n});}return r}function Da(i,e){let r=[],t=i.markerOverride?.[e.code],a=e.roleMarkers[i.role],n={type:"role",role:i.role,optional:!i.required,expectedTypes:i.expectedTypes};if(t!==void 0){let o=t?t.split(/\s+/).filter(Boolean):[];if((a?.position??"before")==="before"){for(let s of o)r.push({type:"literal",value:s});r.push(n);}else {r.push(n);for(let s of o)r.push({type:"literal",value:s});}}else if(a)if(a.position==="before"){if(a.primary){let o=a.alternatives?{type:"literal",value:a.primary,alternatives:a.alternatives}:{type:"literal",value:a.primary};r.push(o);}r.push(n);}else {r.push(n);let o=a.alternatives?{type:"literal",value:a.primary,alternatives:a.alternatives}:{type:"literal",value:a.primary};r.push(o);}else r.push(n);return r}function xa(i,e){let r={};for(let t of i.roles){let a=t.markerOverride?.[e.code],n=e.roleMarkers[t.role];a!==void 0?r[t.role]=a?{marker:a}:{}:n&&n.primary?r[t.role]=n.alternatives?{marker:n.primary,markerAlternatives:n.alternatives}:{marker:n.primary}:r[t.role]={};}return r}function hr(i,e){let r=xa(i,e),t={};for(let a of i.roles){let n=r[a.role]||{};!a.required&&a.default?t[a.role]={...n,default:a.default}:t[a.role]=n;}return t}function Sa(i,e,r){let t=[],n=dr(i.roles,e.wordOrder).map(o=>{let u=sa(o,e),s="";return u&&u.primary?u.position==="before"?s=`${u.primary} {${o.role}}`:s=`{${o.role}} ${u.primary}`:s=`{${o.role}}`,o.required?s:`[${s}]`});switch(e.wordOrder){case "SVO":case "VSO":t.push(r.primary,...n);break;case "SOV":t.push(...n,r.primary);break;default:t.push(r.primary,...n);}return t.join(" ")}var Ba=class{constructor(i={}){this.cache=new Map,this.config={maxSize:i.maxSize??1e3,ttlMs:i.ttlMs??0,enabled:i.enabled??true},this.stats={hits:0,misses:0,evictions:0,expirations:0};}makeKey(i,e){return `${e}:${i}`}isExpired(i){return this.config.ttlMs===0?false:Date.now()-i.createdAt>this.config.ttlMs}evictLRU(){let i=this.cache.keys().next().value;i!==void 0&&(this.cache.delete(i),this.stats.evictions++);}get(i,e){if(!this.config.enabled){this.stats.misses++;return}let r=this.makeKey(i,e),t=this.cache.get(r);if(!t){this.stats.misses++;return}if(this.isExpired(t)){this.cache.delete(r),this.stats.expirations++,this.stats.misses++;return}return this.cache.delete(r),t.lastAccessed=Date.now(),this.cache.set(r,t),this.stats.hits++,t.result}set(i,e,r){if(!this.config.enabled||r!==null&&typeof r=="object"&&"confidence"in r&&r.confidence===0)return;let t=this.makeKey(i,e),a=Date.now();for(;this.cache.size>=this.config.maxSize;)this.evictLRU();this.cache.set(t,{result:r,createdAt:a,lastAccessed:a});}has(i,e){if(!this.config.enabled)return false;let r=this.makeKey(i,e),t=this.cache.get(r);return t?this.isExpired(t)?(this.cache.delete(r),this.stats.expirations++,false):true:false}delete(i,e){let r=this.makeKey(i,e);return this.cache.delete(r)}clear(){this.cache.clear();}resetStats(){this.stats={hits:0,misses:0,evictions:0,expirations:0};}getStats(){let i=this.stats.hits+this.stats.misses;return {hits:this.stats.hits,misses:this.stats.misses,size:this.cache.size,maxSize:this.config.maxSize,hitRate:i>0?this.stats.hits/i:0,evictions:this.stats.evictions,expirations:this.stats.expirations,enabled:this.config.enabled}}configure(i){if(i.maxSize!==void 0)for(this.config.maxSize=i.maxSize;this.cache.size>this.config.maxSize;)this.evictLRU();i.ttlMs!==void 0&&(this.config.ttlMs=i.ttlMs),i.enabled!==void 0&&(this.config.enabled=i.enabled);}enable(){this.config.enabled=true;}disable(){this.config.enabled=false;}getConfig(){return {...this.config}}};new Ba;function Ta(i){let e=i.charCodeAt(0);return e>=1536&&e<=1791||e>=1872&&e<=1919||e>=2208&&e<=2303||e>=64336&&e<=65023||e>=65136&&e<=65279}function Fa(i){for(let e of i)if(Ta(e))return true;return false}function Pa(i){return i.replace(/[\u064B-\u0652\u0670]/g,"")}var Ra=[{pattern:"\u0648\u0627\u0644",confidencePenalty:.15,prefixType:"conjunction"},{pattern:"\u0641\u0627\u0644",confidencePenalty:.15,prefixType:"conjunction"},{pattern:"\u0628\u0627\u0644",confidencePenalty:.15,prefixType:"preposition"},{pattern:"\u0643\u0627\u0644",confidencePenalty:.15,prefixType:"preposition"},{pattern:"\u0644\u0644",confidencePenalty:.12,prefixType:"preposition"}],_a=[{pattern:"\u0627\u0644",confidencePenalty:.08,prefixType:"article",minRemaining:2},{pattern:"\u0648",confidencePenalty:.08,prefixType:"conjunction",minRemaining:3},{pattern:"\u0641",confidencePenalty:.08,prefixType:"conjunction",minRemaining:3},{pattern:"\u0628",confidencePenalty:.1,prefixType:"preposition",minRemaining:3},{pattern:"\u0644",confidencePenalty:.1,prefixType:"preposition",minRemaining:3},{pattern:"\u0643",confidencePenalty:.1,prefixType:"preposition",minRemaining:3}],Oa=[{pattern:"\u064A",confidencePenalty:.12,prefixType:"verb-marker",minRemaining:3},{pattern:"\u062A",confidencePenalty:.12,prefixType:"verb-marker",minRemaining:3},{pattern:"\u0646",confidencePenalty:.12,prefixType:"verb-marker",minRemaining:3},{pattern:"\u0623",confidencePenalty:.12,prefixType:"verb-marker",minRemaining:3},{pattern:"\u0627",confidencePenalty:.12,prefixType:"verb-marker",minRemaining:3}],Na=[{pattern:"\u0648\u0646",confidencePenalty:.1,type:"masculine-plural"},{pattern:"\u064A\u0646",confidencePenalty:.1,type:"masculine-plural-accusative"},{pattern:"\u0627\u062A",confidencePenalty:.1,type:"feminine-plural"},{pattern:"\u0627\u0646",confidencePenalty:.1,type:"dual-nominative"},{pattern:"\u064A\u0646",confidencePenalty:.1,type:"dual-accusative"},{pattern:"\u0647\u0627",confidencePenalty:.1,type:"pronoun-her"},{pattern:"\u0647\u0645",confidencePenalty:.1,type:"pronoun-them"},{pattern:"\u0647\u0646",confidencePenalty:.1,type:"pronoun-them-f"},{pattern:"\u0646\u0627",confidencePenalty:.1,type:"pronoun-us"},{pattern:"\u0643\u0645",confidencePenalty:.1,type:"pronoun-you-pl"},{pattern:"\u0643",confidencePenalty:.08,type:"pronoun-you"},{pattern:"\u0647",confidencePenalty:.08,type:"pronoun-him"},{pattern:"\u064A",confidencePenalty:.08,type:"pronoun-me"},{pattern:"\u0629",confidencePenalty:.08,type:"feminine"}],Er=class{constructor(){this.language="ar";}isNormalizable(i){return !(!Fa(i)||i.length<2)}normalize(i){let e=Pa(i),r=1,t=[],a=[];for(let o of Ra)if(e.startsWith(o.pattern)){let u=e.slice(o.pattern.length);if(u.length>=2){e=u,r-=o.confidencePenalty,t.push(o.pattern);break}}if(t.length===0){for(let o of _a)if(e.startsWith(o.pattern)){let u=e.slice(o.pattern.length),s=o.minRemaining??2;if(u.length>=s){e=u,r-=o.confidencePenalty,t.push(o.pattern);break}}}if(!(e.endsWith("\u0627\u062A")||e.endsWith("\u0629")||e.endsWith("\u0648\u0646")||e.endsWith("\u064A\u0646")||e.endsWith("\u0647\u0627")||e.endsWith("\u0647\u0645")||e.endsWith("\u0647\u0646")||e.endsWith("\u0646\u0627")||e.endsWith("\u0643\u0645"))&&(t.length===0||t[0]==="\u0648"||t[0]==="\u0641")){for(let o of Oa)if(e.startsWith(o.pattern)){let u=e.slice(o.pattern.length),s=o.minRemaining??3;if(u.length>=s){e=u,r-=o.confidencePenalty,t.push(o.pattern);break}}}for(let o of Na)if(e.endsWith(o.pattern)){let u=e.slice(0,-o.pattern.length);u.length>=2&&(e=u,r-=o.confidencePenalty,a.push(o.pattern));}return r=Math.max(.5,r),t.length===0&&a.length===0?Ie(i):Le(e,r,{removedPrefixes:t,removedSuffixes:a})}},zr={code:"ar",name:"Arabic",nativeName:"\u0627\u0644\u0639\u0631\u0628\u064A\u0629",regions:["priority"],direction:"rtl",script:"arabic",wordOrder:"VSO",markingStrategy:"preposition",usesSpaces:true,verb:{position:"start",subjectDrop:true},references:{me:"\u0623\u0646\u0627",it:"\u0647\u0648",you:"\u0623\u0646\u062A",result:"\u0627\u0644\u0646\u062A\u064A\u062C\u0629",event:"\u0627\u0644\u062D\u062F\u062B",target:"\u0627\u0644\u0647\u062F\u0641",body:"\u0627\u0644\u062C\u0633\u0645"},possessive:{marker:"",markerPosition:"after-object",usePossessiveAdjectives:true,specialForms:{me:"\u0644\u064A",it:"\u0644\u0647",you:"\u0644\u0643"},keywords:{\u0644\u064A:"me",\u0644\u0643:"you",\u0644\u0647:"it",\u0644\u0647\u0627:"it"}},roleMarkers:{destination:{primary:"\u0639\u0644\u0649",alternatives:["\u0641\u064A","\u0625\u0644\u0649","\u0628","\u0642\u0628\u0644","\u0628\u0639\u062F"],position:"before"},source:{primary:"\u0645\u0646",position:"before"},patient:{primary:"",position:"before"},style:{primary:"\u0628\u0640",alternatives:["\u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645"],position:"before"}},keywords:{toggle:{primary:"\u0628\u062F\u0651\u0644",alternatives:["\u0628\u062F\u0644","\u063A\u064A\u0651\u0631","\u063A\u064A\u0631"],normalized:"toggle"},add:{primary:"\u0623\u0636\u0641",alternatives:["\u0627\u0636\u0641"],normalized:"add"},remove:{primary:"\u0627\u062D\u0630\u0641",alternatives:["\u0623\u0632\u0644","\u0627\u0645\u0633\u062D"],normalized:"remove"},put:{primary:"\u0636\u0639",alternatives:["\u0627\u062C\u0639\u0644"],normalized:"put"},append:{primary:"\u0623\u0644\u062D\u0642",normalized:"append"},prepend:{primary:"\u0633\u0628\u0642",normalized:"prepend"},take:{primary:"\u062E\u0630",normalized:"take"},make:{primary:"\u0627\u0635\u0646\u0639",alternatives:["\u0623\u0646\u0634\u0626"],normalized:"make"},clone:{primary:"\u0627\u0633\u062A\u0646\u0633\u062E",normalized:"clone"},swap:{primary:"\u0627\u0633\u062A\u0628\u062F\u0644",alternatives:["\u062A\u0628\u0627\u062F\u0644"],normalized:"swap"},morph:{primary:"\u062D\u0648\u0651\u0644",normalized:"morph"},set:{primary:"\u0627\u0636\u0628\u0637",alternatives:["\u0639\u064A\u0651\u0646","\u062D\u062F\u062F"],normalized:"set"},get:{primary:"\u0627\u062D\u0635\u0644",normalized:"get"},increment:{primary:"\u0632\u0650\u062F",alternatives:["\u0632\u062F","\u0627\u0631\u0641\u0639"],normalized:"increment"},decrement:{primary:"\u0623\u0646\u0642\u0635",alternatives:["\u0627\u0646\u0642\u0635","\u0642\u0644\u0644"],normalized:"decrement"},log:{primary:"\u0633\u062C\u0644",normalized:"log"},show:{primary:"\u0627\u0638\u0647\u0631",alternatives:["\u0623\u0638\u0647\u0631","\u0627\u0639\u0631\u0636"],normalized:"show"},hide:{primary:"\u0627\u062E\u0641",alternatives:["\u0623\u062E\u0641\u0650","\u0627\u062E\u0641\u064A","\u0623\u062E\u0641"],normalized:"hide"},transition:{primary:"\u0627\u0646\u062A\u0642\u0627\u0644",alternatives:["\u0627\u0646\u062A\u0642\u0644"],normalized:"transition"},on:{primary:"\u0639\u0644\u0649",alternatives:["\u0639\u0646\u062F","\u0644\u062F\u0649","\u062D\u064A\u0646"],normalized:"on"},trigger:{primary:"\u062A\u0634\u063A\u064A\u0644",alternatives:["\u0623\u0637\u0644\u0642","\u0641\u0639\u0651\u0644"],normalized:"trigger"},send:{primary:"\u0623\u0631\u0633\u0644",normalized:"send"},focus:{primary:"\u062A\u0631\u0643\u064A\u0632",alternatives:["\u0631\u0643\u0632"],normalized:"focus"},blur:{primary:"\u0636\u0628\u0627\u0628\u064A\u0629",alternatives:["\u0634\u0648\u0634"],normalized:"blur"},empty:{primary:"\u0625\u0641\u0631\u0627\u063A",normalized:"empty"},open:{primary:"\u0627\u0641\u062A\u062D",normalized:"open"},close:{primary:"\u0623\u063A\u0644\u0642",normalized:"close"},select:{primary:"\u0638\u0644\u0644",normalized:"select"},clear:{primary:"\u0646\u0638\u0651\u0641",normalized:"clear"},reset:{primary:"\u0625\u0639\u0627\u062F\u0629-\u0636\u0628\u0637",alternatives:["\u0623\u0639\u062F-\u062A\u0639\u064A\u064A\u0646"],normalized:"reset"},breakpoint:{primary:"\u0646\u0642\u0637\u0629-\u062A\u0648\u0642\u0641",normalized:"breakpoint"},go:{primary:"\u0627\u0630\u0647\u0628",normalized:"go"},scroll:{primary:"\u0645\u0631\u0631",alternatives:["\u062A\u0645\u0631\u064A\u0631"],normalized:"scroll"},push:{primary:"\u0627\u062F\u0641\u0639",alternatives:["\u062F\u0641\u0639"],normalized:"push"},replace:{primary:"\u0627\u0633\u062A\u0628\u062F\u0644_\u0639\u0646\u0648\u0627\u0646",alternatives:["\u0623\u0639\u062F_\u062A\u0639\u064A\u064A\u0646_\u0639\u0646\u0648\u0627\u0646"],normalized:"replace"},process:{primary:"\u0639\u0627\u0644\u062C",alternatives:["\u0645\u0639\u0627\u0644\u062C\u0629"],normalized:"process"},wait:{primary:"\u0627\u0646\u062A\u0638\u0631",normalized:"wait"},fetch:{primary:"\u0627\u062D\u0636\u0631",alternatives:["\u062C\u0644\u0628"],normalized:"fetch"},settle:{primary:"\u0627\u0633\u062A\u0642\u0631",normalized:"settle"},if:{primary:"\u0625\u0630\u0627",normalized:"if"},when:{primary:"\u0639\u0646\u062F\u0645\u0627",normalized:"when"},where:{primary:"\u0623\u064A\u0646",normalized:"where"},else:{primary:"\u0648\u0625\u0644\u0627",alternatives:["\u062E\u0644\u0627\u0641 \u0630\u0644\u0643"],normalized:"else"},repeat:{primary:"\u0643\u0631\u0631",normalized:"repeat"},for:{primary:"\u0644\u0643\u0644",normalized:"for"},while:{primary:"\u0628\u064A\u0646\u0645\u0627",normalized:"while"},continue:{primary:"\u0648\u0627\u0635\u0644",normalized:"continue"},halt:{primary:"\u0623\u0648\u0642\u0641",normalized:"halt"},throw:{primary:"\u0627\u0631\u0645",alternatives:["\u0627\u0631\u0645\u0650"],normalized:"throw"},call:{primary:"\u0627\u0633\u062A\u062F\u0639",alternatives:["\u0646\u0627\u062F\u0650"],normalized:"call"},return:{primary:"\u0627\u0631\u062C\u0639",alternatives:["\u0639\u064F\u062F"],normalized:"return"},then:{primary:"\u062B\u0645",alternatives:["\u0628\u0639\u062F\u0647\u0627","\u062B\u0645\u0651"],normalized:"then"},and:{primary:"\u0648\u0623\u064A\u0636\u0627\u064B",alternatives:["\u0623\u064A\u0636\u0627\u064B"],normalized:"and"},end:{primary:"\u0646\u0647\u0627\u064A\u0629",alternatives:["\u0627\u0646\u062A\u0647\u0649","\u0622\u062E\u0631"],normalized:"end"},js:{primary:"\u062C\u0627\u0641\u0627\u0633\u0643\u0631\u0628\u062A",alternatives:["js"],normalized:"js"},async:{primary:"\u0645\u062A\u0632\u0627\u0645\u0646",normalized:"async"},tell:{primary:"\u0623\u062E\u0628\u0631",normalized:"tell"},default:{primary:"\u0627\u0641\u062A\u0631\u0627\u0636\u064A",normalized:"default"},init:{primary:"\u062A\u0647\u064A\u0626\u0629",alternatives:["\u0628\u062F\u0621"],normalized:"init"},behavior:{primary:"\u0633\u0644\u0648\u0643",normalized:"behavior"},install:{primary:"\u062A\u062B\u0628\u064A\u062A",alternatives:["\u062B\u0628\u0651\u062A"],normalized:"install"},measure:{primary:"\u0642\u064A\u0627\u0633",alternatives:["\u0642\u0650\u0633"],normalized:"measure"},beep:{primary:"\u0635\u0641\u0651\u0631",normalized:"beep"},break:{primary:"\u062A\u0648\u0642\u0641",normalized:"break"},copy:{primary:"\u0627\u0646\u0633\u062E",normalized:"copy"},exit:{primary:"\u0627\u062E\u0631\u062C",normalized:"exit"},pick:{primary:"\u0627\u062E\u062A\u0631",normalized:"pick"},render:{primary:"\u0627\u0631\u0633\u0645",normalized:"render"},into:{primary:"\u0641\u064A",alternatives:["\u0625\u0644\u0649"],normalized:"into"},before:{primary:"\u0642\u0628\u0644",normalized:"before"},after:{primary:"\u0628\u0639\u062F",normalized:"after"},until:{primary:"\u062D\u062A\u0649",normalized:"until"},event:{primary:"\u062D\u062F\u062B",normalized:"event"},from:{primary:"\u0645\u0646",normalized:"from"},connect:{primary:"\u0627\u062A\u0635\u0644",alternatives:["\u0627\u062A\u0635\u0627\u0644"],normalized:"connect"},stream:{primary:"\u062A\u062F\u0641\u0642",alternatives:["\u0628\u062B"],normalized:"stream"},live:{primary:"\u0645\u0628\u0627\u0634\u0631",alternatives:["\u062D\u064A"],normalized:"live"},socket:{primary:"\u0645\u0642\u0628\u0633",alternatives:["websocket"],normalized:"socket"}},tokenization:{prefixes:["\u0627\u0644","\u0648","\u0641","\u0628","\u0643","\u0644"]},eventHandler:{eventMarker:{primary:"\u0639\u0646\u062F",alternatives:["\u0641\u064A","\u0644\u062F\u0649","\u0639\u0646\u062F\u0645\u0627","\u062D\u064A\u0646","\u062D\u064A\u0646\u0645\u0627","\u0644\u0645\u0651\u0627","\u0644\u0645\u0627"],position:"before"},temporalMarkers:["\u0639\u0646\u062F\u0645\u0627","\u062D\u064A\u0646","\u0644\u0645\u0651\u0627"],negationMarker:{primary:"\u0639\u062F\u0645",alternatives:["\u0639\u062F\u0645"],position:"before"}}},Ma=["===","!==","->","==","!=","<=",">=","&&","||","**","+=","-=","*=","/=","+","-","*","/","=",">","<","!","&","|","%","^","~"],Ia=class{constructor(i=Ma){this.name="operator",this.operators=[...i].sort((e,r)=>r.length-e.length);}canExtract(i,e){return this.operators.some(r=>i.startsWith(r,e))}extract(i,e){for(let r of this.operators)if(i.startsWith(r,e))return {value:r,length:r.length};return null}},La="()[]{},:;",ja=class{constructor(i=La){this.punctuation=i,this.name="punctuation";}canExtract(i,e){return this.punctuation.includes(i[e])}extract(i,e){let r=i[e];return this.punctuation.includes(r)?{value:r,length:1}:null}};function $a(i,e){let r=i[e];if(r==="#"){let t=i.slice(e).match(/^#[a-zA-Z_][\w-]*/);return t?t[0]:null}if(r==="."){let t=i.slice(e).match(/^\.[a-zA-Z_][\w-]*/);return t?t[0]:null}if(r==="["){let t=0,a=e;for(;a<i.length;){if(i[a]==="["&&t++,i[a]==="]"&&(t--,t===0))return i.slice(e,a+1);a++;}return null}if(r==="<"){let t=i.slice(e).match(/^<[\w-]+(?:[#.][\w-]+|\[[^\]]+\])*\s*\/>/);return t?t[0]:null}return null}var Va=class{constructor(){this.name="css-selector";}canExtract(i,e){let r=i[e];return r==="#"||r==="."||r==="["||r==="<"}extract(i,e){let r=$a(i,e);return r?{value:r,length:r.length,metadata:{type:"css-selector"}}:null}},qa=class{constructor(){this.name="event-modifier";}canExtract(i,e){if(i[e]!==".")return false;let r=i.slice(e);return /^\.(once|prevent|stop|debounce|throttle|queue)/.test(r)}extract(i,e){let r=i.slice(e).match(/^\.(?:once|prevent|stop|debounce|throttle|queue)(?:\(([^)]+)\))?/);if(!r)return null;let t=r[0],a=t.slice(1).split("(")[0],n=r[1];return {value:t,length:t.length,metadata:{modifierName:a,value:n?a==="queue"?n:parseInt(n,10):void 0}}}};function Wa(i,e){let r=i.slice(e);if(r.startsWith("http://")||r.startsWith("https://")){let t=r.match(/^https?:\/\/[^\s]*/);return t?t[0]:null}if(r.startsWith("//")){let t=r.match(/^\/\/[^\s]*/);return t?t[0]:null}if(r.startsWith("./")||r.startsWith("../")){let t=r.match(/^\.\.?\/[^\s]*/);return t?t[0]:null}if(r.startsWith("/")){let t=r.match(/^\/[^\s]*/);return t?t[0]:null}return null}var Ka=class{constructor(){this.name="url";}canExtract(i,e){let r=i.slice(e);return r.startsWith("http://")||r.startsWith("https://")||r.startsWith("//")||r.startsWith("./")||r.startsWith("../")||r.startsWith("/")}extract(i,e){let r=Wa(i,e);return r?{value:r,length:r.length,metadata:{type:"url"}}:null}},Ua=class{constructor(){this.name="variable-ref";}canExtract(i,e){return i[e]===":"&&e+1<i.length&&/[a-zA-Z_]/.test(i[e+1])}extract(i,e){if(!this.canExtract(i,e))return null;let r=1;for(;e+r<i.length&&/[a-zA-Z0-9_]/.test(i[e+r]);)r++;return {value:i.substring(e,e+r),length:r,metadata:{type:"variable-reference"}}}},vr=le([[1536,1791],[1872,1919],[2208,2303],[64336,65023],[65136,65279]]),Ha=new Set(["\u0641\u064A","\u0639\u0644\u0649","\u0645\u0646","\u0625\u0644\u0649","\u0627\u0644\u0649","\u0645\u0639","\u0639\u0646","\u0642\u0628\u0644","\u0628\u0639\u062F","\u0628\u064A\u0646"]),Ga=class{constructor(){this.name="arabic-keyword";}setContext(i){this.context=i;}canExtract(i,e){return vr(i[e])}extract(i,e){if(!this.context)throw new Error("ArabicKeywordExtractor: context not set");let r=e;this.context.isKeywordStart(i,e);let t="",a=e;for(;a<i.length&&(vr(i[a])||i[a]==="\u0640");)t+=i[a],a++;if(!t)return null;let n=this.context.lookupKeyword(t),o=n&&n.normalized!==n.native?n.normalized:void 0;if(Ha.has(t))return {value:t,length:a-r,metadata:{prepositionValue:t,normalized:o}};let u,s,c;if(!n&&this.context.normalizer){let l=this.context.normalizer.normalize(t);if(l.stem!==t&&l.confidence>=.7){let m=this.context.lookupKeyword(l.stem);m&&(u=m.normalized,s=l.stem,c=l.confidence);}}return {value:t,length:a-r,metadata:{normalized:o||u,stem:s,stemConfidence:c}}}},te=le([[1536,1791],[1872,1919],[2208,2303],[64336,65023],[65136,65279]]),ie=new Map([["\u0648",{normalized:"and",type:"conjunction"}],["\u0641",{normalized:"then",type:"conjunction"}],["\u0628",{normalized:"with",type:"preposition"}],["\u0644",{normalized:"to",type:"preposition"}],["\u0643",{normalized:"like",type:"preposition"}],["\u0648\u0644",{normalized:"and-to",type:"conjunction"}],["\u0648\u0628",{normalized:"and-with",type:"conjunction"}],["\u0648\u0643",{normalized:"and-like",type:"conjunction"}],["\u0641\u0644",{normalized:"then-to",type:"conjunction"}],["\u0641\u0628",{normalized:"then-with",type:"conjunction"}],["\u0641\u0643",{normalized:"then-like",type:"conjunction"}]]),Ya=class{constructor(){this.name="arabic-proclitic";}setContext(i){this.context=i;}canExtract(i,e){let r=i[e];return ie.has(r)||e+1<i.length&&ie.has(i.slice(e,e+2))}extract(i,e){if(!this.context)throw new Error("ArabicProcliticExtractor: context not set");let r=e;for(;r<i.length&&(te(i[r])||i[r]==="\u0640");)r++;let t=i.slice(e,r);if(this.context.isKeyword(t))return null;if(e+2<=i.length){let c=i.slice(e,e+2),l=ie.get(c);if(l){let m=e+2;if(m<i.length&&te(i[m])){let p=0,d=m;for(;d<i.length&&te(i[d]);)p++,d++;if(p>=2)if(ie.get(i[e])){let v=i.slice(e+1,r);if(!this.context.isKeyword(v))return {value:c,length:2,metadata:{procliticType:l.type,normalized:l.normalized}}}else return {value:c,length:2,metadata:{procliticType:l.type,normalized:l.normalized}}}}}let a=i[e],n=ie.get(a);if(!n)return null;let o=e+1;if(o>=i.length||!te(i[o]))return null;let u=0,s=o;for(;s<i.length&&te(i[s]);)u++,s++;return u<2?null:{value:a,length:1,metadata:{procliticType:n.type,normalized:n.normalized}}}},Ja=le([[1536,1791],[1872,1919],[2208,2303],[64336,65023],[65136,65279]]),gr=new Map([["\u0639\u0646\u062F\u0645\u0627",{normalized:"on",formality:"formal",confidence:.95,description:"when (formal MSA)"}],["\u062D\u064A\u0646\u0645\u0627",{normalized:"on",formality:"formal",confidence:.93,description:"when/whenever (formal)"}],["\u0639\u0646\u062F",{normalized:"on",formality:"neutral",confidence:.88,description:"at/when (neutral)"}],["\u062D\u064A\u0646",{normalized:"on",formality:"neutral",confidence:.85,description:"when/time (neutral)"}],["\u0644\u0645\u0651\u0627",{normalized:"on",formality:"dialectal",confidence:.7,description:"when (dialectal, with shadda)"}],["\u0644\u0645\u0627",{normalized:"on",formality:"dialectal",confidence:.68,description:"when (dialectal, no diacritic)"}],["\u0644\u062F\u0649",{normalized:"on",formality:"neutral",confidence:.82,description:"at/with (temporal)"}]]),Xa=class{constructor(){this.name="arabic-temporal";}setContext(i){this._context=i,this._context;}canExtract(i,e){for(let[r]of gr)if(i.startsWith(r,e))return true;return false}extract(i,e){let r=Array.from(gr.entries()).sort(([t],[a])=>a.length-t.length);for(let[t,a]of r)if(i.startsWith(t,e)){let n=e+t.length;if(n>=i.length||/\s/.test(i[n])||!Ja(i[n]))return {value:t,length:t.length,metadata:{temporalFormality:a.formality,temporalConfidence:a.confidence,normalized:a.normalized,description:a.description}}}return null}};function Qa(i){let e=i.charCodeAt(0);return e>=65&&e<=90||e>=97&&e<=122||e===95||e===36}function Za(i){let e=i.charCodeAt(0);return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95||e===36}var en=class{constructor(){this.name="ascii-identifier";}setContext(i){this.context=i;}canExtract(i,e){return Qa(i[e])}extract(i,e){if(!this.context)throw new Error("AsciiIdentifierExtractor: context not set");let r=e,t="",a=e;for(;a<i.length&&Za(i[a]);)t+=i[a],a++;if(!t)return null;let n=this.context.lookupKeyword(t),o=n&&n.normalized!==n.native?n.normalized:void 0;return {value:t,length:a-r,metadata:{normalized:o}}}};function rn(){return [new Ka,new qa,new Ua,new Va]}var tn=new Set(["\u0648\u0644","\u0648\u0628","\u0648\u0643","\u0641\u0644","\u0641\u0628","\u0641\u0643"]),an=new Set(["\u0641\u064A","\u0639\u0644\u0649","\u0645\u0646","\u0625\u0644\u0649","\u0627\u0644\u0649","\u0645\u0639","\u0639\u0646","\u0642\u0628\u0644","\u0628\u0639\u062F","\u0628\u064A\u0646","\u0628","\u0644","\u0643"]),nn=[{native:"\u0635\u062D\u064A\u062D",normalized:"true"},{native:"\u062E\u0637\u0623",normalized:"false"},{native:"null",normalized:"null"},{native:"\u0641\u0627\u0631\u063A",normalized:"null"},{native:"\u063A\u064A\u0631 \u0645\u0639\u0631\u0641",normalized:"undefined"},{native:"\u0627\u0644\u0623\u0648\u0644",normalized:"first"},{native:"\u0623\u0648\u0644",normalized:"first"},{native:"\u0627\u0644\u0623\u062E\u064A\u0631",normalized:"last"},{native:"\u0622\u062E\u0631",normalized:"last"},{native:"\u0627\u0644\u062A\u0627\u0644\u064A",normalized:"next"},{native:"\u0627\u0644\u0633\u0627\u0628\u0642",normalized:"previous"},{native:"\u0627\u0644\u0623\u0642\u0631\u0628",normalized:"closest"},{native:"\u0627\u0644\u0623\u0628",normalized:"parent"},{native:"\u0627\u0644\u0646\u0642\u0631",normalized:"click"},{native:"\u0646\u0642\u0631",normalized:"click"},{native:"\u0627\u0644\u0625\u062F\u062E\u0627\u0644",normalized:"input"},{native:"\u0625\u062F\u062E\u0627\u0644",normalized:"input"},{native:"\u0627\u0644\u062A\u063A\u064A\u064A\u0631",normalized:"change"},{native:"\u062A\u063A\u064A\u064A\u0631",normalized:"change"},{native:"\u0627\u0644\u0625\u0631\u0633\u0627\u0644",normalized:"submit"},{native:"\u0625\u0631\u0633\u0627\u0644",normalized:"submit"},{native:"\u0627\u0644\u062A\u0631\u0643\u064A\u0632",normalized:"focus"},{native:"\u0641\u0642\u062F\u0627\u0646 \u0627\u0644\u062A\u0631\u0643\u064A\u0632",normalized:"blur"},{native:"\u0636\u063A\u0637",normalized:"keydown"},{native:"\u0631\u0641\u0639",normalized:"keyup"},{native:"\u062A\u0645\u0631\u064A\u0631 \u0627\u0644\u0641\u0623\u0631\u0629",normalized:"mouseover"},{native:"\u0645\u063A\u0627\u062F\u0631\u0629 \u0627\u0644\u0641\u0623\u0631\u0629",normalized:"mouseout"},{native:"\u062A\u062D\u0645\u064A\u0644",normalized:"load"},{native:"\u062A\u0645\u0631\u064A\u0631",normalized:"scroll"},{native:"\u0647\u064A",normalized:"it"},{native:"\u062B\u0627\u0646\u064A\u0629",normalized:"s"},{native:"\u062B\u0648\u0627\u0646\u064A",normalized:"s"},{native:"\u0645\u0644\u064A \u062B\u0627\u0646\u064A\u0629",normalized:"ms"},{native:"\u062F\u0642\u064A\u0642\u0629",normalized:"m"},{native:"\u062F\u0642\u0627\u0626\u0642",normalized:"m"},{native:"\u0633\u0627\u0639\u0629",normalized:"h"},{native:"\u0633\u0627\u0639\u0627\u062A",normalized:"h"},{native:"\u0639\u0646\u062F\u0645\u0627",normalized:"on"},{native:"\u062D\u064A\u0646\u0645\u0627",normalized:"on"},{native:"\u0639\u0646\u062F",normalized:"on"},{native:"\u062D\u064A\u0646",normalized:"on"},{native:"\u0644\u0645\u0651\u0627",normalized:"on"},{native:"\u0644\u0645\u0627",normalized:"on"},{native:"\u0644\u062F\u0649",normalized:"on"}],on=class extends Me{constructor(){super(),this.language="ar",this.direction="rtl",this.initializeKeywordsFromProfile(zr,nn),this.normalizer=new Er,this.registerExtractors(rn()),this.registerExtractor(new Re),this.registerExtractor(new _e),this.registerExtractor(new en),this.registerExtractor(new Xa),this.registerExtractor(new Ya),this.registerExtractor(new Ga),this.registerExtractor(new Ia),this.registerExtractor(new ja);}tokenizeWithExtractors(i){let e=[],r=0;for(;r<i.length;){for(;r<i.length&&N(i[r]);)r++;if(r>=i.length)break;let t=false;for(let a of this.extractors)if(a.canExtract(i,r)){let n=a.extract(i,r);if(n){let o=n.metadata?.normalized,u=n.metadata?.stem,s=n.metadata?.stemConfidence,c={};if(n.metadata)for(let[p,d]of Object.entries(n.metadata))p!=="normalized"&&p!=="stem"&&p!=="stemConfidence"&&(c[p]=d);let l;c.procliticType==="conjunction"?l="conjunction":c.procliticType==="preposition"?l="particle":l=this.classifyToken(n.value);let m={};o&&(m.normalized=o),u&&(m.stem=u),s!==void 0&&(m.stemConfidence=s),Object.keys(c).length>0&&(m.metadata=c),e.push(b(n.value,l,k(r,r+n.length),Object.keys(m).length>0?m:void 0)),r+=n.length,t=true;break}}if(!t){let a=i[r],n=this.classifyUnknownChar(a);e.push(b(a,n,k(r,r+1))),r++;}}return new M(e,this.language)}classifyToken(i){return tn.has(i)?"conjunction":an.has(i)?"particle":this.isKeyword(i)?"keyword":i.startsWith("/")||i.startsWith("./")||i.startsWith("../")||i.startsWith("http")?"url":/^\.(once|prevent|stop|debounce|throttle|queue)(\(.*\))?$/.test(i)?"event-modifier":i.startsWith("#")||i.startsWith(".")||i.startsWith("[")||i.startsWith("*")||i.startsWith("<")?"selector":i.startsWith('"')||i.startsWith("'")||/^\d/.test(i)?"literal":"identifier"}},un=new on;or("ar",un,zr);function de(i){let e=i.getAttribute("data-lang");if(e)return Ce(e);let r=i.getAttribute("data-hyperscript-lang")??i.closest?.("[data-hyperscript-lang]")?.getAttribute("data-hyperscript-lang");if(r)return Ce(r);let t=typeof document<"u"?document.documentElement?.lang:null;return t&&t!=="en"?Ce(t):null}function Ce(i){return i.split("-")[0].toLowerCase()}var kr={add:[["patient",""],["destination","to"]],append:[["patient",""],["destination","to"]],async:[],beep:[["patient",""]],behavior:[["patient",""]],blur:[["patient",""]],break:[],breakpoint:[],call:[["patient",""]],clear:[["patient",""]],clone:[["patient",""],["destination","into"]],close:[["patient",""]],compound:[],continue:[],copy:[["patient",""]],decrement:[["patient",""],["quantity","by"]],default:[["destination",""],["patient","to"]],else:[],empty:[["patient",""]],exit:[],fetch:[["source",""],["responseType","as"],["method","via"],["destination","on"]],focus:[["patient",""]],for:[["patient",""],["source","in"]],get:[["source",""],["destination","on"]],go:[["destination",""]],halt:[["patient",""]],hide:[["patient",""],["style","with"]],if:[["condition",""]],increment:[["patient",""],["quantity","by"]],init:[],install:[["patient",""],["destination","on"]],js:[["patient",""]],log:[["patient",""]],make:[["patient",""]],measure:[["patient",""],["source","of"]],morph:[["destination",""],["patient","to"]],on:[["event",""],["source","from"]],open:[["style","as"],["patient",""]],pick:[["patient",""],["source","from"]],prepend:[["patient",""],["destination","to"]],process:[["patient","partials in"]],push:[["patient","url"]],put:[["patient",""],["destination","into"]],remove:[["patient",""],["source","from"]],render:[["patient",""],["style","with"]],repeat:[["quantity",""],["condition","until"]],replace:[["patient","url"]],reset:[["patient",""]],return:[["patient",""]],scroll:[["destination","to"]],select:[["patient",""]],send:[["event",""],["destination","to"]],set:[["destination",""],["patient","to"]],settle:[["patient",""]],show:[["patient",""],["style","with"]],swap:[["method",""],["destination","of"],["patient","with"]],take:[["patient",""],["source","from"]],tell:[["destination",""]],throw:[["patient",""]],toggle:[["patient",""],["destination","on"]],transition:[["patient",""],["goal","to"],["destination","on"],["duration","over"],["style","with"]],trigger:[["event",""],["destination","on"]],unless:[["condition",""]],wait:[["duration",""]],while:[["condition",""]]};function ye(i){switch(i.kind){case "event-handler":return sn(i);case "compound":return ln(i);default:return cn(i)}}function sn(i){let e=["on"],r=i.roles.get("event");r&&e.push(ae(r));let t=i.roles.get("source");if(t&&e.push("from",ae(t)),i.body&&i.body.length>0){let a=i.body.map(ye);e.push(a.join(" then "));}return e.join(" ")}function ln(i){let e=i.chainType==="async"?"async":i.chainType;return i.statements.map(ye).join(` ${e} `)}function cn(i){let e=kr[i.action];if(e){let t=[i.action];for(let[a,n]of e){let o=i.roles.get(a);o&&(a==="destination"&&o.type==="reference"&&o.value==="me"||(n&&t.push(n),t.push(ae(o))));}return t.join(" ")}let r=[i.action];for(let[,t]of i.roles)r.push(ae(t));return r.join(" ")}function ae(i){switch(i.type){case "literal":return typeof i.value=="string"&&i.dataType==="string"?`"${i.value}"`:String(i.value);case "selector":return i.value;case "reference":return i.value;case "property-path":return mn(i);case "expression":return i.raw;case "flag":return i.enabled?`+${i.name}`:`~${i.name}`}}function mn(i){let e=ae(i.object),r=i.property;if(i.object.type==="reference")switch(i.object.value){case "me":return `my ${r}`;case "it":return `its ${r}`;case "you":return `your ${r}`}return `${e}'s ${r}`}var Ar=.5,pn={confidenceThreshold:Ar,strategy:"semantic",fallbackToOriginal:true};function dn(i,e){return typeof i=="number"?i:i[e]??i["*"]??Ar}function we(i,e,r={}){let t={...pn,...r},a=br(i,e,t);if(a!==null)return a;let n=fn(i);if(n){let o=br(n.commands,e,t);if(o!==null)return n.prefix+o}return i}function br(i,e,r){if(r.strategy==="semantic"||r.strategy==="auto"){let t=dn(r.confidenceThreshold,e),a=Cr(i,e,t);if(a!==null)return a}if((r.strategy==="auto"||r.strategy==="i18n")&&r.i18nToEnglish){let t=hn(i,e,r.i18nToEnglish);if(t!==null)return t}return null}var yn=/^(on\s+(?:every\s+)?[\w-]+(?:\[.*?\])?(?:\.[\w-]+(?:\([^)]*\))?)*(?:\s+from\s+\S+)?(?:\s+queue\s+\w+)?\s+)/;function fn(i){let e=i.match(yn);if(!e)return null;let r=e[1],t=i.slice(r.length);return t?{prefix:r,commands:t}:null}function Cr(i,e,r){try{let t=gn(i,e);if(t.length>1)return En(t,e,r);if(!sr(e))return null;let a=pr(i,e);return a.confidence<r||!a.node?null:ye(a.node)}catch{return null}}function hn(i,e,r){try{let t=r(i,e);return t!==i?t:null}catch{return null}}function vn(i){let e=["then"],r=j(i);if(r?.keywords?.then){let t=r.keywords.then;if(t.primary&&t.primary!=="then"&&e.push(t.primary),t.alternatives)for(let a of t.alternatives)e.includes(a)||e.push(a);}return e}function gn(i,e){let t=vn(e).map(u=>u.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),a=new RegExp(`\\s+(?:${t.join("|")})\\s+`,"i"),n=i.split(`
|
|
4
|
+
`).map(u=>u.trim()).filter(u=>u.length>0),o=[];for(let u of n){let s=u.split(a);o.push(...s);}return o}function En(i,e,r){let t=[];for(let a of i){let n=Cr(a.trim(),e,r);if(n===null)return null;t.push(n);}return t.join(" then ")}function De(i={}){return function(r){let{internals:t}=r,a=t.runtime,n=a.getScript.bind(a);a.getScript=function(o){let u=n(o);if(!u)return null;let s=zn(o,i);if(!s||s==="en")return u;let c=we(u,s,i);return i.debug&&c!==u&&console.log(`[hyperscript-i18n] ${s}: "${u}" \u2192 "${c}"`),c};}}function zn(i,e){if(e.languageAttribute){let t=i.getAttribute(e.languageAttribute);if(t)return t.split("-")[0].toLowerCase()}let r=de(i);return r||(e.defaultLanguage??null)}function wr(i,e,r={}){return e==="en"?i:we(i,e,r)}ur(i=>fr(i));function Dr(){typeof _hyperscript<"u"&&_hyperscript.use&&(_hyperscript.use(De()),kn());}function kn(){if(typeof document>"u")return;let e=_hyperscript?.internals?.runtime;if(!e?.processNode||!e?.getInternalData)return;let r=e.getScriptSelector?.()??"[_], [script], [data-script]";document.querySelectorAll(r).forEach(t=>{let a=e.getInternalData(t);a.initialized&&(a.initialized=false);}),e.processNode(document.body);}var iu=["ar"];Dr();exports.plugin=De;exports.preprocess=wr;exports.resolveLanguage=de;exports.supportedLanguages=iu;return exports;})({});
|