@lokascript/semantic 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-ar.ar.global.js +2 -2
- package/dist/browser-core.core.global.js +2 -2
- package/dist/browser-de.de.global.js +2 -2
- package/dist/browser-east-asian.east-asian.global.js +2 -2
- package/dist/browser-en-tr.en-tr.global.js +2 -2
- package/dist/browser-en.en.global.js +2 -2
- package/dist/browser-es-en.es-en.global.js +2 -2
- package/dist/browser-es.es.global.js +2 -2
- package/dist/browser-fr.fr.global.js +2 -2
- package/dist/browser-id.id.global.js +2 -2
- package/dist/browser-ja.ja.global.js +2 -2
- package/dist/browser-ko.ko.global.js +2 -2
- package/dist/browser-lazy.lazy.global.js +2 -2
- package/dist/browser-priority.priority.global.js +2 -2
- package/dist/browser-pt.pt.global.js +2 -2
- package/dist/browser-qu.qu.global.js +2 -2
- package/dist/browser-sw.sw.global.js +2 -2
- package/dist/browser-tr.tr.global.js +2 -2
- package/dist/browser-western.western.global.js +2 -2
- package/dist/browser-zh.zh.global.js +2 -2
- package/dist/browser.global.js +2 -2
- package/dist/browser.global.js.map +1 -1
- package/dist/index.cjs +13042 -17462
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +49 -5
- package/dist/index.d.ts +49 -5
- package/dist/index.js +14044 -18464
- package/dist/index.js.map +1 -1
- package/dist/languages/ar.d.ts +1 -1
- package/dist/languages/ar.js +31 -44
- package/dist/languages/ar.js.map +1 -1
- package/dist/languages/de.d.ts +1 -1
- package/dist/languages/de.js +14 -2
- package/dist/languages/de.js.map +1 -1
- package/dist/languages/en.d.ts +1 -1
- package/dist/languages/en.js +558 -12
- package/dist/languages/en.js.map +1 -1
- package/dist/languages/es.d.ts +1 -1
- package/dist/languages/es.js +16 -0
- package/dist/languages/es.js.map +1 -1
- package/dist/languages/fr.d.ts +1 -1
- package/dist/languages/fr.js +14 -2
- package/dist/languages/fr.js.map +1 -1
- package/dist/languages/id.d.ts +1 -1
- package/dist/languages/id.js +14 -2
- package/dist/languages/id.js.map +1 -1
- package/dist/languages/ja.d.ts +1 -1
- package/dist/languages/ja.js +18 -3
- package/dist/languages/ja.js.map +1 -1
- package/dist/languages/ko.d.ts +8 -1
- package/dist/languages/ko.js +75 -43
- package/dist/languages/ko.js.map +1 -1
- package/dist/languages/pt.d.ts +1 -1
- package/dist/languages/pt.js +17 -0
- package/dist/languages/pt.js.map +1 -1
- package/dist/languages/qu.d.ts +12 -1
- package/dist/languages/qu.js +77 -2
- package/dist/languages/qu.js.map +1 -1
- package/dist/languages/sw.d.ts +1 -1
- package/dist/languages/sw.js.map +1 -1
- package/dist/languages/tr.d.ts +9 -1
- package/dist/languages/tr.js +96 -72
- package/dist/languages/tr.js.map +1 -1
- package/dist/languages/zh.d.ts +1 -1
- package/dist/languages/zh.js +16 -0
- package/dist/languages/zh.js.map +1 -1
- package/dist/{types-C4dcj53L.d.ts → types-BY3Id07j.d.ts} +20 -5
- package/package.json +20 -29
- package/src/generators/command-schemas.ts +21 -10
- package/src/generators/event-handler-generator.ts +50 -44
- package/src/generators/language-profiles.ts +6 -0
- package/src/generators/pattern-generator.ts +883 -1
- package/src/generators/profiles/arabic.ts +19 -3
- package/src/generators/profiles/bengali.ts +12 -1
- package/src/generators/profiles/chinese.ts +15 -0
- package/src/generators/profiles/french.ts +12 -1
- package/src/generators/profiles/german.ts +12 -1
- package/src/generators/profiles/hebrew.ts +148 -0
- package/src/generators/profiles/hindi.ts +12 -1
- package/src/generators/profiles/index.ts +2 -0
- package/src/generators/profiles/indonesian.ts +12 -1
- package/src/generators/profiles/italian.ts +16 -0
- package/src/generators/profiles/japanese.ts +11 -2
- package/src/generators/profiles/korean.ts +15 -1
- package/src/generators/profiles/polish.ts +12 -0
- package/src/generators/profiles/portuguese.ts +16 -0
- package/src/generators/profiles/russian.ts +11 -0
- package/src/generators/profiles/spanish.ts +15 -0
- package/src/generators/profiles/spanishMexico.ts +176 -0
- package/src/generators/profiles/thai.ts +11 -0
- package/src/generators/profiles/turkish.ts +49 -7
- package/src/generators/profiles/types.ts +21 -5
- package/src/generators/profiles/ukrainian.ts +11 -0
- package/src/generators/profiles/vietnamese.ts +11 -0
- package/src/language-building-schema.ts +111 -0
- package/src/languages/_all.ts +5 -1
- package/src/languages/es-MX.ts +32 -0
- package/src/languages/he.ts +15 -0
- package/src/parser/pattern-matcher.ts +10 -1
- package/src/parser/semantic-parser.ts +3 -0
- package/src/patterns/add/ar.ts +3 -59
- package/src/patterns/add/index.ts +5 -1
- package/src/patterns/add/ja.ts +3 -81
- package/src/patterns/add/ko.ts +3 -62
- package/src/patterns/add/qu.ts +69 -0
- package/src/patterns/add/tr.ts +3 -59
- package/src/patterns/builders.ts +1 -0
- package/src/patterns/decrement/tr.ts +3 -36
- package/src/patterns/event-handler/ar.ts +3 -139
- package/src/patterns/event-handler/he.ts +15 -0
- package/src/patterns/event-handler/index.ts +5 -1
- package/src/patterns/event-handler/ja.ts +3 -106
- package/src/patterns/event-handler/ko.ts +3 -121
- package/src/patterns/event-handler/ms.ts +45 -20
- package/src/patterns/event-handler/tr.ts +3 -158
- package/src/patterns/get/ar.ts +3 -37
- package/src/patterns/get/ja.ts +3 -41
- package/src/patterns/get/ko.ts +3 -41
- package/src/patterns/grammar-transformed/ja.ts +3 -1701
- package/src/patterns/grammar-transformed/ko.ts +3 -1299
- package/src/patterns/grammar-transformed/tr.ts +3 -1055
- package/src/patterns/hide/ar.ts +3 -55
- package/src/patterns/hide/ja.ts +3 -57
- package/src/patterns/hide/ko.ts +3 -57
- package/src/patterns/hide/tr.ts +3 -53
- package/src/patterns/increment/tr.ts +3 -40
- package/src/patterns/put/ar.ts +3 -62
- package/src/patterns/put/ja.ts +3 -63
- package/src/patterns/put/ko.ts +3 -55
- package/src/patterns/put/tr.ts +3 -55
- package/src/patterns/remove/ar.ts +3 -59
- package/src/patterns/remove/index.ts +5 -1
- package/src/patterns/remove/ja.ts +3 -62
- package/src/patterns/remove/ko.ts +3 -66
- package/src/patterns/remove/qu.ts +69 -0
- package/src/patterns/remove/tr.ts +3 -66
- package/src/patterns/set/ar.ts +3 -72
- package/src/patterns/set/ja.ts +3 -74
- package/src/patterns/set/ko.ts +3 -73
- package/src/patterns/set/tr.ts +3 -95
- package/src/patterns/show/ar.ts +3 -55
- package/src/patterns/show/ja.ts +3 -57
- package/src/patterns/show/ko.ts +3 -61
- package/src/patterns/show/tr.ts +3 -53
- package/src/patterns/take/ar.ts +3 -39
- package/src/patterns/toggle/ar.ts +3 -49
- package/src/patterns/toggle/index.ts +5 -1
- package/src/patterns/toggle/ja.ts +3 -144
- package/src/patterns/toggle/ko.ts +3 -101
- package/src/patterns/toggle/qu.ts +90 -0
- package/src/patterns/toggle/tr.ts +3 -76
- package/src/registry.ts +179 -15
- package/src/tokenizers/arabic.ts +13 -46
- package/src/tokenizers/bengali.ts +2 -16
- package/src/tokenizers/he.ts +542 -0
- package/src/tokenizers/index.ts +1 -0
- package/src/tokenizers/japanese.ts +3 -1
- package/src/tokenizers/korean.ts +104 -48
- package/src/tokenizers/ms.ts +3 -0
- package/src/tokenizers/quechua.ts +101 -2
- package/src/tokenizers/turkish.ts +64 -69
- package/src/types.ts +13 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var LokaScriptSemanticKo=(()=>{var ge=Object.defineProperty;var ot=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var at=Object.prototype.hasOwnProperty;var st=(r,e)=>{for(var t in e)ge(r,t,{get:e[t],enumerable:!0})},ct=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of it(e))!at.call(r,o)&&o!==t&&ge(r,o,{get:()=>e[o],enumerable:!(n=ot(e,o))||n.enumerable});return r};var lt=r=>ct(ge({},"__esModule",{value:!0}),r);var Mn={};st(Mn,{ASTBuilder:()=>Z,DEFAULT_CONFIDENCE_THRESHOLD:()=>Me,HIGH_CONFIDENCE_THRESHOLD:()=>et,SemanticAnalyzerImpl:()=>Q,VERSION:()=>wn,buildAST:()=>Ye,canParse:()=>ke,createCommandNode:()=>A,createEventHandler:()=>K,createLiteral:()=>T,createPropertyPath:()=>B,createReference:()=>L,createSelector:()=>M,createSemanticAnalyzer:()=>Je,fromExplicit:()=>we,getCommandMapper:()=>X,getPatternsForLanguage:()=>rt,getPatternsForLanguageAndCommand:()=>Pn,getProfile:()=>ye,getSupportedLanguages:()=>Ln,getTokenizer:()=>he,isExplicitSyntax:()=>W,isLanguageSupported:()=>Ve,koreanProfile:()=>j,koreanTokenizer:()=>ce,parse:()=>$,parseAny:()=>Ce,parseExplicit:()=>O,registerCommandMapper:()=>Re,render:()=>H,renderExplicit:()=>G,shouldUseSemanticResult:()=>tt,toExplicit:()=>Ne,tokenize:()=>Rn,tryGetProfile:()=>P});var _=new Map,ee=new Map,J=new Map;var Ae=null;function ze(r,e,t){_.set(r,e),ee.set(r,t),J.delete(r)}var pt=new Map;function he(r){let e=_.get(r);if(!e){let t=Array.from(_.keys()).join(", ");throw new Error(`Language '${r}' is not registered. Registered languages: ${t||"none"}. Import the language module first: import '@lokascript/semantic/languages/${r}';`)}return e}function ye(r){let e=ee.get(r);if(!e){let t=Array.from(ee.keys()).join(", ");throw new Error(`Language profile '${r}' is not registered. Registered languages: ${t||"none"}. Import the language module first: import '@lokascript/semantic/languages/${r}';`)}return e}function je(r){return _.get(r)}function P(r){return ee.get(r)}function te(){return Array.from(_.keys())}function Ve(r){return _.has(r)}function Oe(r,e){return he(e).tokenize(r)}function N(r){let e=J.get(r);if(e)return e;let t=pt.get(r);if(t)return J.set(r,t),t;if(!Ae)throw new Error(`No patterns registered for language '${r}'. Either import the language module or set a pattern generator.`);let n=ye(r),o=Ae(n);return J.set(r,o),o}function Ie(r,e){return N(r).filter(t=>t.command===e).sort((t,n)=>n.priority-t.priority)}var z=class{constructor(e,t){this.pos=0;this.tokens=e,this.language=t}peek(e=0){let t=this.pos+e;return t<0||t>=this.tokens.length?null:this.tokens[t]}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(e){this.pos=e.position}position(){return this.pos}remaining(){return this.tokens.slice(this.pos)}takeWhile(e){let t=[];for(;!this.isAtEnd()&&e(this.peek());)t.push(this.advance());return t}skipWhile(e){for(;!this.isAtEnd()&&e(this.peek());)this.advance()}};function x(r,e){return{start:r,end:e}}function v(r,e,t,n){if(typeof n=="string")return{value:r,kind:e,position:t,normalized:n};if(n){let{normalized:o,stem:i,stemConfidence:s}=n,a={value:r,kind:e,position:t};return o!==void 0&&(a.normalized=o),i!==void 0&&(a.stem=i,s!==void 0&&(a.stemConfidence=s)),a}return{value:r,kind:e,position:t}}function C(r){return/\s/.test(r)}function re(r){return r==="#"||r==="."||r==="["||r==="@"||r==="*"||r==="<"}function oe(r){return r==='"'||r==="'"||r==="`"||r==="\u300C"||r==="\u300D"}function w(r){return/\d/.test(r)}function _e(r){return/[a-zA-Z]/.test(r)}function b(r){return/[a-zA-Z0-9_-]/.test(r)}function ie(r){return e=>{let t=e.charCodeAt(0);return r.some(([n,o])=>t>=n&&t<=o)}}function Se(...r){return e=>r.some(t=>t(e))}function Be(r,e){if(e>=r.length)return null;let t=r[e];if(!re(t))return null;let n=e,o="";if(t==="#"||t==="."){for(o+=r[n++];n<r.length&&b(r[n]);)o+=r[n++];if(o.length<=1)return null;if(n<r.length&&r[n]==="."&&t==="#"){let s=n+1;for(;s<r.length&&b(r[s]);)s++;if(s<r.length&&r[s]==="(")return o}}else if(t==="["){let i=1,s=!1,a=null,l=!1;for(o+=r[n++];n<r.length&&i>0;){let c=r[n];o+=c,l?l=!1:c==="\\"?l=!0:s?c===a&&(s=!1,a=null):c==='"'||c==="'"||c==="`"?(s=!0,a=c):c==="["?i++:c==="]"&&i--,n++}if(i!==0)return null}else if(t==="@"){for(o+=r[n++];n<r.length&&b(r[n]);)o+=r[n++];if(o.length<=1)return null}else if(t==="*"){for(o+=r[n++];n<r.length&&b(r[n]);)o+=r[n++];if(o.length<=1)return null}else if(t==="<"){if(o+=r[n++],n>=r.length||!_e(r[n]))return null;for(;n<r.length&&b(r[n]);)o+=r[n++];for(;n<r.length;){let i=r[n];if(i==="."){if(o+=r[n++],n>=r.length||!b(r[n]))return null;for(;n<r.length&&b(r[n]);)o+=r[n++]}else if(i==="#"){if(o+=r[n++],n>=r.length||!b(r[n]))return null;for(;n<r.length&&b(r[n]);)o+=r[n++]}else if(i==="["){let s=1,a=!1,l=null,c=!1;for(o+=r[n++];n<r.length&&s>0;){let u=r[n];o+=u,c?c=!1:u==="\\"?c=!0:a?u===l&&(a=!1,l=null):u==='"'||u==="'"||u==="`"?(a=!0,l=u):u==="["?s++:u==="]"&&s--,n++}if(s!==0)return null}else break}for(;n<r.length&&C(r[n]);)o+=r[n++];if(n<r.length&&r[n]==="/")for(o+=r[n++];n<r.length&&C(r[n]);)o+=r[n++];if(n>=r.length||r[n]!==">")return null;o+=r[n++]}return o||null}function dt(r,e){if(e>=r.length||r[e]!=="'"||e+1>=r.length||r[e+1].toLowerCase()!=="s")return!1;if(e+2>=r.length)return!0;let n=r[e+2];return C(n)||n==="*"||!b(n)}function Ke(r,e){if(e>=r.length)return null;let t=r[e];if(!oe(t)||t==="'"&&dt(r,e))return null;let o={'"':'"',"'":"'","`":"`","\u300C":"\u300D"}[t];if(!o)return null;let i=e+1,s=t,a=!1;for(;i<r.length;){let l=r[i];if(s+=l,a)a=!1;else if(l==="\\")a=!0;else if(l===o)return s;i++}return s}function ae(r,e){if(e>=r.length)return!1;let t=r[e],n=r[e+1]||"",o=r[e+2]||"";if(t==="/"&&n!=="/"&&/[a-zA-Z0-9._-]/.test(n)||t==="/"&&n==="/"&&/[a-zA-Z]/.test(o)||t==="."&&(n==="/"||n==="."&&o==="/"))return!0;let i=r.slice(e,e+8).toLowerCase();return!!(i.startsWith("http://")||i.startsWith("https://"))}function We(r,e){if(!ae(r,e))return null;let t=e,n="",o=/[a-zA-Z0-9/:._\-?&=%@+~!$'()*,;[\]]/;for(;t<r.length;){let i=r[t];if(i==="#"){if(n.length>0&&/[a-zA-Z0-9/.]$/.test(n))for(n+=i,t++;t<r.length&&/[a-zA-Z0-9_-]/.test(r[t]);)n+=r[t++];break}if(o.test(i))n+=i,t++;else break}return n.length<2?null:n}function $e(r,e){if(e>=r.length)return null;let t=r[e];if(!w(t)&&t!=="-"&&t!=="+")return null;let n=e,o="";if((r[n]==="-"||r[n]==="+")&&(o+=r[n++]),n>=r.length||!w(r[n]))return null;for(;n<r.length&&w(r[n]);)o+=r[n++];if(n<r.length&&r[n]===".")for(o+=r[n++];n<r.length&&w(r[n]);)o+=r[n++];return n<r.length&&(r.slice(n,n+2)==="ms"?o+="ms":(r[n]==="s"||r[n]==="m"||r[n]==="h")&&(o+=r[n])),o}var ne=class ne{constructor(){this.profileKeywords=[];this.profileKeywordMap=new Map}initializeKeywordsFromProfile(e,t=[]){let n=new Map;if(e.keywords){for(let[o,i]of Object.entries(e.keywords))if(n.set(i.primary,{native:i.primary,normalized:i.normalized||o}),i.alternatives)for(let s of i.alternatives)n.set(s,{native:s,normalized:i.normalized||o})}if(e.references)for(let[o,i]of Object.entries(e.references))n.set(i,{native:i,normalized:o});if(e.roleMarkers){for(let[o,i]of Object.entries(e.roleMarkers))if(i.primary&&n.set(i.primary,{native:i.primary,normalized:o}),i.alternatives)for(let s of i.alternatives)n.set(s,{native:s,normalized:o})}for(let o of t)n.set(o.native,o);this.profileKeywords=Array.from(n.values()).sort((o,i)=>i.native.length-o.native.length),this.profileKeywordMap=new Map;for(let o of this.profileKeywords){this.profileKeywordMap.set(o.native.toLowerCase(),o);let i=this.removeDiacritics(o.native);i!==o.native&&!this.profileKeywordMap.has(i.toLowerCase())&&this.profileKeywordMap.set(i.toLowerCase(),o)}}removeDiacritics(e){return e.replace(/[\u064B-\u0652\u0670]/g,"")}tryProfileKeyword(e,t){for(let n of this.profileKeywords)if(e.slice(t).startsWith(n.native))return v(n.native,"keyword",x(t,t+n.native.length),n.normalized);return null}isKeywordStart(e,t){let n=e.slice(t);return this.profileKeywords.some(o=>n.startsWith(o.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 t=this.normalizer.normalize(e);return t.stem!==e&&t.confidence>=.7?t:null}tryMorphKeywordMatch(e,t,n){let o=this.tryNormalize(e);if(!o)return null;let i=this.lookupKeyword(o.stem);if(!i)return null;let s={normalized:i.normalized,stem:o.stem,stemConfidence:o.confidence};return v(e,"keyword",x(t,n),s)}trySelector(e,t){let n=Be(e,t);return n?v(n,"selector",x(t,t+n.length)):null}tryEventModifier(e,t){if(e[t]!==".")return null;let n=e.slice(t).match(/^\.(?:once|debounce|throttle|queue)(?:\(([^)]+)\))?(?:\s|$|\.)/);if(!n)return null;let o=n[0].replace(/(\s|\.)$/,""),i=o.slice(1).split("(")[0],s=n[1];return{...v(o,"event-modifier",x(t,t+o.length)),metadata:{modifierName:i,value:s?i==="queue"?s:parseInt(s,10):void 0}}}tryString(e,t){let n=Ke(e,t);return n?v(n,"literal",x(t,t+n.length)):null}tryNumber(e,t){let n=$e(e,t);return n?v(n,"literal",x(t,t+n.length)):null}tryMatchTimeUnit(e,t,n,o=!1){let i=t;if(o)for(;i<e.length&&C(e[i]);)i++;let s=e.slice(i);for(let a of n){let l=s.slice(0,a.length);if(a.caseInsensitive?l.toLowerCase()===a.pattern.toLowerCase():l===a.pattern){if(a.notFollowedBy&&(s[a.length]||"")===a.notFollowedBy)continue;if(a.checkBoundary){let u=s[a.length]||"";if(b(u))continue}return{suffix:a.suffix,endPos:i+a.length}}}return null}parseBaseNumber(e,t,n=!0){let o=t,i="";if(n&&(e[o]==="-"||e[o]==="+")&&(i+=e[o++]),o>=e.length||!w(e[o]))return null;for(;o<e.length&&w(e[o]);)i+=e[o++];if(o<e.length&&e[o]===".")for(i+=e[o++];o<e.length&&w(e[o]);)i+=e[o++];return!i||i==="-"||i==="+"?null:{number:i,endPos:o}}tryNumberWithTimeUnits(e,t,n,o={}){let{allowSign:i=!0,skipWhitespace:s=!1}=o,a=this.parseBaseNumber(e,t,i);if(!a)return null;let{number:l,endPos:c}=a,u=[...n,...ne.STANDARD_TIME_UNITS],S=this.tryMatchTimeUnit(e,c,u,s);return S&&(l+=S.suffix,c=S.endPos),v(l,"literal",x(t,c))}tryUrl(e,t){let n=We(e,t);return n?v(n,"url",x(t,t+n.length)):null}tryVariableRef(e,t){if(e[t]!==":"||t+1>=e.length||!b(e[t+1]))return null;let n=t+1;for(;n<e.length&&b(e[n]);)n++;let o=e.slice(t,n);return v(o,"identifier",x(t,n))}tryOperator(e,t){let n=e.slice(t,t+2);if(["==","!=","<=",">=","&&","||","->"].includes(n))return v(n,"operator",x(t,t+2));let o=e[t];return["<",">","!","+","-","*","/","="].includes(o)?v(o,"operator",x(t,t+1)):["(",")","{","}",",",";",":"].includes(o)?v(o,"punctuation",x(t,t+1)):null}tryMultiCharParticle(e,t,n){for(let o of n)if(e.slice(t,t+o.length)===o)return v(o,"particle",x(t,t+o.length));return null}};ne.STANDARD_TIME_UNITS=[{pattern:"ms",suffix:"ms",length:2},{pattern:"s",suffix:"s",length:1,checkBoundary:!0},{pattern:"m",suffix:"m",length:1,checkBoundary:!0,notFollowedBy:"s"},{pattern:"h",suffix:"h",length:1,checkBoundary:!0}];var q=ne;function qe(r){return{stem:r,confidence:1}}function se(r,e,t){return t?{stem:r,confidence:e,metadata:t}:{stem:r,confidence:e}}function ut(r){let e=r.charCodeAt(0);return e>=44032&&e<=55203}function mt(r){for(let e of r)if(ut(e))return!0;return!1}var ft=[{pattern:"\uD558\uC2DC\uB2C8\uAE4C",confidence:.85,conjugationType:"honorific-causal",minStemLength:1},{pattern:"\uD558\uC2E4\uB54C",confidence:.88,conjugationType:"honorific-temporal",minStemLength:1},{pattern:"\uD558\uC2E4 \uB54C",confidence:.88,conjugationType:"honorific-temporal",minStemLength:1},{pattern:"\uD558\uC2DC\uBA74",confidence:.88,conjugationType:"honorific-conditional",minStemLength:1},{pattern:"\uC73C\uC2DC\uBA74",confidence:.85,conjugationType:"honorific-conditional",minStemLength:2},{pattern:"\uC2DC\uBA74",confidence:.82,conjugationType:"honorific-conditional",minStemLength:2},{pattern:"\uD558\uACE0\uB098\uC11C",confidence:.85,conjugationType:"sequential-after",minStemLength:1},{pattern:"\uD558\uACE0 \uB098\uC11C",confidence:.85,conjugationType:"sequential-after",minStemLength:1},{pattern:"\uD558\uACE0\uC11C",confidence:.85,conjugationType:"sequential-after",minStemLength:1},{pattern:"\uACE0\uB098\uC11C",confidence:.82,conjugationType:"sequential-after",minStemLength:2},{pattern:"\uACE0 \uB098\uC11C",confidence:.82,conjugationType:"sequential-after",minStemLength:2},{pattern:"\uACE0\uC11C",confidence:.82,conjugationType:"sequential-after",minStemLength:2},{pattern:"\uD558\uAE30\uC804\uC5D0",confidence:.85,conjugationType:"sequential-before",minStemLength:1},{pattern:"\uD558\uAE30 \uC804\uC5D0",confidence:.85,conjugationType:"sequential-before",minStemLength:1},{pattern:"\uAE30\uC804\uC5D0",confidence:.82,conjugationType:"sequential-before",minStemLength:2},{pattern:"\uAE30 \uC804\uC5D0",confidence:.82,conjugationType:"sequential-before",minStemLength:2},{pattern:"\uD558\uC790\uB9C8\uC790",confidence:.88,conjugationType:"immediate",minStemLength:1},{pattern:"\uC790\uB9C8\uC790",confidence:.85,conjugationType:"immediate",minStemLength:2},{pattern:"\uD574\uC57C\uD574\uC694",confidence:.85,conjugationType:"obligation",minStemLength:1},{pattern:"\uD574\uC57C\uD574",confidence:.85,conjugationType:"obligation",minStemLength:1},{pattern:"\uD574\uC57C\uD558\uB2E4",confidence:.85,conjugationType:"obligation",minStemLength:1},{pattern:"\uC5B4\uC57C\uD574\uC694",confidence:.82,conjugationType:"obligation",minStemLength:2},{pattern:"\uC5B4\uC57C\uD574",confidence:.82,conjugationType:"obligation",minStemLength:2},{pattern:"\uC544\uC57C\uD574\uC694",confidence:.82,conjugationType:"obligation",minStemLength:2},{pattern:"\uC544\uC57C\uD574",confidence:.82,conjugationType:"obligation",minStemLength:2},{pattern:"\uD558\uB2C8\uAE4C",confidence:.85,conjugationType:"causal-nikka",minStemLength:1},{pattern:"\uD560\uB54C",confidence:.88,conjugationType:"temporal-ttae",minStemLength:1},{pattern:"\uD560 \uB54C",confidence:.88,conjugationType:"temporal-ttae",minStemLength:1},{pattern:"\uC744\uB54C",confidence:.85,conjugationType:"temporal-ttae",minStemLength:2},{pattern:"\uC744 \uB54C",confidence:.85,conjugationType:"temporal-ttae",minStemLength:2},{pattern:"\uD558\uBA74",confidence:.88,conjugationType:"conditional-myeon",minStemLength:1},{pattern:"\uC73C\uBA74",confidence:.85,conjugationType:"conditional-myeon",minStemLength:2},{pattern:"\uB2C8\uAE4C",confidence:.82,conjugationType:"causal-nikka",minStemLength:2},{pattern:"\uBA74",confidence:.8,conjugationType:"conditional-myeon",minStemLength:2},{pattern:"\uD558\uC600\uC2B5\uB2C8\uB2E4",confidence:.85,conjugationType:"past",minStemLength:1},{pattern:"\uD588\uC2B5\uB2C8\uB2E4",confidence:.85,conjugationType:"past",minStemLength:1},{pattern:"\uD569\uB2C8\uB2E4",confidence:.85,conjugationType:"polite",minStemLength:1},{pattern:"\uC2B5\uB2C8\uB2E4",confidence:.82,conjugationType:"polite",minStemLength:2},{pattern:"\uB429\uB2C8\uB2E4",confidence:.82,conjugationType:"polite",minStemLength:1},{pattern:"\u3142\uB2C8\uB2E4",confidence:.82,conjugationType:"polite",minStemLength:2},{pattern:"\uD558\uC138\uC694",confidence:.85,conjugationType:"honorific",minStemLength:1},{pattern:"\uD558\uC2ED\uC2DC\uC624",confidence:.85,conjugationType:"honorific",minStemLength:1},{pattern:"\uC138\uC694",confidence:.82,conjugationType:"honorific",minStemLength:2},{pattern:"\uC2ED\uC2DC\uC624",confidence:.82,conjugationType:"honorific",minStemLength:2},{pattern:"\uD558\uACE0\uC788\uC5B4\uC694",confidence:.82,conjugationType:"progressive",minStemLength:1},{pattern:"\uD558\uACE0\uC788\uC5B4",confidence:.82,conjugationType:"progressive",minStemLength:1},{pattern:"\uD588\uC5B4\uC694",confidence:.85,conjugationType:"past",minStemLength:1},{pattern:"\uD574\uC694",confidence:.85,conjugationType:"polite",minStemLength:1},{pattern:"\uC5B4\uC694",confidence:.82,conjugationType:"polite",minStemLength:2},{pattern:"\uC544\uC694",confidence:.82,conjugationType:"polite",minStemLength:2},{pattern:"\uD588\uC5B4",confidence:.85,conjugationType:"past",minStemLength:1},{pattern:"\uD574",confidence:.8,conjugationType:"present",minStemLength:1},{pattern:"\uC5C8\uC5B4",confidence:.82,conjugationType:"past",minStemLength:2},{pattern:"\uC558\uC5B4",confidence:.82,conjugationType:"past",minStemLength:2},{pattern:"\uD558\uACE0\uC788\uB2E4",confidence:.82,conjugationType:"progressive",minStemLength:1},{pattern:"\uACE0\uC788\uB2E4",confidence:.8,conjugationType:"progressive",minStemLength:2},{pattern:"\uACE0\uC788\uC5B4",confidence:.8,conjugationType:"progressive",minStemLength:2},{pattern:"\uD558\uB2E4",confidence:.88,conjugationType:"dictionary",minStemLength:1},{pattern:"\uD558\uC9C0\uC54A\uB2E4",confidence:.82,conjugationType:"negative",minStemLength:1},{pattern:"\uC548\uD558\uB2E4",confidence:.82,conjugationType:"negative",minStemLength:1},{pattern:"\uC9C0\uC54A\uB2E4",confidence:.8,conjugationType:"negative",minStemLength:2},{pattern:"\uD574\uB77C",confidence:.82,conjugationType:"imperative",minStemLength:1},{pattern:"\uD558\uB77C",confidence:.82,conjugationType:"imperative",minStemLength:1},{pattern:"\uB2E4",confidence:.75,conjugationType:"dictionary",minStemLength:2}],gt=[{pattern:"\uD558\uC2DC\uB2C8\uAE4C",confidence:.88,conjugationType:"honorific-causal"},{pattern:"\uD558\uC2E4\uB54C",confidence:.88,conjugationType:"honorific-temporal"},{pattern:"\uD558\uC2E4 \uB54C",confidence:.88,conjugationType:"honorific-temporal"},{pattern:"\uD558\uC2DC\uBA74",confidence:.88,conjugationType:"honorific-conditional"},{pattern:"\uD558\uC168\uC5B4\uC694",confidence:.85,conjugationType:"honorific-past"},{pattern:"\uD558\uC168\uC5B4",confidence:.85,conjugationType:"honorific-past"},{pattern:"\uD558\uC2ED\uB2C8\uB2E4",confidence:.85,conjugationType:"honorific-polite"},{pattern:"\uD558\uACE0\uB098\uC11C",confidence:.88,conjugationType:"sequential-after"},{pattern:"\uD558\uACE0 \uB098\uC11C",confidence:.88,conjugationType:"sequential-after"},{pattern:"\uD558\uACE0\uC11C",confidence:.88,conjugationType:"sequential-after"},{pattern:"\uD558\uAE30\uC804\uC5D0",confidence:.88,conjugationType:"sequential-before"},{pattern:"\uD558\uAE30 \uC804\uC5D0",confidence:.88,conjugationType:"sequential-before"},{pattern:"\uD558\uC790\uB9C8\uC790",confidence:.88,conjugationType:"immediate"},{pattern:"\uD574\uC57C\uD574\uC694",confidence:.88,conjugationType:"obligation"},{pattern:"\uD574\uC57C\uD574",confidence:.88,conjugationType:"obligation"},{pattern:"\uD574\uC57C\uD558\uB2E4",confidence:.88,conjugationType:"obligation"},{pattern:"\uD558\uB2C8\uAE4C",confidence:.88,conjugationType:"causal-nikka"},{pattern:"\uD560\uB54C",confidence:.88,conjugationType:"temporal-ttae"},{pattern:"\uD560 \uB54C",confidence:.88,conjugationType:"temporal-ttae"},{pattern:"\uD558\uBA74",confidence:.88,conjugationType:"conditional-myeon"},{pattern:"\uD558\uC600\uC2B5\uB2C8\uB2E4",confidence:.85,conjugationType:"past"},{pattern:"\uD588\uC2B5\uB2C8\uB2E4",confidence:.85,conjugationType:"past"},{pattern:"\uD569\uB2C8\uB2E4",confidence:.85,conjugationType:"polite"},{pattern:"\uD558\uC2ED\uC2DC\uC624",confidence:.85,conjugationType:"honorific"},{pattern:"\uD558\uC138\uC694",confidence:.85,conjugationType:"honorific"},{pattern:"\uD588\uC5B4\uC694",confidence:.85,conjugationType:"past"},{pattern:"\uD574\uC694",confidence:.85,conjugationType:"polite"},{pattern:"\uD588\uC5B4",confidence:.85,conjugationType:"past"},{pattern:"\uD574",confidence:.8,conjugationType:"present"},{pattern:"\uD558\uACE0\uC788\uC5B4\uC694",confidence:.82,conjugationType:"progressive"},{pattern:"\uD558\uACE0\uC788\uC5B4",confidence:.82,conjugationType:"progressive"},{pattern:"\uD558\uACE0\uC788\uB2E4",confidence:.82,conjugationType:"progressive"},{pattern:"\uD574\uC11C",confidence:.82,conjugationType:"connective"},{pattern:"\uD558\uACE0",confidence:.8,conjugationType:"connective"},{pattern:"\uD558\uC9C0\uC54A\uC544\uC694",confidence:.82,conjugationType:"negative"},{pattern:"\uD558\uC9C0\uC54A\uB2E4",confidence:.82,conjugationType:"negative"},{pattern:"\uC548\uD574\uC694",confidence:.82,conjugationType:"negative"},{pattern:"\uC548\uD574",confidence:.82,conjugationType:"negative"},{pattern:"\uD574\uB77C",confidence:.82,conjugationType:"imperative"},{pattern:"\uD558\uB77C",confidence:.82,conjugationType:"imperative"},{pattern:"\uD558\uB2E4",confidence:.88,conjugationType:"dictionary"}],U=class{constructor(){this.language="ko"}isNormalizable(e){return!(!mt(e)||e.length<2)}normalize(e){let t=this.normalizeCompound(e);if(t)return t;let n=this.tryHadaNormalization(e);if(n)return n;for(let o of ft)if(e.endsWith(o.pattern)){let i=e.slice(0,-o.pattern.length),s=o.minStemLength??2;if(i.length<s)continue;let a={removedSuffixes:[o.pattern]};return o.conjugationType&&(a.conjugationType=o.conjugationType),se(i,o.confidence,a)}return qe(e)}tryHadaNormalization(e){for(let t of gt)if(e.endsWith(t.pattern)){let n=e.slice(0,-t.pattern.length);if(n.length<1)continue;return se(n,t.confidence,{removedSuffixes:[t.pattern],conjugationType:t.conjugationType,originalForm:"hada-verb"})}return null}normalizeCompound(e){let t=[{pattern:"\uD558\uACE0\uB098\uC11C\uC600\uC5B4",suffixes:["\uD558\uACE0\uB098\uC11C","\uC600\uC5B4"],confidence:.78,conjugationType:"sequential-after",minStemLength:2},{pattern:"\uD558\uACE0\uB098\uC11C\uC600\uB2E4",suffixes:["\uD558\uACE0\uB098\uC11C","\uC600\uB2E4"],confidence:.78,conjugationType:"sequential-after",minStemLength:2},{pattern:"\uD558\uACE0\uB098\uC11C",suffixes:["\uD558\uACE0","\uB098\uC11C"],confidence:.85,conjugationType:"sequential-after",minStemLength:2},{pattern:"\uD574\uC57C\uD588\uC5B4",suffixes:["\uD574\uC57C","\uD588\uC5B4"],confidence:.8,conjugationType:"obligation",minStemLength:2},{pattern:"\uD574\uC57C\uD588\uB2E4",suffixes:["\uD574\uC57C","\uD588\uB2E4"],confidence:.8,conjugationType:"obligation",minStemLength:2},{pattern:"\uD574\uC57C\uD588\uC2B5\uB2C8\uB2E4",suffixes:["\uD574\uC57C","\uD588\uC2B5\uB2C8\uB2E4"],confidence:.8,conjugationType:"obligation",minStemLength:2},{pattern:"\uD558\uC2DC\uBA74\uC11C",suffixes:["\uD558\uC2DC","\uBA74\uC11C"],confidence:.82,conjugationType:"connective",minStemLength:2},{pattern:"\uD558\uC2DC\uBA70",suffixes:["\uD558\uC2DC","\uBA70"],confidence:.82,conjugationType:"connective",minStemLength:2},{pattern:"\uD558\uACE0\uC788\uC5C8\uC5B4",suffixes:["\uD558\uACE0","\uC788\uC5C8\uC5B4"],confidence:.8,conjugationType:"progressive",minStemLength:2},{pattern:"\uD558\uACE0\uC788\uC5C8\uB2E4",suffixes:["\uD558\uACE0","\uC788\uC5C8\uB2E4"],confidence:.8,conjugationType:"progressive",minStemLength:2}];for(let{pattern:n,suffixes:o,confidence:i,conjugationType:s,minStemLength:a}of t)if(e.endsWith(n)){let l=e.slice(0,-n.length);if(l.length<a)continue;return se(l,i,{removedSuffixes:o,conjugationType:s})}return null}},In=new U;var j={code:"ko",name:"Korean",nativeName:"\uD55C\uAD6D\uC5B4",direction:"ltr",wordOrder:"SOV",markingStrategy:"particle",usesSpaces:!0,verb:{position:"end",suffixes:["\uB2E4","\uC694","\uB2C8\uB2E4","\uC138\uC694"],subjectDrop:!0},references:{me:"\uB098",it:"\uADF8\uAC83",you:"\uB108",result:"\uACB0\uACFC",event:"\uC774\uBCA4\uD2B8",target:"\uB300\uC0C1",body:"\uBCF8\uBB38"},possessive:{marker:"\uC758",markerPosition:"between",specialForms:{me:"\uB0B4",it:"\uADF8\uAC83\uC758",you:"\uB124"},keywords:{\uB0B4:"me",\uB124:"you",\uADF8\uC758:"it"}},roleMarkers:{patient:{primary:"\uC744",alternatives:["\uB97C"],position:"after"},destination:{primary:"\uC5D0",alternatives:["\uC73C\uB85C","\uB85C","\uC5D0\uC11C"],position:"after"},source:{primary:"\uC5D0\uC11C",alternatives:["\uBD80\uD130"],position:"after"},style:{primary:"\uB85C",alternatives:["\uC73C\uB85C"],position:"after"},event:{primary:"\uC744",alternatives:["\uB97C"],position:"after"}},keywords:{toggle:{primary:"\uD1A0\uAE00",alternatives:["\uC804\uD658"],normalized:"toggle"},add:{primary:"\uCD94\uAC00",normalized:"add"},remove:{primary:"\uC81C\uAC70",alternatives:["\uC0AD\uC81C"],normalized:"remove"},put:{primary:"\uB123\uB2E4",alternatives:["\uB123\uAE30","\uB193\uAE30"],normalized:"put"},append:{primary:"\uCD94\uAC00",normalized:"append"},take:{primary:"\uAC00\uC838\uC624\uB2E4",normalized:"take"},make:{primary:"\uB9CC\uB4E4\uB2E4",normalized:"make"},clone:{primary:"\uBCF5\uC0AC",normalized:"clone"},swap:{primary:"\uAD50\uD658",alternatives:["\uBC14\uAFB8\uB2E4"],normalized:"swap"},morph:{primary:"\uBCC0\uD615",alternatives:["\uBCC0\uD658"],normalized:"morph"},set:{primary:"\uC124\uC815",normalized:"set"},get:{primary:"\uC5BB\uB2E4",alternatives:["\uAC00\uC838\uC624\uAE30"],normalized:"get"},increment:{primary:"\uC99D\uAC00",normalized:"increment"},decrement:{primary:"\uAC10\uC18C",normalized:"decrement"},log:{primary:"\uB85C\uADF8",normalized:"log"},show:{primary:"\uBCF4\uC774\uB2E4",alternatives:["\uD45C\uC2DC","\uBCF4\uC774\uAE30"],normalized:"show"},hide:{primary:"\uC228\uAE30\uB2E4",alternatives:["\uC228\uAE30\uAE30"],normalized:"hide"},transition:{primary:"\uC804\uD658",normalized:"transition"},on:{primary:"\uC5D0",alternatives:["\uC2DC","\uB54C","\uD560 \uB54C"],normalized:"on"},trigger:{primary:"\uD2B8\uB9AC\uAC70",normalized:"trigger"},send:{primary:"\uBCF4\uB0B4\uB2E4",normalized:"send"},focus:{primary:"\uD3EC\uCEE4\uC2A4",normalized:"focus"},blur:{primary:"\uBE14\uB7EC",normalized:"blur"},go:{primary:"\uC774\uB3D9",normalized:"go"},wait:{primary:"\uB300\uAE30",normalized:"wait"},fetch:{primary:"\uAC00\uC838\uC624\uAE30",normalized:"fetch"},settle:{primary:"\uC548\uC815",normalized:"settle"},if:{primary:"\uB9CC\uC57D",normalized:"if"},when:{primary:"\uB54C",normalized:"when"},where:{primary:"\uC5B4\uB514",normalized:"where"},else:{primary:"\uC544\uB2C8\uBA74",normalized:"else"},repeat:{primary:"\uBC18\uBCF5",normalized:"repeat"},for:{primary:"\uB3D9\uC548",normalized:"for"},while:{primary:"\uB3D9\uC548",normalized:"while"},continue:{primary:"\uACC4\uC18D",normalized:"continue"},halt:{primary:"\uC815\uC9C0",normalized:"halt"},throw:{primary:"\uB358\uC9C0\uB2E4",normalized:"throw"},call:{primary:"\uD638\uCD9C",normalized:"call"},return:{primary:"\uBC18\uD658",normalized:"return"},then:{primary:"\uADF8\uB2E4\uC74C",alternatives:["\uADF8\uB9AC\uACE0","\uADF8\uB7F0\uD6C4"],normalized:"then"},and:{primary:"\uADF8\uB9AC\uACE0",alternatives:["\uB610\uD55C","\uBC0F"],normalized:"and"},end:{primary:"\uB05D",alternatives:["\uC885\uB8CC","\uB9C8\uCE68"],normalized:"end"},js:{primary:"JS\uC2E4\uD589",alternatives:["js"],normalized:"js"},async:{primary:"\uBE44\uB3D9\uAE30",normalized:"async"},tell:{primary:"\uB9D0\uD558\uB2E4",normalized:"tell"},default:{primary:"\uAE30\uBCF8\uAC12",normalized:"default"},init:{primary:"\uCD08\uAE30\uD654",normalized:"init"},behavior:{primary:"\uB3D9\uC791",normalized:"behavior"},install:{primary:"\uC124\uCE58",normalized:"install"},measure:{primary:"\uCE21\uC815",normalized:"measure"},into:{primary:"\uC73C\uB85C",normalized:"into"},before:{primary:"\uC804\uC5D0",normalized:"before"},after:{primary:"\uD6C4\uC5D0",normalized:"after"},until:{primary:"\uAE4C\uC9C0",normalized:"until"},event:{primary:"\uC774\uBCA4\uD2B8",normalized:"event"},from:{primary:"\uC5D0\uC11C",normalized:"from"}},tokenization:{particles:["\uC744","\uB97C","\uC774","\uAC00","\uC740","\uB294","\uC5D0","\uC5D0\uC11C","\uC73C\uB85C","\uB85C","\uC640","\uACFC","\uB3C4"],boundaryStrategy:"space"}};var ht=ie([[44032,55203]]),yt=ie([[4352,4607],[12592,12687]]),F=Se(ht,yt),St=new Set(["\uC774","\uAC00","\uC744","\uB97C","\uC740","\uB294","\uC5D0","\uC5D0\uC11C","\uB85C","\uC73C\uB85C","\uC640","\uACFC","\uC758","\uB3C4","\uB9CC","\uBD80\uD130","\uAE4C\uC9C0","\uCC98\uB7FC","\uBCF4\uB2E4"]),xe=new Set(["\uC774","\uAC00","\uC744","\uB97C","\uC740","\uB294","\uC5D0","\uB85C","\uC640","\uACFC","\uC758","\uB3C4","\uB9CC"]),Ue=["\uC5D0\uC11C","\uC73C\uB85C","\uBD80\uD130","\uAE4C\uC9C0","\uCC98\uB7FC","\uBCF4\uB2E4"],Fe=new Map([["\uC774",{role:"agent",confidence:.85,variant:"consonant",description:"subject marker (after consonant)"}],["\uAC00",{role:"agent",confidence:.85,variant:"vowel",description:"subject marker (after vowel)"}],["\uC744",{role:"patient",confidence:.95,variant:"consonant",description:"object marker (after consonant)"}],["\uB97C",{role:"patient",confidence:.95,variant:"vowel",description:"object marker (after vowel)"}],["\uC740",{role:"agent",confidence:.75,variant:"consonant",description:"topic marker (after consonant)"}],["\uB294",{role:"agent",confidence:.75,variant:"vowel",description:"topic marker (after vowel)"}],["\uC5D0",{role:"destination",confidence:.85,description:"at/to marker"}],["\uC5D0\uC11C",{role:"source",confidence:.8,description:"at/from marker (action location)"}],["\uB85C",{role:"destination",confidence:.85,variant:"vowel",description:"to/by means (after vowel or \u3139)"}],["\uC73C\uB85C",{role:"destination",confidence:.85,variant:"consonant",description:"to/by means (after consonant)"}],["\uC640",{role:"style",confidence:.7,variant:"vowel",description:"and/with (after vowel)"}],["\uACFC",{role:"style",confidence:.7,variant:"consonant",description:"and/with (after consonant)"}],["\uC758",{role:"patient",confidence:.6,description:"possessive marker"}],["\uB3C4",{role:"patient",confidence:.65,description:"also/too marker"}],["\uB9CC",{role:"patient",confidence:.65,description:"only marker"}],["\uBD80\uD130",{role:"source",confidence:.9,description:"from/since marker"}],["\uAE4C\uC9C0",{role:"destination",confidence:.75,description:"until/to marker"}],["\uCC98\uB7FC",{role:"manner",confidence:.8,description:"like/as marker"}],["\uBCF4\uB2E4",{role:"source",confidence:.75,description:"than marker"}]]),xt=[{native:"\uCC38",normalized:"true"},{native:"\uAC70\uC9D3",normalized:"false"},{native:"\uB110",normalized:"null"},{native:"\uBBF8\uC815\uC758",normalized:"undefined"},{native:"\uCCAB\uBC88\uC9F8",normalized:"first"},{native:"\uB9C8\uC9C0\uB9C9",normalized:"last"},{native:"\uB2E4\uC74C",normalized:"next"},{native:"\uC774\uC804",normalized:"previous"},{native:"\uAC00\uC7A5\uAC00\uAE4C\uC6B4",normalized:"closest"},{native:"\uBD80\uBAA8",normalized:"parent"},{native:"\uD074\uB9AD",normalized:"click"},{native:"\uB354\uBE14\uD074\uB9AD",normalized:"dblclick"},{native:"\uBCC0\uACBD",normalized:"change"},{native:"\uC81C\uCD9C",normalized:"submit"},{native:"\uC785\uB825",normalized:"input"},{native:"\uB85C\uB4DC",normalized:"load"},{native:"\uC2A4\uD06C\uB864",normalized:"scroll"},{native:"\uD0A4\uB2E4\uC6B4",normalized:"keydown"},{native:"\uD0A4\uC5C5",normalized:"keyup"},{native:"\uB9C8\uC6B0\uC2A4\uC624\uBC84",normalized:"mouseover"},{native:"\uB9C8\uC6B0\uC2A4\uC544\uC6C3",normalized:"mouseout"},{native:"\uB0B4",normalized:"my"},{native:"\uADF8\uAC83\uC758",normalized:"its"},{native:"\uD558\uBA74",normalized:"on"},{native:"\uC73C\uBA74",normalized:"on"},{native:"\uBA74",normalized:"on"},{native:"\uD560\uB54C",normalized:"on"},{native:"\uD560 \uB54C",normalized:"on"},{native:"\uC744\uB54C",normalized:"on"},{native:"\uC744 \uB54C",normalized:"on"},{native:"\uD558\uB2C8\uAE4C",normalized:"on"},{native:"\uB2C8\uAE4C",normalized:"on"},{native:"\uADF8\uB7EC\uBA74",normalized:"then"},{native:"\uADF8\uB807\uC9C0\uC54A\uC73C\uBA74",normalized:"otherwise"},{native:"\uC911\uB2E8",normalized:"break"},{native:"\uADF8\uB9AC\uACE0",normalized:"and"},{native:"\uB610\uB294",normalized:"or"},{native:"\uC544\uB2C8",normalized:"not"},{native:"\uC774\uB2E4",normalized:"is"},{native:"\uCD94\uAC00",normalized:"add"},{native:"\uB97C\uD1A0\uAE00",normalized:"toggle"},{native:"\uB97C\uC804\uD658",normalized:"toggle"},{native:"\uB97C\uCD94\uAC00",normalized:"add"},{native:"\uB97C\uC81C\uAC70",normalized:"remove"},{native:"\uB97C\uC0AD\uC81C",normalized:"remove"},{native:"\uB97C\uC99D\uAC00",normalized:"increment"},{native:"\uB97C\uAC10\uC18C",normalized:"decrement"},{native:"\uB97C\uD45C\uC2DC",normalized:"show"},{native:"\uB97C\uC228\uAE30\uB2E4",normalized:"hide"},{native:"\uB97C\uC124\uC815",normalized:"set"},{native:"\uC744\uD1A0\uAE00",normalized:"toggle"},{native:"\uC744\uC804\uD658",normalized:"toggle"},{native:"\uC744\uCD94\uAC00",normalized:"add"},{native:"\uC744\uC81C\uAC70",normalized:"remove"},{native:"\uC744\uC0AD\uC81C",normalized:"remove"},{native:"\uC744\uC99D\uAC00",normalized:"increment"},{native:"\uC744\uAC10\uC18C",normalized:"decrement"},{native:"\uC744\uD45C\uC2DC",normalized:"show"},{native:"\uC744\uC228\uAE30\uB2E4",normalized:"hide"},{native:"\uC744\uC124\uC815",normalized:"set"},{native:"\uCD08",normalized:"s"},{native:"\uBC00\uB9AC\uCD08",normalized:"ms"},{native:"\uBD84",normalized:"m"},{native:"\uC2DC\uAC04",normalized:"h"}],vt=[{pattern:"\uBC00\uB9AC\uCD08",suffix:"ms",length:3},{pattern:"\uC2DC\uAC04",suffix:"h",length:2},{pattern:"\uCD08",suffix:"s",length:1},{pattern:"\uBD84",suffix:"m",length:1}],ve=class extends q{constructor(){super();this.language="ko";this.direction="ltr";this.initializeKeywordsFromProfile(j,xt),this.normalizer=new U}tokenize(t){let n=[],o=0;for(;o<t.length;){if(C(t[o])){o++;continue}if(re(t[o])){let a=this.tryEventModifier(t,o);if(a){n.push(a),o=a.position.end;continue}let l=this.trySelector(t,o);if(l){n.push(l),o=l.position.end;continue}}if(oe(t[o])){let a=this.tryString(t,o);if(a){n.push(a),o=a.position.end;continue}}if(ae(t,o)){let a=this.tryUrl(t,o);if(a){n.push(a),o=a.position.end;continue}}if(w(t[o])){let a=this.extractKoreanNumber(t,o);if(a){n.push(a),o=a.position.end;continue}}let i=this.tryVariableRef(t,o);if(i){n.push(i),o=i.position.end;continue}if(F(t[o])){let a=this.extractKoreanWord(t,o);if(a){n.push(a),o=a.position.end;continue}}let s=this.tryMultiCharParticle(t,o,Ue);if(s){let a=Fe.get(s.value);a?n.push({...s,metadata:{particleRole:a.role,particleConfidence:a.confidence,particleVariant:a.variant}}):n.push(s),o=s.position.end;continue}if(xe.has(t[o])){let a=t[o],l=Fe.get(a);l?n.push({...v(a,"particle",x(o,o+1)),metadata:{particleRole:l.role,particleConfidence:l.confidence,particleVariant:l.variant}}):n.push(v(a,"particle",x(o,o+1))),o++;continue}if(b(t[o])){let a=this.extractAsciiWord(t,o);if(a){n.push(a),o=a.position.end;continue}}o++}return new z(n,"ko")}classifyToken(t){return St.has(t)?"particle":this.isKeyword(t)?"keyword":t.startsWith("#")||t.startsWith(".")||t.startsWith("[")?"selector":t.startsWith('"')||t.startsWith("'")||/^\d/.test(t)?"literal":"identifier"}extractKoreanWord(t,n){for(let c=Math.min(6,t.length-n);c>=2;c--){let u=t.slice(n,n+c),S=!0;for(let d=0;d<u.length;d++)if(!F(u[d])){S=!1;break}if(!S)continue;let y=this.lookupKeyword(u);if(y)return v(u,"keyword",x(n,n+c),y.normalized);let g=this.tryMorphKeywordMatch(u,n,n+c);if(g)return g}let i=n,s="";for(;i<t.length;){let c=t[i],u=i+1<t.length?t[i+1]:"";if(xe.has(c)&&s.length>0&&(u===""||C(u)||!F(u)||xe.has(u)))break;let S=!1;for(let y of Ue)if(t.slice(i,i+y.length)===y&&s.length>0){let g=i+y.length,d=g<t.length?t[g]:"";if(d===""||C(d)||!F(d)){S=!0;break}}if(S)break;if(F(c))s+=c,i++;else break}if(!s)return null;let a=this.lookupKeyword(s);if(a)return v(s,"keyword",x(n,i),a.normalized);let l=this.tryMorphKeywordMatch(s,n,i);return l||v(s,"identifier",x(n,i))}extractAsciiWord(t,n){let o=n,i="";for(;o<t.length&&b(t[o]);)i+=t[o++];return i?v(i,"identifier",x(n,o)):null}extractKoreanNumber(t,n){return this.tryNumberWithTimeUnits(t,n,vt,{allowSign:!1,skipWhitespace:!1})}},ce=new ve;ze("ko",ce,j);function De(r){return je(r)}function le(r,e){return Oe(r,e)}function pe(){return te()}function M(r){let e="complex";return r.startsWith("#")&&!r.includes(" ")?e="id":r.startsWith(".")&&!r.includes(" ")?e="class":r.startsWith("[")&&r.endsWith("]")?e="attribute":/^[a-z][a-z0-9]*$/i.test(r)&&(e="element"),{type:"selector",value:r,selectorKind:e}}function T(r,e){let t={type:"literal",value:r};return e!==void 0?{type:"literal",value:r,dataType:e}:t}function L(r){return{type:"reference",value:r}}function B(r,e){return{type:"property-path",object:r,property:e}}function A(r,e,t){let n={kind:"command",action:r,roles:new Map(Object.entries(e))};return t!==void 0?{...n,metadata:t}:n}function K(r,e,t,n,o){let i=new Map;i.set("event",r);let s={kind:"event-handler",action:"on",roles:i,body:e};return t!==void 0&&(s.eventModifiers=t),n!==void 0&&(s.metadata=n),o!==void 0&&o.length>0&&(s.parameterNames=o),s}function He(r,e="then",t){let n={kind:"compound",action:"compound",roles:new Map,statements:r,chainType:e};return t!==void 0&&(n.metadata=t),n}function Te(r,e){return!e||e.length===0||e.includes(r)||e.includes("expression")?!0:r==="property-path"?e.some(t=>["selector","reference","expression"].includes(t)):!1}function Ge(r,e){return r.possessive?.keywords?.[e]}var R=class R{constructor(){this.stemMatchCount=0;this.totalKeywordMatches=0}matchPattern(e,t){let n=e.mark(),o=new Map;if(this.currentProfile=P(t.language),this.stemMatchCount=0,this.totalKeywordMatches=0,!this.matchTokenSequence(e,t.template.tokens,o))return e.reset(n),null;let s=this.calculateConfidence(t,o);return this.applyExtractionRules(t,o),{pattern:t,captured:o,consumedTokens:e.position()-n.position,confidence:s}}matchBest(e,t){let n=[];for(let i of t){let s=e.mark(),a=this.matchPattern(e,i);a&&n.push(a),e.reset(s)}if(n.length===0)return null;n.sort((i,s)=>{let a=s.pattern.priority-i.pattern.priority;return a!==0?a:s.confidence-i.confidence});let o=n[0];return this.matchPattern(e,o.pattern),o}matchTokenSequence(e,t,n){if(this.currentProfile?.code==="ar")for(;e.peek()?.kind==="conjunction";)e.advance();for(let o of t)if(!this.matchPatternToken(e,o,n)){if(this.isOptional(o))continue;return!1}return!0}matchPatternToken(e,t,n){switch(t.type){case"literal":return this.matchLiteralToken(e,t);case"role":return this.matchRoleToken(e,t,n);case"group":return this.matchGroupToken(e,t,n);default:return!1}}matchLiteralToken(e,t){let n=e.peek();if(!n)return!1;let o=this.getMatchType(n,t.value);if(o!=="none")return this.totalKeywordMatches++,o==="stem"&&this.stemMatchCount++,e.advance(),!0;if(t.alternatives)for(let i of t.alternatives){let s=this.getMatchType(n,i);if(s!=="none")return this.totalKeywordMatches++,s==="stem"&&this.stemMatchCount++,e.advance(),!0}return!1}matchRoleToken(e,t,n){this.skipNoiseWords(e);let o=e.peek();if(!o)return t.optional||!1;let i=this.tryMatchPossessiveExpression(e);if(i)return t.expectedTypes&&t.expectedTypes.length>0&&!t.expectedTypes.includes(i.type)&&!t.expectedTypes.includes("expression")?t.optional||!1:(n.set(t.role,i),!0);let s=this.tryMatchMethodCallExpression(e);if(s)return t.expectedTypes&&t.expectedTypes.length>0&&!t.expectedTypes.includes(s.type)&&!t.expectedTypes.includes("expression")?t.optional||!1:(n.set(t.role,s),!0);let a=this.tryMatchPossessiveSelectorExpression(e);if(a)return t.expectedTypes&&t.expectedTypes.length>0&&!Te(a.type,t.expectedTypes)?t.optional||!1:(n.set(t.role,a),!0);let l=this.tryMatchPropertyAccessExpression(e);if(l)return t.expectedTypes&&t.expectedTypes.length>0&&!t.expectedTypes.includes(l.type)&&!t.expectedTypes.includes("expression")?t.optional||!1:(n.set(t.role,l),!0);let c=this.tryMatchSelectorPropertyExpression(e);if(c)return t.expectedTypes&&t.expectedTypes.length>0&&!Te(c.type,t.expectedTypes)?t.optional||!1:(n.set(t.role,c),!0);let u=this.tokenToSemanticValue(o);return!u||t.expectedTypes&&t.expectedTypes.length>0&&!t.expectedTypes.includes(u.type)?t.optional||!1:(n.set(t.role,u),e.advance(),!0)}tryMatchPossessiveExpression(e){let t=e.peek();if(!t||!this.currentProfile)return null;let n=(t.normalized||t.value).toLowerCase(),o=Ge(this.currentProfile,n);if(!o)return null;let i=e.mark();e.advance();let s=e.peek();return s&&(s.kind==="identifier"||s.kind==="keyword"&&!this.isStructuralKeyword(s.value)||s.kind==="selector"&&s.value.startsWith("*"))?(e.advance(),B(L(o),s.value)):(e.reset(i),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 t=e.peek();if(!t||t.kind!=="selector")return null;let n=e.mark();e.advance();let o=e.peek();if(!o||o.kind!=="operator"||o.value!==".")return e.reset(n),null;e.advance();let i=e.peek();if(!i||i.kind!=="identifier")return e.reset(n),null;e.advance();let s=e.peek();if(!s||s.kind!=="punctuation"||s.value!=="(")return e.reset(n),null;e.advance();let a=[];for(;!e.isAtEnd()&&a.length<R.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}a.push(c.value),e.advance()}return{type:"expression",raw:`${t.value}.${i.value}(${a.join(", ")})`}}tryMatchPropertyAccessExpression(e){let t=e.peek();if(!t||t.kind!=="identifier"&&t.kind!=="keyword")return null;let n=e.mark();e.advance();let o=e.peek();if(!o||o.kind!=="operator"||o.value!==".")return e.reset(n),null;e.advance();let i=e.peek();if(!i||i.kind!=="identifier")return e.reset(n),null;e.advance();let s=`${t.value}.${i.value}`,a=1;for(;!e.isAtEnd()&&a<R.MAX_PROPERTY_DEPTH;){let c=e.peek();if(!c||c.kind!=="operator"||c.value!==".")break;e.advance();let u=e.peek();if(!u||u.kind!=="identifier")break;e.advance(),s+=`.${u.value}`,a++}let l=e.peek();if(l&&l.kind==="punctuation"&&l.value==="("){e.advance();let c=[],u=0;for(;!e.isAtEnd()&&c.length<R.MAX_METHOD_ARGS;){let y=e.peek();if(!y)break;if(y.kind==="punctuation"&&y.value===")"){if(u===0){e.advance();break}u--}if(y.kind==="punctuation"&&y.value==="("&&u++,y.kind==="punctuation"&&y.value===","){e.advance();continue}c.push(y.value),e.advance()}return{type:"expression",raw:`${s}(${c.join(", ")})`}}return{type:"expression",raw:s}}tryMatchPossessiveSelectorExpression(e){let t=e.peek();if(!t||t.kind!=="selector")return null;let n=e.mark();e.advance();let o=e.peek();if(!o||o.kind!=="punctuation"||o.value!=="'s")return e.reset(n),null;e.advance();let i=e.peek();return!i||i.kind!=="selector"&&i.kind!=="identifier"?(e.reset(n),null):(e.advance(),B(M(t.value),i.value))}tryMatchSelectorPropertyExpression(e){let t=e.peek();if(!t||t.kind!=="selector"||!t.value.startsWith("#"))return null;let n=e.mark();e.advance();let o=e.peek();if(!o||o.kind!=="selector"||!o.value.startsWith("."))return e.reset(n),null;let i=e.peek(1);i&&i.kind,e.advance();let s=o.value.slice(1);return B(M(t.value),s)}matchGroupToken(e,t,n){let o=e.mark(),i=new Set(n.keys());if(!this.matchTokenSequence(e,t.tokens,n)){e.reset(o);for(let a of n.keys())i.has(a)||n.delete(a);return t.optional||!1}return!0}getMatchType(e,t){return e.value===t?"exact":e.normalized===t?"normalized":e.stem===t&&e.stemConfidence!==void 0&&e.stemConfidence>=.7?"stem":e.kind==="keyword"&&e.value.toLowerCase()===t.toLowerCase()?"case-insensitive":"none"}tokenToSemanticValue(e){switch(e.kind){case"selector":return M(e.value);case"literal":return this.parseLiteralValue(e.value);case"keyword":let t=(e.normalized||e.value).toLowerCase();return["me","you","it","result","event","target","body"].includes(t)?L(t):T(e.normalized||e.value);case"identifier":if(e.value.startsWith(":"))return L(e.value);let n=e.value.toLowerCase();return["me","you","it","result","event","target","body"].includes(n)?L(n):{type:"expression",raw:e.value};case"url":return T(e.value,"string");default:return null}}parseLiteralValue(e){if(e.startsWith('"')||e.startsWith("'")||e.startsWith("`")||e.startsWith("\u300C")){let o=e.slice(1,-1);return T(o,"string")}if(e==="true")return T(!0,"boolean");if(e==="false")return T(!1,"boolean");let t=e.match(/^(\d+(?:\.\d+)?)(ms|s|m|h)?$/);if(t){let o=parseFloat(t[1]);return t[2]?T(e,"duration"):T(o,"number")}let n=parseFloat(e);return isNaN(n)?T(e,"string"):T(n,"number")}applyExtractionRules(e,t){for(let[n,o]of Object.entries(e.extraction))!t.has(n)&&o.default&&t.set(n,o.default)}isOptional(e){return e.optional===!0}calculateConfidence(e,t){let n=0,o=0,i=c=>e.extraction?.[c]?.default!==void 0;for(let c of e.template.tokens)if(c.type==="role")o+=1,t.has(c.role)&&(n+=1);else if(c.type==="group"){for(let u of c.tokens)if(u.type==="role"){let S=i(u.role),y=.8;o+=y,t.has(u.role)?n+=y:S&&(n+=y*.6)}}let s=o>0?n/o:1;if(this.stemMatchCount>0&&this.totalKeywordMatches>0){let c=this.stemMatchCount/this.totalKeywordMatches*.15;s=Math.max(.5,s-c)}let a=this.calculateVSOConfidenceBoost(e);s=Math.min(1,s+a);let l=this.arabicPrepositionDisambiguation(e,t);return s=Math.max(0,Math.min(1,s+l)),s}calculateVSOConfidenceBoost(e){if(e.language!=="ar")return 0;let t=e.template.tokens[0];if(!t||t.type!=="literal")return 0;let n=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(n.has(t.value))return .15;if(t.alternatives){for(let o of t.alternatives)if(n.has(o))return .15}return 0}arabicPrepositionDisambiguation(e,t){if(e.language!=="ar")return 0;let n=0,o={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[i,s]of t.entries()){let a=o[i];if(!a||a.length===0)continue;let l=s.metadata;if(l&&typeof l.prepositionValue=="string"){let c=l.prepositionValue;a.includes(c)?n+=.1:n-=.1}}return Math.max(-.1,Math.min(.1,n))}skipNoiseWords(e){let t=e.peek();if(!t)return;let n=t.value.toLowerCase();if(R.ENGLISH_NOISE_WORDS.has(n)){let o=e.mark();e.advance();let i=e.peek();if(i&&i.kind==="selector")return;e.reset(o)}n==="class"&&e.advance()}extractEventModifiers(e){let t={},n=!1;for(;!e.isAtEnd();){let o=e.peek();if(!o||o.kind!=="event-modifier")break;let i=o.metadata;if(!i)break;switch(n=!0,i.modifierName){case"once":t.once=!0;break;case"debounce":typeof i.value=="number"&&(t.debounce=i.value);break;case"throttle":typeof i.value=="number"&&(t.throttle=i.value);break;case"queue":(i.value==="first"||i.value==="last"||i.value==="all"||i.value==="none")&&(t.queue=i.value);break}e.advance()}return n?t:void 0}};R.MAX_PROPERTY_DEPTH=10,R.MAX_METHOD_ARGS=20,R.ENGLISH_NOISE_WORDS=new Set(["the","a","an"]);var D=R,V=new D;var de=class{render(e,t){if(e.kind==="compound")return this.renderCompound(e,t);let n=Ie(t,e.action);if(n.length===0)return this.renderExplicit(e);let o=this.findBestPattern(e,n);return o?this.renderWithPattern(e,o):this.renderExplicit(e)}renderCompound(e,t){let n=e.statements.map(i=>this.render(i,t)),o=this.getChainWord(e.chainType,t);return n.join(` ${o} `)}getChainWord(e,t){let n=P(t);return n?.keywords?n.keywords[e]?.primary??e:e}renderExplicit(e){if(e.kind==="compound"){let n=e;return n.statements.map(i=>this.renderExplicit(i)).join(` ${n.chainType} `)}let t=[e.action];for(let[n,o]of e.roles)t.push(`${n}:${this.valueToString(o)}`);if(e.kind==="event-handler"){let n=e;if(n.body&&n.body.length>0){let o=n.body.map(i=>this.renderExplicit(i));t.push(`body:${o.join(" ")}`)}}return`[${t.join(" ")}]`}supportedLanguages(){return pe()}findBestPattern(e,t){let n=t.map(o=>{let i=o.priority;for(let s of o.template.tokens)s.type==="role"&&(e.roles.has(s.role)?i+=10:s.optional||(i-=50));return o.language==="en"&&((o.id.includes("standard")||o.id.includes("en-source"))&&(i+=20),(o.id.includes("-when")||o.id.includes("-if")||o.id.includes("-upon"))&&(i-=15)),{pattern:o,score:i}});return n.sort((o,i)=>i.score-o.score),n.length>0?n[0].pattern:null}renderWithPattern(e,t){let n=[],o=t.language;for(let i of t.template.tokens){let s=this.renderPatternToken(i,e,o);s!==null&&n.push(s)}if(e.kind==="event-handler"){let i=e;if(i.body&&i.body.length>0){let s=i.body.map(a=>this.render(a,o));n.push(s.join(" "))}}return n.join(" ")}renderPatternToken(e,t,n){switch(e.type){case"literal":return e.value;case"role":{let o=t.roles.get(e.role);return o?this.valueToNaturalString(o,n):(e.optional,null)}case"group":{if(!e.tokens.filter(s=>s.type==="role"&&!s.optional).every(s=>t.roles.has(s.role))&&e.optional)return null;if(e.optional&&e.tokens.find(a=>a.type==="role"&&a.role==="destination")){let a=t.roles.get("destination");if(a?.type==="reference"&&a.value==="me")return null}let i=[];for(let s of e.tokens){let a=this.renderPatternToken(s,t,n);a!==null&&i.push(a)}return i.length>0?i.join(" "):null}default:return null}}valueToString(e){switch(e.type){case"literal":return typeof e.value=="string"?e.dataType==="string"||/\s/.test(e.value)?`"${e.value}"`:e.value:String(e.value);case"selector":return e.value;case"reference":return e.value;case"property-path":return`${this.valueToString(e.object)}'s ${e.property}`;case"expression":return e.raw}}valueToNaturalString(e,t="en"){switch(e.type){case"literal":return typeof e.value=="string"&&e.dataType==="string"?`"${e.value}"`:String(e.value);case"selector":return e.value;case"reference":return this.renderReference(e,t);case"property-path":return this.renderPropertyPath(e,t);case"expression":return e.raw}}renderReference(e,t){let n=P(t);return n?.references?n.references[e.value]??e.value:e.value}renderPropertyPath(e,t){let n=P(t),o=e.property,i=e.object.type==="reference"?e.object.value:null;if(n?.possessive?.specialForms&&i){let a=n.possessive.specialForms[i];if(a){let{markerPosition:l,usePossessiveAdjectives:c}=n.possessive;return c&&l==="after-object"?`${o} ${a}`:`${a} ${o}`}}let s=this.valueToNaturalString(e.object,t);if(n?.possessive){let{marker:a,markerPosition:l,usePossessiveAdjectives:c}=n.possessive;if(c&&i&&l==="after-object")return`${o} ${s}`;if(a)switch(l){case"between":return n.usesSpaces?`${s}${a} ${o}`:`${s}${a}${o}`;case"after-object":return`${s}${a} ${o}`;case"before-property":return`${s} ${a} ${o}`}}return t==="en"||!n?.possessive?s==="me"?`my ${o}`:s==="it"?`its ${o}`:`${s}'s ${o}`:`${s} ${o}`}},Ee=new de;function H(r,e){return Ee.render(r,e)}function G(r){return Ee.renderExplicit(r)}function O(r){let e=r.trim();if(!e.startsWith("[")||!e.endsWith("]"))throw new Error("Explicit syntax must be wrapped in brackets: [command role:value ...]");let t=e.slice(1,-1).trim();if(!t)throw new Error("Empty explicit statement");let n=Tt(t);if(n.length===0)throw new Error("No command specified in explicit statement");let o=n[0].toLowerCase(),i=new Map;for(let a=1;a<n.length;a++){let l=n[a],c=l.indexOf(":");if(c===-1)throw new Error(`Invalid role format: "${l}". Expected role:value`);let u=l.slice(0,c),S=l.slice(c+1);if(u==="body"&&S.startsWith("[")){let g=bt(l,c+1),d=l.slice(c+1,g+1);i.set(u,{type:"expression",raw:d});continue}let y=Et(S);i.set(u,y)}if(o==="on"){let a=i.get("event");if(!a)throw new Error("Event handler requires event role: [on event:click ...]");let l=i.get("body"),c=[];return l&&l.type==="expression"&&c.push(O(l.raw)),i.delete("body"),K(a,c,void 0,{sourceLanguage:"explicit"})}let s={};for(let[a,l]of i)s[a]=l;return A(o,s,{sourceLanguage:"explicit"})}function Tt(r){let e=[],t="",n=!1,o="",i=0;for(let s=0;s<r.length;s++){let a=r[s];if(n){t+=a,a===o&&r[s-1]!=="\\"&&(n=!1);continue}if(a==='"'||a==="'"){n=!0,o=a,t+=a;continue}if(a==="["){i++,t+=a;continue}if(a==="]"){i--,t+=a;continue}if(a===" "&&i===0){t&&(e.push(t),t="");continue}t+=a}return t&&e.push(t),e}function Et(r){if(r.startsWith("#")||r.startsWith(".")||r.startsWith("[")||r.startsWith("@")||r.startsWith("*"))return M(r);if(r.startsWith('"')||r.startsWith("'")){let t=r.slice(1,-1);return T(t,"string")}if(r==="true")return T(!0,"boolean");if(r==="false")return T(!1,"boolean");if(["me","you","it","result","event","target","body"].includes(r.toLowerCase()))return L(r.toLowerCase());let e=r.match(/^(-?\d+(?:\.\d+)?)(ms|s|m|h)?$/);if(e){let t=parseFloat(e[1]);return e[2]?T(r,"duration"):T(t,"number")}return T(r,"string")}function bt(r,e){let t=0;for(let n=e;n<r.length;n++)if(r[n]==="[")t++;else if(r[n]==="]"&&(t--,t===0))return n;return r.length-1}function W(r){let e=r.trim();return e.startsWith("[")&&e.endsWith("]")}var ue=class{parse(e,t){let n=le(e,t),o=N(t);if(o.length===0)throw new Error(`No patterns available for language: ${t}`);let i=[...o].sort((u,S)=>S.priority-u.priority),s=i.filter(u=>u.command==="on"),a=V.matchBest(n,s);if(a)return this.buildEventHandler(a,n,t);let l=i.filter(u=>u.command!=="on"),c=V.matchBest(n,l);if(c)return this.buildCommand(c,t);throw new Error(`Could not parse input in ${t}: ${e}`)}canParse(e,t){try{return this.parse(e,t),!0}catch{return!1}}supportedLanguages(){return pe()}buildCommand(e,t){if(!e)throw new Error("No match to build command from");let n={};for(let[o,i]of e.captured)n[o]=i;return A(e.pattern.command,n,{sourceLanguage:t,patternId:e.pattern.id})}buildEventHandler(e,t,n){if(!e)throw new Error("No match to build event handler from");let o=e.captured.get("event");if(!o)throw new Error("Event handler pattern matched but no event captured");let i=V.extractEventModifiers(t),s,a=e.captured.get("action");if(a&&a.type==="literal"){let l=a.value,c={};for(let[y,g]of e.captured)y!=="event"&&y!=="action"&&y!=="continues"&&(c[y]=g);let u=A(l,c,{sourceLanguage:n,patternId:e.pattern.id}),S=e.captured.get("continues");if(S&&S.type==="literal"&&S.value==="then"){let y=N(n).filter(m=>m.command!=="on").sort((m,h)=>h.priority-m.priority),g=N(n).filter(m=>m.id.startsWith("grammar-")&&m.id.includes("-continuation")).sort((m,h)=>h.priority-m.priority),d=this.parseBodyWithGrammarPatterns(t,y,g,n);d.length>0?s=[u,...d]:s=[u]}else s=[u]}else{let l=N(n).filter(c=>c.command!=="on").sort((c,u)=>u.priority-c.priority);s=this.parseBodyWithClauses(t,l,n)}return K(o,s,i,{sourceLanguage:n,patternId:e.pattern.id})}parseBodyWithClauses(e,t,n){let o=[],i=[];for(;!e.isAtEnd();){let s=e.peek();if(!s)break;let a=s.kind==="conjunction"||s.kind==="keyword"&&this.isThenKeyword(s.value,n),l=s.kind==="keyword"&&this.isEndKeyword(s.value,n);if(a){if(i.length>0){let c=this.parseClause(i,t,n);o.push(...c),i.length=0}e.advance();continue}if(l){if(i.length>0){let c=this.parseClause(i,t,n);o.push(...c)}e.advance();break}i.push(s),e.advance()}if(i.length>0){let s=this.parseClause(i,t,n);o.push(...s)}return o.length>1?[He(o,"then",{sourceLanguage:n})]:o}parseClause(e,t,n){if(e.length===0)return[];let o=new z(e,n),i=[];for(;!o.isAtEnd();){let s=V.matchBest(o,t);s?i.push(this.buildCommand(s,n)):o.advance()}return i}parseBodyWithGrammarPatterns(e,t,n,o){let i=[];for(;!e.isAtEnd();){let s=e.peek();if(s&&this.isThenKeyword(s.value,o)){e.advance();continue}if(s&&this.isEndKeyword(s.value,o)){e.advance();break}let a=!1;if(n.length>0){let l=V.matchBest(e,n);if(l){let c=l.pattern.command,u={};for(let[g,d]of l.captured)g!=="event"&&g!=="action"&&g!=="continues"&&(u[g]=d);let S=A(c,u,{sourceLanguage:o,patternId:l.pattern.id});i.push(S),a=!0;let y=l.captured.get("continues");if(y&&y.type==="literal"&&y.value==="then")continue}}if(!a){let l=V.matchBest(e,t);l&&(i.push(this.buildCommand(l,o)),a=!0)}a||e.advance()}return i}isThenKeyword(e,t){let n={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"]),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"]),qu:new Set(["chaymantataq","hinaspa","chaymanta"]),sw:new Set(["kisha","halafu","baadaye"])};return(n[t]||n.en).has(e.toLowerCase())}isEndKeyword(e,t){let n={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"]),qu:new Set(["tukukuy","tukuy","puchukay"]),sw:new Set(["mwisho","maliza","tamati"])};return(n[t]||n.en).has(e.toLowerCase())}},be=new ue;function $(r,e){return be.parse(r,e)}function ke(r,e){return be.canParse(r,e)}function Ne(r,e){if(W(r))return r;let t=$(r,e);return G(t)}function we(r,e){let t=O(r);return H(t,e)}function Ce(r,e){return W(r)?O(r):$(r,e)}var kt=new Set(["me","my","myself","you","your","yourself","it","its","result","event","target","body","detail","window","document"]),Nt=new Set(["and","or","not","no"]),wt=new Set(["true","false","null","undefined"]),Ct=new Set(["ms","s","seconds","second","milliseconds","millisecond","minutes","minute","hours","hour"]);function Xe(r){let e=[],t=0,n=1,o=1;function i(){if(e.length===0)return!0;let d=e[e.length-1];return["OPERATOR","COMPARISON","LOGICAL","LPAREN","LBRACKET","LBRACE","COMMA","COLON"].includes(d.type)}function s(d=0){return r[t+d]??""}function a(){let d=r[t];return t++,d===`
|
|
2
|
-
`?(n++,o=1):o++,d}function l(){for(;t<r.length&&/\s/.test(r[t]);)a()}function c(d){let m="";for(;t<r.length&&d(r[t]);)m+=a();return m}function u(d){let m=d;for(a();t<r.length&&r[t]!==d;)r[t]==="\\"&&t+1<r.length&&(m+=a()),m+=a();return t<r.length&&(m+=a()),m}function S(){let d="`";for(a();t<r.length&&r[t]!=="`";)r[t]==="\\"&&t+1<r.length&&(d+=a()),d+=a();return t<r.length&&(d+=a()),d}function y(){let d="<";for(a();t<r.length&&(d+=a(),!d.endsWith("/>")););return d}function g(d,m,h){return{type:d,value:m,start:h,end:t,line:n,column:o-m.length}}for(;t<r.length&&(l(),!(t>=r.length));){let d=t,m=s();if(m==="'"&&s(1)==="s"&&!/\w/.test(s(2))){a(),a(),e.push(g("POSSESSIVE","'s",d));continue}if(m==='"'||m==="'"){let h=u(m);e.push(g("STRING",h,d));continue}if(m==="`"){let h=S();e.push(g("TEMPLATE_LITERAL",h,d));continue}if(m==="<"&&/[a-zA-Z.#\[]/.test(s(1))){let h=y();e.push(g("QUERY_SELECTOR",h,d));continue}if(m==="#"&&i()){a();let h=c(E=>/[\w-]/.test(E));e.push(g("ID_SELECTOR","#"+h,d));continue}if(m==="."&&/[a-zA-Z_-]/.test(s(1))&&i()){a();let h=c(E=>/[\w-]/.test(E));e.push(g("CLASS_SELECTOR","."+h,d));continue}if(m==="["&&i()){let h=s(1);if(h==="@"||/[a-zA-Z]/.test(h)){let E="";for(E+=a();t<r.length&&r[t]!=="]";)r[t]==='"'||r[t]==="'"?E+=u(r[t]):E+=a();t<r.length&&(E+=a()),e.push(g("ATTRIBUTE_SELECTOR",E,d));continue}}if(m==="["){a(),e.push(g("LBRACKET","[",d));continue}if(m==="]"){a(),e.push(g("RBRACKET","]",d));continue}if(/\d/.test(m)){let h=c(fe=>/[\d.]/.test(fe)),E=t,Y=c(fe=>/[a-zA-Z]/.test(fe));Ct.has(Y)?e.push(g("TIME_EXPRESSION",h+Y,d)):(t=E,e.push(g("NUMBER",h,d)));continue}if(m==="("){a(),e.push(g("LPAREN","(",d));continue}if(m===")"){a(),e.push(g("RPAREN",")",d));continue}if(m==="{"){a(),e.push(g("LBRACE","{",d));continue}if(m==="}"){a(),e.push(g("RBRACE","}",d));continue}if(m===","){a(),e.push(g("COMMA",",",d));continue}if(m===":"){a(),e.push(g("COLON",":",d));continue}if(m==="."){a(),e.push(g("DOT",".",d));continue}if(m==="+"||m==="-"||m==="*"||m==="/"||m==="%"){a(),e.push(g("OPERATOR",m,d));continue}if(m==="="||m==="!"||m==="<"||m===">"){let h=a();s()==="="&&(h+=a()),e.push(g("COMPARISON",h,d));continue}if(/[a-zA-Z_$]/.test(m)){let h=c(Y=>/[\w$]/.test(Y)),E=h.toLowerCase();kt.has(E)?e.push(g("CONTEXT_VAR",h,d)):Nt.has(E)?e.push(g("LOGICAL",h,d)):wt.has(E)?e.push(g("BOOLEAN",h,d)):e.push(g("IDENTIFIER",h,d));continue}a()}return e.push(g("EOF","",t)),e}var me=class{constructor(){this.tokens=[];this.current=0}parse(e){try{return this.tokens=Xe(e),this.current=0,this.isAtEnd()?{success:!1,error:"Empty expression"}:{success:!0,node:this.parseExpression(),consumed:this.current}}catch(t){return{success:!1,error:t instanceof Error?t.message:"Parse error"}}}peek(){return this.tokens[this.current]??{type:"EOF",value:"",start:0,end:0}}previous(){return this.tokens[this.current-1]??{type:"EOF",value:"",start:0,end:0}}isAtEnd(){return this.peek().type==="EOF"}advance(){return this.isAtEnd()||this.current++,this.previous()}check(e){return this.peek().type===e}checkValue(e){return this.peek().value.toLowerCase()===e.toLowerCase()}match(...e){for(let t of e)if(this.check(t))return this.advance(),!0;return!1}parseExpression(){return this.parseOr()}parseOr(){let e=this.parseAnd();for(;this.checkValue("or");){let t=this.advance().value,n=this.parseAnd();e=this.createBinaryExpression(t,e,n)}return e}parseAnd(){let e=this.parseEquality();for(;this.checkValue("and");){let t=this.advance().value,n=this.parseEquality();e=this.createBinaryExpression(t,e,n)}return e}parseEquality(){let e=this.parseComparison();for(;this.match("COMPARISON")||this.checkValue("is")||this.checkValue("matches")||this.checkValue("contains")||this.checkValue("in");){let t=this.previous().value,n=this.parseComparison();e=this.createBinaryExpression(t,e,n)}return e}parseComparison(){let e=this.parseAddition();for(;this.check("COMPARISON");){let t=this.advance().value,n=this.parseAddition();e=this.createBinaryExpression(t,e,n)}return e}parseAddition(){let e=this.parseMultiplication();for(;this.peek().value==="+"||this.peek().value==="-";){let t=this.advance().value,n=this.parseMultiplication();e=this.createBinaryExpression(t,e,n)}return e}parseMultiplication(){let e=this.parseUnary();for(;this.peek().value==="*"||this.peek().value==="/"||this.peek().value==="%";){let t=this.advance().value,n=this.parseUnary();e=this.createBinaryExpression(t,e,n)}return e}parseUnary(){if(this.checkValue("not")||this.checkValue("no")||this.peek().value==="-"){let e=this.advance().value,t=this.parseUnary();return this.createUnaryExpression(e,t)}return this.parsePostfix()}parsePostfix(){let e=this.parsePrimary();for(;;)if(this.match("DOT"))if(this.check("IDENTIFIER")||this.check("CONTEXT_VAR")){let t=this.advance().value;e=this.createPropertyAccess(e,t)}else break;else if(this.match("POSSESSIVE"))if(this.check("IDENTIFIER")||this.check("CONTEXT_VAR")){let t=this.advance().value;e=this.createPossessiveExpression(e,t)}else break;else if(this.match("LPAREN")){let t=this.parseArguments();e=this.createCallExpression(e,t)}else if(this.match("LBRACKET")){let t=this.parseExpression();if(!this.match("RBRACKET"))throw new Error("Expected ] after index");e=this.createPropertyAccess(e,t)}else break;return e}parsePrimary(){let e=this.peek();if(this.match("NUMBER"))return this.createLiteral(parseFloat(e.value),"number",e);if(this.match("STRING")){let t=e.value.slice(1,-1);return this.createLiteral(t,"string",e)}if(this.match("BOOLEAN")){let t=e.value==="true"?!0:e.value==="false"?!1:e.value==="null"?null:void 0;return this.createLiteral(t,e.value,e)}if(this.match("TEMPLATE_LITERAL"))return{type:"templateLiteral",value:e.value,start:e.start,end:e.end,line:e.line,column:e.column};if(this.match("TIME_EXPRESSION"))return this.parseTimeExpression(e);if(this.match("ID_SELECTOR"))return this.createSelector(e.value,"id",e);if(this.match("CLASS_SELECTOR"))return this.createSelector(e.value,"class",e);if(this.match("ATTRIBUTE_SELECTOR"))return this.createSelector(e.value,"attribute",e);if(this.match("QUERY_SELECTOR")){let t=e.value.slice(1,-2);return this.createSelector(t,"query",e)}if(this.match("CONTEXT_VAR"))return this.createContextReference(e.value,e);if(this.match("IDENTIFIER"))return this.createIdentifier(e.value,e);if(this.match("LPAREN")){let t=this.parseExpression();if(!this.match("RPAREN"))throw new Error("Expected ) after expression");return t}if(this.match("LBRACKET"))return this.parseArrayLiteral();if(this.match("LBRACE"))return this.parseObjectLiteral();throw new Error(`Unexpected token: ${e.value}`)}parseArguments(){let e=[];if(!this.check("RPAREN"))do e.push(this.parseExpression());while(this.match("COMMA"));if(!this.match("RPAREN"))throw new Error("Expected ) after arguments");return e}parseArrayLiteral(){let e=[],t=this.previous().start;if(!this.check("RBRACKET"))do e.push(this.parseExpression());while(this.match("COMMA"));if(!this.match("RBRACKET"))throw new Error("Expected ] after array elements");return{type:"arrayLiteral",elements:e,start:t,end:this.previous().end}}parseObjectLiteral(){let e=[],t=this.previous().start;if(!this.check("RBRACE"))do{let n;if(this.check("STRING"))n=this.advance().value.slice(1,-1);else if(this.check("IDENTIFIER"))n=this.advance().value;else throw new Error("Expected property name");if(!this.match("COLON"))throw new Error("Expected : after property name");let o=this.parseExpression();e.push({key:n,value:o})}while(this.match("COMMA"));if(!this.match("RBRACE"))throw new Error("Expected } after object properties");return{type:"objectLiteral",properties:e.map(n=>({type:"objectProperty",key:n.key,value:n.value})),start:t,end:this.previous().end}}parseTimeExpression(e){let t=e.value.match(/^(\d+(?:\.\d+)?)(ms|s|seconds?|milliseconds?|minutes?|hours?)$/i);if(!t)throw new Error(`Invalid time expression: ${e.value}`);let n=parseFloat(t[1]),o=t[2].toLowerCase();return{type:"timeExpression",value:n,unit:o,raw:e.value,start:e.start,end:e.end,line:e.line,column:e.column}}createLiteral(e,t,n){return{type:"literal",value:e,dataType:t,raw:n.value,start:n.start,end:n.end,line:n.line,column:n.column}}createSelector(e,t,n){return{type:"selector",value:e,selector:e,selectorType:t,start:n.start,end:n.end,line:n.line,column:n.column}}createContextReference(e,t){return{type:"contextReference",contextType:e,name:t.value,start:t.start,end:t.end,line:t.line,column:t.column}}createIdentifier(e,t){return{type:"identifier",name:e,start:t.start,end:t.end,line:t.line,column:t.column}}createPropertyAccess(e,t){return{type:"propertyAccess",object:e,property:typeof t=="string"?t:t.name??"",start:e.start,end:this.previous().end}}createPossessiveExpression(e,t){return{type:"possessiveExpression",object:e,property:t,start:e.start,end:this.previous().end}}createBinaryExpression(e,t,n){return{type:"binaryExpression",operator:e,left:t,right:n,start:t.start,end:n.end}}createUnaryExpression(e,t){return{type:"unaryExpression",operator:e,operand:t,prefix:!0,start:this.previous().start,end:t.end}}createCallExpression(e,t){return{type:"callExpression",callee:e,arguments:t,start:e.start,end:this.previous().end}}};function Le(r){return new me().parse(r)}function k(r,e){switch(r.type){case"literal":return Lt(r);case"selector":return Rt(r,e);case"reference":return Pt(r);case"property-path":return Mt(r,e);case"expression":return At(r);default:let t=r;throw new Error(`Unknown semantic value type: ${t.type}`)}}function Lt(r){let e={type:"literal",value:r.value};return r.dataType?{...e,dataType:r.dataType}:e}function Rt(r,e){return e&&r.value.startsWith("*")&&/^[a-zA-Z-]/.test(r.value.slice(1))&&e.push(`Converted '${r.value}' to a CSS selector, but it looks like a CSS property name. CSS properties in commands like 'transition' should be literal strings, not selectors. Consider using expectedTypes: ['literal'] instead of ['literal', 'selector'] in the command schema.`),{type:"selector",value:r.value,selector:r.value,selectorType:r.selectorKind}}function Pt(r){return{type:"contextReference",contextType:r.value,name:r.value}}function Mt(r,e){return{type:"propertyAccess",object:k(r.object,e),property:r.property}}function At(r){let e=Le(r.raw);return!e.success||!e.node?{type:"identifier",name:r.raw}:e.node}function Ze(r,e){return r.roles.get(e)}function p(r,e,t){let n=Ze(r,e);return n?k(n,t):void 0}function f(r,e=[],t,n={}){let o={type:"command",name:r,args:e};return t&&Object.keys(t).length>0&&(o.modifiers=t),n.isBlocking&&(o.isBlocking=n.isBlocking),n.implicitTarget&&(o.implicitTarget=n.implicitTarget),o}var zt={action:"toggle",toAST(r,e){let t=p(r,"patient"),n=p(r,"destination"),o=p(r,"duration"),i=t?[t]:[],s={};return n&&(s.on=n),o&&(s.for=o),f("toggle",i,s)}},jt={action:"add",toAST(r,e){let t=p(r,"patient"),n=p(r,"destination"),o=t?[t]:[],i={};return n&&(i.to=n),f("add",o,i)}},Vt={action:"remove",toAST(r,e){let t=p(r,"patient"),n=p(r,"source"),o=t?[t]:[],i={};return n&&(i.from=n),f("remove",o,i)}},Ot={action:"set",toAST(r,e){let t=p(r,"destination"),n=p(r,"patient"),o=[],i={};return t&&o.push(t),n&&(i.to=n),f("set",o,i)}},It={action:"show",toAST(r,e){let t=p(r,"destination"),n=p(r,"patient"),o=p(r,"duration"),i=[],s={},a=t??n;return a&&i.push(a),o&&(s.with=o),f("show",i,s)}},_t={action:"hide",toAST(r,e){let t=p(r,"destination"),n=p(r,"patient"),o=p(r,"duration"),i=[],s={},a=t??n;return a&&i.push(a),o&&(s.with=o),f("hide",i,s)}},Bt={action:"increment",toAST(r,e){let t=p(r,"destination"),n=p(r,"patient"),o=p(r,"quantity"),i=[],s={},a=t??n;return a&&i.push(a),o&&(s.by=o),f("increment",i,s)}},Kt={action:"decrement",toAST(r,e){let t=p(r,"destination"),n=p(r,"patient"),o=p(r,"quantity"),i=[],s={},a=t??n;return a&&i.push(a),o&&(s.by=o),f("decrement",i,s)}},Wt={action:"wait",toAST(r,e){let t=p(r,"duration");return f("wait",t?[t]:[],void 0,{isBlocking:!0})}},$t={action:"log",toAST(r,e){let t=p(r,"patient"),n=[];return t&&n.push(t),f("log",n)}},qt={action:"put",toAST(r,e){let t=p(r,"patient"),n=p(r,"destination"),o=Ze(r,"method"),i=t?[t]:[],s={};if(n){let a=o?.type==="literal"?String(o.value):"into";s[a]=n}return f("put",i,s)}},Ut={action:"fetch",toAST(r,e){let t=p(r,"source"),n=p(r,"method"),o=p(r,"responseType"),i=p(r,"patient"),s=t?[t]:[],a={};return n&&(a.with=n),o&&(a.as=o),i&&(a.body=i),f("fetch",s,a,{isBlocking:!0})}},Ft={action:"append",toAST(r,e){let t=p(r,"patient"),n=p(r,"destination"),o=t?[t]:[],i={};return n&&(i.to=n),f("append",o,i)}},Dt={action:"prepend",toAST(r,e){let t=p(r,"patient"),n=p(r,"destination"),o=t?[t]:[],i={};return n&&(i.to=n),f("prepend",o,i)}},Ht={action:"trigger",toAST(r,e){let t=p(r,"event"),n=p(r,"destination"),o=t?[t]:[],i={};return n&&(i.on=n),f("trigger",o,i)}},Gt={action:"send",toAST(r,e){let t=p(r,"event"),n=p(r,"destination"),o=p(r,"patient"),i=t?[t]:[],s={};return n&&(s.to=n),o&&(s.detail=o),f("send",i,s)}},Xt={action:"go",toAST(r,e){let t=p(r,"source"),n=p(r,"destination"),o=[],i={};return t&&o.push(t),n&&(i.to=n),f("go",o,i)}},Zt={action:"transition",toAST(r,e){let t=p(r,"patient"),n=p(r,"goal"),o=p(r,"duration"),i=p(r,"destination"),s=t?[t]:[],a={};return n&&(a.to=n),o&&(a.over=o),i&&(a.on=i),f("transition",s,a)}},Qt={action:"focus",toAST(r,e){let t=p(r,"destination"),n=p(r,"patient"),o=[],i={},s=t??n;return s&&o.push(s),f("focus",o,i)}},Yt={action:"blur",toAST(r,e){let t=p(r,"destination"),n=p(r,"patient"),o=[],i=t??n;return i&&o.push(i),f("blur",o)}},Jt={action:"get",toAST(r,e){let t=p(r,"source"),n=p(r,"patient"),o=[],i=t??n;return i&&o.push(i),f("get",o)}},en={action:"take",toAST(r,e){let t=p(r,"patient"),n=p(r,"source"),o=t?[t]:[],i={};return n&&(i.from=n),f("take",o,i)}},tn={action:"call",toAST(r,e){let t=p(r,"patient");return f("call",t?[t]:[])}},nn={action:"return",toAST(r,e){let t=p(r,"patient");return f("return",t?[t]:[])}},rn={action:"halt",toAST(r,e){return f("halt",[])}},on={action:"throw",toAST(r,e){let t=p(r,"patient");return f("throw",t?[t]:[])}},an={action:"settle",toAST(r,e){let t=p(r,"destination"),n=p(r,"patient"),o=[],i=t??n;return i&&o.push(i),f("settle",o,void 0,{isBlocking:!0})}},sn={action:"swap",toAST(r,e){let t=p(r,"patient"),n=p(r,"source"),o=p(r,"destination"),i=p(r,"style"),s=[],a={};return t&&s.push(t),n&&s.push(n),o&&(a.on=o),i&&(a.with=i),f("swap",s,a)}},cn={action:"morph",toAST(r,e){let t=p(r,"source"),n=p(r,"destination"),o=p(r,"patient"),i=[],s={},a=t??o;return a&&i.push(a),n&&(s.on=n),f("morph",i,s)}},ln={action:"clone",toAST(r,e){let t=p(r,"source"),n=p(r,"destination"),o=p(r,"patient"),i=[],s={},a=t??o;return a&&i.push(a),n&&(s.into=n),f("clone",i,s)}},pn={action:"make",toAST(r,e){let t=p(r,"patient");return f("make",t?[t]:[])}},dn={action:"measure",toAST(r,e){let t=p(r,"patient"),n=p(r,"destination"),o=p(r,"source"),i=[],s={};t&&i.push(t);let a=n??o;return a&&(s.of=a),f("measure",i,s)}},un={action:"tell",toAST(r,e){let t=p(r,"destination"),n=p(r,"patient"),o=[],i=t??n;return i&&o.push(i),f("tell",o)}},mn={action:"js",toAST(r,e){let t=p(r,"patient");return f("js",t?[t]:[])}},fn={action:"async",toAST(r,e){return f("async",[])}},gn={action:"if",toAST(r,e){let t=p(r,"condition");return f("if",t?[t]:[])}},hn={action:"unless",toAST(r,e){let t=p(r,"condition");return f("unless",t?[t]:[])}},yn={action:"repeat",toAST(r,e){let t=p(r,"quantity"),n=p(r,"patient"),o=[],i=t??n;return i&&o.push(i),f("repeat",o)}},Sn={action:"for",toAST(r,e){let t=p(r,"patient"),n=p(r,"source"),o=t?[t]:[],i={};return n&&(i.in=n),f("for",o,i)}},xn={action:"while",toAST(r,e){let t=p(r,"condition");return f("while",t?[t]:[])}},vn={action:"continue",toAST(r,e){return f("continue",[])}},Tn={action:"default",toAST(r,e){let t=p(r,"patient"),n=p(r,"source"),o=t?[t]:[],i={};return n&&(i.to=n),f("default",o,i)}},En={action:"init",toAST(r,e){return f("init",[])}},bn={action:"behavior",toAST(r,e){let t=p(r,"patient");return f("behavior",t?[t]:[])}},kn={action:"install",toAST(r,e){let t=p(r,"patient"),n=p(r,"destination"),o=t?[t]:[],i={};return n&&(i.on=n),f("install",o,i)}},Nn={action:"on",toAST(r,e){let t=p(r,"event"),n=p(r,"source"),o=t?[t]:[],i={};return n&&(i.from=n),f("on",o,i)}},Qe=new Map([["toggle",zt],["add",jt],["remove",Vt],["set",Ot],["show",It],["hide",_t],["increment",Bt],["decrement",Kt],["wait",Wt],["log",$t],["put",qt],["fetch",Ut],["append",Ft],["prepend",Dt],["get",Jt],["take",en],["trigger",Ht],["send",Gt],["on",Nn],["go",Xt],["transition",Zt],["focus",Qt],["blur",Yt],["call",tn],["return",nn],["halt",rn],["throw",on],["settle",an],["swap",sn],["morph",cn],["clone",ln],["measure",dn],["make",pn],["tell",un],["default",Tn],["js",mn],["async",fn],["if",gn],["unless",hn],["repeat",yn],["for",Sn],["while",xn],["continue",vn],["init",En],["behavior",bn],["install",kn]]);function X(r){return Qe.get(r)}function Re(r){Qe.set(r.action,r)}var Z=class{constructor(e={}){this.warnings=[]}build(e){switch(e.kind){case"command":return this.buildCommand(e);case"event-handler":return this.buildEventHandler(e);case"conditional":return this.buildConditional(e);case"compound":return this.buildCompound(e);case"loop":return this.buildLoop(e);default:throw new Error(`Unknown semantic node kind: ${e.kind}`)}}buildCommand(e){let t=X(e.action);if(t){let n=t.toAST(e,this);if("ast"in n&&"warnings"in n){let o=n;return this.warnings.push(...o.warnings),o.ast}else return n}return this.buildGenericCommand(e)}buildGenericCommand(e){let t=[],n={},o=["patient","source","quantity"],i=["destination","duration","method","style"];for(let a of o){let l=e.roles.get(a);l&&t.push(k(l))}for(let a of i){let l=e.roles.get(a);if(l){let c=this.roleToModifierKey(a);n[c]=k(l)}}let s={type:"command",name:e.action,args:t};return Object.keys(n).length>0?{...s,modifiers:n}:s}roleToModifierKey(e){return{destination:"on",duration:"for",source:"from",condition:"if",method:"via",style:"with"}[e]??e}buildEventHandler(e){let t=e.roles.get("event"),n,o;if(t?.type==="literal"){let h=String(t.value);h.includes("|")||h.includes(" or ")?(o=h.split(/\s+or\s+|\|/).map(E=>E.trim()),n=o[0]):n=h}else t?.type==="reference"?n=t.value:n="click";let i=e.body.map(h=>this.build(h)),s=e.roles.get("source"),a,l;s?.type==="selector"?(a=s.value,l=s.value):s?.type==="reference"?l=s.value:s?.type==="literal"&&(l=String(s.value));let c=e.roles.get("condition"),u=c?k(c):void 0,S=e.roles.get("destination"),y=S?k(S):void 0,g=e.eventModifiers,d=a;if(g?.from){let h=g.from;h.type==="selector"&&!a&&(d=h.value)}let m=e.parameterNames?[...e.parameterNames]:void 0;return{type:"eventHandler",event:n,commands:i,...o&&o.length>1?{events:o}:{},...d?{selector:d}:{},...l?{target:l}:{},...u?{condition:u}:{},...y?{watchTarget:y}:{},...m&&m.length>0?{args:m,params:m}:{}}}buildConditional(e){let t=e.roles.get("condition");if(!t)throw new Error("Conditional node missing condition");let n=k(t),o=e.thenBranch.map(a=>this.build(a)),i=e.elseBranch?.map(a=>this.build(a)),s=[n,{type:"block",commands:o}];return i&&i.length>0&&s.push({type:"block",commands:i}),{type:"command",name:"if",args:s}}buildCompound(e){let t=e.statements.map(o=>this.build(o));return t.length===1?t[0]:t.length===0?{type:"block",commands:[]}:{type:"CommandSequence",commands:t}}buildLoop(e){let t=e.body.map(o=>this.build(o)),n=[{type:"identifier",name:e.loopVariant}];switch(e.loopVariant){case"times":{let o=e.roles.get("quantity");o&&n.push(k(o));break}case"for":{e.loopVariable&&n.push({type:"string",value:e.loopVariable});let o=e.roles.get("source");o&&n.push(k(o));break}case"while":case"until":{let o=e.roles.get("condition");o&&n.push(k(o));break}case"forever":break}return n.push({type:"block",commands:t}),{type:"command",name:"repeat",args:n}}buildBlock(e){return{type:"block",commands:e.map(n=>this.build(n))}}};function Ye(r){let e=new Z;return{ast:e.build(r),warnings:e.warnings}}var I=class{constructor(e={}){this.cache=new Map,this.config={maxSize:e.maxSize??1e3,ttlMs:e.ttlMs??0,enabled:e.enabled??!0},this.stats={hits:0,misses:0,evictions:0,expirations:0}}makeKey(e,t){return`${t}:${e}`}isExpired(e){return this.config.ttlMs===0?!1:Date.now()-e.createdAt>this.config.ttlMs}evictLRU(){let e=this.cache.keys().next().value;e!==void 0&&(this.cache.delete(e),this.stats.evictions++)}get(e,t){if(!this.config.enabled){this.stats.misses++;return}let n=this.makeKey(e,t),o=this.cache.get(n);if(!o){this.stats.misses++;return}if(this.isExpired(o)){this.cache.delete(n),this.stats.expirations++,this.stats.misses++;return}return this.cache.delete(n),o.lastAccessed=Date.now(),this.cache.set(n,o),this.stats.hits++,o.result}set(e,t,n){if(!this.config.enabled||n.confidence===0)return;let o=this.makeKey(e,t),i=Date.now();for(;this.cache.size>=this.config.maxSize;)this.evictLRU();this.cache.set(o,{result:n,createdAt:i,lastAccessed:i})}has(e,t){if(!this.config.enabled)return!1;let n=this.makeKey(e,t),o=this.cache.get(n);return o?this.isExpired(o)?(this.cache.delete(n),this.stats.expirations++,!1):!0:!1}delete(e,t){let n=this.makeKey(e,t);return this.cache.delete(n)}clear(){this.cache.clear()}resetStats(){this.stats={hits:0,misses:0,evictions:0,expirations:0}}getStats(){let e=this.stats.hits+this.stats.misses;return{hits:this.stats.hits,misses:this.stats.misses,size:this.cache.size,maxSize:this.config.maxSize,hitRate:e>0?this.stats.hits/e:0,evictions:this.stats.evictions,expirations:this.stats.expirations,enabled:this.config.enabled}}configure(e){if(e.maxSize!==void 0)for(this.config.maxSize=e.maxSize;this.cache.size>this.config.maxSize;)this.evictLRU();e.ttlMs!==void 0&&(this.config.ttlMs=e.ttlMs),e.enabled!==void 0&&(this.config.enabled=e.enabled)}enable(){this.config.enabled=!0}disable(){this.config.enabled=!1}getConfig(){return{...this.config}}},Pe=new I;var Q=class{constructor(e={}){this.patternMatcher=new D,this.languages=new Set(te()),e.cache===!1?this.cache=new I({enabled:!1}):this.cache=e.cache?new I(e.cache):Pe}analyze(e,t){if(!this.supportsLanguage(t))return{confidence:0,errors:[`Language '${t}' is not supported for semantic parsing`]};let n=this.cache.get(e,t);if(n)return n;let o=this.analyzeUncached(e,t);return this.cache.set(e,t,o),o}analyzeUncached(e,t){try{let n=De(t);if(!n)return{confidence:0,errors:[`No tokenizer available for language '${t}'`]};let o=n.tokenize(e),i=N(t);if(i.length===0)return{confidence:0,errors:[`No patterns available for language '${t}'`]};let s=this.patternMatcher.matchBest(o,i);if(!s)return{confidence:0,errors:["No pattern matched the input"]};let a=this.buildSemanticNode(s);return{confidence:s.confidence,command:{name:s.pattern.command,roles:s.captured},node:a,tokensConsumed:s.consumedTokens}}catch(n){return{confidence:0,errors:[n instanceof Error?n.message:String(n)]}}}supportsLanguage(e){return this.languages.has(e)}supportedLanguages(){return Array.from(this.languages)}getCacheStats(){return this.cache.getStats()}clearCache(){this.cache.clear()}configureCache(e){this.cache.configure(e)}buildSemanticNode(e){return{kind:"command",action:e.pattern.command,roles:e.captured,metadata:{patternId:e.pattern.id}}}};function Je(r){return new Q(r)}var Me=.5,et=.8;function tt(r,e=Me){return r.confidence>=e&&r.command!==void 0}var wn="1.0.0-ko",Cn=["ko"];function Ln(){return[...Cn]}function nt(r){if(r!=="ko")throw new Error(`Language not supported in this bundle: ${r}. Supported: ko`)}function Rn(r,e){return nt(e),[...le(r,e).tokens]}function rt(r){return nt(r),N(r)}function Pn(r,e){return rt(r).filter(t=>t.command===e).sort((t,n)=>n.priority-t.priority)}return lt(Mn);})();
|
|
1
|
+
"use strict";var LokaScriptSemanticKo=(()=>{var xe=Object.defineProperty;var ut=Object.getOwnPropertyDescriptor;var pt=Object.getOwnPropertyNames;var dt=Object.prototype.hasOwnProperty;var mt=(r,e)=>{for(var t in e)xe(r,t,{get:e[t],enumerable:!0})},ft=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of pt(e))!dt.call(r,o)&&o!==t&&xe(r,o,{get:()=>e[o],enumerable:!(n=ut(e,o))||n.enumerable});return r};var gt=r=>ft(xe({},"__esModule",{value:!0}),r);var In={};mt(In,{ASTBuilder:()=>ee,DEFAULT_CONFIDENCE_THRESHOLD:()=>Ve,HIGH_CONFIDENCE_THRESHOLD:()=>at,SemanticAnalyzerImpl:()=>te,VERSION:()=>An,buildAST:()=>ot,canParse:()=>Le,createCommandNode:()=>z,createEventHandler:()=>U,createLiteral:()=>v,createPropertyPath:()=>q,createReference:()=>R,createSelector:()=>A,createSemanticAnalyzer:()=>it,fromExplicit:()=>Pe,getCommandMapper:()=>J,getPatternsForLanguage:()=>lt,getPatternsForLanguageAndCommand:()=>On,getProfile:()=>ve,getSupportedLanguages:()=>jn,getTokenizer:()=>Te,isExplicitSyntax:()=>F,isLanguageSupported:()=>We,koreanProfile:()=>_,koreanTokenizer:()=>pe,parse:()=>D,parseAny:()=>Me,parseExplicit:()=>K,registerCommandMapper:()=>ze,render:()=>Q,renderExplicit:()=>Y,shouldUseSemanticResult:()=>st,toExplicit:()=>Re,tokenize:()=>Vn,tryGetProfile:()=>M});var L=new Map,j=new Map,H=new Map;var Oe=null;function _e(r,e){let t={...r};for(let n of Object.keys(e)){let o=e[n],i=r[n];o!==void 0&&(typeof o=="object"&&o!==null&&!Array.isArray(o)&&typeof i=="object"&&i!==null&&!Array.isArray(i)?t[n]=_e(i,o):t[n]=o)}return t}function ht(r,e){return _e(r,e)}function Se(r){if(!r.extends)return r;let e=j.get(r.extends);if(!e)return console.warn(`[Registry] Profile '${r.code}' extends '${r.extends}' but base is not registered. Make sure to import the base language before the variant.`),r;let t=Se(e);return ht(t,r)}function Be(r,e,t){L.set(r,e),j.set(r,t),H.delete(r)}var Ie=new Map;function V(r){return r.split("-")[0]}function O(r){return r.includes("-")}function Te(r){let e=L.get(r);if(!e&&O(r)){let t=V(r);e=L.get(t)}if(!e){let t=Array.from(L.keys()).join(", ");throw new Error(`Language '${r}' is not registered. Registered languages: ${t||"none"}. Import the language module first: import '@lokascript/semantic/languages/${r}';`)}return e}function ve(r){let e=j.get(r);if(!e&&O(r)){let t=V(r);e=j.get(t)}if(!e){let t=Array.from(j.keys()).join(", ");throw new Error(`Language profile '${r}' is not registered. Registered languages: ${t||"none"}. Import the language module first: import '@lokascript/semantic/languages/${r}';`)}return Se(e)}function Ke(r){let e=L.get(r);return!e&&O(r)&&(e=L.get(V(r))),e}function M(r){let e=j.get(r);return!e&&O(r)&&(e=j.get(V(r))),e?Se(e):void 0}function re(){return Array.from(L.keys())}function We(r){return L.has(r)?!0:O(r)?L.has(V(r)):!1}function $e(r,e){return Te(e).tokenize(r)}function N(r){let e=H.get(r);if(!e&&O(r)&&(e=H.get(V(r))),e)return e;let t=Ie.get(r);if(!t&&O(r)&&(t=Ie.get(V(r))),t)return H.set(r,t),t;if(!Oe)throw new Error(`No patterns registered for language '${r}'. Either import the language module or set a pattern generator.`);let n=ve(r),o=Oe(n);return H.set(r,o),o}function qe(r,e){return N(r).filter(t=>t.command===e).sort((t,n)=>n.priority-t.priority)}var I=class{constructor(e,t){this.pos=0;this.tokens=e,this.language=t}peek(e=0){let t=this.pos+e;return t<0||t>=this.tokens.length?null:this.tokens[t]}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(e){this.pos=e.position}position(){return this.pos}remaining(){return this.tokens.slice(this.pos)}takeWhile(e){let t=[];for(;!this.isAtEnd()&&e(this.peek());)t.push(this.advance());return t}skipWhile(e){for(;!this.isAtEnd()&&e(this.peek());)this.advance()}};function S(r,e){return{start:r,end:e}}function T(r,e,t,n){if(typeof n=="string")return{value:r,kind:e,position:t,normalized:n};if(n){let{normalized:o,stem:i,stemConfidence:s}=n,a={value:r,kind:e,position:t};return o!==void 0&&(a.normalized=o),i!==void 0&&(a.stem=i,s!==void 0&&(a.stemConfidence=s)),a}return{value:r,kind:e,position:t}}function C(r){return/\s/.test(r)}function ie(r){return r==="#"||r==="."||r==="["||r==="@"||r==="*"||r==="<"}function ae(r){return r==='"'||r==="'"||r==="`"||r==="\u300C"||r==="\u300D"}function w(r){return/\d/.test(r)}function Ue(r){return/[a-zA-Z]/.test(r)}function E(r){return/[a-zA-Z0-9_-]/.test(r)}function se(r){return e=>{let t=e.charCodeAt(0);return r.some(([n,o])=>t>=n&&t<=o)}}function be(...r){return e=>r.some(t=>t(e))}function Fe(r,e){if(e>=r.length)return null;let t=r[e];if(!ie(t))return null;let n=e,o="";if(t==="#"||t==="."){for(o+=r[n++];n<r.length&&E(r[n]);)o+=r[n++];if(o.length<=1)return null;if(n<r.length&&r[n]==="."&&t==="#"){let s=n+1;for(;s<r.length&&E(r[s]);)s++;if(s<r.length&&r[s]==="(")return o}}else if(t==="["){let i=1,s=!1,a=null,c=!1;for(o+=r[n++];n<r.length&&i>0;){let l=r[n];o+=l,c?c=!1:l==="\\"?c=!0:s?l===a&&(s=!1,a=null):l==='"'||l==="'"||l==="`"?(s=!0,a=l):l==="["?i++:l==="]"&&i--,n++}if(i!==0)return null}else if(t==="@"){for(o+=r[n++];n<r.length&&E(r[n]);)o+=r[n++];if(o.length<=1)return null}else if(t==="*"){for(o+=r[n++];n<r.length&&E(r[n]);)o+=r[n++];if(o.length<=1)return null}else if(t==="<"){if(o+=r[n++],n>=r.length||!Ue(r[n]))return null;for(;n<r.length&&E(r[n]);)o+=r[n++];for(;n<r.length;){let i=r[n];if(i==="."){if(o+=r[n++],n>=r.length||!E(r[n]))return null;for(;n<r.length&&E(r[n]);)o+=r[n++]}else if(i==="#"){if(o+=r[n++],n>=r.length||!E(r[n]))return null;for(;n<r.length&&E(r[n]);)o+=r[n++]}else if(i==="["){let s=1,a=!1,c=null,l=!1;for(o+=r[n++];n<r.length&&s>0;){let d=r[n];o+=d,l?l=!1:d==="\\"?l=!0:a?d===c&&(a=!1,c=null):d==='"'||d==="'"||d==="`"?(a=!0,c=d):d==="["?s++:d==="]"&&s--,n++}if(s!==0)return null}else break}for(;n<r.length&&C(r[n]);)o+=r[n++];if(n<r.length&&r[n]==="/")for(o+=r[n++];n<r.length&&C(r[n]);)o+=r[n++];if(n>=r.length||r[n]!==">")return null;o+=r[n++]}return o||null}function yt(r,e){if(e>=r.length||r[e]!=="'"||e+1>=r.length||r[e+1].toLowerCase()!=="s")return!1;if(e+2>=r.length)return!0;let n=r[e+2];return C(n)||n==="*"||!E(n)}function De(r,e){if(e>=r.length)return null;let t=r[e];if(!ae(t)||t==="'"&&yt(r,e))return null;let o={'"':'"',"'":"'","`":"`","\u300C":"\u300D"}[t];if(!o)return null;let i=e+1,s=t,a=!1;for(;i<r.length;){let c=r[i];if(s+=c,a)a=!1;else if(c==="\\")a=!0;else if(c===o)return s;i++}return s}function ce(r,e){if(e>=r.length)return!1;let t=r[e],n=r[e+1]||"",o=r[e+2]||"";if(t==="/"&&n!=="/"&&/[a-zA-Z0-9._-]/.test(n)||t==="/"&&n==="/"&&/[a-zA-Z]/.test(o)||t==="."&&(n==="/"||n==="."&&o==="/"))return!0;let i=r.slice(e,e+8).toLowerCase();return!!(i.startsWith("http://")||i.startsWith("https://"))}function He(r,e){if(!ce(r,e))return null;let t=e,n="",o=/[a-zA-Z0-9/:._\-?&=%@+~!$'()*,;[\]]/;for(;t<r.length;){let i=r[t];if(i==="#"){if(n.length>0&&/[a-zA-Z0-9/.]$/.test(n))for(n+=i,t++;t<r.length&&/[a-zA-Z0-9_-]/.test(r[t]);)n+=r[t++];break}if(o.test(i))n+=i,t++;else break}return n.length<2?null:n}function Ge(r,e){if(e>=r.length)return null;let t=r[e];if(!w(t)&&t!=="-"&&t!=="+")return null;let n=e,o="";if((r[n]==="-"||r[n]==="+")&&(o+=r[n++]),n>=r.length||!w(r[n]))return null;for(;n<r.length&&w(r[n]);)o+=r[n++];if(n<r.length&&r[n]===".")for(o+=r[n++];n<r.length&&w(r[n]);)o+=r[n++];return n<r.length&&(r.slice(n,n+2)==="ms"?o+="ms":(r[n]==="s"||r[n]==="m"||r[n]==="h")&&(o+=r[n])),o}var oe=class oe{constructor(){this.profileKeywords=[];this.profileKeywordMap=new Map}initializeKeywordsFromProfile(e,t=[]){let n=new Map;if(e.keywords){for(let[o,i]of Object.entries(e.keywords))if(n.set(i.primary,{native:i.primary,normalized:i.normalized||o}),i.alternatives)for(let s of i.alternatives)n.set(s,{native:s,normalized:i.normalized||o})}if(e.references)for(let[o,i]of Object.entries(e.references))n.set(i,{native:i,normalized:o});if(e.roleMarkers){for(let[o,i]of Object.entries(e.roleMarkers))if(i.primary&&n.set(i.primary,{native:i.primary,normalized:o}),i.alternatives)for(let s of i.alternatives)n.set(s,{native:s,normalized:o})}for(let o of t)n.set(o.native,o);this.profileKeywords=Array.from(n.values()).sort((o,i)=>i.native.length-o.native.length),this.profileKeywordMap=new Map;for(let o of this.profileKeywords){this.profileKeywordMap.set(o.native.toLowerCase(),o);let i=this.removeDiacritics(o.native);i!==o.native&&!this.profileKeywordMap.has(i.toLowerCase())&&this.profileKeywordMap.set(i.toLowerCase(),o)}}removeDiacritics(e){return e.replace(/[\u064B-\u0652\u0670]/g,"")}tryProfileKeyword(e,t){for(let n of this.profileKeywords)if(e.slice(t).startsWith(n.native))return T(n.native,"keyword",S(t,t+n.native.length),n.normalized);return null}isKeywordStart(e,t){let n=e.slice(t);return this.profileKeywords.some(o=>n.startsWith(o.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 t=this.normalizer.normalize(e);return t.stem!==e&&t.confidence>=.7?t:null}tryMorphKeywordMatch(e,t,n){let o=this.tryNormalize(e);if(!o)return null;let i=this.lookupKeyword(o.stem);if(!i)return null;let s={normalized:i.normalized,stem:o.stem,stemConfidence:o.confidence};return T(e,"keyword",S(t,n),s)}trySelector(e,t){let n=Fe(e,t);return n?T(n,"selector",S(t,t+n.length)):null}tryEventModifier(e,t){if(e[t]!==".")return null;let n=e.slice(t).match(/^\.(?:once|debounce|throttle|queue)(?:\(([^)]+)\))?(?:\s|$|\.)/);if(!n)return null;let o=n[0].replace(/(\s|\.)$/,""),i=o.slice(1).split("(")[0],s=n[1];return{...T(o,"event-modifier",S(t,t+o.length)),metadata:{modifierName:i,value:s?i==="queue"?s:parseInt(s,10):void 0}}}tryString(e,t){let n=De(e,t);return n?T(n,"literal",S(t,t+n.length)):null}tryNumber(e,t){let n=Ge(e,t);return n?T(n,"literal",S(t,t+n.length)):null}tryMatchTimeUnit(e,t,n,o=!1){let i=t;if(o)for(;i<e.length&&C(e[i]);)i++;let s=e.slice(i);for(let a of n){let c=s.slice(0,a.length);if(a.caseInsensitive?c.toLowerCase()===a.pattern.toLowerCase():c===a.pattern){if(a.notFollowedBy&&(s[a.length]||"")===a.notFollowedBy)continue;if(a.checkBoundary){let d=s[a.length]||"";if(E(d))continue}return{suffix:a.suffix,endPos:i+a.length}}}return null}parseBaseNumber(e,t,n=!0){let o=t,i="";if(n&&(e[o]==="-"||e[o]==="+")&&(i+=e[o++]),o>=e.length||!w(e[o]))return null;for(;o<e.length&&w(e[o]);)i+=e[o++];if(o<e.length&&e[o]===".")for(i+=e[o++];o<e.length&&w(e[o]);)i+=e[o++];return!i||i==="-"||i==="+"?null:{number:i,endPos:o}}tryNumberWithTimeUnits(e,t,n,o={}){let{allowSign:i=!0,skipWhitespace:s=!1}=o,a=this.parseBaseNumber(e,t,i);if(!a)return null;let{number:c,endPos:l}=a,d=[...n,...oe.STANDARD_TIME_UNITS],x=this.tryMatchTimeUnit(e,l,d,s);return x&&(c+=x.suffix,l=x.endPos),T(c,"literal",S(t,l))}tryUrl(e,t){let n=He(e,t);return n?T(n,"url",S(t,t+n.length)):null}tryVariableRef(e,t){if(e[t]!==":"||t+1>=e.length||!E(e[t+1]))return null;let n=t+1;for(;n<e.length&&E(e[n]);)n++;let o=e.slice(t,n);return T(o,"identifier",S(t,n))}tryOperator(e,t){let n=e.slice(t,t+2);if(["==","!=","<=",">=","&&","||","->"].includes(n))return T(n,"operator",S(t,t+2));let o=e[t];return["<",">","!","+","-","*","/","="].includes(o)?T(o,"operator",S(t,t+1)):["(",")","{","}",",",";",":"].includes(o)?T(o,"punctuation",S(t,t+1)):null}tryMultiCharParticle(e,t,n){for(let o of n)if(e.slice(t,t+o.length)===o)return T(o,"particle",S(t,t+o.length));return null}};oe.STANDARD_TIME_UNITS=[{pattern:"ms",suffix:"ms",length:2},{pattern:"s",suffix:"s",length:1,checkBoundary:!0},{pattern:"m",suffix:"m",length:1,checkBoundary:!0,notFollowedBy:"s"},{pattern:"h",suffix:"h",length:1,checkBoundary:!0}];var G=oe;function Xe(r){return{stem:r,confidence:1}}function le(r,e,t){return t?{stem:r,confidence:e,metadata:t}:{stem:r,confidence:e}}function xt(r){let e=r.charCodeAt(0);return e>=44032&&e<=55203}function St(r){for(let e of r)if(xt(e))return!0;return!1}var Tt=[{pattern:"\uD558\uC2DC\uB2C8\uAE4C",confidence:.85,conjugationType:"honorific-causal",minStemLength:1},{pattern:"\uD558\uC2E4\uB54C",confidence:.88,conjugationType:"honorific-temporal",minStemLength:1},{pattern:"\uD558\uC2E4 \uB54C",confidence:.88,conjugationType:"honorific-temporal",minStemLength:1},{pattern:"\uD558\uC2DC\uBA74",confidence:.88,conjugationType:"honorific-conditional",minStemLength:1},{pattern:"\uC73C\uC2DC\uBA74",confidence:.85,conjugationType:"honorific-conditional",minStemLength:2},{pattern:"\uC2DC\uBA74",confidence:.82,conjugationType:"honorific-conditional",minStemLength:2},{pattern:"\uD558\uACE0\uB098\uC11C",confidence:.85,conjugationType:"sequential-after",minStemLength:1},{pattern:"\uD558\uACE0 \uB098\uC11C",confidence:.85,conjugationType:"sequential-after",minStemLength:1},{pattern:"\uD558\uACE0\uC11C",confidence:.85,conjugationType:"sequential-after",minStemLength:1},{pattern:"\uACE0\uB098\uC11C",confidence:.82,conjugationType:"sequential-after",minStemLength:2},{pattern:"\uACE0 \uB098\uC11C",confidence:.82,conjugationType:"sequential-after",minStemLength:2},{pattern:"\uACE0\uC11C",confidence:.82,conjugationType:"sequential-after",minStemLength:2},{pattern:"\uD558\uAE30\uC804\uC5D0",confidence:.85,conjugationType:"sequential-before",minStemLength:1},{pattern:"\uD558\uAE30 \uC804\uC5D0",confidence:.85,conjugationType:"sequential-before",minStemLength:1},{pattern:"\uAE30\uC804\uC5D0",confidence:.82,conjugationType:"sequential-before",minStemLength:2},{pattern:"\uAE30 \uC804\uC5D0",confidence:.82,conjugationType:"sequential-before",minStemLength:2},{pattern:"\uD558\uC790\uB9C8\uC790",confidence:.88,conjugationType:"immediate",minStemLength:1},{pattern:"\uC790\uB9C8\uC790",confidence:.85,conjugationType:"immediate",minStemLength:2},{pattern:"\uD574\uC57C\uD574\uC694",confidence:.85,conjugationType:"obligation",minStemLength:1},{pattern:"\uD574\uC57C\uD574",confidence:.85,conjugationType:"obligation",minStemLength:1},{pattern:"\uD574\uC57C\uD558\uB2E4",confidence:.85,conjugationType:"obligation",minStemLength:1},{pattern:"\uC5B4\uC57C\uD574\uC694",confidence:.82,conjugationType:"obligation",minStemLength:2},{pattern:"\uC5B4\uC57C\uD574",confidence:.82,conjugationType:"obligation",minStemLength:2},{pattern:"\uC544\uC57C\uD574\uC694",confidence:.82,conjugationType:"obligation",minStemLength:2},{pattern:"\uC544\uC57C\uD574",confidence:.82,conjugationType:"obligation",minStemLength:2},{pattern:"\uD558\uB2C8\uAE4C",confidence:.85,conjugationType:"causal-nikka",minStemLength:1},{pattern:"\uD560\uB54C",confidence:.88,conjugationType:"temporal-ttae",minStemLength:1},{pattern:"\uD560 \uB54C",confidence:.88,conjugationType:"temporal-ttae",minStemLength:1},{pattern:"\uC744\uB54C",confidence:.85,conjugationType:"temporal-ttae",minStemLength:2},{pattern:"\uC744 \uB54C",confidence:.85,conjugationType:"temporal-ttae",minStemLength:2},{pattern:"\uD558\uBA74",confidence:.88,conjugationType:"conditional-myeon",minStemLength:1},{pattern:"\uC73C\uBA74",confidence:.85,conjugationType:"conditional-myeon",minStemLength:2},{pattern:"\uB2C8\uAE4C",confidence:.82,conjugationType:"causal-nikka",minStemLength:2},{pattern:"\uBA74",confidence:.8,conjugationType:"conditional-myeon",minStemLength:2},{pattern:"\uD558\uC600\uC2B5\uB2C8\uB2E4",confidence:.85,conjugationType:"past",minStemLength:1},{pattern:"\uD588\uC2B5\uB2C8\uB2E4",confidence:.85,conjugationType:"past",minStemLength:1},{pattern:"\uD569\uB2C8\uB2E4",confidence:.85,conjugationType:"polite",minStemLength:1},{pattern:"\uC2B5\uB2C8\uB2E4",confidence:.82,conjugationType:"polite",minStemLength:2},{pattern:"\uB429\uB2C8\uB2E4",confidence:.82,conjugationType:"polite",minStemLength:1},{pattern:"\u3142\uB2C8\uB2E4",confidence:.82,conjugationType:"polite",minStemLength:2},{pattern:"\uD558\uC138\uC694",confidence:.85,conjugationType:"honorific",minStemLength:1},{pattern:"\uD558\uC2ED\uC2DC\uC624",confidence:.85,conjugationType:"honorific",minStemLength:1},{pattern:"\uC138\uC694",confidence:.82,conjugationType:"honorific",minStemLength:2},{pattern:"\uC2ED\uC2DC\uC624",confidence:.82,conjugationType:"honorific",minStemLength:2},{pattern:"\uD558\uACE0\uC788\uC5B4\uC694",confidence:.82,conjugationType:"progressive",minStemLength:1},{pattern:"\uD558\uACE0\uC788\uC5B4",confidence:.82,conjugationType:"progressive",minStemLength:1},{pattern:"\uD588\uC5B4\uC694",confidence:.85,conjugationType:"past",minStemLength:1},{pattern:"\uD574\uC694",confidence:.85,conjugationType:"polite",minStemLength:1},{pattern:"\uC5B4\uC694",confidence:.82,conjugationType:"polite",minStemLength:2},{pattern:"\uC544\uC694",confidence:.82,conjugationType:"polite",minStemLength:2},{pattern:"\uD588\uC5B4",confidence:.85,conjugationType:"past",minStemLength:1},{pattern:"\uD574",confidence:.8,conjugationType:"present",minStemLength:1},{pattern:"\uC5C8\uC5B4",confidence:.82,conjugationType:"past",minStemLength:2},{pattern:"\uC558\uC5B4",confidence:.82,conjugationType:"past",minStemLength:2},{pattern:"\uD558\uACE0\uC788\uB2E4",confidence:.82,conjugationType:"progressive",minStemLength:1},{pattern:"\uACE0\uC788\uB2E4",confidence:.8,conjugationType:"progressive",minStemLength:2},{pattern:"\uACE0\uC788\uC5B4",confidence:.8,conjugationType:"progressive",minStemLength:2},{pattern:"\uD558\uB2E4",confidence:.88,conjugationType:"dictionary",minStemLength:1},{pattern:"\uD558\uC9C0\uC54A\uB2E4",confidence:.82,conjugationType:"negative",minStemLength:1},{pattern:"\uC548\uD558\uB2E4",confidence:.82,conjugationType:"negative",minStemLength:1},{pattern:"\uC9C0\uC54A\uB2E4",confidence:.8,conjugationType:"negative",minStemLength:2},{pattern:"\uD574\uB77C",confidence:.82,conjugationType:"imperative",minStemLength:1},{pattern:"\uD558\uB77C",confidence:.82,conjugationType:"imperative",minStemLength:1},{pattern:"\uB2E4",confidence:.75,conjugationType:"dictionary",minStemLength:2}],vt=[{pattern:"\uD558\uC2DC\uB2C8\uAE4C",confidence:.88,conjugationType:"honorific-causal"},{pattern:"\uD558\uC2E4\uB54C",confidence:.88,conjugationType:"honorific-temporal"},{pattern:"\uD558\uC2E4 \uB54C",confidence:.88,conjugationType:"honorific-temporal"},{pattern:"\uD558\uC2DC\uBA74",confidence:.88,conjugationType:"honorific-conditional"},{pattern:"\uD558\uC168\uC5B4\uC694",confidence:.85,conjugationType:"honorific-past"},{pattern:"\uD558\uC168\uC5B4",confidence:.85,conjugationType:"honorific-past"},{pattern:"\uD558\uC2ED\uB2C8\uB2E4",confidence:.85,conjugationType:"honorific-polite"},{pattern:"\uD558\uACE0\uB098\uC11C",confidence:.88,conjugationType:"sequential-after"},{pattern:"\uD558\uACE0 \uB098\uC11C",confidence:.88,conjugationType:"sequential-after"},{pattern:"\uD558\uACE0\uC11C",confidence:.88,conjugationType:"sequential-after"},{pattern:"\uD558\uAE30\uC804\uC5D0",confidence:.88,conjugationType:"sequential-before"},{pattern:"\uD558\uAE30 \uC804\uC5D0",confidence:.88,conjugationType:"sequential-before"},{pattern:"\uD558\uC790\uB9C8\uC790",confidence:.88,conjugationType:"immediate"},{pattern:"\uD574\uC57C\uD574\uC694",confidence:.88,conjugationType:"obligation"},{pattern:"\uD574\uC57C\uD574",confidence:.88,conjugationType:"obligation"},{pattern:"\uD574\uC57C\uD558\uB2E4",confidence:.88,conjugationType:"obligation"},{pattern:"\uD558\uB2C8\uAE4C",confidence:.88,conjugationType:"causal-nikka"},{pattern:"\uD560\uB54C",confidence:.88,conjugationType:"temporal-ttae"},{pattern:"\uD560 \uB54C",confidence:.88,conjugationType:"temporal-ttae"},{pattern:"\uD558\uBA74",confidence:.88,conjugationType:"conditional-myeon"},{pattern:"\uD558\uC600\uC2B5\uB2C8\uB2E4",confidence:.85,conjugationType:"past"},{pattern:"\uD588\uC2B5\uB2C8\uB2E4",confidence:.85,conjugationType:"past"},{pattern:"\uD569\uB2C8\uB2E4",confidence:.85,conjugationType:"polite"},{pattern:"\uD558\uC2ED\uC2DC\uC624",confidence:.85,conjugationType:"honorific"},{pattern:"\uD558\uC138\uC694",confidence:.85,conjugationType:"honorific"},{pattern:"\uD588\uC5B4\uC694",confidence:.85,conjugationType:"past"},{pattern:"\uD574\uC694",confidence:.85,conjugationType:"polite"},{pattern:"\uD588\uC5B4",confidence:.85,conjugationType:"past"},{pattern:"\uD574",confidence:.8,conjugationType:"present"},{pattern:"\uD558\uACE0\uC788\uC5B4\uC694",confidence:.82,conjugationType:"progressive"},{pattern:"\uD558\uACE0\uC788\uC5B4",confidence:.82,conjugationType:"progressive"},{pattern:"\uD558\uACE0\uC788\uB2E4",confidence:.82,conjugationType:"progressive"},{pattern:"\uD574\uC11C",confidence:.82,conjugationType:"connective"},{pattern:"\uD558\uACE0",confidence:.8,conjugationType:"connective"},{pattern:"\uD558\uC9C0\uC54A\uC544\uC694",confidence:.82,conjugationType:"negative"},{pattern:"\uD558\uC9C0\uC54A\uB2E4",confidence:.82,conjugationType:"negative"},{pattern:"\uC548\uD574\uC694",confidence:.82,conjugationType:"negative"},{pattern:"\uC548\uD574",confidence:.82,conjugationType:"negative"},{pattern:"\uD574\uB77C",confidence:.82,conjugationType:"imperative"},{pattern:"\uD558\uB77C",confidence:.82,conjugationType:"imperative"},{pattern:"\uD558\uB2E4",confidence:.88,conjugationType:"dictionary"}],X=class{constructor(){this.language="ko"}isNormalizable(e){return!(!St(e)||e.length<2)}normalize(e){let t=this.normalizeCompound(e);if(t)return t;let n=this.tryHadaNormalization(e);if(n)return n;for(let o of Tt)if(e.endsWith(o.pattern)){let i=e.slice(0,-o.pattern.length),s=o.minStemLength??2;if(i.length<s)continue;let a={removedSuffixes:[o.pattern]};return o.conjugationType&&(a.conjugationType=o.conjugationType),le(i,o.confidence,a)}return Xe(e)}tryHadaNormalization(e){for(let t of vt)if(e.endsWith(t.pattern)){let n=e.slice(0,-t.pattern.length);if(n.length<1)continue;return le(n,t.confidence,{removedSuffixes:[t.pattern],conjugationType:t.conjugationType,originalForm:"hada-verb"})}return null}normalizeCompound(e){let t=[{pattern:"\uD558\uACE0\uB098\uC11C\uC600\uC5B4",suffixes:["\uD558\uACE0\uB098\uC11C","\uC600\uC5B4"],confidence:.78,conjugationType:"sequential-after",minStemLength:2},{pattern:"\uD558\uACE0\uB098\uC11C\uC600\uB2E4",suffixes:["\uD558\uACE0\uB098\uC11C","\uC600\uB2E4"],confidence:.78,conjugationType:"sequential-after",minStemLength:2},{pattern:"\uD558\uACE0\uB098\uC11C",suffixes:["\uD558\uACE0","\uB098\uC11C"],confidence:.85,conjugationType:"sequential-after",minStemLength:2},{pattern:"\uD574\uC57C\uD588\uC5B4",suffixes:["\uD574\uC57C","\uD588\uC5B4"],confidence:.8,conjugationType:"obligation",minStemLength:2},{pattern:"\uD574\uC57C\uD588\uB2E4",suffixes:["\uD574\uC57C","\uD588\uB2E4"],confidence:.8,conjugationType:"obligation",minStemLength:2},{pattern:"\uD574\uC57C\uD588\uC2B5\uB2C8\uB2E4",suffixes:["\uD574\uC57C","\uD588\uC2B5\uB2C8\uB2E4"],confidence:.8,conjugationType:"obligation",minStemLength:2},{pattern:"\uD558\uC2DC\uBA74\uC11C",suffixes:["\uD558\uC2DC","\uBA74\uC11C"],confidence:.82,conjugationType:"connective",minStemLength:2},{pattern:"\uD558\uC2DC\uBA70",suffixes:["\uD558\uC2DC","\uBA70"],confidence:.82,conjugationType:"connective",minStemLength:2},{pattern:"\uD558\uACE0\uC788\uC5C8\uC5B4",suffixes:["\uD558\uACE0","\uC788\uC5C8\uC5B4"],confidence:.8,conjugationType:"progressive",minStemLength:2},{pattern:"\uD558\uACE0\uC788\uC5C8\uB2E4",suffixes:["\uD558\uACE0","\uC788\uC5C8\uB2E4"],confidence:.8,conjugationType:"progressive",minStemLength:2}];for(let{pattern:n,suffixes:o,confidence:i,conjugationType:s,minStemLength:a}of t)if(e.endsWith(n)){let c=e.slice(0,-n.length);if(c.length<a)continue;return le(c,i,{removedSuffixes:o,conjugationType:s})}return null}},qn=new X;var _={code:"ko",name:"Korean",nativeName:"\uD55C\uAD6D\uC5B4",direction:"ltr",wordOrder:"SOV",markingStrategy:"particle",usesSpaces:!0,verb:{position:"end",suffixes:["\uB2E4","\uC694","\uB2C8\uB2E4","\uC138\uC694"],subjectDrop:!0},references:{me:"\uB098",it:"\uADF8\uAC83",you:"\uB108",result:"\uACB0\uACFC",event:"\uC774\uBCA4\uD2B8",target:"\uB300\uC0C1",body:"\uBCF8\uBB38"},possessive:{marker:"\uC758",markerPosition:"between",specialForms:{me:"\uB0B4",it:"\uADF8\uAC83\uC758",you:"\uB124"},keywords:{\uB0B4:"me",\uB124:"you",\uADF8\uC758:"it"}},roleMarkers:{patient:{primary:"\uC744",alternatives:["\uB97C"],position:"after"},destination:{primary:"\uC5D0",alternatives:["\uC73C\uB85C","\uB85C","\uC5D0\uC11C","\uC758"],position:"after"},source:{primary:"\uC5D0\uC11C",alternatives:["\uBD80\uD130"],position:"after"},style:{primary:"\uB85C",alternatives:["\uC73C\uB85C"],position:"after"},event:{primary:"\uC744",alternatives:["\uB97C"],position:"after"}},keywords:{toggle:{primary:"\uD1A0\uAE00",alternatives:["\uC804\uD658"],normalized:"toggle"},add:{primary:"\uCD94\uAC00",normalized:"add"},remove:{primary:"\uC81C\uAC70",alternatives:["\uC0AD\uC81C"],normalized:"remove"},put:{primary:"\uB123\uB2E4",alternatives:["\uB123\uAE30","\uB193\uAE30"],normalized:"put"},append:{primary:"\uCD94\uAC00",normalized:"append"},take:{primary:"\uAC00\uC838\uC624\uB2E4",normalized:"take"},make:{primary:"\uB9CC\uB4E4\uB2E4",normalized:"make"},clone:{primary:"\uBCF5\uC0AC",normalized:"clone"},swap:{primary:"\uAD50\uD658",alternatives:["\uBC14\uAFB8\uB2E4"],normalized:"swap"},morph:{primary:"\uBCC0\uD615",alternatives:["\uBCC0\uD658"],normalized:"morph"},set:{primary:"\uC124\uC815",normalized:"set"},get:{primary:"\uC5BB\uB2E4",alternatives:["\uAC00\uC838\uC624\uAE30"],normalized:"get"},increment:{primary:"\uC99D\uAC00",normalized:"increment"},decrement:{primary:"\uAC10\uC18C",normalized:"decrement"},log:{primary:"\uB85C\uADF8",normalized:"log"},show:{primary:"\uBCF4\uC774\uB2E4",alternatives:["\uD45C\uC2DC","\uBCF4\uC774\uAE30"],normalized:"show"},hide:{primary:"\uC228\uAE30\uB2E4",alternatives:["\uC228\uAE30\uAE30"],normalized:"hide"},transition:{primary:"\uC804\uD658",normalized:"transition"},on:{primary:"\uC5D0",alternatives:["\uC2DC","\uB54C","\uD560 \uB54C"],normalized:"on"},trigger:{primary:"\uD2B8\uB9AC\uAC70",normalized:"trigger"},send:{primary:"\uBCF4\uB0B4\uB2E4",normalized:"send"},focus:{primary:"\uD3EC\uCEE4\uC2A4",normalized:"focus"},blur:{primary:"\uBE14\uB7EC",normalized:"blur"},click:{primary:"\uD074\uB9AD",normalized:"click"},hover:{primary:"\uD638\uBC84",normalized:"hover"},submit:{primary:"\uC81C\uCD9C",normalized:"submit"},input:{primary:"\uC785\uB825",normalized:"input"},change:{primary:"\uBCC0\uACBD",normalized:"change"},go:{primary:"\uC774\uB3D9",normalized:"go"},wait:{primary:"\uB300\uAE30",normalized:"wait"},fetch:{primary:"\uAC00\uC838\uC624\uAE30",normalized:"fetch"},settle:{primary:"\uC548\uC815",normalized:"settle"},if:{primary:"\uB9CC\uC57D",normalized:"if"},when:{primary:"\uB54C",normalized:"when"},where:{primary:"\uC5B4\uB514",normalized:"where"},else:{primary:"\uC544\uB2C8\uBA74",normalized:"else"},repeat:{primary:"\uBC18\uBCF5",normalized:"repeat"},for:{primary:"\uB3D9\uC548",normalized:"for"},while:{primary:"\uB3D9\uC548",normalized:"while"},continue:{primary:"\uACC4\uC18D",normalized:"continue"},halt:{primary:"\uC815\uC9C0",normalized:"halt"},throw:{primary:"\uB358\uC9C0\uB2E4",normalized:"throw"},call:{primary:"\uD638\uCD9C",normalized:"call"},return:{primary:"\uBC18\uD658",normalized:"return"},then:{primary:"\uADF8\uB2E4\uC74C",alternatives:["\uADF8\uB9AC\uACE0","\uADF8\uB7F0\uD6C4"],normalized:"then"},and:{primary:"\uADF8\uB9AC\uACE0",alternatives:["\uB610\uD55C","\uBC0F"],normalized:"and"},end:{primary:"\uB05D",alternatives:["\uC885\uB8CC","\uB9C8\uCE68"],normalized:"end"},js:{primary:"JS\uC2E4\uD589",alternatives:["js"],normalized:"js"},async:{primary:"\uBE44\uB3D9\uAE30",normalized:"async"},tell:{primary:"\uB9D0\uD558\uB2E4",normalized:"tell"},default:{primary:"\uAE30\uBCF8\uAC12",normalized:"default"},init:{primary:"\uCD08\uAE30\uD654",normalized:"init"},behavior:{primary:"\uB3D9\uC791",normalized:"behavior"},install:{primary:"\uC124\uCE58",normalized:"install"},measure:{primary:"\uCE21\uC815",normalized:"measure"},into:{primary:"\uC73C\uB85C",normalized:"into"},before:{primary:"\uC804\uC5D0",normalized:"before"},after:{primary:"\uD6C4\uC5D0",normalized:"after"},until:{primary:"\uAE4C\uC9C0",normalized:"until"},event:{primary:"\uC774\uBCA4\uD2B8",normalized:"event"},from:{primary:"\uC5D0\uC11C",normalized:"from"}},tokenization:{particles:["\uC744","\uB97C","\uC774","\uAC00","\uC740","\uB294","\uC5D0","\uC5D0\uC11C","\uC73C\uB85C","\uB85C","\uC640","\uACFC","\uB3C4"],boundaryStrategy:"space"},eventHandler:{eventMarker:{primary:"\uD560 \uB54C",alternatives:["\uD560\uB54C","\uB54C","\uC5D0"],position:"after"},temporalMarkers:["\uD560 \uB54C","\uD560\uB54C","\uB54C"]}};var bt=se([[44032,55203]]),Et=se([[4352,4607],[12592,12687]]),$=be(bt,Et),Ee=new Set(["\uC774","\uAC00","\uC744","\uB97C","\uC740","\uB294","\uC5D0","\uC5D0\uC11C","\uB85C","\uC73C\uB85C","\uC640","\uACFC","\uC758","\uB3C4","\uB9CC","\uBD80\uD130","\uAE4C\uC9C0","\uCC98\uB7FC","\uBCF4\uB2E4"]),ue=new Set(["\uC774","\uAC00","\uC744","\uB97C","\uC740","\uB294","\uC5D0","\uB85C","\uC640","\uACFC","\uC758","\uB3C4","\uB9CC"]),Ze=["\uC5D0\uC11C","\uC73C\uB85C","\uBD80\uD130","\uAE4C\uC9C0","\uCC98\uB7FC","\uBCF4\uB2E4"],kt=["\uD560\uB54C","\uD558\uBA74","\uD558\uB2C8\uAE4C","\uD560 \uB54C"],Qe=new Map([["\uC774",{role:"agent",confidence:.85,variant:"consonant",description:"subject marker (after consonant)"}],["\uAC00",{role:"agent",confidence:.85,variant:"vowel",description:"subject marker (after vowel)"}],["\uC744",{role:"patient",confidence:.95,variant:"consonant",description:"object marker (after consonant)"}],["\uB97C",{role:"patient",confidence:.95,variant:"vowel",description:"object marker (after vowel)"}],["\uC740",{role:"agent",confidence:.75,variant:"consonant",description:"topic marker (after consonant)"}],["\uB294",{role:"agent",confidence:.75,variant:"vowel",description:"topic marker (after vowel)"}],["\uC5D0",{role:"destination",confidence:.85,description:"at/to marker"}],["\uC5D0\uC11C",{role:"source",confidence:.8,description:"at/from marker (action location)"}],["\uB85C",{role:"destination",confidence:.85,variant:"vowel",description:"to/by means (after vowel or \u3139)"}],["\uC73C\uB85C",{role:"destination",confidence:.85,variant:"consonant",description:"to/by means (after consonant)"}],["\uC640",{role:"style",confidence:.7,variant:"vowel",description:"and/with (after vowel)"}],["\uACFC",{role:"style",confidence:.7,variant:"consonant",description:"and/with (after consonant)"}],["\uC758",{role:"patient",confidence:.6,description:"possessive marker"}],["\uB3C4",{role:"patient",confidence:.65,description:"also/too marker"}],["\uB9CC",{role:"patient",confidence:.65,description:"only marker"}],["\uBD80\uD130",{role:"source",confidence:.9,description:"from/since marker"}],["\uAE4C\uC9C0",{role:"destination",confidence:.75,description:"until/to marker"}],["\uCC98\uB7FC",{role:"manner",confidence:.8,description:"like/as marker"}],["\uBCF4\uB2E4",{role:"source",confidence:.75,description:"than marker"}]]),Nt=[{native:"\uCC38",normalized:"true"},{native:"\uAC70\uC9D3",normalized:"false"},{native:"\uB110",normalized:"null"},{native:"\uBBF8\uC815\uC758",normalized:"undefined"},{native:"\uCCAB\uBC88\uC9F8",normalized:"first"},{native:"\uB9C8\uC9C0\uB9C9",normalized:"last"},{native:"\uB2E4\uC74C",normalized:"next"},{native:"\uC774\uC804",normalized:"previous"},{native:"\uAC00\uC7A5\uAC00\uAE4C\uC6B4",normalized:"closest"},{native:"\uBD80\uBAA8",normalized:"parent"},{native:"\uD074\uB9AD",normalized:"click"},{native:"\uB354\uBE14\uD074\uB9AD",normalized:"dblclick"},{native:"\uBCC0\uACBD",normalized:"change"},{native:"\uC81C\uCD9C",normalized:"submit"},{native:"\uC785\uB825",normalized:"input"},{native:"\uB85C\uB4DC",normalized:"load"},{native:"\uC2A4\uD06C\uB864",normalized:"scroll"},{native:"\uD0A4\uB2E4\uC6B4",normalized:"keydown"},{native:"\uD0A4\uC5C5",normalized:"keyup"},{native:"\uB9C8\uC6B0\uC2A4\uC624\uBC84",normalized:"mouseover"},{native:"\uB9C8\uC6B0\uC2A4\uC544\uC6C3",normalized:"mouseout"},{native:"\uB0B4",normalized:"my"},{native:"\uADF8\uAC83\uC758",normalized:"its"},{native:"\uADF8\uB9AC\uACE0",normalized:"and"},{native:"\uB610\uB294",normalized:"or"},{native:"\uC544\uB2C8",normalized:"not"},{native:"\uC774\uB2E4",normalized:"is"},{native:"\uCD08",normalized:"s"},{native:"\uBC00\uB9AC\uCD08",normalized:"ms"},{native:"\uBD84",normalized:"m"},{native:"\uC2DC\uAC04",normalized:"h"}],wt=[{pattern:"\uBC00\uB9AC\uCD08",suffix:"ms",length:3},{pattern:"\uC2DC\uAC04",suffix:"h",length:2},{pattern:"\uCD08",suffix:"s",length:1},{pattern:"\uBD84",suffix:"m",length:1}],ke=class extends G{constructor(){super();this.language="ko";this.direction="ltr";this.initializeKeywordsFromProfile(_,Nt),this.normalizer=new X}tokenize(t){let n=[],o=0;for(;o<t.length;){if(C(t[o])){o++;continue}if(ie(t[o])){let a=this.tryEventModifier(t,o);if(a){n.push(a),o=a.position.end;continue}let c=this.trySelector(t,o);if(c){n.push(c),o=c.position.end;continue}}if(ae(t[o])){let a=this.tryString(t,o);if(a){n.push(a),o=a.position.end;continue}}if(ce(t,o)){let a=this.tryUrl(t,o);if(a){n.push(a),o=a.position.end;continue}}if(w(t[o])){let a=this.extractKoreanNumber(t,o);if(a){n.push(a),o=a.position.end;continue}}let i=this.tryVariableRef(t,o);if(i){n.push(i),o=i.position.end;continue}if($(t[o])){let a=this.extractKoreanWord(t,o);if(a){let c=this.trySplitTemporalSuffix(a);c?(n.push(c.stemToken),n.push(c.suffixToken)):n.push(a),o=a.position.end;continue}}let s=this.tryMultiCharParticle(t,o,Ze);if(s){let a=Qe.get(s.value);a?n.push({...s,metadata:{particleRole:a.role,particleConfidence:a.confidence,particleVariant:a.variant}}):n.push(s),o=s.position.end;continue}if(ue.has(t[o])){let a=t[o],c=Qe.get(a);c?n.push({...T(a,"particle",S(o,o+1)),metadata:{particleRole:c.role,particleConfidence:c.confidence,particleVariant:c.variant}}):n.push(T(a,"particle",S(o,o+1))),o++;continue}if(E(t[o])){let a=this.extractAsciiWord(t,o);if(a){n.push(a),o=a.position.end;continue}}o++}return new I(n,"ko")}classifyToken(t){return Ee.has(t)?"particle":this.isKeyword(t)?"keyword":t.startsWith("#")||t.startsWith(".")||t.startsWith("[")?"selector":t.startsWith('"')||t.startsWith("'")||/^\d/.test(t)?"literal":"identifier"}extractKoreanWord(t,n){for(let l=Math.min(6,t.length-n);l>=2;l--){let d=t.slice(n,n+l),x=!0;for(let p=0;p<d.length;p++)if(!$(d[p])){x=!1;break}if(!x)continue;if(Ee.has(d)&&n===n){let p=n+l,m=p<t.length?t[p]:"";if(m===""||C(m)||!$(m))return null}let y=this.lookupKeyword(d);if(y)return T(d,"keyword",S(n,n+l),y.normalized);let g=this.tryMorphKeywordMatch(d,n,n+l);if(g)return g}let i=n,s="";for(;i<t.length;){let l=t[i],d=i+1<t.length?t[i+1]:"";if(s.length===0&&ue.has(l))return null;if(ue.has(l)&&s.length>0&&(d===""||C(d)||!$(d)||ue.has(d)))break;let x=!1;for(let y of Ze)if(t.slice(i,i+y.length)===y&&s.length>0){let g=i+y.length,p=g<t.length?t[g]:"";if(p===""||C(p)||!$(p)){x=!0;break}}if(x)break;if($(l))s+=l,i++;else break}if(!s||Ee.has(s))return null;let a=this.lookupKeyword(s);if(a)return T(s,"keyword",S(n,i),a.normalized);let c=this.tryMorphKeywordMatch(s,n,i);return c||T(s,"identifier",S(n,i))}extractAsciiWord(t,n){let o=n,i="";for(;o<t.length&&E(t[o]);)i+=t[o++];return i?T(i,"identifier",S(n,o)):null}extractKoreanNumber(t,n){return this.tryNumberWithTimeUnits(t,n,wt,{allowSign:!1,skipWhitespace:!1})}trySplitTemporalSuffix(t){let n=t.value;for(let o of kt)if(n.endsWith(o)&&n.length>o.length){let i=n.slice(0,-o.length),s=i.toLowerCase(),a=this.lookupKeyword(s);if(!a)continue;let c=t.position.start+i.length,l=T(i,"keyword",S(t.position.start,c),a.normalized),d=T(o,"keyword",S(c,t.position.end),"when");return{stemToken:l,suffixToken:d}}return null}},pe=new ke;Be("ko",pe,_);function Ye(r){return Ke(r)}function de(r,e){return $e(r,e)}function me(){return re()}function A(r){let e="complex";return r.startsWith("#")&&!r.includes(" ")?e="id":r.startsWith(".")&&!r.includes(" ")?e="class":r.startsWith("[")&&r.endsWith("]")?e="attribute":/^[a-z][a-z0-9]*$/i.test(r)&&(e="element"),{type:"selector",value:r,selectorKind:e}}function v(r,e){let t={type:"literal",value:r};return e!==void 0?{type:"literal",value:r,dataType:e}:t}function R(r){return{type:"reference",value:r}}function q(r,e){return{type:"property-path",object:r,property:e}}function z(r,e,t){let n={kind:"command",action:r,roles:new Map(Object.entries(e))};return t!==void 0?{...n,metadata:t}:n}function U(r,e,t,n,o){let i=new Map;i.set("event",r);let s={kind:"event-handler",action:"on",roles:i,body:e};return t!==void 0&&(s.eventModifiers=t),n!==void 0&&(s.metadata=n),o!==void 0&&o.length>0&&(s.parameterNames=o),s}function Je(r,e="then",t){let n={kind:"compound",action:"compound",roles:new Map,statements:r,chainType:e};return t!==void 0&&(n.metadata=t),n}function Ne(r,e){return!e||e.length===0||e.includes(r)||e.includes("expression")?!0:r==="property-path"?e.some(t=>["selector","reference","expression"].includes(t)):!1}function et(r,e){return r.possessive?.keywords?.[e]}var P=class P{constructor(){this.stemMatchCount=0;this.totalKeywordMatches=0}matchPattern(e,t){let n=e.mark(),o=new Map;if(this.currentProfile=M(t.language),this.stemMatchCount=0,this.totalKeywordMatches=0,!this.matchTokenSequence(e,t.template.tokens,o))return e.reset(n),null;let s=this.calculateConfidence(t,o);return this.applyExtractionRules(t,o),{pattern:t,captured:o,consumedTokens:e.position()-n.position,confidence:s}}matchBest(e,t){let n=[];for(let i of t){let s=e.mark(),a=this.matchPattern(e,i);a&&n.push(a),e.reset(s)}if(n.length===0)return null;n.sort((i,s)=>{let a=s.pattern.priority-i.pattern.priority;return a!==0?a:s.confidence-i.confidence});let o=n[0];return this.matchPattern(e,o.pattern),o}matchTokenSequence(e,t,n){let o=t[0],i=o?.type==="literal"&&(o.value==="and"||o.value==="then"||o.alternatives?.includes("and")||o.alternatives?.includes("then"));if(this.currentProfile?.code==="ar"&&!i)for(;e.peek()?.kind==="conjunction";)e.advance();for(let s of t)if(!this.matchPatternToken(e,s,n)){if(this.isOptional(s))continue;return!1}return!0}matchPatternToken(e,t,n){switch(t.type){case"literal":return this.matchLiteralToken(e,t);case"role":return this.matchRoleToken(e,t,n);case"group":return this.matchGroupToken(e,t,n);default:return!1}}matchLiteralToken(e,t){let n=e.peek();if(!n)return!1;let o=this.getMatchType(n,t.value);if(o!=="none")return this.totalKeywordMatches++,o==="stem"&&this.stemMatchCount++,e.advance(),!0;if(t.alternatives)for(let i of t.alternatives){let s=this.getMatchType(n,i);if(s!=="none")return this.totalKeywordMatches++,s==="stem"&&this.stemMatchCount++,e.advance(),!0}return!1}matchRoleToken(e,t,n){this.skipNoiseWords(e);let o=e.peek();if(!o)return t.optional||!1;let i=this.tryMatchPossessiveExpression(e);if(i)return t.expectedTypes&&t.expectedTypes.length>0&&!t.expectedTypes.includes(i.type)&&!t.expectedTypes.includes("expression")?t.optional||!1:(n.set(t.role,i),!0);let s=this.tryMatchMethodCallExpression(e);if(s)return t.expectedTypes&&t.expectedTypes.length>0&&!t.expectedTypes.includes(s.type)&&!t.expectedTypes.includes("expression")?t.optional||!1:(n.set(t.role,s),!0);let a=this.tryMatchPossessiveSelectorExpression(e);if(a)return t.expectedTypes&&t.expectedTypes.length>0&&!Ne(a.type,t.expectedTypes)?t.optional||!1:(n.set(t.role,a),!0);let c=this.tryMatchPropertyAccessExpression(e);if(c)return t.expectedTypes&&t.expectedTypes.length>0&&!t.expectedTypes.includes(c.type)&&!t.expectedTypes.includes("expression")?t.optional||!1:(n.set(t.role,c),!0);let l=this.tryMatchSelectorPropertyExpression(e);if(l)return t.expectedTypes&&t.expectedTypes.length>0&&!Ne(l.type,t.expectedTypes)?t.optional||!1:(n.set(t.role,l),!0);let d=this.tokenToSemanticValue(o);return!d||t.expectedTypes&&t.expectedTypes.length>0&&!t.expectedTypes.includes(d.type)?t.optional||!1:(n.set(t.role,d),e.advance(),!0)}tryMatchPossessiveExpression(e){let t=e.peek();if(!t||!this.currentProfile)return null;let n=(t.normalized||t.value).toLowerCase(),o=et(this.currentProfile,n);if(!o)return null;let i=e.mark();e.advance();let s=e.peek();return s&&(s.kind==="identifier"||s.kind==="keyword"&&!this.isStructuralKeyword(s.value)||s.kind==="selector"&&s.value.startsWith("*"))?(e.advance(),q(R(o),s.value)):(e.reset(i),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 t=e.peek();if(!t||t.kind!=="selector")return null;let n=e.mark();e.advance();let o=e.peek();if(!o||o.kind!=="operator"||o.value!==".")return e.reset(n),null;e.advance();let i=e.peek();if(!i||i.kind!=="identifier")return e.reset(n),null;e.advance();let s=e.peek();if(!s||s.kind!=="punctuation"||s.value!=="(")return e.reset(n),null;e.advance();let a=[];for(;!e.isAtEnd()&&a.length<P.MAX_METHOD_ARGS;){let l=e.peek();if(!l)break;if(l.kind==="punctuation"&&l.value===")"){e.advance();break}if(l.kind==="punctuation"&&l.value===","){e.advance();continue}a.push(l.value),e.advance()}return{type:"expression",raw:`${t.value}.${i.value}(${a.join(", ")})`}}tryMatchPropertyAccessExpression(e){let t=e.peek();if(!t||t.kind!=="identifier"&&t.kind!=="keyword")return null;let n=e.mark();e.advance();let o=e.peek();if(!o||o.kind!=="operator"||o.value!==".")return e.reset(n),null;e.advance();let i=e.peek();if(!i||i.kind!=="identifier")return e.reset(n),null;e.advance();let s=`${t.value}.${i.value}`,a=1;for(;!e.isAtEnd()&&a<P.MAX_PROPERTY_DEPTH;){let l=e.peek();if(!l||l.kind!=="operator"||l.value!==".")break;e.advance();let d=e.peek();if(!d||d.kind!=="identifier")break;e.advance(),s+=`.${d.value}`,a++}let c=e.peek();if(c&&c.kind==="punctuation"&&c.value==="("){e.advance();let l=[],d=0;for(;!e.isAtEnd()&&l.length<P.MAX_METHOD_ARGS;){let y=e.peek();if(!y)break;if(y.kind==="punctuation"&&y.value===")"){if(d===0){e.advance();break}d--}if(y.kind==="punctuation"&&y.value==="("&&d++,y.kind==="punctuation"&&y.value===","){e.advance();continue}l.push(y.value),e.advance()}return{type:"expression",raw:`${s}(${l.join(", ")})`}}return{type:"expression",raw:s}}tryMatchPossessiveSelectorExpression(e){let t=e.peek();if(!t||t.kind!=="selector")return null;let n=e.mark();e.advance();let o=e.peek();if(!o||o.kind!=="punctuation"||o.value!=="'s")return e.reset(n),null;e.advance();let i=e.peek();return!i||i.kind!=="selector"&&i.kind!=="identifier"?(e.reset(n),null):(e.advance(),q(A(t.value),i.value))}tryMatchSelectorPropertyExpression(e){let t=e.peek();if(!t||t.kind!=="selector"||!t.value.startsWith("#"))return null;let n=e.mark();e.advance();let o=e.peek();if(!o||o.kind!=="selector"||!o.value.startsWith("."))return e.reset(n),null;let i=e.peek(1);i&&i.kind,e.advance();let s=o.value.slice(1);return q(A(t.value),s)}matchGroupToken(e,t,n){let o=e.mark(),i=new Set(n.keys());if(!this.matchTokenSequence(e,t.tokens,n)){e.reset(o);for(let a of n.keys())i.has(a)||n.delete(a);return t.optional||!1}return!0}getMatchType(e,t){return e.value===t?"exact":e.normalized===t?"normalized":e.stem===t&&e.stemConfidence!==void 0&&e.stemConfidence>=.7?"stem":e.kind==="keyword"&&e.value.toLowerCase()===t.toLowerCase()?"case-insensitive":"none"}tokenToSemanticValue(e){switch(e.kind){case"selector":return A(e.value);case"literal":return this.parseLiteralValue(e.value);case"keyword":let t=(e.normalized||e.value).toLowerCase();return["me","you","it","result","event","target","body"].includes(t)?R(t):v(e.normalized||e.value);case"identifier":if(e.value.startsWith(":"))return R(e.value);let n=e.value.toLowerCase();return["me","you","it","result","event","target","body"].includes(n)?R(n):{type:"expression",raw:e.value};case"url":return v(e.value,"string");default:return null}}parseLiteralValue(e){if(e.startsWith('"')||e.startsWith("'")||e.startsWith("`")||e.startsWith("\u300C")){let o=e.slice(1,-1);return v(o,"string")}if(e==="true")return v(!0,"boolean");if(e==="false")return v(!1,"boolean");let t=e.match(/^(\d+(?:\.\d+)?)(ms|s|m|h)?$/);if(t){let o=parseFloat(t[1]);return t[2]?v(e,"duration"):v(o,"number")}let n=parseFloat(e);return isNaN(n)?v(e,"string"):v(n,"number")}applyExtractionRules(e,t){for(let[n,o]of Object.entries(e.extraction))!t.has(n)&&o.default&&t.set(n,o.default)}isOptional(e){return e.optional===!0}calculateConfidence(e,t){let n=0,o=0,i=l=>e.extraction?.[l]?.default!==void 0;for(let l of e.template.tokens)if(l.type==="role")o+=1,t.has(l.role)&&(n+=1);else if(l.type==="group"){for(let d of l.tokens)if(d.type==="role"){let x=i(d.role),y=.8;o+=y,t.has(d.role)?n+=y:x&&(n+=y*.6)}}let s=o>0?n/o:1;if(this.stemMatchCount>0&&this.totalKeywordMatches>0){let l=this.stemMatchCount/this.totalKeywordMatches*.15;s=Math.max(.5,s-l)}let a=this.calculateVSOConfidenceBoost(e);s=Math.min(1,s+a);let c=this.arabicPrepositionDisambiguation(e,t);return s=Math.max(0,Math.min(1,s+c)),s}calculateVSOConfidenceBoost(e){if(e.language!=="ar")return 0;let t=e.template.tokens[0];if(!t||t.type!=="literal")return 0;let n=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(n.has(t.value))return .15;if(t.alternatives){for(let o of t.alternatives)if(n.has(o))return .15}return 0}arabicPrepositionDisambiguation(e,t){if(e.language!=="ar")return 0;let n=0,o={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[i,s]of t.entries()){let a=o[i];if(!a||a.length===0)continue;let c=s.metadata;if(c&&typeof c.prepositionValue=="string"){let l=c.prepositionValue;a.includes(l)?n+=.1:n-=.1}}return Math.max(-.1,Math.min(.1,n))}skipNoiseWords(e){let t=e.peek();if(!t)return;let n=t.value.toLowerCase();if(P.ENGLISH_NOISE_WORDS.has(n)){let o=e.mark();e.advance();let i=e.peek();if(i&&i.kind==="selector")return;e.reset(o)}n==="class"&&e.advance()}extractEventModifiers(e){let t={},n=!1;for(;!e.isAtEnd();){let o=e.peek();if(!o||o.kind!=="event-modifier")break;let i=o.metadata;if(!i)break;switch(n=!0,i.modifierName){case"once":t.once=!0;break;case"debounce":typeof i.value=="number"&&(t.debounce=i.value);break;case"throttle":typeof i.value=="number"&&(t.throttle=i.value);break;case"queue":(i.value==="first"||i.value==="last"||i.value==="all"||i.value==="none")&&(t.queue=i.value);break}e.advance()}return n?t:void 0}};P.MAX_PROPERTY_DEPTH=10,P.MAX_METHOD_ARGS=20,P.ENGLISH_NOISE_WORDS=new Set(["the","a","an"]);var Z=P,B=new Z;var fe=class{render(e,t){if(e.kind==="compound")return this.renderCompound(e,t);let n=qe(t,e.action);if(n.length===0)return this.renderExplicit(e);let o=this.findBestPattern(e,n);return o?this.renderWithPattern(e,o):this.renderExplicit(e)}renderCompound(e,t){let n=e.statements.map(i=>this.render(i,t)),o=this.getChainWord(e.chainType,t);return n.join(` ${o} `)}getChainWord(e,t){let n=M(t);return n?.keywords?n.keywords[e]?.primary??e:e}renderExplicit(e){if(e.kind==="compound"){let n=e;return n.statements.map(i=>this.renderExplicit(i)).join(` ${n.chainType} `)}let t=[e.action];for(let[n,o]of e.roles)t.push(`${n}:${this.valueToString(o)}`);if(e.kind==="event-handler"){let n=e;if(n.body&&n.body.length>0){let o=n.body.map(i=>this.renderExplicit(i));t.push(`body:${o.join(" ")}`)}}return`[${t.join(" ")}]`}supportedLanguages(){return me()}findBestPattern(e,t){let n=t.map(o=>{let i=o.priority;for(let s of o.template.tokens)s.type==="role"&&(e.roles.has(s.role)?i+=10:s.optional||(i-=50));return o.language==="en"&&((o.id.includes("standard")||o.id.includes("en-source"))&&(i+=20),(o.id.includes("-when")||o.id.includes("-if")||o.id.includes("-upon"))&&(i-=15)),{pattern:o,score:i}});return n.sort((o,i)=>i.score-o.score),n.length>0?n[0].pattern:null}renderWithPattern(e,t){let n=[],o=t.language;for(let i of t.template.tokens){let s=this.renderPatternToken(i,e,o);s!==null&&n.push(s)}if(e.kind==="event-handler"){let i=e;if(i.body&&i.body.length>0){let s=i.body.map(a=>this.render(a,o));n.push(s.join(" "))}}return n.join(" ")}renderPatternToken(e,t,n){switch(e.type){case"literal":return e.value;case"role":{let o=t.roles.get(e.role);return o?this.valueToNaturalString(o,n):(e.optional,null)}case"group":{if(!e.tokens.filter(s=>s.type==="role"&&!s.optional).every(s=>t.roles.has(s.role))&&e.optional)return null;if(e.optional&&e.tokens.find(a=>a.type==="role"&&a.role==="destination")){let a=t.roles.get("destination");if(a?.type==="reference"&&a.value==="me")return null}let i=[];for(let s of e.tokens){let a=this.renderPatternToken(s,t,n);a!==null&&i.push(a)}return i.length>0?i.join(" "):null}default:return null}}valueToString(e){switch(e.type){case"literal":return typeof e.value=="string"?e.dataType==="string"||/\s/.test(e.value)?`"${e.value}"`:e.value:String(e.value);case"selector":return e.value;case"reference":return e.value;case"property-path":return`${this.valueToString(e.object)}'s ${e.property}`;case"expression":return e.raw}}valueToNaturalString(e,t="en"){switch(e.type){case"literal":return typeof e.value=="string"&&e.dataType==="string"?`"${e.value}"`:String(e.value);case"selector":return e.value;case"reference":return this.renderReference(e,t);case"property-path":return this.renderPropertyPath(e,t);case"expression":return e.raw}}renderReference(e,t){let n=M(t);return n?.references?n.references[e.value]??e.value:e.value}renderPropertyPath(e,t){let n=M(t),o=e.property,i=e.object.type==="reference"?e.object.value:null;if(n?.possessive?.specialForms&&i){let a=n.possessive.specialForms[i];if(a){let{markerPosition:c,usePossessiveAdjectives:l}=n.possessive;return l&&c==="after-object"?`${o} ${a}`:`${a} ${o}`}}let s=this.valueToNaturalString(e.object,t);if(n?.possessive){let{marker:a,markerPosition:c,usePossessiveAdjectives:l}=n.possessive;if(l&&i&&c==="after-object")return`${o} ${s}`;if(a)switch(c){case"between":return n.usesSpaces?`${s}${a} ${o}`:`${s}${a}${o}`;case"after-object":return`${s}${a} ${o}`;case"before-property":return`${s} ${a} ${o}`}}return t==="en"||!n?.possessive?s==="me"?`my ${o}`:s==="it"?`its ${o}`:`${s}'s ${o}`:`${s} ${o}`}},we=new fe;function Q(r,e){return we.render(r,e)}function Y(r){return we.renderExplicit(r)}function K(r){let e=r.trim();if(!e.startsWith("[")||!e.endsWith("]"))throw new Error("Explicit syntax must be wrapped in brackets: [command role:value ...]");let t=e.slice(1,-1).trim();if(!t)throw new Error("Empty explicit statement");let n=Ct(t);if(n.length===0)throw new Error("No command specified in explicit statement");let o=n[0].toLowerCase(),i=new Map;for(let a=1;a<n.length;a++){let c=n[a],l=c.indexOf(":");if(l===-1)throw new Error(`Invalid role format: "${c}". Expected role:value`);let d=c.slice(0,l),x=c.slice(l+1);if(d==="body"&&x.startsWith("[")){let g=Rt(c,l+1),p=c.slice(l+1,g+1);i.set(d,{type:"expression",raw:p});continue}let y=Lt(x);i.set(d,y)}if(o==="on"){let a=i.get("event");if(!a)throw new Error("Event handler requires event role: [on event:click ...]");let c=i.get("body"),l=[];return c&&c.type==="expression"&&l.push(K(c.raw)),i.delete("body"),U(a,l,void 0,{sourceLanguage:"explicit"})}let s={};for(let[a,c]of i)s[a]=c;return z(o,s,{sourceLanguage:"explicit"})}function Ct(r){let e=[],t="",n=!1,o="",i=0;for(let s=0;s<r.length;s++){let a=r[s];if(n){t+=a,a===o&&r[s-1]!=="\\"&&(n=!1);continue}if(a==='"'||a==="'"){n=!0,o=a,t+=a;continue}if(a==="["){i++,t+=a;continue}if(a==="]"){i--,t+=a;continue}if(a===" "&&i===0){t&&(e.push(t),t="");continue}t+=a}return t&&e.push(t),e}function Lt(r){if(r.startsWith("#")||r.startsWith(".")||r.startsWith("[")||r.startsWith("@")||r.startsWith("*"))return A(r);if(r.startsWith('"')||r.startsWith("'")){let t=r.slice(1,-1);return v(t,"string")}if(r==="true")return v(!0,"boolean");if(r==="false")return v(!1,"boolean");if(["me","you","it","result","event","target","body"].includes(r.toLowerCase()))return R(r.toLowerCase());let e=r.match(/^(-?\d+(?:\.\d+)?)(ms|s|m|h)?$/);if(e){let t=parseFloat(e[1]);return e[2]?v(r,"duration"):v(t,"number")}return v(r,"string")}function Rt(r,e){let t=0;for(let n=e;n<r.length;n++)if(r[n]==="[")t++;else if(r[n]==="]"&&(t--,t===0))return n;return r.length-1}function F(r){let e=r.trim();return e.startsWith("[")&&e.endsWith("]")}var ge=class{parse(e,t){let n=de(e,t),o=N(t);if(o.length===0)throw new Error(`No patterns available for language: ${t}`);let i=[...o].sort((d,x)=>x.priority-d.priority),s=i.filter(d=>d.command==="on"),a=B.matchBest(n,s);if(a)return this.buildEventHandler(a,n,t);let c=i.filter(d=>d.command!=="on"),l=B.matchBest(n,c);if(l)return this.buildCommand(l,t);throw new Error(`Could not parse input in ${t}: ${e}`)}canParse(e,t){try{return this.parse(e,t),!0}catch{return!1}}supportedLanguages(){return me()}buildCommand(e,t){if(!e)throw new Error("No match to build command from");let n={};for(let[o,i]of e.captured)n[o]=i;return z(e.pattern.command,n,{sourceLanguage:t,patternId:e.pattern.id,confidence:e.confidence})}buildEventHandler(e,t,n){if(!e)throw new Error("No match to build event handler from");let o=e.captured.get("event");if(!o)throw new Error("Event handler pattern matched but no event captured");let i=B.extractEventModifiers(t),s,a=e.captured.get("action");if(a&&a.type==="literal"){let c=a.value,l={};for(let[y,g]of e.captured)y!=="event"&&y!=="action"&&y!=="continues"&&(l[y]=g);let d=z(c,l,{sourceLanguage:n,patternId:e.pattern.id,confidence:e.confidence}),x=e.captured.get("continues");if(x&&x.type==="literal"&&x.value==="then"){let y=N(n).filter(m=>m.command!=="on").sort((m,h)=>h.priority-m.priority),g=N(n).filter(m=>m.id.startsWith("grammar-")&&m.id.includes("-continuation")).sort((m,h)=>h.priority-m.priority),p=this.parseBodyWithGrammarPatterns(t,y,g,n);p.length>0?s=[d,...p]:s=[d]}else s=[d]}else{let c=N(n).filter(l=>l.command!=="on").sort((l,d)=>d.priority-l.priority);s=this.parseBodyWithClauses(t,c,n)}return U(o,s,i,{sourceLanguage:n,patternId:e.pattern.id,confidence:e.confidence})}parseBodyWithClauses(e,t,n){let o=[],i=[];for(;!e.isAtEnd();){let s=e.peek();if(!s)break;let a=s.kind==="conjunction"||s.kind==="keyword"&&this.isThenKeyword(s.value,n),c=s.kind==="keyword"&&this.isEndKeyword(s.value,n);if(a){if(i.length>0){let l=this.parseClause(i,t,n);o.push(...l),i.length=0}e.advance();continue}if(c){if(i.length>0){let l=this.parseClause(i,t,n);o.push(...l)}e.advance();break}i.push(s),e.advance()}if(i.length>0){let s=this.parseClause(i,t,n);o.push(...s)}return o.length>1?[Je(o,"then",{sourceLanguage:n})]:o}parseClause(e,t,n){if(e.length===0)return[];let o=new I(e,n),i=[];for(;!o.isAtEnd();){let s=B.matchBest(o,t);s?i.push(this.buildCommand(s,n)):o.advance()}return i}parseBodyWithGrammarPatterns(e,t,n,o){let i=[];for(;!e.isAtEnd();){let s=e.peek();if(s&&this.isThenKeyword(s.value,o)){e.advance();continue}if(s&&this.isEndKeyword(s.value,o)){e.advance();break}let a=!1;if(n.length>0){let c=B.matchBest(e,n);if(c){let l=c.pattern.command,d={};for(let[g,p]of c.captured)g!=="event"&&g!=="action"&&g!=="continues"&&(d[g]=p);let x=z(l,d,{sourceLanguage:o,patternId:c.pattern.id});i.push(x),a=!0;let y=c.captured.get("continues");if(y&&y.type==="literal"&&y.value==="then")continue}}if(!a){let c=B.matchBest(e,t);c&&(i.push(this.buildCommand(c,o)),a=!0)}a||e.advance()}return i}isThenKeyword(e,t){let n={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"]),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"]),qu:new Set(["chaymantataq","hinaspa","chaymanta"]),sw:new Set(["kisha","halafu","baadaye"])};return(n[t]||n.en).has(e.toLowerCase())}isEndKeyword(e,t){let n={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"]),qu:new Set(["tukukuy","tukuy","puchukay"]),sw:new Set(["mwisho","maliza","tamati"])};return(n[t]||n.en).has(e.toLowerCase())}},Ce=new ge;function D(r,e){return Ce.parse(r,e)}function Le(r,e){return Ce.canParse(r,e)}function Re(r,e){if(F(r))return r;let t=D(r,e);return Y(t)}function Pe(r,e){let t=K(r);return Q(t,e)}function Me(r,e){return F(r)?K(r):D(r,e)}var Pt=new Set(["me","my","myself","you","your","yourself","it","its","result","event","target","body","detail","window","document"]),Mt=new Set(["and","or","not","no"]),At=new Set(["true","false","null","undefined"]),zt=new Set(["ms","s","seconds","second","milliseconds","millisecond","minutes","minute","hours","hour"]);function tt(r){let e=[],t=0,n=1,o=1;function i(){if(e.length===0)return!0;let p=e[e.length-1];return["OPERATOR","COMPARISON","LOGICAL","LPAREN","LBRACKET","LBRACE","COMMA","COLON"].includes(p.type)}function s(p=0){return r[t+p]??""}function a(){let p=r[t];return t++,p===`
|
|
2
|
+
`?(n++,o=1):o++,p}function c(){for(;t<r.length&&/\s/.test(r[t]);)a()}function l(p){let m="";for(;t<r.length&&p(r[t]);)m+=a();return m}function d(p){let m=p;for(a();t<r.length&&r[t]!==p;)r[t]==="\\"&&t+1<r.length&&(m+=a()),m+=a();return t<r.length&&(m+=a()),m}function x(){let p="`";for(a();t<r.length&&r[t]!=="`";)r[t]==="\\"&&t+1<r.length&&(p+=a()),p+=a();return t<r.length&&(p+=a()),p}function y(){let p="<";for(a();t<r.length&&(p+=a(),!p.endsWith("/>")););return p}function g(p,m,h){return{type:p,value:m,start:h,end:t,line:n,column:o-m.length}}for(;t<r.length&&(c(),!(t>=r.length));){let p=t,m=s();if(m==="'"&&s(1)==="s"&&!/\w/.test(s(2))){a(),a(),e.push(g("POSSESSIVE","'s",p));continue}if(m==='"'||m==="'"){let h=d(m);e.push(g("STRING",h,p));continue}if(m==="`"){let h=x();e.push(g("TEMPLATE_LITERAL",h,p));continue}if(m==="<"&&/[a-zA-Z.#\[]/.test(s(1))){let h=y();e.push(g("QUERY_SELECTOR",h,p));continue}if(m==="#"&&i()){a();let h=l(b=>/[\w-]/.test(b));e.push(g("ID_SELECTOR","#"+h,p));continue}if(m==="."&&/[a-zA-Z_-]/.test(s(1))&&i()){a();let h=l(b=>/[\w-]/.test(b));e.push(g("CLASS_SELECTOR","."+h,p));continue}if(m==="["&&i()){let h=s(1);if(h==="@"||/[a-zA-Z]/.test(h)){let b="";for(b+=a();t<r.length&&r[t]!=="]";)r[t]==='"'||r[t]==="'"?b+=d(r[t]):b+=a();t<r.length&&(b+=a()),e.push(g("ATTRIBUTE_SELECTOR",b,p));continue}}if(m==="["){a(),e.push(g("LBRACKET","[",p));continue}if(m==="]"){a(),e.push(g("RBRACKET","]",p));continue}if(/\d/.test(m)){let h=l(ye=>/[\d.]/.test(ye)),b=t,ne=l(ye=>/[a-zA-Z]/.test(ye));zt.has(ne)?e.push(g("TIME_EXPRESSION",h+ne,p)):(t=b,e.push(g("NUMBER",h,p)));continue}if(m==="("){a(),e.push(g("LPAREN","(",p));continue}if(m===")"){a(),e.push(g("RPAREN",")",p));continue}if(m==="{"){a(),e.push(g("LBRACE","{",p));continue}if(m==="}"){a(),e.push(g("RBRACE","}",p));continue}if(m===","){a(),e.push(g("COMMA",",",p));continue}if(m===":"){a(),e.push(g("COLON",":",p));continue}if(m==="."){a(),e.push(g("DOT",".",p));continue}if(m==="+"||m==="-"||m==="*"||m==="/"||m==="%"){a(),e.push(g("OPERATOR",m,p));continue}if(m==="="||m==="!"||m==="<"||m===">"){let h=a();s()==="="&&(h+=a()),e.push(g("COMPARISON",h,p));continue}if(/[a-zA-Z_$]/.test(m)){let h=l(ne=>/[\w$]/.test(ne)),b=h.toLowerCase();Pt.has(b)?e.push(g("CONTEXT_VAR",h,p)):Mt.has(b)?e.push(g("LOGICAL",h,p)):At.has(b)?e.push(g("BOOLEAN",h,p)):e.push(g("IDENTIFIER",h,p));continue}a()}return e.push(g("EOF","",t)),e}var he=class{constructor(){this.tokens=[];this.current=0}parse(e){try{return this.tokens=tt(e),this.current=0,this.isAtEnd()?{success:!1,error:"Empty expression"}:{success:!0,node:this.parseExpression(),consumed:this.current}}catch(t){return{success:!1,error:t instanceof Error?t.message:"Parse error"}}}peek(){return this.tokens[this.current]??{type:"EOF",value:"",start:0,end:0}}previous(){return this.tokens[this.current-1]??{type:"EOF",value:"",start:0,end:0}}isAtEnd(){return this.peek().type==="EOF"}advance(){return this.isAtEnd()||this.current++,this.previous()}check(e){return this.peek().type===e}checkValue(e){return this.peek().value.toLowerCase()===e.toLowerCase()}match(...e){for(let t of e)if(this.check(t))return this.advance(),!0;return!1}parseExpression(){return this.parseOr()}parseOr(){let e=this.parseAnd();for(;this.checkValue("or");){let t=this.advance().value,n=this.parseAnd();e=this.createBinaryExpression(t,e,n)}return e}parseAnd(){let e=this.parseEquality();for(;this.checkValue("and");){let t=this.advance().value,n=this.parseEquality();e=this.createBinaryExpression(t,e,n)}return e}parseEquality(){let e=this.parseComparison();for(;this.match("COMPARISON")||this.checkValue("is")||this.checkValue("matches")||this.checkValue("contains")||this.checkValue("in");){let t=this.previous().value,n=this.parseComparison();e=this.createBinaryExpression(t,e,n)}return e}parseComparison(){let e=this.parseAddition();for(;this.check("COMPARISON");){let t=this.advance().value,n=this.parseAddition();e=this.createBinaryExpression(t,e,n)}return e}parseAddition(){let e=this.parseMultiplication();for(;this.peek().value==="+"||this.peek().value==="-";){let t=this.advance().value,n=this.parseMultiplication();e=this.createBinaryExpression(t,e,n)}return e}parseMultiplication(){let e=this.parseUnary();for(;this.peek().value==="*"||this.peek().value==="/"||this.peek().value==="%";){let t=this.advance().value,n=this.parseUnary();e=this.createBinaryExpression(t,e,n)}return e}parseUnary(){if(this.checkValue("not")||this.checkValue("no")||this.peek().value==="-"){let e=this.advance().value,t=this.parseUnary();return this.createUnaryExpression(e,t)}return this.parsePostfix()}parsePostfix(){let e=this.parsePrimary();for(;;)if(this.match("DOT"))if(this.check("IDENTIFIER")||this.check("CONTEXT_VAR")){let t=this.advance().value;e=this.createPropertyAccess(e,t)}else break;else if(this.match("POSSESSIVE"))if(this.check("IDENTIFIER")||this.check("CONTEXT_VAR")){let t=this.advance().value;e=this.createPossessiveExpression(e,t)}else break;else if(this.match("LPAREN")){let t=this.parseArguments();e=this.createCallExpression(e,t)}else if(this.match("LBRACKET")){let t=this.parseExpression();if(!this.match("RBRACKET"))throw new Error("Expected ] after index");e=this.createPropertyAccess(e,t)}else break;return e}parsePrimary(){let e=this.peek();if(this.match("NUMBER"))return this.createLiteral(parseFloat(e.value),"number",e);if(this.match("STRING")){let t=e.value.slice(1,-1);return this.createLiteral(t,"string",e)}if(this.match("BOOLEAN")){let t=e.value==="true"?!0:e.value==="false"?!1:e.value==="null"?null:void 0;return this.createLiteral(t,e.value,e)}if(this.match("TEMPLATE_LITERAL"))return{type:"templateLiteral",value:e.value,start:e.start,end:e.end,line:e.line,column:e.column};if(this.match("TIME_EXPRESSION"))return this.parseTimeExpression(e);if(this.match("ID_SELECTOR"))return this.createSelector(e.value,"id",e);if(this.match("CLASS_SELECTOR"))return this.createSelector(e.value,"class",e);if(this.match("ATTRIBUTE_SELECTOR"))return this.createSelector(e.value,"attribute",e);if(this.match("QUERY_SELECTOR")){let t=e.value.slice(1,-2);return this.createSelector(t,"query",e)}if(this.match("CONTEXT_VAR"))return this.createContextReference(e.value,e);if(this.match("IDENTIFIER"))return this.createIdentifier(e.value,e);if(this.match("LPAREN")){let t=this.parseExpression();if(!this.match("RPAREN"))throw new Error("Expected ) after expression");return t}if(this.match("LBRACKET"))return this.parseArrayLiteral();if(this.match("LBRACE"))return this.parseObjectLiteral();throw new Error(`Unexpected token: ${e.value}`)}parseArguments(){let e=[];if(!this.check("RPAREN"))do e.push(this.parseExpression());while(this.match("COMMA"));if(!this.match("RPAREN"))throw new Error("Expected ) after arguments");return e}parseArrayLiteral(){let e=[],t=this.previous().start;if(!this.check("RBRACKET"))do e.push(this.parseExpression());while(this.match("COMMA"));if(!this.match("RBRACKET"))throw new Error("Expected ] after array elements");return{type:"arrayLiteral",elements:e,start:t,end:this.previous().end}}parseObjectLiteral(){let e=[],t=this.previous().start;if(!this.check("RBRACE"))do{let n;if(this.check("STRING"))n=this.advance().value.slice(1,-1);else if(this.check("IDENTIFIER"))n=this.advance().value;else throw new Error("Expected property name");if(!this.match("COLON"))throw new Error("Expected : after property name");let o=this.parseExpression();e.push({key:n,value:o})}while(this.match("COMMA"));if(!this.match("RBRACE"))throw new Error("Expected } after object properties");return{type:"objectLiteral",properties:e.map(n=>({type:"objectProperty",key:n.key,value:n.value})),start:t,end:this.previous().end}}parseTimeExpression(e){let t=e.value.match(/^(\d+(?:\.\d+)?)(ms|s|seconds?|milliseconds?|minutes?|hours?)$/i);if(!t)throw new Error(`Invalid time expression: ${e.value}`);let n=parseFloat(t[1]),o=t[2].toLowerCase();return{type:"timeExpression",value:n,unit:o,raw:e.value,start:e.start,end:e.end,line:e.line,column:e.column}}createLiteral(e,t,n){return{type:"literal",value:e,dataType:t,raw:n.value,start:n.start,end:n.end,line:n.line,column:n.column}}createSelector(e,t,n){return{type:"selector",value:e,selector:e,selectorType:t,start:n.start,end:n.end,line:n.line,column:n.column}}createContextReference(e,t){return{type:"contextReference",contextType:e,name:t.value,start:t.start,end:t.end,line:t.line,column:t.column}}createIdentifier(e,t){return{type:"identifier",name:e,start:t.start,end:t.end,line:t.line,column:t.column}}createPropertyAccess(e,t){return{type:"propertyAccess",object:e,property:typeof t=="string"?t:t.name??"",start:e.start,end:this.previous().end}}createPossessiveExpression(e,t){return{type:"possessiveExpression",object:e,property:t,start:e.start,end:this.previous().end}}createBinaryExpression(e,t,n){return{type:"binaryExpression",operator:e,left:t,right:n,start:t.start,end:n.end}}createUnaryExpression(e,t){return{type:"unaryExpression",operator:e,operand:t,prefix:!0,start:this.previous().start,end:t.end}}createCallExpression(e,t){return{type:"callExpression",callee:e,arguments:t,start:e.start,end:this.previous().end}}};function Ae(r){return new he().parse(r)}function k(r,e){switch(r.type){case"literal":return jt(r);case"selector":return Vt(r,e);case"reference":return Ot(r);case"property-path":return It(r,e);case"expression":return _t(r);default:let t=r;throw new Error(`Unknown semantic value type: ${t.type}`)}}function jt(r){let e={type:"literal",value:r.value};return r.dataType?{...e,dataType:r.dataType}:e}function Vt(r,e){return e&&r.value.startsWith("*")&&/^[a-zA-Z-]/.test(r.value.slice(1))&&e.push(`Converted '${r.value}' to a CSS selector, but it looks like a CSS property name. CSS properties in commands like 'transition' should be literal strings, not selectors. Consider using expectedTypes: ['literal'] instead of ['literal', 'selector'] in the command schema.`),{type:"selector",value:r.value,selector:r.value,selectorType:r.selectorKind}}function Ot(r){return{type:"contextReference",contextType:r.value,name:r.value}}function It(r,e){return{type:"propertyAccess",object:k(r.object,e),property:r.property}}function _t(r){let e=Ae(r.raw);return!e.success||!e.node?{type:"identifier",name:r.raw}:e.node}function nt(r,e){return r.roles.get(e)}function u(r,e,t){let n=nt(r,e);return n?k(n,t):void 0}function f(r,e=[],t,n={}){let o={type:"command",name:r,args:e};return t&&Object.keys(t).length>0&&(o.modifiers=t),n.isBlocking&&(o.isBlocking=n.isBlocking),n.implicitTarget&&(o.implicitTarget=n.implicitTarget),o}var Bt={action:"toggle",toAST(r,e){let t=u(r,"patient"),n=u(r,"destination"),o=u(r,"duration"),i=t?[t]:[],s={};return n&&(s.on=n),o&&(s.for=o),f("toggle",i,s)}},Kt={action:"add",toAST(r,e){let t=u(r,"patient"),n=u(r,"destination"),o=t?[t]:[],i={};return n&&(i.to=n),f("add",o,i)}},Wt={action:"remove",toAST(r,e){let t=u(r,"patient"),n=u(r,"source"),o=t?[t]:[],i={};return n&&(i.from=n),f("remove",o,i)}},$t={action:"set",toAST(r,e){let t=u(r,"destination"),n=u(r,"patient"),o=[],i={};return t&&o.push(t),n&&(i.to=n),f("set",o,i)}},qt={action:"show",toAST(r,e){let t=u(r,"destination"),n=u(r,"patient"),o=u(r,"duration"),i=[],s={},a=t??n;return a&&i.push(a),o&&(s.with=o),f("show",i,s)}},Ut={action:"hide",toAST(r,e){let t=u(r,"destination"),n=u(r,"patient"),o=u(r,"duration"),i=[],s={},a=t??n;return a&&i.push(a),o&&(s.with=o),f("hide",i,s)}},Ft={action:"increment",toAST(r,e){let t=u(r,"destination"),n=u(r,"patient"),o=u(r,"quantity"),i=[],s={},a=t??n;return a&&i.push(a),o&&(s.by=o),f("increment",i,s)}},Dt={action:"decrement",toAST(r,e){let t=u(r,"destination"),n=u(r,"patient"),o=u(r,"quantity"),i=[],s={},a=t??n;return a&&i.push(a),o&&(s.by=o),f("decrement",i,s)}},Ht={action:"wait",toAST(r,e){let t=u(r,"duration");return f("wait",t?[t]:[],void 0,{isBlocking:!0})}},Gt={action:"log",toAST(r,e){let t=u(r,"patient"),n=[];return t&&n.push(t),f("log",n)}},Xt={action:"put",toAST(r,e){let t=u(r,"patient"),n=u(r,"destination"),o=nt(r,"method"),i=t?[t]:[],s={};if(n){let a=o?.type==="literal"?String(o.value):"into";s[a]=n}return f("put",i,s)}},Zt={action:"fetch",toAST(r,e){let t=u(r,"source"),n=u(r,"method"),o=u(r,"responseType"),i=u(r,"patient"),s=t?[t]:[],a={};return n&&(a.with=n),o&&(a.as=o),i&&(a.body=i),f("fetch",s,a,{isBlocking:!0})}},Qt={action:"append",toAST(r,e){let t=u(r,"patient"),n=u(r,"destination"),o=t?[t]:[],i={};return n&&(i.to=n),f("append",o,i)}},Yt={action:"prepend",toAST(r,e){let t=u(r,"patient"),n=u(r,"destination"),o=t?[t]:[],i={};return n&&(i.to=n),f("prepend",o,i)}},Jt={action:"trigger",toAST(r,e){let t=u(r,"event"),n=u(r,"destination"),o=t?[t]:[],i={};return n&&(i.on=n),f("trigger",o,i)}},en={action:"send",toAST(r,e){let t=u(r,"event"),n=u(r,"destination"),o=u(r,"patient"),i=t?[t]:[],s={};return n&&(s.to=n),o&&(s.detail=o),f("send",i,s)}},tn={action:"go",toAST(r,e){let t=u(r,"source"),n=u(r,"destination"),o=[],i={};return t&&o.push(t),n&&(i.to=n),f("go",o,i)}},nn={action:"transition",toAST(r,e){let t=u(r,"patient"),n=u(r,"goal"),o=u(r,"duration"),i=u(r,"destination"),s=t?[t]:[],a={};return n&&(a.to=n),o&&(a.over=o),i&&(a.on=i),f("transition",s,a)}},rn={action:"focus",toAST(r,e){let t=u(r,"destination"),n=u(r,"patient"),o=[],i={},s=t??n;return s&&o.push(s),f("focus",o,i)}},on={action:"blur",toAST(r,e){let t=u(r,"destination"),n=u(r,"patient"),o=[],i=t??n;return i&&o.push(i),f("blur",o)}},an={action:"get",toAST(r,e){let t=u(r,"source"),n=u(r,"patient"),o=[],i=t??n;return i&&o.push(i),f("get",o)}},sn={action:"take",toAST(r,e){let t=u(r,"patient"),n=u(r,"source"),o=t?[t]:[],i={};return n&&(i.from=n),f("take",o,i)}},cn={action:"call",toAST(r,e){let t=u(r,"patient");return f("call",t?[t]:[])}},ln={action:"return",toAST(r,e){let t=u(r,"patient");return f("return",t?[t]:[])}},un={action:"halt",toAST(r,e){return f("halt",[])}},pn={action:"throw",toAST(r,e){let t=u(r,"patient");return f("throw",t?[t]:[])}},dn={action:"settle",toAST(r,e){let t=u(r,"destination"),n=u(r,"patient"),o=[],i=t??n;return i&&o.push(i),f("settle",o,void 0,{isBlocking:!0})}},mn={action:"swap",toAST(r,e){let t=u(r,"patient"),n=u(r,"source"),o=u(r,"destination"),i=u(r,"style"),s=[],a={};return t&&s.push(t),n&&s.push(n),o&&(a.on=o),i&&(a.with=i),f("swap",s,a)}},fn={action:"morph",toAST(r,e){let t=u(r,"source"),n=u(r,"destination"),o=u(r,"patient"),i=[],s={},a=t??o;return a&&i.push(a),n&&(s.on=n),f("morph",i,s)}},gn={action:"clone",toAST(r,e){let t=u(r,"source"),n=u(r,"destination"),o=u(r,"patient"),i=[],s={},a=t??o;return a&&i.push(a),n&&(s.into=n),f("clone",i,s)}},hn={action:"make",toAST(r,e){let t=u(r,"patient");return f("make",t?[t]:[])}},yn={action:"measure",toAST(r,e){let t=u(r,"patient"),n=u(r,"destination"),o=u(r,"source"),i=[],s={};t&&i.push(t);let a=n??o;return a&&(s.of=a),f("measure",i,s)}},xn={action:"tell",toAST(r,e){let t=u(r,"destination"),n=u(r,"patient"),o=[],i=t??n;return i&&o.push(i),f("tell",o)}},Sn={action:"js",toAST(r,e){let t=u(r,"patient");return f("js",t?[t]:[])}},Tn={action:"async",toAST(r,e){return f("async",[])}},vn={action:"if",toAST(r,e){let t=u(r,"condition");return f("if",t?[t]:[])}},bn={action:"unless",toAST(r,e){let t=u(r,"condition");return f("unless",t?[t]:[])}},En={action:"repeat",toAST(r,e){let t=u(r,"quantity"),n=u(r,"patient"),o=[],i=t??n;return i&&o.push(i),f("repeat",o)}},kn={action:"for",toAST(r,e){let t=u(r,"patient"),n=u(r,"source"),o=t?[t]:[],i={};return n&&(i.in=n),f("for",o,i)}},Nn={action:"while",toAST(r,e){let t=u(r,"condition");return f("while",t?[t]:[])}},wn={action:"continue",toAST(r,e){return f("continue",[])}},Cn={action:"default",toAST(r,e){let t=u(r,"patient"),n=u(r,"source"),o=t?[t]:[],i={};return n&&(i.to=n),f("default",o,i)}},Ln={action:"init",toAST(r,e){return f("init",[])}},Rn={action:"behavior",toAST(r,e){let t=u(r,"patient");return f("behavior",t?[t]:[])}},Pn={action:"install",toAST(r,e){let t=u(r,"patient"),n=u(r,"destination"),o=t?[t]:[],i={};return n&&(i.on=n),f("install",o,i)}},Mn={action:"on",toAST(r,e){let t=u(r,"event"),n=u(r,"source"),o=t?[t]:[],i={};return n&&(i.from=n),f("on",o,i)}},rt=new Map([["toggle",Bt],["add",Kt],["remove",Wt],["set",$t],["show",qt],["hide",Ut],["increment",Ft],["decrement",Dt],["wait",Ht],["log",Gt],["put",Xt],["fetch",Zt],["append",Qt],["prepend",Yt],["get",an],["take",sn],["trigger",Jt],["send",en],["on",Mn],["go",tn],["transition",nn],["focus",rn],["blur",on],["call",cn],["return",ln],["halt",un],["throw",pn],["settle",dn],["swap",mn],["morph",fn],["clone",gn],["measure",yn],["make",hn],["tell",xn],["default",Cn],["js",Sn],["async",Tn],["if",vn],["unless",bn],["repeat",En],["for",kn],["while",Nn],["continue",wn],["init",Ln],["behavior",Rn],["install",Pn]]);function J(r){return rt.get(r)}function ze(r){rt.set(r.action,r)}var ee=class{constructor(e={}){this.warnings=[]}build(e){switch(e.kind){case"command":return this.buildCommand(e);case"event-handler":return this.buildEventHandler(e);case"conditional":return this.buildConditional(e);case"compound":return this.buildCompound(e);case"loop":return this.buildLoop(e);default:throw new Error(`Unknown semantic node kind: ${e.kind}`)}}buildCommand(e){let t=J(e.action);if(t){let n=t.toAST(e,this);if("ast"in n&&"warnings"in n){let o=n;return this.warnings.push(...o.warnings),o.ast}else return n}return this.buildGenericCommand(e)}buildGenericCommand(e){let t=[],n={},o=["patient","source","quantity"],i=["destination","duration","method","style"];for(let a of o){let c=e.roles.get(a);c&&t.push(k(c))}for(let a of i){let c=e.roles.get(a);if(c){let l=this.roleToModifierKey(a);n[l]=k(c)}}let s={type:"command",name:e.action,args:t};return Object.keys(n).length>0?{...s,modifiers:n}:s}roleToModifierKey(e){return{destination:"on",duration:"for",source:"from",condition:"if",method:"via",style:"with"}[e]??e}buildEventHandler(e){let t=e.roles.get("event"),n,o;if(t?.type==="literal"){let h=String(t.value);h.includes("|")||h.includes(" or ")?(o=h.split(/\s+or\s+|\|/).map(b=>b.trim()),n=o[0]):n=h}else t?.type==="reference"?n=t.value:n="click";let i=e.body.map(h=>this.build(h)),s=e.roles.get("source"),a,c;s?.type==="selector"?(a=s.value,c=s.value):s?.type==="reference"?c=s.value:s?.type==="literal"&&(c=String(s.value));let l=e.roles.get("condition"),d=l?k(l):void 0,x=e.roles.get("destination"),y=x?k(x):void 0,g=e.eventModifiers,p=a;if(g?.from){let h=g.from;h.type==="selector"&&!a&&(p=h.value)}let m=e.parameterNames?[...e.parameterNames]:void 0;return{type:"eventHandler",event:n,commands:i,...o&&o.length>1?{events:o}:{},...p?{selector:p}:{},...c?{target:c}:{},...d?{condition:d}:{},...y?{watchTarget:y}:{},...m&&m.length>0?{args:m,params:m}:{}}}buildConditional(e){let t=e.roles.get("condition");if(!t)throw new Error("Conditional node missing condition");let n=k(t),o=e.thenBranch.map(a=>this.build(a)),i=e.elseBranch?.map(a=>this.build(a)),s=[n,{type:"block",commands:o}];return i&&i.length>0&&s.push({type:"block",commands:i}),{type:"command",name:"if",args:s}}buildCompound(e){let t=e.statements.map(o=>this.build(o));return t.length===1?t[0]:t.length===0?{type:"block",commands:[]}:{type:"CommandSequence",commands:t}}buildLoop(e){let t=e.body.map(o=>this.build(o)),n=[{type:"identifier",name:e.loopVariant}];switch(e.loopVariant){case"times":{let o=e.roles.get("quantity");o&&n.push(k(o));break}case"for":{e.loopVariable&&n.push({type:"string",value:e.loopVariable});let o=e.roles.get("source");o&&n.push(k(o));break}case"while":case"until":{let o=e.roles.get("condition");o&&n.push(k(o));break}case"forever":break}return n.push({type:"block",commands:t}),{type:"command",name:"repeat",args:n}}buildBlock(e){return{type:"block",commands:e.map(n=>this.build(n))}}};function ot(r){let e=new ee;return{ast:e.build(r),warnings:e.warnings}}var W=class{constructor(e={}){this.cache=new Map,this.config={maxSize:e.maxSize??1e3,ttlMs:e.ttlMs??0,enabled:e.enabled??!0},this.stats={hits:0,misses:0,evictions:0,expirations:0}}makeKey(e,t){return`${t}:${e}`}isExpired(e){return this.config.ttlMs===0?!1:Date.now()-e.createdAt>this.config.ttlMs}evictLRU(){let e=this.cache.keys().next().value;e!==void 0&&(this.cache.delete(e),this.stats.evictions++)}get(e,t){if(!this.config.enabled){this.stats.misses++;return}let n=this.makeKey(e,t),o=this.cache.get(n);if(!o){this.stats.misses++;return}if(this.isExpired(o)){this.cache.delete(n),this.stats.expirations++,this.stats.misses++;return}return this.cache.delete(n),o.lastAccessed=Date.now(),this.cache.set(n,o),this.stats.hits++,o.result}set(e,t,n){if(!this.config.enabled||n.confidence===0)return;let o=this.makeKey(e,t),i=Date.now();for(;this.cache.size>=this.config.maxSize;)this.evictLRU();this.cache.set(o,{result:n,createdAt:i,lastAccessed:i})}has(e,t){if(!this.config.enabled)return!1;let n=this.makeKey(e,t),o=this.cache.get(n);return o?this.isExpired(o)?(this.cache.delete(n),this.stats.expirations++,!1):!0:!1}delete(e,t){let n=this.makeKey(e,t);return this.cache.delete(n)}clear(){this.cache.clear()}resetStats(){this.stats={hits:0,misses:0,evictions:0,expirations:0}}getStats(){let e=this.stats.hits+this.stats.misses;return{hits:this.stats.hits,misses:this.stats.misses,size:this.cache.size,maxSize:this.config.maxSize,hitRate:e>0?this.stats.hits/e:0,evictions:this.stats.evictions,expirations:this.stats.expirations,enabled:this.config.enabled}}configure(e){if(e.maxSize!==void 0)for(this.config.maxSize=e.maxSize;this.cache.size>this.config.maxSize;)this.evictLRU();e.ttlMs!==void 0&&(this.config.ttlMs=e.ttlMs),e.enabled!==void 0&&(this.config.enabled=e.enabled)}enable(){this.config.enabled=!0}disable(){this.config.enabled=!1}getConfig(){return{...this.config}}},je=new W;var te=class{constructor(e={}){this.patternMatcher=new Z,this.languages=new Set(re()),e.cache===!1?this.cache=new W({enabled:!1}):this.cache=e.cache?new W(e.cache):je}analyze(e,t){if(!this.supportsLanguage(t))return{confidence:0,errors:[`Language '${t}' is not supported for semantic parsing`]};let n=this.cache.get(e,t);if(n)return n;let o=this.analyzeUncached(e,t);return this.cache.set(e,t,o),o}analyzeUncached(e,t){try{let n=Ye(t);if(!n)return{confidence:0,errors:[`No tokenizer available for language '${t}'`]};let o=n.tokenize(e),i=N(t);if(i.length===0)return{confidence:0,errors:[`No patterns available for language '${t}'`]};let s=this.patternMatcher.matchBest(o,i);if(!s)return{confidence:0,errors:["No pattern matched the input"]};let a=this.buildSemanticNode(s);return{confidence:s.confidence,command:{name:s.pattern.command,roles:s.captured},node:a,tokensConsumed:s.consumedTokens}}catch(n){return{confidence:0,errors:[n instanceof Error?n.message:String(n)]}}}supportsLanguage(e){return this.languages.has(e)}supportedLanguages(){return Array.from(this.languages)}getCacheStats(){return this.cache.getStats()}clearCache(){this.cache.clear()}configureCache(e){this.cache.configure(e)}buildSemanticNode(e){return{kind:"command",action:e.pattern.command,roles:e.captured,metadata:{patternId:e.pattern.id}}}};function it(r){return new te(r)}var Ve=.5,at=.8;function st(r,e=Ve){return r.confidence>=e&&r.command!==void 0}var An="1.0.0-ko",zn=["ko"];function jn(){return[...zn]}function ct(r){if(r!=="ko")throw new Error(`Language not supported in this bundle: ${r}. Supported: ko`)}function Vn(r,e){return ct(e),[...de(r,e).tokens]}function lt(r){return ct(r),N(r)}function On(r,e){return lt(r).filter(t=>t.command===e).sort((t,n)=>n.priority-t.priority)}return gt(In);})();
|