@yuktishaalaa/yuktai 5.3.8 → 5.3.9

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.
@@ -0,0 +1 @@
1
+ import{a,b}from"./chunk-P2PBML6K.mjs";export{a as askPage,b as askWithContext};
@@ -0,0 +1 @@
1
+ import{a,b,c,d}from"./chunk-UO7IGXCC.mjs";export{b as answerFromContext,a as askPageWithTransformers,d as getModelLoadStatus,c as isTransformersSupported};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuktishaalaa/yuktai",
3
- "version": "5.3.8",
3
+ "version": "5.3.9",
4
4
  "description": "Accessibility, AI and data toolkit for Next.js, React and plain HTML: WCAG 2.2 auto-fix, agentic data grid, accessibility copilot, QA reports and in-browser RAG. Zero API keys.",
5
5
  "author": "Sandeep Miriyala — Yuktishaalaa AI Lab",
6
6
  "license": "GPL-3.0-only",
package/vanilla/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! yuktai vanilla 5.3.8 — accessible data grid, page agents and WCAG tools for plain HTML.
1
+ /*! yuktai vanilla 5.3.9 — accessible data grid, page agents and WCAG tools for plain HTML.
2
2
  * No framework, no API keys, runs in the browser. ISC © Sandeep Miriyala, Yuktishaalaa AI Lab.
3
3
  * Built from github.com/sandeepmiriyala03/yuktai (vanilla/src + src/agentic, src/grid, src/core; Rust engines: rust/grid-core, rust/rag-core). */
4
4
  "use strict";
@@ -7912,7 +7912,7 @@ ${command ? command.say : "Not a voice command. Try: make text bigger, high cont
7912
7912
  }
7913
7913
 
7914
7914
  // vanilla/src/index.js
7915
- var VERSION = "5.3.8";
7915
+ var VERSION = "5.3.9";
7916
7916
  (function boot() {
7917
7917
  if (!isBrowser2()) return;
7918
7918
  if (window.yuktai && window.yuktai.__vanillaInitialized) return;
@@ -1,4 +1,4 @@
1
- /*! yuktai vanilla 5.3.8 — accessible data grid, page agents and WCAG tools for plain HTML.
1
+ /*! yuktai vanilla 5.3.9 — accessible data grid, page agents and WCAG tools for plain HTML.
2
2
  * No framework, no API keys, runs in the browser. ISC © Sandeep Miriyala, Yuktishaalaa AI Lab.
3
3
  * Built from github.com/sandeepmiriyala03/yuktai (vanilla/src + src/agentic, src/grid, src/core; Rust engines: rust/grid-core, rust/rag-core). */
4
4
  "use strict";(()=>{var Ir=Object.defineProperty;var dr=(e,A)=>{for(var t in A)Ir(e,t,{get:A[t],enumerable:!0})};var fi={};dr(fi,{AUDIT_RULES:()=>nA,DEFAULT_A11Y_SETTINGS:()=>lA,FONT_MAX:()=>pi,FONT_MIN:()=>hi,FONT_STEP:()=>ct,accessibleName:()=>he,aggregate:()=>$e,analyzePage:()=>Zt,answerGridQuestion:()=>$A,applyGridFilters:()=>ve,askAboutPage:()=>ZA,askInsight:()=>zA,auditToJSON:()=>XA,auditToMarkdown:()=>EA,clearFilters:()=>Lt,clearSort:()=>Ut,comparePeriods:()=>Ot,contrastRatio:()=>iA,countGrid:()=>Nt,createA11yCopilot:()=>jA,createContextIndex:()=>tt,createGridTools:()=>tA,createVoiceA11yController:()=>It,detectAnomalies:()=>qe,detectPageIntent:()=>_t,executeGridQuery:()=>Se,filterGrid:()=>Tt,findMentionedColumn:()=>de,getColumns:()=>Ft,getRow:()=>Rt,getRowId:()=>ie,gridPassages:()=>ri,groupBy:()=>zt,highlightRows:()=>AA,moveGridRowFocus:()=>mi,openRow:()=>mA,pagePassages:()=>ni,parseAmount:()=>fA,parseColor:()=>Re,parseGridQuery:()=>Fe,parseVoiceA11yCommand:()=>yi,planTasks:()=>QA,readFormFields:()=>Xt,relativeLuminance:()=>WA,reviewDesign:()=>it,reviewForm:()=>jt,reviewForms:()=>rA,runGridQuery:()=>Ht,runQaAudit:()=>pe,runTasks:()=>OA,searchGrid:()=>Gt,selectRow:()=>yA,sortGrid:()=>Yt,summarizeRows:()=>He,toGridToolColumns:()=>Ne,tokenize:()=>aA,trend:()=>Wt,wcagPlugin:()=>ze});var ur={en:{found:e=>`${e} row(s) found.`,count:e=>`${e} row(s).`,columns:"Grid columns retrieved.",rowFound:"Row found.",notFound:e=>`Row "${e}" not found.`,noneFound:"None of the given rows were found.",highlighted:e=>`${e} row(s) highlighted.`,selected:e=>`Row "${e}" selected.`,opened:e=>`Row "${e}" opened.`,notSupported:e=>`This grid does not support "${e}".`,emptyQuery:"Please enter something to search.",noIds:"No row IDs were given.",unknownColumn:e=>`Unknown column "${e}".`,badOperator:e=>`Unknown filter operator "${e}".`,badValue:"The filter value is not valid for this column.",filtered:e=>`Filter applied: ${e} row(s) match.`,filtersCleared:"All filters cleared.",sorted:(e,A)=>`Sorted by ${e} (${A==="asc"?"ascending":"descending"}).`,sortCleared:"Sorting cleared.",internal:"Something went wrong while running this action."},te:{found:e=>`${e} \u0C35\u0C30\u0C41\u0C38(\u0C32\u0C41) \u0C26\u0C4A\u0C30\u0C3F\u0C15\u0C3E\u0C2F\u0C3F.`,count:e=>`\u0C2E\u0C4A\u0C24\u0C4D\u0C24\u0C02 ${e} \u0C35\u0C30\u0C41\u0C38\u0C32\u0C41.`,columns:"\u0C15\u0C3E\u0C32\u0C2E\u0C4D\u200C\u0C32 \u0C35\u0C3F\u0C35\u0C30\u0C3E\u0C32\u0C41.",rowFound:"\u0C35\u0C30\u0C41\u0C38 \u0C26\u0C4A\u0C30\u0C3F\u0C15\u0C3F\u0C02\u0C26\u0C3F.",notFound:e=>`"${e}" \u0C35\u0C30\u0C41\u0C38 \u0C26\u0C4A\u0C30\u0C15\u0C32\u0C47\u0C26\u0C41.`,noneFound:"\u0C07\u0C1A\u0C4D\u0C1A\u0C3F\u0C28 \u0C35\u0C30\u0C41\u0C38\u0C32\u0C47\u0C35\u0C40 \u0C26\u0C4A\u0C30\u0C15\u0C32\u0C47\u0C26\u0C41.",highlighted:e=>`${e} \u0C35\u0C30\u0C41\u0C38(\u0C32\u0C41) \u0C39\u0C48\u0C32\u0C48\u0C1F\u0C4D \u0C1A\u0C47\u0C36\u0C3E\u0C28\u0C41.`,selected:e=>`"${e}" \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C41\u0C28\u0C4D\u0C28\u0C3E\u0C28\u0C41.`,opened:e=>`"${e}" \u0C24\u0C46\u0C30\u0C3F\u0C1A\u0C3E\u0C28\u0C41.`,notSupported:e=>`\u0C08 \u0C2A\u0C1F\u0C4D\u0C1F\u0C3F\u0C15\u0C32\u0C4B "${e}" \u0C38\u0C4C\u0C15\u0C30\u0C4D\u0C2F\u0C02 \u0C32\u0C47\u0C26\u0C41.`,emptyQuery:"\u0C35\u0C46\u0C24\u0C15\u0C21\u0C3E\u0C28\u0C3F\u0C15\u0C3F \u0C0F\u0C26\u0C48\u0C28\u0C3E \u0C30\u0C3E\u0C2F\u0C02\u0C21\u0C3F.",noIds:"\u0C35\u0C30\u0C41\u0C38 ID\u0C32\u0C41 \u0C07\u0C35\u0C4D\u0C35\u0C32\u0C47\u0C26\u0C41.",unknownColumn:e=>`"${e}" \u0C05\u0C28\u0C47 \u0C15\u0C3E\u0C32\u0C2E\u0C4D \u0C32\u0C47\u0C26\u0C41.`,badOperator:e=>`"${e}" \u0C05\u0C28\u0C47 \u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D \u0C35\u0C3F\u0C27\u0C3E\u0C28\u0C02 \u0C32\u0C47\u0C26\u0C41.`,badValue:"\u0C08 \u0C15\u0C3E\u0C32\u0C2E\u0C4D\u200C\u0C15\u0C3F \u0C08 \u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D \u0C35\u0C3F\u0C32\u0C41\u0C35 \u0C38\u0C30\u0C3F\u0C2A\u0C4B\u0C26\u0C41.",filtered:e=>`\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D \u0C35\u0C47\u0C36\u0C3E\u0C28\u0C41: ${e} \u0C35\u0C30\u0C41\u0C38\u0C32\u0C41 \u0C38\u0C30\u0C3F\u0C2A\u0C4B\u0C2F\u0C3E\u0C2F\u0C3F.`,filtersCleared:"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C28\u0C4D\u0C28\u0C40 \u0C24\u0C40\u0C38\u0C47\u0C36\u0C3E\u0C28\u0C41.",sorted:(e,A)=>`${e} \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C15\u0C4D\u0C30\u0C2E\u0C02 (${A==="asc"?"\u0C06\u0C30\u0C4B\u0C39\u0C23":"\u0C05\u0C35\u0C30\u0C4B\u0C39\u0C23"}).`,sortCleared:"\u0C15\u0C4D\u0C30\u0C2E\u0C02 \u0C24\u0C40\u0C38\u0C47\u0C36\u0C3E\u0C28\u0C41.",internal:"\u0C08 \u0C2A\u0C28\u0C3F \u0C1A\u0C47\u0C38\u0C4D\u0C24\u0C41\u0C02\u0C21\u0C17\u0C3E \u0C38\u0C2E\u0C38\u0C4D\u0C2F \u0C35\u0C1A\u0C4D\u0C1A\u0C3F\u0C02\u0C26\u0C3F."}};function Ce(e){return ur[e.locale??"en"]}function Be(e,A){return{success:!0,message:e,data:A}}function Z(e,A){return{success:!1,message:A,error:{code:e}}}var Ki=["contains","equals","startsWith","endsWith","greaterThan","lessThan","between"];function ie(e,A="id"){let t=e==null?void 0:e[A];return t==null?"":String(t)}function Ke(e){return String(e??"").normalize("NFC").toLowerCase().trim()}function qi(e){if(typeof e=="number")return Number.isFinite(e)?e:null;let A=String(e??"").trim();if(A==="")return null;let t=Number(A);return Number.isFinite(t)?t:null}function Hi(e){if(e instanceof Date)return e.getTime();let A=new Date(String(e??"")).getTime();return Number.isFinite(A)?A:null}function $i(e){return(Array.isArray(e)?e:typeof e=="string"?e.split(","):[]).map(t=>String(t).trim()).filter(Boolean)}function St(e,A){let t=Ke(A);return e.columns.find(i=>Ke(i.key)===t||Ke(i.label)===t)}function qA(e,A){return e.data.find(t=>ie(t,e.rowKey)===A)}function Cr(e,A){return e[A]}function hr(e,A,t){let i=Cr(e,t.key),o=t.type??"text";if(o==="number"||o==="date"){let a=o==="number"?qi:Hi,s=a(i);if(s===null)return!1;if(A.operator==="between"){let[I,u]=A.value,m=a(I),c=a(u);return m!==null&&c!==null&&s>=Math.min(m,c)&&s<=Math.max(m,c)}let l=a(A.value);if(l===null)return!1;switch(A.operator){case"equals":return s===l;case"greaterThan":return s>l;case"lessThan":return s<l;default:break}}let r=Ke(i),n=Ke(A.value);switch(A.operator){case"equals":return r===n;case"startsWith":return r.startsWith(n);case"endsWith":return r.endsWith(n);case"contains":return r.includes(n);default:return!1}}function pr(e,A){let t=A.type??"text",i=t==="date"?Hi:qi;return e.operator==="between"?t==="text"||!Array.isArray(e.value)||e.value.length!==2?!1:i(e.value[0])!==null&&i(e.value[1])!==null:e.operator==="greaterThan"||e.operator==="lessThan"?t!=="text"&&i(e.value)!==null:!Array.isArray(e.value)&&String(e.value).trim()!==""}function ve(e,A,t){return t.length?Pi({data:e,columns:A},t):e}function Ne(e){return e.map(A=>({key:String(A.key),label:A.label,type:A.type==="number"?"number":A.type==="date"?"date":"text"}))}function Pi(e,A){return e.data.filter(t=>A.every(i=>{let o=St(e,i.key);return o?hr(t,i,o):!0}))}function Gt(e,A){var n;let t=Ce(e),i=Ke(A);if(!i)return Z("INVALID_INPUT",t.emptyQuery);let o=e.data.filter(a=>e.columns.some(s=>Ke(a[s.key]).includes(i))),r=o.map(a=>ie(a,e.rowKey)).filter(Boolean);return(n=e.onHighlightRows)==null||n.call(e,r),Be(t.found(o.length),o)}function Nt(e){return Be(Ce(e).count(e.data.length),e.data.length)}function Ft(e){return Be(Ce(e).columns,e.columns)}function Rt(e,A){let t=Ce(e),i=String(A??"").trim();if(!i)return Z("INVALID_INPUT",t.noIds);let o=qA(e,i);return o?Be(t.rowFound,o):Z("NOT_FOUND",t.notFound(i))}function AA(e,A){let t=Ce(e),i=$i(A);if(i.length===0)return Z("INVALID_INPUT",t.noIds);if(!e.onHighlightRows)return Z("NOT_SUPPORTED",t.notSupported("highlight"));let o=i.filter(r=>qA(e,r)!==void 0);return o.length===0?Z("NOT_FOUND",t.noneFound):(e.onHighlightRows(o),Be(t.highlighted(o.length),o))}function yA(e,A){let t=Ce(e),i=String(A??"").trim();return i?e.onSelectRow?qA(e,i)?(e.onSelectRow(i),Be(t.selected(i),i)):Z("NOT_FOUND",t.notFound(i)):Z("NOT_SUPPORTED",t.notSupported("select")):Z("INVALID_INPUT",t.noIds)}function mA(e,A){let t=Ce(e),i=String(A??"").trim();return i?e.onOpenRow?qA(e,i)?(e.onOpenRow(i),Be(t.opened(i),i)):Z("NOT_FOUND",t.notFound(i)):Z("NOT_SUPPORTED",t.notSupported("open")):Z("INVALID_INPUT",t.noIds)}function Tt(e,A){let t=Ce(e),i=St(e,(A==null?void 0:A.key)??"");if(!i)return Z("INVALID_INPUT",t.unknownColumn(String((A==null?void 0:A.key)??"")));if(!Ki.includes(A.operator))return Z("INVALID_INPUT",t.badOperator(String(A.operator)));let o={...A,key:i.key};if(!pr(o,i))return Z("INVALID_INPUT",t.badValue);if(!e.onFiltersChange)return Z("NOT_SUPPORTED",t.notSupported("filter"));let r=[...(e.filters??[]).filter(a=>a.key!==i.key),o],n=Pi(e,r).length;return e.onFiltersChange(r),Be(t.filtered(n),{filters:r,count:n})}function Lt(e){let A=Ce(e);return e.onFiltersChange?(e.onFiltersChange([]),Be(A.filtersCleared,[])):Z("NOT_SUPPORTED",A.notSupported("clear filters"))}function Yt(e,A,t="asc"){let i=Ce(e),o=St(e,A);if(!o)return Z("INVALID_INPUT",i.unknownColumn(String(A)));if(t!=="asc"&&t!=="desc")return Z("INVALID_INPUT",i.badValue);if(!e.onSortChange)return Z("NOT_SUPPORTED",i.notSupported("sort"));let r={key:o.key,direction:t};return e.onSortChange(r),Be(i.sorted(o.label,t),r)}function Ut(e){let A=Ce(e);return e.onSortChange?(e.onSortChange(null),Be(A.sortCleared,null)):Z("NOT_SUPPORTED",A.notSupported("clear sort"))}var yr={search:"Search all columns for text. Matching rows are highlighted.",count:"Count the rows currently in the grid.",columns:"List the grid's columns with their keys, labels and types.",get_row:"Get one row by its ID.",highlight:"Highlight one or more rows by ID without filtering the grid.",select:"Select one row by ID.",open:"Open one row by ID to show its full details.",filter:"Filter the grid by one column. Replaces any existing filter on that column.",clear_filters:"Remove all filters.",sort:"Sort the grid by one column, ascending or descending.",clear_sort:"Remove sorting."},Ji={en:{search:"Search",count:"Count",columns:"Columns",get_row:"Get row",highlight:"Highlight",select:"Select",open:"Open",filter:"Filter",clear_filters:"Clear filters",sort:"Sort",clear_sort:"Clear sort"},te:{search:"\u0C35\u0C46\u0C24\u0C41\u0C15\u0C41",count:"\u0C32\u0C46\u0C15\u0C4D\u0C15",columns:"\u0C15\u0C3E\u0C32\u0C2E\u0C4D\u200C\u0C32\u0C41",get_row:"\u0C35\u0C30\u0C41\u0C38 \u0C1A\u0C42\u0C2A\u0C41",highlight:"\u0C39\u0C48\u0C32\u0C48\u0C1F\u0C4D",select:"\u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B",open:"\u0C24\u0C46\u0C30\u0C41\u0C35\u0C41",filter:"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D",clear_filters:"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F",sort:"\u0C15\u0C4D\u0C30\u0C2E\u0C02",clear_sort:"\u0C15\u0C4D\u0C30\u0C2E\u0C02 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F"}};async function mr(e,A){try{return A()}catch{return Z("INTERNAL",Ce(e).internal)}}function tA(e,A={}){let t=A.name??"yuktai_grid",i=Ji[e.locale??"en"],o=s=>{var l;return((l=A.descriptions)==null?void 0:l[s])??yr[s]},r={id:{type:"string",description:"Row ID"}},n=e.columns.map(s=>s.key);return[{id:"search",available:!0,schema:{type:"object",properties:{query:{type:"string"}},required:["query"]},run:s=>Gt(e,String(s.query??""))},{id:"count",available:!0,schema:{type:"object",properties:{}},run:()=>Nt(e)},{id:"columns",available:!0,schema:{type:"object",properties:{}},run:()=>Ft(e)},{id:"get_row",available:!0,schema:{type:"object",properties:r,required:["id"]},run:s=>Rt(e,String(s.id??""))},{id:"highlight",available:!!e.onHighlightRows,schema:{type:"object",properties:{ids:{type:"array",items:{type:"string"},description:"Row IDs"}},required:["ids"]},run:s=>AA(e,$i(s.ids))},{id:"select",available:!!e.onSelectRow,schema:{type:"object",properties:r,required:["id"]},run:s=>yA(e,String(s.id??""))},{id:"open",available:!!e.onOpenRow,schema:{type:"object",properties:r,required:["id"]},run:s=>mA(e,String(s.id??""))},{id:"filter",available:!!e.onFiltersChange,schema:{type:"object",properties:{key:{type:"string",enum:n},operator:{type:"string",enum:Ki},value:{description:"Text or number; for 'between' an array of two numbers or dates"}},required:["key","operator","value"]},run:s=>Tt(e,{key:String(s.key??""),operator:String(s.operator??""),value:s.value})},{id:"clear_filters",available:!!e.onFiltersChange,schema:{type:"object",properties:{}},run:()=>Lt(e)},{id:"sort",available:!!e.onSortChange,schema:{type:"object",properties:{key:{type:"string",enum:n},direction:{type:"string",enum:["asc","desc"]}},required:["key"]},run:s=>Yt(e,String(s.key??""),s.direction==="desc"?"desc":"asc")},{id:"clear_sort",available:!!e.onSortChange,schema:{type:"object",properties:{}},run:()=>Ut(e)}].filter(s=>s.available).map(s=>({name:`${t}_${s.id}`,title:Ji.en[s.id],description:o(s.id),label:i[s.id],inputSchema:s.schema,execute:l=>mr(e,()=>s.run(l??{}))}))}var xe=e=>String(e??"").normalize("NFC").toLowerCase().replace(/\s+/g," ").trim(),fr=new Set("show me find list get give which who what all the a an rows row records record entries with where that are is have has having and or of for in on to please display only those whose any".split(" "));function fA(e){let A=xe(e).replace(/(₹|rs\.?|inr|\$|usd|€|£)/g," ").match(/(-?\d[\d,]*(?:\.\d+)?|-?\.\d+)\s*(k|thousand|lakhs?|lacs?|crores?|cr|mn|million|m|bn|billion)?(?![\p{L}])/u);if(!A)return null;let t=Number(A[1].replace(/,/g,""));if(!Number.isFinite(t))return null;let i=A[2]??"",o=/^k|thousand/.test(i)?1e3:/^la/.test(i)?1e5:/^(crore|cr)/.test(i)?1e7:/^(m|mn|million)$/.test(i)?1e6:/^(bn|billion)$/.test(i)?1e9:1;return t*o}function Wi(e){let A=new Set([xe(e.label),xe(e.key),xe(e.key.replace(/[_-]+/g," ").replace(/([a-z])([A-Z])/g,"$1 $2"))]);for(let t of Array.from(A))t.endsWith("s")?A.add(t.slice(0,-1)):A.add(`${t}s`);return Array.from(A).filter(t=>t.length>1)}function de(e,A,t){let i=` ${xe(e)} `,o;for(let r of A)if(!(t&&(r.type??"text")!==t))for(let n of Wi(r)){let a=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");new RegExp(`(^|[^\\p{L}\\p{M}\\p{N}])${a}($|[^\\p{L}\\p{M}\\p{N}])`,"u").test(i)&&(!o||n.length>o.length)&&(o={column:r,length:n.length})}return o==null?void 0:o.column}var Qr=/amount|balance|total|price|salary|value|due|revenue|cost|fee|sales|outstanding|paid/i;function Jt(e){let A=e.filter(t=>t.type==="number");return A.find(t=>Qr.test(`${t.key} ${t.label}`))??A[0]}var HA=/(>=|=>|>|\bover\b|\babove\b|\bmore than\b|\bgreater than\b|\bexceeds?\b|\bexceeding\b|\bhigher than\b|\bat least\b|\bminimum\b|\bmin\b|కంటే ఎక్కువ)/,Kt=/(<=|=<|<|\bunder\b|\bbelow\b|\bless than\b|\blower than\b|\bat most\b|\bmaximum\b|\bmax\b|\bup to\b|కంటే తక్కువ)/,zi=/\b(after|since|from)\b/,Br=/\b(before|until|till)\b/,Er="(?:\\s*(?:k|thousand|lakhs?|lacs?|crores?|cr|mn|million|m|bn|billion))?",qt=`(?:\u20B9|rs\\.?\\s*|\\$)?\\s*-?\\d[\\d,]*(?:\\.\\d+)?${Er}`;function Fe(e,A,t={}){var k;let i={filters:[],search:[],sort:null,limit:null,notes:[],explanation:""},o=xe(e).replace(/[?!]+/g," ").replace(/\.(?!\d)/g," ").trim(),r=[],n=o.match(/\b(top|first|bottom|last|lowest|highest)\s+(\d+)\b/);n&&(i.limit=Number(n[2]),o=o.replace(n[0],` ${n[1]} `));let a=o.match(/\b(?:sort(?:ed)?|order(?:ed)?)\s+by\s+([\p{L}\p{M}\p{N} _]+?)(?:\s+(asc|ascending|desc|descending))?(?=$|,|\band\b|\bthen\b)/u),s=o.match(/\b(top|highest|largest|biggest|most|bottom|lowest|smallest|least)\b(?:\s+\d+)?\s+(?:by\s+)?([\p{L}\p{M}\p{N} _]+)/u);if(a){let f=de(a[1],A);f&&(i.sort={key:f.key,direction:/^desc/.test(a[2]??"")?"desc":"asc"},o=o.replace(a[0]," "))}else if(s){let f=de(s[2],A,"number")??de(s[2],A)??Jt(A);if(f){let C=/top|highest|largest|biggest|most/.test(s[1]);i.sort={key:f.key,direction:C?"desc":"asc"},o=o.replace(new RegExp(`\\b${s[1]}\\b`)," "),!n&&/top|bottom/.test(s[1])&&(i.limit=10)}}let l=new RegExp(`\\bbetween\\s+(${qt}|\\d{4}-\\d{2}-\\d{2})\\s+(?:and|to|-)\\s+(${qt}|\\d{4}-\\d{2}-\\d{2})`,"u"),I;for(;I=o.match(l);){let f=o.slice(Math.max(0,(I.index??0)-40),I.index??0),C=/\d{4}-\d{2}-\d{2}/.test(I[1]),B=C?de(f,A,"date")??A.find(h=>h.type==="date"):de(f,A,"number")??Jt(A),v=C?I[1]:fA(I[1]),E=C?I[2]:fA(I[2]);B&&v!==null&&E!==null&&(i.filters.push({key:B.key,operator:"between",value:[v,E]}),r.push(`${B.label} between ${I[1]} and ${I[2]}`)),o=o.replace(I[0]," ")}let u=o.split(new RegExp("\\s*(?:(?<!\\d),|,(?!\\d)|;|\\band\\b|(?<!(?:starts?|starting|ends?|ending|begins?|beginning)\\s)\\bwith\\b|\\bwhere\\b|\\bwho\\b|\\bthat\\b|&|\u0C2E\u0C30\u0C3F\u0C2F\u0C41)\\s*","u")).map(f=>f.trim()).filter(Boolean),m=A.filter(f=>(f.type??"text")==="text"),c=new Map;for(let f of m){let C=new Set;for(let B of(t.data??[]).slice(0,5e3)){let v=xe(B[f.key]);if(v&&v.length<=40&&C.add(v),C.size>300)break}C.size&&C.size<=300&&c.set(f.key,C)}for(let f of u){let C=i.filters.length,B=de(f,A),v=f.match(new RegExp(qt,"u")),E=f.match(/\d{4}-\d{2}-\d{2}/);if(E&&(zi.test(f)||Br.test(f)||HA.test(f)||Kt.test(f))){let h=((B==null?void 0:B.type)==="date"?B:void 0)??A.find(p=>p.type==="date");if(h){let p=zi.test(f)||HA.test(f);i.filters.push({key:h.key,operator:p?"greaterThan":"lessThan",value:E[0]}),r.push(`${h.label} ${p?"after":"before"} ${E[0]}`)}}else if(v&&(HA.test(f)||Kt.test(f)||(B==null?void 0:B.type)==="number"&&/\b(is|equals?)\b|=/.test(f))){let h=(B==null?void 0:B.type)==="number"?B:void 0;h||(h=Jt(A),h&&i.notes.push(`Assumed "${f}" refers to ${h.label}.`));let p=fA(v[0]);if(h&&p!==null){let y=/at least|minimum|\bmin\b|>=|=>|at most|maximum|\bmax\b|up to|<=|=</.test(f);HA.test(f)?(i.filters.push({key:h.key,operator:"greaterThan",value:y?p-1e-9:p}),r.push(`${h.label} ${y?"\u2265":">"} ${p.toLocaleString("en-IN")}`)):Kt.test(f)?(i.filters.push({key:h.key,operator:"lessThan",value:y?p+1e-9:p}),r.push(`${h.label} ${y?"\u2264":"<"} ${p.toLocaleString("en-IN")}`)):(i.filters.push({key:h.key,operator:"equals",value:p}),r.push(`${h.label} = ${p.toLocaleString("en-IN")}`))}}else{let h=f.match(/\b(?:starts?|starting|begins?|beginning)\s+with\s+(.+)$/),p=f.match(/\b(?:ends?|ending)\s+with\s+(.+)$/),y=f.match(/\b(?:contains?|containing|including|includes?|mentions?)\s+(.+)$/),D=f.match(/\b(?:is|equals?|=|:)\s+(.+)$/),Q=h??p??y??D;if(Q){let x=B??m[0],G=Q[1].replace(/^["'“‘]|["'”’]$/g,"").trim();if(x&&G){let w=h?"startsWith":p?"endsWith":y?"contains":"equals";i.filters.push({key:x.key,operator:w,value:G}),r.push(`${x.label} ${w==="equals"?"is":w==="contains"?"contains":w==="startsWith"?"starts with":"ends with"} "${G}"`),B||i.notes.push(`Assumed "${f}" refers to ${x.label}.`)}}}if(i.filters.length===C)for(let[h,p]of c){let y="";for(let D of p){if(D.length<2||D.length<=y.length)continue;let Q=D.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");new RegExp(`(^|[^\\p{L}\\p{M}\\p{N}])${Q}($|[^\\p{L}\\p{M}\\p{N}])`,"u").test(f)&&(y=D)}if(y){let D=A.find(Q=>Q.key===h);i.filters.push({key:h,operator:"equals",value:y}),r.push(`${D.label} is "${y}"`)}}if(i.filters.length===C){let h=f.split(/\s+/).filter(y=>!fr.has(y)&&!/^(top|first|bottom|last|lowest|highest|by|desc|asc|sort(ed)?)$/.test(y)),p=h.length>0&&h.every(y=>A.some(D=>Wi(D).includes(y)));if(h.length&&!p&&!(B&&h.length===1)){let y=h.join(" ");/^(customers?|users?|people|items?|entries|poems?|orders?|products?|employees?|students?|members?)$/.test(y)||(i.search.push(y),r.push(`any column contains "${y}"`))}}}if(i.sort){let f=((k=A.find(C=>C.key===i.sort.key))==null?void 0:k.label)??i.sort.key;r.push(`sorted by ${f} ${i.sort.direction==="desc"?"high \u2192 low":"low \u2192 high"}`)}return i.limit&&r.push(`first ${i.limit}`),i.explanation=r.length?`Showing rows where ${r.join(", ")}.`:"No conditions understood \u2014 showing all rows.",i}function br(e,A,t){return t==="number"?(Number(e)||0)-(Number(A)||0):t==="date"?(new Date(String(e)).getTime()||0)-(new Date(String(A)).getTime()||0):String(e??"").localeCompare(String(A??""),void 0,{numeric:!0})}function Se(e,A,t){let i=ve(e,A,t.filters);for(let o of t.search)i=i.filter(r=>A.some(n=>xe(r[n.key]).includes(o)));if(t.sort){let o=A.find(n=>n.key===t.sort.key),r=t.sort.direction==="desc"?-1:1;i=[...i].sort((n,a)=>r*br(n[t.sort.key],a[t.sort.key],o==null?void 0:o.type))}return t.limit&&(i=i.slice(0,t.limit)),i}function Ht(e,A,t={}){var a,s,l;let i=Fe(e,A.columns,{data:A.data}),o=Se(A.data,A.columns,i),r=o.map(I=>ie(I,A.rowKey)).filter(Boolean);t.apply!==!1&&(i.filters.length&&((a=A.onFiltersChange)==null||a.call(A,i.filters)),i.sort&&((s=A.onSortChange)==null||s.call(A,i.sort)),r.length&&((l=A.onHighlightRows)==null||l.call(A,r)));let n=o.length?`${o.length} row(s) found. ${i.explanation}${i.notes.length?` (${i.notes.join(" ")})`:""}`:`No rows match. ${i.explanation}`;return{rows:o,ids:r,parsed:i,message:n}}function Oi(e,A){let t=(e.length-1)*A,i=Math.floor(t),o=t-i;return e[i+1]!==void 0?e[i]+o*(e[i+1]-e[i]):e[i]}function qe(e,A,t={}){let i=t.factor??1.5,o=[],r=A.filter(l=>l.type==="number"&&(!t.columns||t.columns.includes(l.key))),n=l=>l.toLocaleString("en-IN",{maximumFractionDigits:2});for(let l of r){let I=e.map(B=>Number(B[l.key])).filter(B=>Number.isFinite(B));if(I.length<5)continue;let u=[...I].sort((B,v)=>B-v),m=Oi(u,.25),c=Oi(u,.75),k=c-m;if(k===0)continue;let f=m-i*k,C=c+i*k;for(let B of e){let v=Number(B[l.key]);!Number.isFinite(v)||v>=f&&v<=C||o.push({rowId:ie(B,t.rowKey),column:l.key,label:l.label,value:v,kind:v>C?"high":"low",reason:`${l.label} ${n(v)} is far ${v>C?"above":"below"} the typical range (${n(m)}\u2013${n(c)}).`})}}let a=t.rowKey??"id",s=new Map;for(let l of e){let I=JSON.stringify(A.filter(c=>c.key!==a).map(c=>xe(l[c.key]))),u=ie(l,t.rowKey),m=s.get(I);m!==void 0?o.push({rowId:u,column:a,label:"Row",value:u,kind:"duplicate",reason:`Row ${u} has the same values as row ${m}.`}):s.set(I,u)}return o}function He(e,A){if(!e.length)return"No rows to summarise.";let t=[`${e.length} row(s).`],i=o=>o.toLocaleString("en-IN",{maximumFractionDigits:2});for(let o of A){let r=e.map(n=>n[o.key]);if(o.type==="number"){let n=r.map(Number).filter(Number.isFinite);if(!n.length)continue;let a=n.reduce((s,l)=>s+l,0);t.push(`${o.label}: total ${i(a)}, average ${i(a/n.length)}, range ${i(Math.min(...n))}\u2013${i(Math.max(...n))}.`)}else if(o.type==="date"){let n=r.map(s=>new Date(String(s)).getTime()).filter(Number.isFinite);if(!n.length)continue;let a=s=>new Date(s).toISOString().slice(0,10);t.push(`${o.label}: from ${a(Math.min(...n))} to ${a(Math.max(...n))}.`)}else{let n=new Map;for(let s of r){let l=String(s??"").trim();l&&n.set(l,(n.get(l)??0)+1)}if(n.size===0||n.size>Math.max(8,e.length/3))continue;let a=Array.from(n.entries()).sort((s,l)=>l[1]-s[1]).slice(0,4);t.push(`${o.label}: ${a.map(([s,l])=>`${s} (${l})`).join(", ")}.`)}}return t.join(`
@@ -541,4 +541,4 @@ Missing landmarks: ${n.join(", ")}.`:""}`,targets:[],suggestions:n.includes("mai
541
541
  @media (prefers-reduced-motion:reduce){.yv-switch span,.yv-switch span::after{transition:none}}
542
542
  `,document.head.appendChild(t)}var Ro={query:"Grid query",anomalies:"Anomalies",summary:"Summary",insight:"BI insight",tasks:"Task steps"};function mt(e,A,t={}){let i=typeof e=="string"?document.querySelector(e):e;if(!i)throw new Error("mountAgenticGridBar: container not found");if(!A||typeof A.ask!="function")throw new Error("mountAgenticGridBar: pass the object from createAgenticGrid() or grid.agentic");let o=t.title||"Ask about this data",r=X("yv-q"),n=X("yv-qh"),a=g("input",{id:r,class:"yv-input",type:"text",autocomplete:"off",placeholder:t.placeholder||"Ask the grid\u2026 e.g. salary over 1 lakh in Hyderabad","aria-describedby":n}),s=g("button",{type:"submit",class:"yv-btn yv-primary"},q("spark",16),"Ask"),l=g("button",{type:"button",class:"yv-btn"},q("reset",16),"Show all rows"),I=g("p",{class:"yv-muted",style:"margin:10px 0 0",hidden:!0}),u=g("div",{class:"yv-answer",role:"status","aria-live":"polite"}),m=g("div"),c=t.examples||["salary over 1 lakh","anything unusual?","average salary by department","show salary over 80k, then sort by salary, then summarize"],k=g("div",{class:"yv-chips","aria-label":"Example questions"},...c.map(E=>g("button",{type:"button",class:"yv-chip","data-example":E},E))),f=g("form",{class:"yv-row",role:"search","aria-label":o},g("label",{for:r,class:"yv-sr"},o),a,s,l),C=g("section",{class:`yv-box yv-agentic-bar${t.theme?" yv-theme-"+t.theme:""}`,"aria-label":o},g("h3",null,q("spark",16)," ",o),g("p",{id:n,class:"yv-muted",style:"margin:0 0 8px"},t.hint||"Plain-English questions. Understands 10k, 1.5 lakh, 2cr. Every answer says which filters it used."),f,k,I,u,m);i.appendChild(C);function B(E){if(s.disabled=!!E.busy,C.setAttribute("aria-busy",String(!!E.busy)),!E.busy){if(u.textContent=E.answer||"",I.hidden=!E.kind,I.textContent=E.kind?`${Ro[E.kind]||E.kind} \xB7 ${E.visibleIds.length} row(s) shown`:"",m.replaceChildren(),E.table&&E.table.length){let h=Object.keys(E.table[0]),p=g("table",{class:"yv-mini"});p.innerHTML=`<caption class="yv-sr">Answer table</caption><thead><tr>${h.map(y=>`<th scope="col">${ht(y)}</th>`).join("")}</tr></thead><tbody>${E.table.map(y=>`<tr>${h.map(D=>`<td>${ht(y[D])}</td>`).join("")}</tr>`).join("")}</tbody>`,m.append(g("div",{style:"overflow-x:auto"},p))}E.steps&&E.steps.length&&m.append(g("ol",{class:"yv-steps","aria-label":"Steps"},...E.steps.map(h=>g("li",null,g("span",{class:h.success===!1?"yv-fail":"yv-ok"},h.success===!1?"\u2717 ":"\u2713 "),g("b",null,h.action),": ",h.message||h.text))))}}let v=A.subscribe(B);return f.addEventListener("submit",E=>{E.preventDefault(),A.ask(a.value)}),l.addEventListener("click",()=>{a.value="",A.reset()}),k.addEventListener("click",E=>{let h=E.target.closest("[data-example]");h&&(a.value=h.getAttribute("data-example"),A.ask(a.value))}),{element:C,ask:E=>(a.value=E,A.ask(E)),destroy(){v(),C.remove()}}}var To={en:{search:"Search\u2026",searchAria:"Search grid",rows:"rows",selected:"selected",loading:"Loading\u2026",noData:"No data found.",selectRow:e=>`Select row ${e}`,selectPage:"Select all rows on this page",pageSize:"Rows per page",page:(e,A)=>`Page ${e} of ${A}`,showing:(e,A,t)=>t?`Showing ${e}\u2013${A} of ${t}`:"No rows",first:"First page",previous:"Previous page",next:"Next page",last:"Last page",yes:"Yes",no:"No",sortedAsc:e=>`Sorted by ${e}, ascending`,sortedDesc:e=>`Sorted by ${e}, descending`,sortCleared:"Sorting cleared",filters:e=>`${e} filter(s) applied`,clearFilters:"Clear filters",removeFilter:e=>`Remove filter: ${e}`,export:"Export CSV",tableView:"Table view",cardView:"Card view",highlighted:"highlighted",results:e=>`${e} result(s)`,ops:{contains:"contains",equals:"is",startsWith:"starts with",endsWith:"ends with",greaterThan:">",lessThan:"<",between:"between"}},te:{search:"\u0C36\u0C4B\u0C27\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F\u2026",searchAria:"\u0C17\u0C4D\u0C30\u0C3F\u0C21\u0C4D\u200C\u0C32\u0C4B \u0C36\u0C4B\u0C27\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F",rows:"\u0C35\u0C30\u0C41\u0C38\u0C32\u0C41",selected:"\u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C41\u0C28\u0C4D\u0C28\u0C35\u0C3F",loading:"\u0C32\u0C4B\u0C21\u0C4D \u0C05\u0C35\u0C41\u0C24\u0C4B\u0C02\u0C26\u0C3F\u2026",noData:"\u0C21\u0C47\u0C1F\u0C3E \u0C15\u0C28\u0C2C\u0C21\u0C32\u0C47\u0C26\u0C41.",selectRow:e=>`\u0C35\u0C30\u0C41\u0C38 ${e} \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F`,selectPage:"\u0C08 \u0C2A\u0C47\u0C1C\u0C40\u0C32\u0C4B\u0C28\u0C3F \u0C05\u0C28\u0C4D\u0C28\u0C3F \u0C35\u0C30\u0C41\u0C38\u0C32\u0C41 \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F",pageSize:"\u0C2A\u0C47\u0C1C\u0C40 \u0C2A\u0C30\u0C3F\u0C2E\u0C3E\u0C23\u0C02",page:(e,A)=>`\u0C2A\u0C47\u0C1C\u0C40 ${e} / ${A}`,showing:(e,A,t)=>t?`${t} \u0C32\u0C4B ${e}\u2013${A}`:"\u0C35\u0C30\u0C41\u0C38\u0C32\u0C41 \u0C32\u0C47\u0C35\u0C41",first:"\u0C2E\u0C4A\u0C26\u0C1F\u0C3F \u0C2A\u0C47\u0C1C\u0C40",previous:"\u0C35\u0C46\u0C28\u0C41\u0C15\u0C15\u0C41",next:"\u0C2E\u0C41\u0C02\u0C26\u0C41\u0C15\u0C41",last:"\u0C1A\u0C3F\u0C35\u0C30\u0C3F \u0C2A\u0C47\u0C1C\u0C40",yes:"\u0C05\u0C35\u0C41\u0C28\u0C41",no:"\u0C15\u0C3E\u0C26\u0C41",sortedAsc:e=>`${e} \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C06\u0C30\u0C4B\u0C39\u0C23 \u0C15\u0C4D\u0C30\u0C2E\u0C02`,sortedDesc:e=>`${e} \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C05\u0C35\u0C30\u0C4B\u0C39\u0C23 \u0C15\u0C4D\u0C30\u0C2E\u0C02`,sortCleared:"\u0C15\u0C4D\u0C30\u0C2E\u0C02 \u0C24\u0C40\u0C38\u0C47\u0C36\u0C3E\u0C30\u0C41",filters:e=>`${e} \u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D(\u0C32\u0C41) \u0C35\u0C47\u0C36\u0C3E\u0C30\u0C41`,clearFilters:"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C02\u0C21\u0C3F",removeFilter:e=>`\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C02\u0C21\u0C3F: ${e}`,export:"CSV \u0C21\u0C4C\u0C28\u0C4D\u200C\u0C32\u0C4B\u0C21\u0C4D",tableView:"\u0C2A\u0C1F\u0C4D\u0C1F\u0C3F\u0C15",cardView:"\u0C15\u0C3E\u0C30\u0C4D\u0C21\u0C41\u0C32\u0C41",highlighted:"\u0C39\u0C48\u0C32\u0C48\u0C1F\u0C4D",results:e=>`${e} \u0C2B\u0C32\u0C3F\u0C24\u0C3E\u0C32\u0C41`,ops:{contains:"\u0C32\u0C4B \u0C09\u0C02\u0C26\u0C3F",equals:"=",startsWith:"\u0C24\u0C4B \u0C2E\u0C4A\u0C26\u0C32\u0C41",endsWith:"\u0C24\u0C4B \u0C2E\u0C41\u0C17\u0C3F\u0C02\u0C2A\u0C41",greaterThan:">",lessThan:"<",between:"\u0C2E\u0C27\u0C4D\u0C2F"}}},Vn=["default","high-contrast","dark","color-blind","dyslexia"],MA=e=>String(e??"").normalize("NFC").toLowerCase();function Xn(e,A){return(Array.isArray(e)&&e.length?e:A[0]?Object.keys(A[0]).map(i=>({key:i,label:i})):[]).map(i=>({key:String(i.key),label:i.label==null?String(i.key):String(i.label),sortable:i.sortable!==!1,type:i.type||"text",align:i.align||(i.type==="number"?"right":"left"),render:typeof i.render=="function"?i.render:null,hiddenOnMobile:!!i.hiddenOnMobile,width:i.width}))}function jn(e,A,t,i){let o=typeof e=="string"?document.querySelector(e):e;if(!o||typeof o.appendChild!="function")throw new Error("renderGrid: container not found. Pass an element or a CSS selector.");let r=Array.isArray(A)?{...i||{},data:A,columns:t}:{...A||{}},n=r.locale||"en-IN",a=String(n).split("-")[0],s=To[a==="te"?"te":"en"],l=a==="te"?"te":"en",I=a==="en"||a==="te"?"en-IN":n,u=r.rowKey||"id",m=r.label||r.ariaLabel||"Data grid",c=r.pagination===!1?!1:typeof r.pagination=="object"?r.pagination:{},k=c&&c.sizeOptions||[10,20,50,100],f=r.selectable!==!1,C=r.autoScrollToHighlight!==!1,B=Number(r.mobileBreakpoint)||640,v=Array.isArray(r.data)?r.data.slice():[],E=Xn(r.columns,v),h=Ne(E),p=[],y=null,D="",Q=1,x=Number(c&&c.pageSize||r.pageSize)||10,G=Vn.includes(r.theme)?r.theme:"default",w=["table","card","auto"].includes(r.view)?r.view:"auto",M=!!r.loading,L=!1,F={r:1,c:0},R=new Set((r.selectedKeys||[]).map(String)),H=new Set((r.highlightIds||[]).map(String)),Ie={grid:X("yv-grid"),title:X("yv-title"),status:X("yv-status")};k.includes(x)||k.push(x),k.sort((d,b)=>d-b);let O=d=>ie(d,u)||String(v.indexOf(d)),_=d=>{let b=E.find(S=>S.type==="text")||E[0];return b?String(d[b.key]??O(d)):O(d)},ee=g("section",{class:`yv-grid yv-theme-${G}${r.wrap?" yv-wrap":""}${r.className?" "+r.className:""}`,role:"region","aria-labelledby":Ie.title,lang:r.lang||(a!=="en"?n:null)});r.maxHeight&&ee.style.setProperty("--yv-max-height",typeof r.maxHeight=="number"?`${r.maxHeight}px`:r.maxHeight);let NA=g("h3",{id:Ie.title,class:r.showTitle?"yv-grid-title":"yv-sr"},m);r.showTitle&&(NA.style.cssText="margin:0;padding:12px 12px 0;font-size:1.05em");let be=g("input",{type:"search",placeholder:s.search,"aria-label":s.searchAria,"aria-controls":Ie.grid,autocomplete:"off",spellcheck:"false"}),Qt=r.search===!1?null:g("label",{class:"yv-search"},q("search",18),be),Si=g("span",{class:"yv-info","aria-hidden":"true"}),IA=g("button",{type:"button",class:"yv-btn yv-icon","data-view-toggle":""}),Gi=r.exportable===!1?null:g("button",{type:"button",class:"yv-btn"},q("download",16),s.export),Ar=g("div",{class:"yv-tools"},w==="auto"||r.viewToggle?IA:null,Gi),tr=g("div",{class:"yv-toolbar"},Qt,Si,Ar),Ge=g("div",{class:"yv-filterbar",hidden:!0,"aria-label":s.filters(0)}),Bt=g("div",{class:"yv-slot"}),ae=g("div",{class:"yv-body",id:Ie.grid}),FA=g("div",{class:"yv-pager"}),Et=g("p",{class:"yv-sr",id:Ie.status,role:"status","aria-live":"polite","aria-atomic":"true"});ee.append(NA,tr,Ge,Bt,ae,FA,Et),o.appendChild(ee);let bt=null,RA=d=>{clearTimeout(bt),Et.textContent="",bt=setTimeout(()=>Et.textContent=d,40)},TA=r.engine==="rust"||r.engine==="auto"?r.engine:"ts",ye=null,LA=null,YA={data:null,columns:null,ready:!1};function Ni(){return ye||LA||!vA(TA,v.length)?LA||Promise.resolve(ye?"rust":"ts"):(LA=an().then(d=>(ye=d?_A.create(d):null,ye&&ee.isConnected&&V(),ye?"rust":"ts")),LA)}function ir(d){if(!ye||!vA(TA,v.length))return null;if(YA.data!==v||YA.columns!==E){let S=v.map(N=>E.map(T=>MA(N[T.key])+et+MA(We(T,N[T.key]))).join(et));YA={data:v,columns:E,ready:ye.setSearchTexts(S)}}if(!YA.ready)return null;let b=ye.search(d);return b?ti(v,b):null}function nr(d,b,S){if(!ye||!vA(TA,v.length)||b.type!=="number"&&b.type!=="date")return null;let N=new Float64Array(d.length),T=1/0,Y=-1/0;for(let $=0;$<d.length;$++){let P=d[$][b.key];if(P==null||P===""){N[$]=NaN;continue}let W=b.type==="number"?Number(P):new Date(P).getTime();if(!Number.isFinite(W))return null;N[$]=W,W<T&&(T=W),W>Y&&(Y=W)}if(T===1/0||!Number.isFinite(Y-T))return null;let J=ye.sortByKeys(N,S==="desc");return J?ti(d,J):null}function rr(d,b,S,N){let T=d[S.key],Y=b[S.key];if(T==null||T==="")return Y==null||Y===""?0:1;if(Y==null||Y==="")return-1;let J;return S.type==="number"?J=Number(T)-Number(Y):S.type==="date"?J=new Date(T).getTime()-new Date(Y).getTime():J=String(T).localeCompare(String(Y),n,{numeric:!0,sensitivity:"base"}),Number.isFinite(J)||(J=String(T).localeCompare(String(Y))),N==="desc"?-J:J}let De=null,wt=null;function Ue(){Ni();let d=performance.now(),b=null,S=null,N,T=D?MA(D):"",Y=T?ir(T):null;Y?(b="rust",N=ve(Y,h,p)):(N=ve(v,h,p),T&&(b="ts",N=N.filter($=>E.some(P=>MA($[P.key]).includes(T)||MA(We(P,$[P.key])).includes(T)))));let J=N.length;if(y&&y.key){let $=E.find(P=>P.key===y.key);if($){let P=nr(N,$,y.direction);S=P?"rust":"ts",N=P||N.slice().sort((W,K)=>rr(W,K,$,y.direction))}}return De=b||S?{query:T?D:"",ms:performance.now()-d,rows:J,engine:b==="rust"||S==="rust"?"rust":"ts"}:null,N}let vt=null,xt=null;function We(d,b){if(b==null||b==="")return"";if(d.type==="number"&&Number.isFinite(Number(b)))return vt=vt||new Intl.NumberFormat(I),vt.format(Number(b));if(d.type==="date"){let S=new Date(b);return Number.isNaN(S.getTime())?String(b):(xt=xt||new Intl.DateTimeFormat(I,{year:"numeric",month:"short",day:"numeric"}),xt.format(S))}return d.type==="boolean"?b===!0||b==="true"?s.yes:s.no:String(b)}function Fi(d,b,S){let N=b[d.key];if(d.render)try{let T=d.render(N,b,S);return T instanceof Node?T:document.createTextNode(T==null?"":String(T))}catch(T){return console.error("[yuktai] column render failed",d.key,T),document.createTextNode(We(d,N))}return d.type==="badge"&&N!=null&&N!==""?g("span",{class:"yv-cellbadge"},String(N)):document.createTextNode(We(d,N))}let dA=()=>w==="card"||w==="auto"&&L;function Ve(d){if(c===!1)return{pages:1,start:0,end:d};let b=Math.max(1,Math.ceil(d/x));return Q=Math.min(Math.max(1,Q),b),{pages:b,start:(Q-1)*x,end:Math.min(d,Q*x)}}let me=[];function V(){let d=Ue();me=d;let{pages:b,start:S,end:N}=Ve(d.length),T=d.slice(S,N);ee.className=`yv-grid yv-theme-${G}${r.wrap?" yv-wrap":""}${r.className?" "+r.className:""}`,ee.setAttribute("aria-busy",String(M)),Si.textContent=`${d.length.toLocaleString(I)} ${s.rows}${f?` \xB7 ${R.size.toLocaleString(I)} ${s.selected}`:""}${r.showSearchTime&&De?` \xB7 ${sn(De.ms)} \xB7 ${De.engine==="rust"?"Rust":"TS"}`:""}`;let Y=De?[D,y&&y.key,y&&y.direction,p,v]:null,J=!Y||!wt||Y.some((P,W)=>P!==wt[W]);De&&J&&typeof r.onSearchTime=="function"&&r.onSearchTime({...De}),wt=Y,IA.innerHTML=ce(dA()?"grid":"cards",18),IA.setAttribute("aria-label",dA()?s.tableView:s.cardView),IA.title=dA()?s.tableView:s.cardView,sr();let $=ae.contains(document.activeElement);ae.replaceChildren(M?g("div",{class:"yv-loading",role:"status"},s.loading):dA()?ar(T,S):or(T,S,d.length)),$&&!M&&Ti(),gr(d.length,b,S,N)}function or(d,b,S){let N=E,T=N.length+(f?1:0),Y=g("table",{class:"yv-table",role:"grid","aria-labelledby":Ie.title,"aria-rowcount":S+1,"aria-colcount":T,"aria-multiselectable":f?"true":null}),J=g("tr",{role:"row","aria-rowindex":1});if(f){let K=d.length>0&&d.every(Qe=>R.has(O(Qe))),fe=d.some(Qe=>R.has(O(Qe))),Ae=g("input",{type:"checkbox","data-select-page":"","aria-label":s.selectPage,tabindex:-1});Ae.checked=K,Ae.indeterminate=!K&&fe,J.append(g("th",{role:"columnheader",scope:"col","aria-colindex":1,tabindex:-1,"data-col":0},g("label",{class:"yv-check"},Ae)))}N.forEach((K,fe)=>{let Ae=fe+(f?1:0),Qe=y&&y.key===K.key?y.direction:null,Je=g("th",{role:"columnheader",scope:"col","aria-colindex":Ae+1,"aria-sort":K.sortable?Qe==="asc"?"ascending":Qe==="desc"?"descending":"none":null,class:K.align!=="left"?`yv-align-${K.align}`:null,tabindex:-1,"data-col":Ae});if(K.width&&(Je.style.width=typeof K.width=="number"?`${K.width}px`:K.width),K.sortable){let _e=g("button",{type:"button",class:"yv-sortbtn","data-sort":K.key,tabindex:-1},K.label);_e.insertAdjacentHTML("beforeend",ce(Qe==="asc"?"sortUp":Qe==="desc"?"sortDown":"sort",14)),Je.append(_e)}else Je.append(K.label);J.append(Je)});let $=g("tbody");if(!d.length){let K=r.empty instanceof Node?r.empty.cloneNode(!0):document.createTextNode(r.empty?String(r.empty):s.noData);$.append(g("tr",{role:"row","aria-rowindex":2},g("td",{role:"gridcell",class:"yv-empty",colspan:T,tabindex:-1,"data-col":0},K)))}d.forEach((K,fe)=>{let Ae=O(K),Qe=R.has(Ae),Je=H.has(Ae),_e=g("tr",{role:"row","aria-rowindex":b+fe+2,"aria-selected":f?String(Qe):null,"data-yuktai-row-id":Ae,class:Je?"yv-hl":null});if(f){let eA=g("input",{type:"checkbox","data-select":Ae,"aria-label":s.selectRow(_(K)),tabindex:-1});eA.checked=Qe,_e.append(g("td",{role:"gridcell","aria-colindex":1,tabindex:-1,"data-col":0},g("label",{class:"yv-check"},eA)))}N.forEach((eA,Yi)=>{let Ui=Yi+(f?1:0),Mt=g("td",{role:"gridcell","aria-colindex":Ui+1,tabindex:-1,"data-col":Ui,class:eA.align!=="left"?`yv-align-${eA.align}`:null});Mt.append(Fi(eA,K,b+fe)),Yi===0&&Je&&Mt.append(g("span",{class:"yv-sr"},` (${s.highlighted})`)),_e.append(Mt)}),$.append(_e)}),Y.append(g("thead",null,J),$);let P=Y.querySelectorAll("tr");F.r=Math.min(F.r,P.length-1);let W=Ri(Y,F.r,F.c)||Ri(Y,0,0);return W&&W.setAttribute("tabindex","0"),g("div",{class:"yv-tablewrap"},Y)}function ar(d,b){if(!d.length){let N=r.empty instanceof Node?r.empty.cloneNode(!0):document.createTextNode(r.empty?String(r.empty):s.noData);return g("div",{class:"yv-empty",role:"status"},N)}let S=g("ul",{class:"yv-cards","aria-labelledby":Ie.title});return d.forEach((N,T)=>{let Y=O(N),J=R.has(Y),$=H.has(Y),P=X("yv-card"),W=g("li",{class:`yv-card${$?" yv-hl":""}`,"data-yuktai-row-id":Y,"aria-labelledby":P,"aria-selected":f?String(J):null,tabindex:-1}),K=g("div",{class:"yv-card-head"},g("p",{class:"yv-card-title",id:P},_(N),$?g("span",{class:"yv-sr"},` (${s.highlighted})`):null));if(f){let Ae=g("input",{type:"checkbox","data-select":Y,"aria-label":s.selectRow(_(N))});Ae.checked=J,K.append(g("label",{class:"yv-check"},Ae))}let fe=g("dl");E.forEach(Ae=>{Ae.hiddenOnMobile||fe.append(g("dt",null,Ae.label),g("dd",null,Fi(Ae,N,b+T)))}),W.append(K,fe),typeof r.onRowClick=="function"&&W.append(g("button",{type:"button",class:"yv-btn yv-small","data-open":Y,style:"margin-top:8px"},r.openLabel||(a==="te"?"\u0C24\u0C46\u0C30\u0C41\u0C35\u0C41":"Open"))),S.append(W)}),S}function sr(){if(Ge.replaceChildren(),!p.length){Ge.hidden=!0;return}Ge.hidden=!1,Ge.setAttribute("aria-label",s.filters(p.length)),Ge.append(g("span",{class:"yv-muted"},q("filter",15)," ",s.filters(p.length))),p.forEach((d,b)=>{let S=E.find(J=>J.key===d.key),N=Array.isArray(d.value)?d.value.map(J=>We(S||{},J)).join(" \u2013 "):S?We(S,d.value):String(d.value),T=`${S?S.label:d.key} ${s.ops[d.operator]||d.operator} ${N}`,Y=g("button",{type:"button",class:"yv-chip","data-remove-filter":b,"aria-label":s.removeFilter(T)},T,q("close",14));Ge.append(Y)}),Ge.append(g("button",{type:"button",class:"yv-btn yv-small","data-clear-filters":""},s.clearFilters))}function gr(d,b,S,N){if(FA.replaceChildren(),c===!1){FA.append(g("span",{class:"yv-muted"},s.results(d.toLocaleString(I))));return}let T=P=>P.toLocaleString(I),Y=g("span",{class:"yv-muted"},d?s.showing(T(S+1),T(N),T(d)):s.showing(0,0,0)),J=g("div",{class:"yv-pages"});if(c.showSizeChanger!==!1){let P=X("yv-size"),W=g("select",{id:P,"data-page-size":""},...k.map(K=>g("option",{value:K,selected:K===x},String(K))));J.append(g("label",{for:P,class:"yv-muted"},s.pageSize),W)}let $=(P,W,K,fe)=>{let Ae=g("button",{type:"button",class:"yv-btn yv-icon","aria-label":W,title:W,disabled:K,"data-page":fe});return Ae.innerHTML=ce(P,18),Ae};J.append($("first",s.first,Q<=1,"first"),$("left",s.previous,Q<=1,"prev"),g("span",{class:"yv-muted","aria-current":"page"},s.page(T(Q),T(b))),$("right",s.next,Q>=b,"next"),$("last",s.last,Q>=b,"last")),FA.append(Y,J)}function Ri(d,b,S){let N=d.querySelectorAll("tr")[b];if(!N)return null;let T=N.querySelectorAll("th,td");return T[Math.min(S,T.length-1)]||null}function Me(d,b){let S=ae.querySelector("table");if(!S)return;let N=S.querySelectorAll("tr");d=Math.max(0,Math.min(d,N.length-1));let T=N[d].querySelectorAll("th,td");b=Math.max(0,Math.min(b,T.length-1)),S.querySelectorAll('[tabindex="0"]').forEach(J=>J.setAttribute("tabindex","-1"));let Y=T[b];Y.setAttribute("tabindex","0"),F={r:d,c:b},Y.focus()}function Ti(){if(ae.querySelector("table"))Me(F.r,F.c);else{let b=ae.querySelector(".yv-card");b&&b.focus()}}function lr(d){let b=ae.querySelector("table"),S=d.target.closest&&d.target.closest("th,td");if(!b||!S||!b.contains(S))return;let N=S.parentElement,T=Array.prototype.indexOf.call(b.querySelectorAll("tr"),N),Y=Array.prototype.indexOf.call(N.querySelectorAll("th,td"),S),J=b.querySelectorAll("tr").length-1,$=!0;switch(d.key){case"ArrowRight":Me(T,Y+1);break;case"ArrowLeft":Me(T,Y-1);break;case"ArrowDown":Me(T+1,Y);break;case"ArrowUp":Me(T-1,Y);break;case"Home":d.ctrlKey?Me(0,0):Me(T,0);break;case"End":d.ctrlKey?Me(J,999):Me(T,999);break;case"PageDown":c!==!1&&(F={r:Math.max(1,T),c:Y},je(Q+1,!0));break;case"PageUp":c!==!1&&(F={r:Math.max(1,T),c:Y},je(Q-1,!0));break;case"Enter":case" ":{let P=S.querySelector("[data-sort]"),W=S.querySelector("input[type=checkbox]");P?Li(P.getAttribute("data-sort")):W?W.click():d.key==="Enter"&&N.hasAttribute("data-yuktai-row-id")&&typeof r.onRowClick=="function"?uA(N.getAttribute("data-yuktai-row-id")):d.key===" "&&f&&N.hasAttribute("data-yuktai-row-id")?cr(N.getAttribute("data-yuktai-row-id")):$=!1;break}default:$=!1}$&&(d.preventDefault(),d.stopPropagation())}function Li(d){let b=E.find(N=>N.key===d);if(!b||!b.sortable)return;!y||y.key!==d?y={key:d,direction:"asc"}:y.direction==="asc"?y={key:d,direction:"desc"}:y=null,Q=1,ae.querySelector("table")&&ae.contains(document.activeElement)&&(F={r:0,c:F.c}),V(),RA(y?y.direction==="asc"?s.sortedAsc(b.label):s.sortedDesc(b.label):s.sortCleared),r.onSortChange&&r.onSortChange(y?{key:y.key,direction:y.direction}:null)}function Xe(){r.onSelectionChange&&r.onSelectionChange(Array.from(R)),ee.dispatchEvent(new CustomEvent("yuktai:selection",{detail:{keys:Array.from(R)},bubbles:!0}))}function cr(d,b){(b===void 0?!R.has(d):b)?R.add(d):R.delete(d),V(),Xe()}function je(d,b){let{pages:S}=Ve(me.length),N=Math.min(Math.max(1,d),S);N===Q&&!b||(Q=N,V(),RA(s.page(Q,S)),b&&ae.querySelector("table")&&Ti())}function uA(d){let b=v.find(S=>O(S)===String(d));return b?(typeof r.onRowClick=="function"&&r.onRowClick(b,v.indexOf(b)),typeof r.onOpenRow=="function"&&r.onOpenRow(String(d)),!0):!1}function CA(d,b=C){if(H.clear(),(d||[]).forEach(S=>H.add(typeof S=="object"&&S!==null?O(S):String(S))),b&&H.size){let S=me.length?me.findIndex(N=>H.has(O(N))):Ue().findIndex(N=>H.has(O(N)));S>=0&&c!==!1&&(Q=Math.floor(S/x)+1)}if(V(),b&&H.size){let S=ae.querySelector(".yv-hl");S&&S.scrollIntoView&&S.scrollIntoView({block:"nearest",behavior:wi()?"auto":"smooth"})}}let kt=null;be.addEventListener("input",()=>{clearTimeout(kt),kt=setTimeout(()=>{D=be.value.trim(),Q=1,V(),RA(s.results(me.length.toLocaleString(I)))},160)}),ee.addEventListener("click",d=>{let b=d.target.closest("button, input, tr[data-yuktai-row-id]");if(!(!b||!ee.contains(b))){if(b.matches("[data-sort]"))return Li(b.getAttribute("data-sort"));if(b.matches("[data-page]")){let S=b.getAttribute("data-page"),{pages:N}=Ve(me.length);return je(S==="first"?1:S==="prev"?Q-1:S==="next"?Q+1:N)}if(b.matches("[data-remove-filter]")){p=p.filter((S,N)=>N!==Number(b.getAttribute("data-remove-filter"))),Q=1,V(),r.onFiltersChange&&r.onFiltersChange(p.slice());return}if(b.matches("[data-clear-filters]"))return j.clearFilters();if(b.matches("[data-open]"))return uA(b.getAttribute("data-open"));if(b===IA){w=dA()?"table":"card",V();return}if(b===Gi)return j.exportCSV();b.matches("tr[data-yuktai-row-id]")&&typeof r.onRowClick=="function"&&!d.target.closest("label,input,button,a")&&uA(b.getAttribute("data-yuktai-row-id"))}}),ee.addEventListener("change",d=>{let b=d.target;if(b.matches("[data-select]"))b.checked?R.add(b.getAttribute("data-select")):R.delete(b.getAttribute("data-select")),V(),Xe();else if(b.matches("[data-select-page]")){let{start:S,end:N}=Ve(me.length);me.slice(S,N).forEach(T=>b.checked?R.add(O(T)):R.delete(O(T))),V(),Xe()}else b.matches("[data-page-size]")&&(x=Number(b.value)||x,Q=1,V(),ae.closest(".yv-grid").querySelector("[data-page-size]").focus())}),ae.addEventListener("keydown",lr),ae.addEventListener("focusin",d=>{let b=ae.querySelector("table"),S=d.target.closest&&d.target.closest("th,td");if(!b||!S)return;let N=S.parentElement,T=Array.prototype.indexOf.call(b.querySelectorAll("tr"),N),Y=Array.prototype.indexOf.call(N.querySelectorAll("th,td"),S);T<0||Y<0||(b.querySelectorAll('[tabindex="0"]').forEach(J=>J!==S&&J.setAttribute("tabindex","-1")),S.setAttribute("tabindex","0"),F={r:T,c:Y})});let UA=null;typeof ResizeObserver=="function"&&(UA=new ResizeObserver(d=>{let b=d[0]&&d[0].contentRect.width,S=b>0&&b<B;S!==L&&(L=S,w==="auto"&&V())}),UA.observe(ee));let we={get data(){return v},get columns(){return h},rowKey:u,locale:l,get filters(){return p},onHighlightRows:d=>CA(d),onSelectRow:d=>{R.add(String(d)),CA([String(d)]),Xe()},onOpenRow:typeof r.onRowClick=="function"||typeof r.onOpenRow=="function"?d=>uA(d):void 0,onFiltersChange:d=>{p=d.slice(),Q=1,V(),r.onFiltersChange&&r.onFiltersChange(p.slice())},onSortChange:d=>{y=d?{key:d.key,direction:d.direction==="desc"?"desc":"asc"}:null,Q=1,V(),r.onSortChange&&r.onSortChange(y)}},JA=tA(we,{name:r.toolName||"yuktai_grid",descriptions:r.toolDescriptions}),hA=dt({tools:()=>JA,data:()=>v,columns:()=>h.map(d=>({key:d.key,label:d.label})),rowKey:u,locale:l,customRules:r.customRules||[],parseIntent:r.parseIntent,historyLimit:r.historyLimit||20,onResult:d=>{r.onAgentResult&&r.onAgentResult({success:d.success,message:d.message,tool:d.tool})},onError:r.onAgentError}),KA={status:{state:"unsupported",registered:[],errors:[]},unregister(){}};r.webmcp&&(KA=ut(()=>JA,{onStatusChange:d=>{r.onWebMCPStatusChange&&r.onWebMCPStatusChange(d),ee.dispatchEvent(new CustomEvent("yuktai:webmcp",{detail:d,bubbles:!0}))}}));let Ze=Ct({data:v,columns:h,rowKey:u,referenceDate:r.referenceDate,onOpenRow:we.onOpenRow,bind:{getData:()=>v,getFilters:()=>p,getSort:()=>y,getHighlightIds:()=>Array.from(H),setFilters:d=>we.onFiltersChange(d),setSort:d=>we.onSortChange(d),setHighlightIds:d=>CA(d),selectRow:d=>we.onSelectRow(d)}}),pA=null;r.ai&&(pA=xi(Bt,hA,{locale:l,inputLanguage:r.inputLanguage||(l==="te"?"te-IN":"en-IN"),examples:r.assistantExamples,webmcp:()=>KA.status,showWebMCP:!!r.webmcp}),r.webmcp&&ee.addEventListener("yuktai:webmcp",()=>pA&&pA.refreshStatus()));let Dt=null;if(r.agentic){let d=typeof r.agentic=="object"?r.agentic:{};Dt=mt(Bt,Ze,d)}let j={element:ee,host:ee,get tools(){return JA},agent:hA,agentic:Ze,get webmcpStatus(){return KA.status},refresh(d){return Array.isArray(d)&&(v=d.slice(),R.clear(),H.clear(),Q=1),V(),j},setData(d,b){return Array.isArray(b)&&(E=Xn(b,d||v),h=Ne(E),JA=tA(we,{name:r.toolName||"yuktai_grid",descriptions:r.toolDescriptions})),j.refresh(d)},getData:()=>v.slice(),getRows:()=>Ue(),getPageRows(){let d=Ue(),{start:b,end:S}=Ve(d.length);return d.slice(b,S)},getSelectedRows:()=>v.filter(d=>R.has(O(d))),getSelectedKeys:()=>Array.from(R),select(d,b=!0){return[].concat(d).forEach(S=>b?R.add(String(S)):R.delete(String(S))),V(),Xe(),j},clearSelection(){return R.clear(),V(),Xe(),j},search(d){return D=String(d||"").trim(),be.value=D,Q=1,V(),me.length},setFilters(d){return we.onFiltersChange(Array.isArray(d)?d:[]),j},addFilter(d){return hA.executeTool("filter",d)},getFilters:()=>p.slice(),clearFilters(){return we.onFiltersChange([]),RA(a==="te"?"\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C36\u0C3E\u0C30\u0C41":"Filters cleared"),j},sortBy(d,b="asc"){return we.onSortChange(d?{key:d,direction:b}:null),j},clearSort(){return we.onSortChange(null),j},getSort:()=>y?{...y}:null,get engine(){return ye&&vA(TA,v.length)?"rust":"ts"},getSearchTime:()=>De?{...De}:null,whenEngineReady:()=>Ni().then(()=>j.engine),highlight(d,b){return CA(d,b===void 0?C:b),j},clearHighlight(){return CA([],!1),j},getHighlightIds:()=>Array.from(H),goToPage(d){return je(Number(d)||1),j},nextPage(){return je(Q+1),j},prevPage(){return je(Q-1),j},getPage:()=>({page:Q,pageSize:x,pages:Ve(me.length).pages,total:me.length}),setPageSize(d){return x=Number(d)||x,k.includes(x)||(k.push(x),k.sort((b,S)=>b-S)),Q=1,V(),j},setTheme(d){return G=Vn.includes(d)?d:"default",V(),j},getTheme:()=>G,setView(d){return w=["table","card","auto"].includes(d)?d:"auto",V(),j},setLoading(d){return M=!!d,V(),j},openRow:d=>uA(d),async ask(d){return(await Ze.ask(d)).answer},askDetailed:d=>Ze.ask(d),assistantAsk:d=>hA.ask(d),executeTool:(d,b)=>hA.executeTool(d,b),biSummary:()=>He(Ue(),h),anomalies:()=>qe(Ue(),h,{rowKey:u}),async runTasks(d){return(await Ze.ask(d)).answer},reset(){return Ze.reset(),D="",be.value="",V(),j},exportCSV(d=r.exportFileName||"yuktai-grid-export.csv"){let b=R.size?v.filter(N=>R.has(O(N))):Ue(),S="\uFEFF"+[E.map(N=>vi(N.label)).join(","),...b.map(N=>E.map(T=>vi(N[T.key])).join(","))].join(`\r
543
543
  `);return DA(d,S,"text/csv;charset=utf-8"),oe(`${b.length} row(s) exported`),b.length},destroy(){clearTimeout(kt),clearTimeout(bt),UA&&UA.disconnect(),KA.unregister(),pA&&pA.destroy(),Dt&&Dt.destroy(),ee.remove()}};return typeof r.onReady=="function"&&r.onReady(j),V(),j}var Lo={en:{title:"Ask the grid",hint:"Type or speak: a word to search, \u201Csort by <column>\u201D, \u201Chow many\u201D, \u201Cclear filters\u201D, \u201Copen <name>\u201D.",placeholder:"Ask the grid\u2026",ask:"Ask",listen:"Speak",stop:"Stop",listening:"Listening\u2026",noVoice:"Voice input is not available in this browser. Type your question instead.",history:"History",clear:"Clear history",webmcp:{unsupported:"WebMCP: not available in this browser (no document.modelContext).",registering:"WebMCP: registering tools\u2026",ready:"WebMCP: tools ready",partial:"WebMCP: some tools failed",error:"WebMCP: registration failed"}},te:{title:"\u0C17\u0C4D\u0C30\u0C3F\u0C21\u0C4D\u200C\u0C28\u0C41 \u0C05\u0C21\u0C17\u0C02\u0C21\u0C3F",hint:"\u0C1F\u0C48\u0C2A\u0C4D \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F \u0C32\u0C47\u0C26\u0C3E \u0C2E\u0C3E\u0C1F\u0C4D\u0C32\u0C3E\u0C21\u0C02\u0C21\u0C3F: \u0C35\u0C46\u0C24\u0C15\u0C3E\u0C32\u0C4D\u0C38\u0C3F\u0C28 \u0C2A\u0C26\u0C02, \u201C<\u0C15\u0C3E\u0C32\u0C2E\u0C4D> \u0C2A\u0C4D\u0C30\u0C15\u0C3E\u0C30\u0C02 \u0C15\u0C4D\u0C30\u0C2E\u0C02\u201D, \u201C\u0C0E\u0C28\u0C4D\u0C28\u0C3F\u201D, \u201C\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F\u201D.",placeholder:"\u0C17\u0C4D\u0C30\u0C3F\u0C21\u0C4D\u200C\u0C28\u0C41 \u0C05\u0C21\u0C17\u0C02\u0C21\u0C3F\u2026",ask:"\u0C05\u0C21\u0C41\u0C17\u0C41",listen:"\u0C2E\u0C3E\u0C1F\u0C4D\u0C32\u0C3E\u0C21\u0C41",stop:"\u0C06\u0C2A\u0C41",listening:"\u0C35\u0C3F\u0C02\u0C1F\u0C41\u0C28\u0C4D\u0C28\u0C3E\u0C28\u0C41\u2026",noVoice:"\u0C08 \u0C2C\u0C4D\u0C30\u0C4C\u0C1C\u0C30\u0C4D\u200C\u0C32\u0C4B \u0C35\u0C3E\u0C2F\u0C3F\u0C38\u0C4D \u0C07\u0C28\u0C4D\u200C\u0C2A\u0C41\u0C1F\u0C4D \u0C32\u0C47\u0C26\u0C41. \u0C1F\u0C48\u0C2A\u0C4D \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F.",history:"\u0C1A\u0C30\u0C3F\u0C24\u0C4D\u0C30",clear:"\u0C1A\u0C30\u0C3F\u0C24\u0C4D\u0C30 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F",webmcp:{unsupported:"WebMCP: \u0C08 \u0C2C\u0C4D\u0C30\u0C4C\u0C1C\u0C30\u0C4D\u200C\u0C32\u0C4B \u0C32\u0C47\u0C26\u0C41.",registering:"WebMCP: \u0C28\u0C2E\u0C4B\u0C26\u0C41 \u0C1A\u0C47\u0C38\u0C4D\u0C24\u0C4B\u0C02\u0C26\u0C3F\u2026",ready:"WebMCP: \u0C38\u0C3F\u0C26\u0C4D\u0C27\u0C02",partial:"WebMCP: \u0C15\u0C4A\u0C28\u0C4D\u0C28\u0C3F \u0C35\u0C3F\u0C2B\u0C32\u0C02",error:"WebMCP: \u0C35\u0C3F\u0C2B\u0C32\u0C02"}}};function xi(e,A,t={}){let i=Lo[t.locale==="te"?"te":"en"],o=X("yv-ask"),r=X("yv-hint"),n=g("input",{id:o,class:"yv-input",type:"text",placeholder:i.placeholder,autocomplete:"off","aria-describedby":r}),a=g("button",{type:"submit",class:"yv-btn yv-primary"},q("spark",16),i.ask),s=typeof window<"u"&&(window.SpeechRecognition||window.webkitSpeechRecognition),l=g("button",{type:"button",class:"yv-btn","aria-pressed":"false"},q("mic",16),i.listen),I=g("div",{class:"yv-answer",role:"status","aria-live":"polite"}),u=g("ol"),m=g("details",{class:"yv-history"},g("summary",null,i.history),u,g("button",{type:"button",class:"yv-btn yv-small","data-clear-history":""},i.clear)),c=t.showWebMCP?g("p",{class:"yv-muted",style:"margin:8px 0 0"}):null,k=t.examples||(t.locale==="te"?["\u0C0E\u0C28\u0C4D\u0C28\u0C3F","\u0C2B\u0C3F\u0C32\u0C4D\u0C1F\u0C30\u0C4D\u0C32\u0C41 \u0C24\u0C40\u0C38\u0C47\u0C2F\u0C3F"]:["how many","clear filters","clear sort"]),f=g("div",{class:"yv-chips"},...k.map(y=>g("button",{type:"button",class:"yv-chip","data-example":y},y))),C=g("form",{class:"yv-row",role:"search","aria-label":i.title},g("label",{for:o,class:"yv-sr"},i.title),n,a,l),B=g("section",{class:"yv-box yv-assistant","aria-label":i.title},g("h3",null,q("chat",16)," ",i.title),g("p",{id:r,class:"yv-muted",style:"margin:0 0 8px"},i.hint),C,f,I,m,c);e.appendChild(B);async function v(y){let D=String(y||"").trim();if(D){a.disabled=!0;try{let Q=await A.ask(D);I.textContent=Q.message,I.className=`yv-answer ${Q.success?"":"yv-fail"}`}finally{a.disabled=!1}}}let E=A.subscribe(y=>{u.replaceChildren(...y.history.slice().reverse().map(D=>g("li",null,g("span",{class:D.result.success?"yv-ok":"yv-fail"},D.result.success?"\u2713 ":"\u2717 "),D.result.message,g("span",{class:"yv-muted"},` (${D.tool})`)))),m.querySelector("summary").textContent=`${i.history} (${y.history.length})`});C.addEventListener("submit",y=>{y.preventDefault(),v(n.value)}),B.addEventListener("click",y=>{let D=y.target.closest("[data-example],[data-clear-history]");D&&(D.hasAttribute("data-example")?(n.value=D.getAttribute("data-example"),v(n.value)):(A.clearHistory(),I.textContent=""))});let h=null;l.addEventListener("click",()=>{if(!s){I.textContent=i.noVoice;return}if(h){h.stop();return}h=new s,h.lang=t.inputLanguage||"en-IN",h.interimResults=!1,h.maxAlternatives=1,l.setAttribute("aria-pressed","true"),l.lastChild.textContent=i.stop,I.textContent=i.listening,h.onresult=y=>{let D=y.results[0][0].transcript;n.value=D,v(D)},h.onerror=y=>{I.textContent=`${i.noVoice} (${y.error})`},h.onend=()=>{h=null,l.setAttribute("aria-pressed","false"),l.lastChild.textContent=i.listen};try{h.start()}catch(y){I.textContent=`${i.noVoice} (${y.message})`,h=null}}),s||(l.title=i.noVoice);function p(){if(!c||!t.webmcp)return;let y=t.webmcp();c.textContent=i.webmcp[y.state]+(y.registered&&y.registered.length?` (${y.registered.length})`:"")}return p(),{element:B,ask:v,refreshStatus:p,destroy(){E(),h&&h.stop(),B.remove()}}}var Zn=[{id:"copilot",label:"Copilot",icon:"wand"},{id:"qa",label:"QA report",icon:"check"},{id:"forms",label:"Forms",icon:"form"},{id:"design",label:"Design",icon:"layout"},{id:"ask",label:"Ask page",icon:"chat"},{id:"voice",label:"Voice",icon:"mic"}],Yo=[["en-IN","English (India)"],["en-US","English (US)"],["te-IN","\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41 (Telugu)"],["hi-IN","\u0939\u093F\u0928\u094D\u0926\u0940 (Hindi)"],["ta-IN","\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD (Tamil)"],["kn-IN","\u0C95\u0CA8\u0CCD\u0CA8\u0CA1 (Kannada)"],["ml-IN","\u0D2E\u0D32\u0D2F\u0D3E\u0D33\u0D02 (Malayalam)"],["mr-IN","\u092E\u0930\u093E\u0920\u0940 (Marathi)"],["bn-IN","\u09AC\u09BE\u0982\u09B2\u09BE (Bengali)"],["gu-IN","\u0A97\u0AC1\u0A9C\u0AB0\u0ABE\u0AA4\u0AC0 (Gujarati)"]],ki=e=>g("span",{class:`yv-badge yv-sev-${e}`},e);function Di(e,A){return g("div",null,g("div",{class:"yv-score"},g("strong",null,String(e)),g("span",{class:"yv-muted"},"/ 100")),g("div",{class:"yv-meter",role:"img","aria-label":`Score ${e} out of 100`},g("span",{style:`width:${Math.max(0,Math.min(100,e))}%`})),g("p",{style:"margin:0 0 6px"},A))}function SA(e){let A=(e||[]).filter(Boolean);return A.length?g("button",{type:"button",class:"yv-btn yv-small",onclick:()=>oe(`${Wn(A)} element(s) outlined on the page`)},q("eye",14),"Show on page"):null}function ft(e,A={}){let t=e==null?null:typeof e=="string"?document.querySelector(e):e;if(e!=null&&!t)throw new Error("mountAgenticPanel: container not found");let i=X("yv-tabs"),o=g("section",{class:`yv-box yv-agentic-panel${A.theme?" yv-theme-"+A.theme:""}`,"data-yuktai-panel":"","aria-label":A.title||"Page tools"}),r=g("div",{class:"yv-tabs",role:"tablist","aria-label":"Page tools",id:i}),n={};Zn.forEach(E=>{let h=`${i}-${E.id}`,p=`${h}-panel`;r.append(g("button",{type:"button",class:"yv-tab",role:"tab",id:h,"aria-controls":p,"aria-selected":"false",tabindex:-1,"data-tab":E.id},q(E.icon,15)," ",E.label)),n[E.id]=g("div",{role:"tabpanel",id:p,"aria-labelledby":h,hidden:!0,tabindex:0})}),o.append(r,...Object.values(n)),t&&t.appendChild(o);let a={},s=null;function l(E,h){n[E]||(E="qa"),s=E,r.querySelectorAll("[role=tab]").forEach(p=>{let y=p.getAttribute("data-tab")===E;p.setAttribute("aria-selected",String(y)),p.tabIndex=y?0:-1,y&&h&&p.focus()}),Object.entries(n).forEach(([p,y])=>y.hidden=p!==E),a[E]||(a[E]=!0,v[E](n[E]))}r.addEventListener("click",E=>{let h=E.target.closest("[role=tab]");h&&l(h.getAttribute("data-tab"),!0)}),r.addEventListener("keydown",E=>{let h=Zn.map(Q=>Q.id),p=E.target.closest&&E.target.closest("[role=tab]"),y=h.indexOf(p?p.getAttribute("data-tab"):s),D=null;E.key==="ArrowRight"?D=h[(y+1)%h.length]:E.key==="ArrowLeft"?D=h[(y-1+h.length)%h.length]:E.key==="Home"?D=h[0]:E.key==="End"&&(D=h[h.length-1]),D&&(E.preventDefault(),E.stopPropagation(),l(D,!0))});let I=null;function u(E){let h=g("ul",{class:"yv-list"}),p=g("p",{class:"yv-status",role:"status","aria-live":"polite"}),y=g("div",{class:"yv-answer","aria-live":"polite"}),D=g("button",{type:"button",class:"yv-btn","aria-pressed":"false"},q("eye",16),"Watch page");I=jA({defaultLang:A.defaultLang,debounceMs:600,onUpdate:x=>Q(x)});function Q(x){let G=x.report;D.setAttribute("aria-pressed",String(x.watching)),p.textContent=G?`${G.summary} Fixes applied: ${x.appliedFixes}.${x.watching?" Watching for page changes.":""}`:"Scan the page to see issues.",h.replaceChildren(...(G?G.issues.slice(0,40):[]).map(w=>g("li",{class:"yv-item"},g("p",null,ki(w.severity)," ",g("b",null,w.message)),g("p",{class:"yv-muted"},`WCAG ${w.wcag} \xB7 `,g("code",null,w.selector)),g("div",{class:"yv-row"},g("button",{type:"button",class:"yv-btn yv-small",onclick:()=>y.textContent=I.explain(w.id)},q("info",14),"Explain"),w.autoFixable?g("button",{type:"button",class:"yv-btn yv-small",onclick:()=>oe(I.applyFix(w.id).message)},q("wand",14),"Fix"):null,SA([w.selector])))))}E.append(g("p",{class:"yv-muted"},"Finds accessibility problems, explains them in plain English, and applies safe fixes you can undo."),g("div",{class:"yv-row"},g("button",{type:"button",class:"yv-btn yv-primary",onclick:()=>I.scan()},q("search",16),"Scan page"),D,g("button",{type:"button",class:"yv-btn",onclick:()=>oe(`${I.applyAllFixes().filter(x=>x.applied).length} fix(es) applied`)},q("wand",16),"Apply all safe fixes"),g("button",{type:"button",class:"yv-btn",onclick:()=>oe(`${I.undoAll()} change(s) undone`)},q("undo",16),"Undo all")),p,y,h),D.addEventListener("click",()=>I.getState().watching?I.stop():I.start()),Q(I.getState())}function m(E){let h=g("div",{"aria-live":"polite"}),p=null,y=()=>{p=pe(A.auditOptions||{});let D=p.issues;h.replaceChildren(Di(p.score,p.summary),g("div",{class:"yv-row"},g("button",{type:"button",class:"yv-btn yv-small",onclick:async()=>oe(await On(EA(p))?"Markdown report copied":"Copy failed")},q("copy",14),"Copy Markdown"),g("button",{type:"button",class:"yv-btn yv-small",onclick:()=>DA("yuktai-qa-report.md",EA(p),"text/markdown;charset=utf-8")},q("download",14),"Markdown"),g("button",{type:"button",class:"yv-btn yv-small",onclick:()=>DA("yuktai-qa-report.json",XA(p),"application/json")},q("download",14),"JSON")),g("details",{class:"yv-history"},g("summary",null,`Checks (${p.checks.filter(Q=>Q.passed).length}/${p.checks.length} passed)`),g("ul",{class:"yv-steps"},...p.checks.map(Q=>g("li",null,g("span",{class:Q.passed?"yv-ok":"yv-fail"},Q.passed?"\u2713 ":"\u2717 "),Q.title||Q.rule,Q.issueCount?` \u2014 ${Q.issueCount} issue(s)`:"")))),g("ul",{class:"yv-list"},...D.slice(0,60).map(Q=>g("li",{class:"yv-item"},g("p",null,ki(Q.severity)," ",g("b",null,Q.message)),g("p",null,g("b",null,"Fix: "),Q.fix),g("p",{class:"yv-muted"},`${Q.rule} \xB7 WCAG ${Q.wcag} \xB7 `,g("code",null,Q.selector)),SA([Q.selector])))),D.length>60?g("p",{class:"yv-muted"},`${D.length-60} more issue(s) in the downloaded report.`):null),oe(p.summary)};E.append(g("p",{class:"yv-muted"},"15 WCAG checks on this page with a 0\u2013100 score. Heuristic: still test with a keyboard and a screen reader."),g("button",{type:"button",class:"yv-btn yv-primary",onclick:y},q("check",16),"Run QA audit"),h)}function c(E){let h=g("input",{type:"checkbox",id:X("yv-senior"),checked:A.seniorFriendly!==!1}),p=g("div",{"aria-live":"polite"}),y=()=>{let D=rA({seniorFriendly:h.checked,maxFieldsPerStep:A.maxFieldsPerStep||8});if(!D.length)return p.replaceChildren(g("p",{class:"yv-answer"},"There are no forms on this page.")),oe("No forms found");p.replaceChildren(...D.map(Q=>g("div",{class:"yv-item",style:"margin-top:10px"},Di(Q.score,Q.summary),g("ul",{class:"yv-steps"},...Q.findings.map(x=>g("li",null,g("span",{class:`yv-badge yv-sev-${x.level==="problem"?"serious":"minor"}`},x.level)," ",x.message,g("br"),g("span",{class:"yv-muted"},x.suggestion)))),SA(Q.findings.map(x=>x.selector))))),oe(`${D.length} form(s) reviewed`)};E.append(g("p",{class:"yv-muted"},"Checks labels, autocomplete, error messages and senior-friendly tips."),g("div",{class:"yv-row"},g("label",{class:"yv-check",for:h.id},h),g("label",{for:h.id},"Senior-friendly checks"),g("button",{type:"button",class:"yv-btn yv-primary",onclick:y},q("form",16),"Review forms")),p)}function k(E){let h=X("yv-min"),p=g("input",{id:h,class:"yv-input",type:"number",min:10,max:24,value:A.minFontSize||16,style:"width:90px"}),y=g("div",{"aria-live":"polite"}),D=()=>{let Q=it({minFontSize:Number(p.value)||16,maxLineLength:A.maxLineLength||90});y.replaceChildren(Di(Q.score,Q.summary),g("div",{class:"yv-cats"},...Object.entries(Q.categories).map(([x,G])=>g("div",{class:"yv-cat"},g("span",{class:"yv-muted"},x),g("strong",null,String(G.score)),g("span",{class:"yv-muted"},`${G.findings} finding(s)`)))),g("ul",{class:"yv-list"},...Q.findings.slice(0,40).map(x=>g("li",{class:"yv-item"},g("p",null,ki(x.severity)," ",g("b",null,x.category),": ",x.message),g("p",{class:"yv-muted"},x.suggestion),SA([x.selector]))))),oe(Q.summary)};E.append(g("p",{class:"yv-muted"},"Hierarchy, readability, interaction, clutter and consistency. Heuristic, not a visual-design certification."),g("div",{class:"yv-row"},g("label",{for:h},"Minimum text size (px)"),p,g("button",{type:"button",class:"yv-btn yv-primary",onclick:D},q("layout",16),"Review design")),y)}function f(E){let h=X("yv-pq"),p=g("input",{id:h,class:"yv-input",type:"text",placeholder:"What is this page about?",autocomplete:"off"}),y=g("div",{"aria-live":"polite"}),D=null,Q=async()=>{let w=p.value.trim()||"What is this page about?",M=await ZA(w,{summarize:A.summarize}),L=[g("div",{class:"yv-answer"},M.answer)];M.suggestions.length&&L.push(g("ul",{class:"yv-steps"},...M.suggestions.map(R=>g("li",null,R))));let F=SA(M.targets);if(F&&L.push(F),M.intent==="unknown"){D?D.rebuild():D=tt({includePage:!0,documents:A.documents,engine:A.engine});let R=await D.ask(w,{generate:A.generate});L.push(g("h4",{style:"margin:12px 0 4px"},R.generated?"Answer (your model)":"From the page text"),g("div",{class:"yv-answer"},R.answer))}y.replaceChildren(...L),oe(M.answer)},x=g("form",{class:"yv-row"},g("label",{for:h,class:"yv-sr"},"Ask about this page"),p,g("button",{type:"submit",class:"yv-btn yv-primary"},"Ask"));x.addEventListener("submit",w=>{w.preventDefault(),Q()});let G=["What is this page about?","Which fields have no label?","Which images have no alt text?","Show the page structure","How many links are there?","Tell me about the forms"];E.append(g("p",{class:"yv-muted"},"Answers from this page only, offline. Pass generate() to use your own model."),x,g("div",{class:"yv-chips"},...G.map(w=>g("button",{type:"button",class:"yv-chip",onclick:()=>(p.value=w,Q())},w))),y)}let C=null;function B(E){let h=X("yv-lang"),p=g("select",{id:h,class:"yv-input",style:"width:auto"},...Yo.map(([F,R])=>g("option",{value:F,selected:F===(A.voiceLang||"en-IN")},R))),y=g("button",{type:"button",class:"yv-btn yv-primary","aria-pressed":"false"},q("mic",16),"Start listening"),D=X("yv-cmd"),Q=g("input",{id:D,class:"yv-input",type:"text",placeholder:"Type a command, e.g. make text bigger",autocomplete:"off"}),x=g("div",{class:"yv-answer",role:"status","aria-live":"polite"}),G=typeof window<"u"&&!!(window.SpeechRecognition||window.webkitSpeechRecognition),w=()=>{C&&C.stop(),C=It({lang:p.value,speak:A.speak!==!1,initial:A.getSettings?A.getSettings():void 0,apply:A.applySettings,onTranscript:(F,R)=>{x.textContent=`Heard: \u201C${F}\u201D
544
- ${R?R.say:"Not a voice command. Try: make text bigger, high contrast on, dark mode, next row, reset."}`,A.onVoiceCommand&&A.onVoiceCommand(F,R)}})};w(),p.addEventListener("change",()=>{let F=y.getAttribute("aria-pressed")==="true";w(),F&&C.start()}),y.addEventListener("click",()=>{if(y.getAttribute("aria-pressed")==="true"){C.stop(),y.setAttribute("aria-pressed","false"),y.lastChild.textContent="Start listening";return}if(!C.start()){x.textContent="Speech recognition is not available in this browser. Typed commands below still work.";return}y.setAttribute("aria-pressed","true"),y.lastChild.textContent="Stop listening",x.textContent="Listening\u2026 say \u201Cmake text bigger\u201D or \u201Cnext row\u201D."});let M=g("form",{class:"yv-row"},g("label",{for:D,class:"yv-sr"},"Type a voice command"),Q,g("button",{type:"submit",class:"yv-btn"},"Run"));M.addEventListener("submit",async F=>{F.preventDefault(),Q.value.trim()&&await C.handle(Q.value)});let L=["make text bigger","make text smaller","high contrast on","dark mode","reduce motion","dyslexia font","next row","previous row","first row","reset","\u0C2A\u0C46\u0C26\u0C4D\u0C26 \u0C05\u0C15\u0C4D\u0C37\u0C30\u0C3E\u0C32\u0C41","\u0C39\u0C48 \u0C15\u0C3E\u0C02\u0C1F\u0C4D\u0C30\u0C3E\u0C38\u0C4D\u0C1F\u0C4D","\u0C24\u0C30\u0C4D\u0C35\u0C3E\u0C24\u0C3F \u0C35\u0C30\u0C41\u0C38"];E.append(g("p",{class:"yv-muted"},G?"Speak accessibility commands in English or Telugu. Text size moves 80\u2013130% in 10% steps.":"Your browser has no speech recognition. You can still type the same commands."),g("div",{class:"yv-row"},g("label",{for:h},"Language"),p,y),M,g("div",{class:"yv-chips"},...L.map(F=>g("button",{type:"button",class:"yv-chip",onclick:()=>(Q.value=F,C.handle(F))},F))),x)}let v={copilot:u,qa:m,forms:c,design:k,ask:f,voice:B};return l(A.defaultTab||"qa",!1),{element:o,select:E=>l(E,!1),get tab(){return s},get copilot(){return I},destroy(){I&&I.stop(),C&&C.stop(),o.remove()}}}var Mi="yuktai-a11y-prefs",GA=[.8,.9,1,1.1,1.2,1.3],Uo=[["none","None"],["deuteranopia","Deuteranopia (red-green)"],["protanopia","Protanopia (red-green)"],["tritanopia","Tritanopia (blue-yellow)"],["achromatopsia","Achromatopsia (no colour)"]],Jo=[["highContrast","High contrast","Stronger text and borders","contrast"],["darkMode","Dark mode","Light text on a dark page","moon"],["reduceMotion","Reduce motion","Stop animations and transitions","motion"],["largeTargets","Large targets","Buttons and links at least 44\xD744","target"],["dyslexiaFont","Dyslexia-friendly font","Easier letters and wider spacing","reading"],["speechEnabled","Speak on focus","Read out each control you Tab to","speaker"],["autoFix","Auto-fix page","Add missing ARIA, labels and alt text; watch new content","wand"],["showSkipLinks","Skip links","\u201CSkip to main content\u201D on Tab","skip"]];function Ko(){try{let e=localStorage.getItem(Mi);return e?JSON.parse(e):{}}catch{return{}}}function qo(e){try{let A={};["highContrast","darkMode","reduceMotion","largeTargets","speechEnabled","colorBlindMode","dyslexiaFont","fontSizeMultiplier"].forEach(t=>A[t]=e[t]),localStorage.setItem(Mi,JSON.stringify(A))}catch{}}function _n(e={}){let A={position:"left",title:"Accessibility",showPageTools:!1,...e},t=A.position==="right"?"right":"left",i=pt(A.primaryColor,"#005A9C"),o={enabled:!0,autoFix:!0,showSkipLinks:!0,showPreferencePanel:!1,...lA,...A.config||{}},r={...o,...Ko()},n,a,s,l,I,u,m,c="";async function k(w,M){r={...r,...w,enabled:!0},qo(r);try{c=await ze.execute({...r}),r.autoFix||ze.stopObserver()}catch(L){console.error("[yuktai] accessibility engine failed",L),c="Some settings could not be applied. See the browser console."}return B(),M||oe("Accessibility settings updated"),c}async function f(){try{localStorage.removeItem(Mi)}catch{}return r={...o},await k(r,!0),oe("Accessibility settings reset"),r}function C(){let w=X("yv-a11y-title"),M=X("yv-font"),L=X("yv-cb"),F=g("section",{class:"yv-dialog",role:"dialog","aria-modal":"false","aria-labelledby":w,"data-yuktai-panel":""}),R=Jo.map(([O,_,ee,NA])=>{let be=X("yv-opt"),Qt=g("input",{id:be,type:"checkbox",role:"switch","data-setting":O,"aria-describedby":`${be}-d`});return g("div",{class:"yv-option"},g("span",{class:"yv-option-icon"},q(NA,18)),g("span",{class:"yv-option-copy"},g("label",{for:be},g("b",null,_)),g("small",{id:`${be}-d`},ee)),g("span",{class:"yv-switch"},Qt,g("span",{"aria-hidden":"true"})))}),H=g("div",{class:"yv-steps-bar",role:"group","aria-labelledby":M},...GA.map(O=>g("button",{type:"button",class:"yv-step","data-font":O,"aria-label":`${Math.round(O*100)} percent`,"aria-pressed":"false"}))),Ie=g("select",{id:L,class:"yv-input","data-colorblind":""},...Uo.map(([O,_])=>g("option",{value:O},_)));return F.append(g("header",{class:"yv-dialog-head"},g("div",null,g("div",{class:"yv-muted",style:"font-weight:800;font-size:.75em;letter-spacing:.05em"},"YUKTAI"),g("h2",{id:w},A.title),g("p",{class:"yv-muted",style:"margin:2px 0 0"},"Saved on this device. Works on every page.")),g("button",{type:"button",class:"yv-btn yv-icon","data-close":"","aria-label":"Close accessibility settings",html:ce("close")})),g("div",{class:"yv-dialog-body"},...R,g("div",{style:"padding:12px 0;border-bottom:1px solid var(--yv-border)"},g("div",{style:"display:flex;justify-content:space-between"},g("b",{id:M},"Text size"),g("strong",{"data-font-value":""})),g("div",{class:"yv-row",style:"flex-wrap:nowrap;margin-top:6px"},g("button",{type:"button",class:"yv-btn yv-icon","data-font-step":"-1","aria-label":"Smaller text",html:ce("minus",16)}),H,g("button",{type:"button",class:"yv-btn yv-icon","data-font-step":"1","aria-label":"Bigger text",html:ce("plus",16)}))),g("div",{style:"padding:12px 0"},g("label",{for:L},g("b",null,"Colour-blind filter")),Ie),g("div",{class:"yv-row"},g("button",{type:"button",class:"yv-btn","data-reset":""},q("reset",16),"Reset all"),g("button",{type:"button",class:"yv-btn yv-primary","data-close":""},q("check",16),"Done")),g("p",{class:"yv-status",role:"status","aria-live":"polite","data-status":""}))),F.addEventListener("change",O=>{let _=O.target;_.matches("[data-setting]")?k({[_.getAttribute("data-setting")]:_.checked}):_.matches("[data-colorblind]")&&k({colorBlindMode:_.value})}),F.addEventListener("click",O=>{let _=O.target.closest("button");if(_){if(_.hasAttribute("data-close"))return p();if(_.hasAttribute("data-reset"))return f();if(_.hasAttribute("data-font"))return v(Number(_.getAttribute("data-font")));if(_.hasAttribute("data-font-step")){let ee=GA.indexOf(Number(r.fontSizeMultiplier||1));return v(GA[Math.min(GA.length-1,Math.max(0,(ee<0?2:ee)+Number(_.getAttribute("data-font-step"))))])}}}),F.addEventListener("keydown",O=>E(O,F,p)),F}function B(){if(!l)return;l.querySelectorAll("[data-setting]").forEach(F=>F.checked=!!r[F.getAttribute("data-setting")]&&r[F.getAttribute("data-setting")]!==!1);let w=l.querySelector('[data-setting="showSkipLinks"]');w&&(w.checked=r.showSkipLinks!==!1);let M=Number(r.fontSizeMultiplier||1);l.querySelector("[data-font-value]").textContent=`${Math.round(M*100)}%`,l.querySelectorAll("[data-font]").forEach(F=>F.setAttribute("aria-pressed",String(Math.abs(Number(F.getAttribute("data-font"))-M)<.001))),l.querySelector("[data-colorblind]").value=r.colorBlindMode||"none";let L=/(\d+) fixes applied/.exec(c);l.querySelector("[data-status]").textContent=L?`${L[1]} automatic accessibility fix(es) applied on this page.`:c}function v(w){GA.some(M=>Math.abs(M-w)<.001)&&(k({fontSizeMultiplier:w},!0),oe(`Text size ${Math.round(w*100)} percent`))}function E(w,M,L){if(w.key==="Escape"){w.preventDefault(),w.stopPropagation(),L();return}if(w.key!=="Tab")return;let F=Array.from(M.querySelectorAll("button,input,select,textarea,[tabindex]:not([tabindex='-1'])")).filter(R=>!R.disabled&&R.offsetParent!==null);F.length&&(w.shiftKey&&document.activeElement===F[0]?(w.preventDefault(),F[F.length-1].focus()):!w.shiftKey&&document.activeElement===F[F.length-1]&&(w.preventDefault(),F[0].focus()))}function h(){a||G(),!l&&(Q(),m=document.activeElement,l=C(),x().appendChild(l),a.setAttribute("aria-expanded","true"),B(),l.querySelector("[data-close]").focus(),document.addEventListener("pointerdown",y,!0))}function p(){l&&(l.remove(),l=null,a.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",y,!0),(m&&document.contains(m)?m:a).focus())}function y(w){l&&!l.contains(w.target)&&!n.contains(w.target)&&p(),I&&!I.contains(w.target)&&!n.contains(w.target)&&Q()}function D(w){if(a||G(),I){w&&u&&u.select(w);return}p(),m=document.activeElement;let M=X("yv-tools-title");I=g("section",{class:"yv-dialog yv-wide",role:"dialog","aria-modal":"false","aria-labelledby":M,"data-yuktai-panel":""});let L=g("div",{class:"yv-dialog-body"});I.append(g("header",{class:"yv-dialog-head"},g("h2",{id:M},A.toolsTitle||"Page tools"),g("button",{type:"button",class:"yv-btn yv-icon","aria-label":"Close page tools",html:ce("close"),onclick:()=>Q()})),L),x().appendChild(I),u=ft(L,{defaultTab:w||A.defaultTab||"qa",voiceLang:A.voiceLang,generate:A.generate,summarize:A.summarize,defaultLang:A.defaultLang,getSettings:()=>({...r}),applySettings:F=>k(F,!0)}),s&&s.setAttribute("aria-expanded","true"),I.addEventListener("keydown",F=>E(F,I,Q)),I.querySelector("[role=tab][aria-selected=true]").focus(),document.addEventListener("pointerdown",y,!0)}function Q(){I&&(u&&u.destroy(),u=null,I.remove(),I=null,s&&s.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",y,!0),(m&&document.contains(m)?m:s||a).focus())}let x=()=>document.documentElement||document.body;function G(){!Ye()||a||!document.body||(yt(i,t),n=g("div",{class:"yv-fabs","data-yuktai-fabs":""}),a=g("button",{type:"button",class:"yv-fab","aria-label":"Accessibility settings",title:"Accessibility settings","aria-haspopup":"dialog","aria-expanded":"false",html:ce("accessibility",26)}),a.addEventListener("click",()=>l?p():h()),n.append(a),A.showPageTools&&(s=g("button",{type:"button",class:"yv-fab yv-fab-alt","aria-label":"Page tools: QA, forms, design, ask, voice",title:"Page tools","aria-haspopup":"dialog","aria-expanded":"false",html:ce("tools",24)}),s.addEventListener("click",()=>I?Q():D()),n.prepend(s)),x().appendChild(n),A.applyOnLoad!==!1&&k({},!0))}return{init:G,open:h,close:p,openTools:D,closeTools:Q,apply:w=>k(w||{}),reset:f,getSettings:()=>({...r}),destroy(){p(),Q(),n&&n.remove(),a=s=n=null}}}var er="5.3.8";(function(){if(!Ye()||window.yuktai&&window.yuktai.__vanillaInitialized)return;let A=window.YUKTAI_CONFIG||{},t=pt(A.primaryColor,"#005A9C"),i=A.position==="right"?"right":"left",o=_n(A),r=()=>yt(t,i),n=s=>(...l)=>(r(),s(...l)),a={__vanillaInitialized:!0,version:er,init:()=>o.init(),open:()=>o.open(),close:()=>o.close(),openTools:s=>o.openTools(s),closeTools:()=>o.closeTools(),apply:s=>o.apply(s),reset:()=>o.reset(),getSettings:()=>o.getSettings(),renderGrid:n(jn),mountAgenticGridBar:n(mt),mountAgenticPanel:n(ft),mountGridAssistant:n(xi),createAgenticGrid:Ct,createGridAgent:dt,parseGridIntent:Bi,registerWebMCP:ut,icon:ce,iconNames:zn.slice(),iconContrast:kA,pickGlyphColor:bi,...fi,runPageQA:()=>pe().summary,getCapabilities:()=>({version:er,inlineSVG:!0,grid:!0,gridAssistant:!0,agenticGrid:!0,ruleBasedBI:!0,taskRunner:!0,anomalyChecks:!0,pageQA:!0,a11yCopilot:!0,formsReview:!0,designReview:!0,pageQandA:!0,localPageSearch:!0,voiceCommands:!0,voice:!!(window.SpeechRecognition||window.webkitSpeechRecognition),speech:"speechSynthesis"in window,webMCP:!!(document.modelContext&&typeof document.modelContext.registerTool=="function"),modelConnected:!1})};window.yuktai=a,A.autoInit!==!1&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>o.init(),{once:!0}):o.init())})();})();
544
+ ${R?R.say:"Not a voice command. Try: make text bigger, high contrast on, dark mode, next row, reset."}`,A.onVoiceCommand&&A.onVoiceCommand(F,R)}})};w(),p.addEventListener("change",()=>{let F=y.getAttribute("aria-pressed")==="true";w(),F&&C.start()}),y.addEventListener("click",()=>{if(y.getAttribute("aria-pressed")==="true"){C.stop(),y.setAttribute("aria-pressed","false"),y.lastChild.textContent="Start listening";return}if(!C.start()){x.textContent="Speech recognition is not available in this browser. Typed commands below still work.";return}y.setAttribute("aria-pressed","true"),y.lastChild.textContent="Stop listening",x.textContent="Listening\u2026 say \u201Cmake text bigger\u201D or \u201Cnext row\u201D."});let M=g("form",{class:"yv-row"},g("label",{for:D,class:"yv-sr"},"Type a voice command"),Q,g("button",{type:"submit",class:"yv-btn"},"Run"));M.addEventListener("submit",async F=>{F.preventDefault(),Q.value.trim()&&await C.handle(Q.value)});let L=["make text bigger","make text smaller","high contrast on","dark mode","reduce motion","dyslexia font","next row","previous row","first row","reset","\u0C2A\u0C46\u0C26\u0C4D\u0C26 \u0C05\u0C15\u0C4D\u0C37\u0C30\u0C3E\u0C32\u0C41","\u0C39\u0C48 \u0C15\u0C3E\u0C02\u0C1F\u0C4D\u0C30\u0C3E\u0C38\u0C4D\u0C1F\u0C4D","\u0C24\u0C30\u0C4D\u0C35\u0C3E\u0C24\u0C3F \u0C35\u0C30\u0C41\u0C38"];E.append(g("p",{class:"yv-muted"},G?"Speak accessibility commands in English or Telugu. Text size moves 80\u2013130% in 10% steps.":"Your browser has no speech recognition. You can still type the same commands."),g("div",{class:"yv-row"},g("label",{for:h},"Language"),p,y),M,g("div",{class:"yv-chips"},...L.map(F=>g("button",{type:"button",class:"yv-chip",onclick:()=>(Q.value=F,C.handle(F))},F))),x)}let v={copilot:u,qa:m,forms:c,design:k,ask:f,voice:B};return l(A.defaultTab||"qa",!1),{element:o,select:E=>l(E,!1),get tab(){return s},get copilot(){return I},destroy(){I&&I.stop(),C&&C.stop(),o.remove()}}}var Mi="yuktai-a11y-prefs",GA=[.8,.9,1,1.1,1.2,1.3],Uo=[["none","None"],["deuteranopia","Deuteranopia (red-green)"],["protanopia","Protanopia (red-green)"],["tritanopia","Tritanopia (blue-yellow)"],["achromatopsia","Achromatopsia (no colour)"]],Jo=[["highContrast","High contrast","Stronger text and borders","contrast"],["darkMode","Dark mode","Light text on a dark page","moon"],["reduceMotion","Reduce motion","Stop animations and transitions","motion"],["largeTargets","Large targets","Buttons and links at least 44\xD744","target"],["dyslexiaFont","Dyslexia-friendly font","Easier letters and wider spacing","reading"],["speechEnabled","Speak on focus","Read out each control you Tab to","speaker"],["autoFix","Auto-fix page","Add missing ARIA, labels and alt text; watch new content","wand"],["showSkipLinks","Skip links","\u201CSkip to main content\u201D on Tab","skip"]];function Ko(){try{let e=localStorage.getItem(Mi);return e?JSON.parse(e):{}}catch{return{}}}function qo(e){try{let A={};["highContrast","darkMode","reduceMotion","largeTargets","speechEnabled","colorBlindMode","dyslexiaFont","fontSizeMultiplier"].forEach(t=>A[t]=e[t]),localStorage.setItem(Mi,JSON.stringify(A))}catch{}}function _n(e={}){let A={position:"left",title:"Accessibility",showPageTools:!1,...e},t=A.position==="right"?"right":"left",i=pt(A.primaryColor,"#005A9C"),o={enabled:!0,autoFix:!0,showSkipLinks:!0,showPreferencePanel:!1,...lA,...A.config||{}},r={...o,...Ko()},n,a,s,l,I,u,m,c="";async function k(w,M){r={...r,...w,enabled:!0},qo(r);try{c=await ze.execute({...r}),r.autoFix||ze.stopObserver()}catch(L){console.error("[yuktai] accessibility engine failed",L),c="Some settings could not be applied. See the browser console."}return B(),M||oe("Accessibility settings updated"),c}async function f(){try{localStorage.removeItem(Mi)}catch{}return r={...o},await k(r,!0),oe("Accessibility settings reset"),r}function C(){let w=X("yv-a11y-title"),M=X("yv-font"),L=X("yv-cb"),F=g("section",{class:"yv-dialog",role:"dialog","aria-modal":"false","aria-labelledby":w,"data-yuktai-panel":""}),R=Jo.map(([O,_,ee,NA])=>{let be=X("yv-opt"),Qt=g("input",{id:be,type:"checkbox",role:"switch","data-setting":O,"aria-describedby":`${be}-d`});return g("div",{class:"yv-option"},g("span",{class:"yv-option-icon"},q(NA,18)),g("span",{class:"yv-option-copy"},g("label",{for:be},g("b",null,_)),g("small",{id:`${be}-d`},ee)),g("span",{class:"yv-switch"},Qt,g("span",{"aria-hidden":"true"})))}),H=g("div",{class:"yv-steps-bar",role:"group","aria-labelledby":M},...GA.map(O=>g("button",{type:"button",class:"yv-step","data-font":O,"aria-label":`${Math.round(O*100)} percent`,"aria-pressed":"false"}))),Ie=g("select",{id:L,class:"yv-input","data-colorblind":""},...Uo.map(([O,_])=>g("option",{value:O},_)));return F.append(g("header",{class:"yv-dialog-head"},g("div",null,g("div",{class:"yv-muted",style:"font-weight:800;font-size:.75em;letter-spacing:.05em"},"YUKTAI"),g("h2",{id:w},A.title),g("p",{class:"yv-muted",style:"margin:2px 0 0"},"Saved on this device. Works on every page.")),g("button",{type:"button",class:"yv-btn yv-icon","data-close":"","aria-label":"Close accessibility settings",html:ce("close")})),g("div",{class:"yv-dialog-body"},...R,g("div",{style:"padding:12px 0;border-bottom:1px solid var(--yv-border)"},g("div",{style:"display:flex;justify-content:space-between"},g("b",{id:M},"Text size"),g("strong",{"data-font-value":""})),g("div",{class:"yv-row",style:"flex-wrap:nowrap;margin-top:6px"},g("button",{type:"button",class:"yv-btn yv-icon","data-font-step":"-1","aria-label":"Smaller text",html:ce("minus",16)}),H,g("button",{type:"button",class:"yv-btn yv-icon","data-font-step":"1","aria-label":"Bigger text",html:ce("plus",16)}))),g("div",{style:"padding:12px 0"},g("label",{for:L},g("b",null,"Colour-blind filter")),Ie),g("div",{class:"yv-row"},g("button",{type:"button",class:"yv-btn","data-reset":""},q("reset",16),"Reset all"),g("button",{type:"button",class:"yv-btn yv-primary","data-close":""},q("check",16),"Done")),g("p",{class:"yv-status",role:"status","aria-live":"polite","data-status":""}))),F.addEventListener("change",O=>{let _=O.target;_.matches("[data-setting]")?k({[_.getAttribute("data-setting")]:_.checked}):_.matches("[data-colorblind]")&&k({colorBlindMode:_.value})}),F.addEventListener("click",O=>{let _=O.target.closest("button");if(_){if(_.hasAttribute("data-close"))return p();if(_.hasAttribute("data-reset"))return f();if(_.hasAttribute("data-font"))return v(Number(_.getAttribute("data-font")));if(_.hasAttribute("data-font-step")){let ee=GA.indexOf(Number(r.fontSizeMultiplier||1));return v(GA[Math.min(GA.length-1,Math.max(0,(ee<0?2:ee)+Number(_.getAttribute("data-font-step"))))])}}}),F.addEventListener("keydown",O=>E(O,F,p)),F}function B(){if(!l)return;l.querySelectorAll("[data-setting]").forEach(F=>F.checked=!!r[F.getAttribute("data-setting")]&&r[F.getAttribute("data-setting")]!==!1);let w=l.querySelector('[data-setting="showSkipLinks"]');w&&(w.checked=r.showSkipLinks!==!1);let M=Number(r.fontSizeMultiplier||1);l.querySelector("[data-font-value]").textContent=`${Math.round(M*100)}%`,l.querySelectorAll("[data-font]").forEach(F=>F.setAttribute("aria-pressed",String(Math.abs(Number(F.getAttribute("data-font"))-M)<.001))),l.querySelector("[data-colorblind]").value=r.colorBlindMode||"none";let L=/(\d+) fixes applied/.exec(c);l.querySelector("[data-status]").textContent=L?`${L[1]} automatic accessibility fix(es) applied on this page.`:c}function v(w){GA.some(M=>Math.abs(M-w)<.001)&&(k({fontSizeMultiplier:w},!0),oe(`Text size ${Math.round(w*100)} percent`))}function E(w,M,L){if(w.key==="Escape"){w.preventDefault(),w.stopPropagation(),L();return}if(w.key!=="Tab")return;let F=Array.from(M.querySelectorAll("button,input,select,textarea,[tabindex]:not([tabindex='-1'])")).filter(R=>!R.disabled&&R.offsetParent!==null);F.length&&(w.shiftKey&&document.activeElement===F[0]?(w.preventDefault(),F[F.length-1].focus()):!w.shiftKey&&document.activeElement===F[F.length-1]&&(w.preventDefault(),F[0].focus()))}function h(){a||G(),!l&&(Q(),m=document.activeElement,l=C(),x().appendChild(l),a.setAttribute("aria-expanded","true"),B(),l.querySelector("[data-close]").focus(),document.addEventListener("pointerdown",y,!0))}function p(){l&&(l.remove(),l=null,a.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",y,!0),(m&&document.contains(m)?m:a).focus())}function y(w){l&&!l.contains(w.target)&&!n.contains(w.target)&&p(),I&&!I.contains(w.target)&&!n.contains(w.target)&&Q()}function D(w){if(a||G(),I){w&&u&&u.select(w);return}p(),m=document.activeElement;let M=X("yv-tools-title");I=g("section",{class:"yv-dialog yv-wide",role:"dialog","aria-modal":"false","aria-labelledby":M,"data-yuktai-panel":""});let L=g("div",{class:"yv-dialog-body"});I.append(g("header",{class:"yv-dialog-head"},g("h2",{id:M},A.toolsTitle||"Page tools"),g("button",{type:"button",class:"yv-btn yv-icon","aria-label":"Close page tools",html:ce("close"),onclick:()=>Q()})),L),x().appendChild(I),u=ft(L,{defaultTab:w||A.defaultTab||"qa",voiceLang:A.voiceLang,generate:A.generate,summarize:A.summarize,defaultLang:A.defaultLang,getSettings:()=>({...r}),applySettings:F=>k(F,!0)}),s&&s.setAttribute("aria-expanded","true"),I.addEventListener("keydown",F=>E(F,I,Q)),I.querySelector("[role=tab][aria-selected=true]").focus(),document.addEventListener("pointerdown",y,!0)}function Q(){I&&(u&&u.destroy(),u=null,I.remove(),I=null,s&&s.setAttribute("aria-expanded","false"),document.removeEventListener("pointerdown",y,!0),(m&&document.contains(m)?m:s||a).focus())}let x=()=>document.documentElement||document.body;function G(){!Ye()||a||!document.body||(yt(i,t),n=g("div",{class:"yv-fabs","data-yuktai-fabs":""}),a=g("button",{type:"button",class:"yv-fab","aria-label":"Accessibility settings",title:"Accessibility settings","aria-haspopup":"dialog","aria-expanded":"false",html:ce("accessibility",26)}),a.addEventListener("click",()=>l?p():h()),n.append(a),A.showPageTools&&(s=g("button",{type:"button",class:"yv-fab yv-fab-alt","aria-label":"Page tools: QA, forms, design, ask, voice",title:"Page tools","aria-haspopup":"dialog","aria-expanded":"false",html:ce("tools",24)}),s.addEventListener("click",()=>I?Q():D()),n.prepend(s)),x().appendChild(n),A.applyOnLoad!==!1&&k({},!0))}return{init:G,open:h,close:p,openTools:D,closeTools:Q,apply:w=>k(w||{}),reset:f,getSettings:()=>({...r}),destroy(){p(),Q(),n&&n.remove(),a=s=n=null}}}var er="5.3.9";(function(){if(!Ye()||window.yuktai&&window.yuktai.__vanillaInitialized)return;let A=window.YUKTAI_CONFIG||{},t=pt(A.primaryColor,"#005A9C"),i=A.position==="right"?"right":"left",o=_n(A),r=()=>yt(t,i),n=s=>(...l)=>(r(),s(...l)),a={__vanillaInitialized:!0,version:er,init:()=>o.init(),open:()=>o.open(),close:()=>o.close(),openTools:s=>o.openTools(s),closeTools:()=>o.closeTools(),apply:s=>o.apply(s),reset:()=>o.reset(),getSettings:()=>o.getSettings(),renderGrid:n(jn),mountAgenticGridBar:n(mt),mountAgenticPanel:n(ft),mountGridAssistant:n(xi),createAgenticGrid:Ct,createGridAgent:dt,parseGridIntent:Bi,registerWebMCP:ut,icon:ce,iconNames:zn.slice(),iconContrast:kA,pickGlyphColor:bi,...fi,runPageQA:()=>pe().summary,getCapabilities:()=>({version:er,inlineSVG:!0,grid:!0,gridAssistant:!0,agenticGrid:!0,ruleBasedBI:!0,taskRunner:!0,anomalyChecks:!0,pageQA:!0,a11yCopilot:!0,formsReview:!0,designReview:!0,pageQandA:!0,localPageSearch:!0,voiceCommands:!0,voice:!!(window.SpeechRecognition||window.webkitSpeechRecognition),speech:"speechSynthesis"in window,webMCP:!!(document.modelContext&&typeof document.modelContext.registerTool=="function"),modelConnected:!1})};window.yuktai=a,A.autoInit!==!1&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>o.init(),{once:!0}):o.init())})();})();
@@ -1,6 +0,0 @@
1
- function i(){return new Promise(t=>{let n=setTimeout(t,1500),e=new MutationObserver(()=>{clearTimeout(n),n=setTimeout(()=>{e.disconnect(),t()},500)});e.observe(document.body,{childList:!0,subtree:!0})})}function c(){let t=[],n=document.querySelectorAll("*");for(let e of n){if(e.closest("[data-yuktai-panel]"))continue;let s=e.innerText?.trim();s&&s.length>30&&t.push(s);let r=e.getAttribute("aria-label");if(r&&r.length>10&&t.push(r),(e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement)&&(e.placeholder&&t.push(e.placeholder),e.value&&t.push(e.value)),e instanceof HTMLButtonElement){let a=e.innerText||e.getAttribute("aria-label");a&&t.push(a)}}return t.join(" ").slice(0,3500)}async function l(t){if(!t.trim())return{success:!1,answer:"",error:"Please type a question."};try{let n=window,e=n.LanguageModel||n.ai?.languageModel;if(!e)return{success:!1,answer:"",error:"Gemini Nano not available."};await i();let s=c();if(!s||s.length<100)return{success:!1,answer:"",error:"Page content not readable."};let r;try{r=await e.create({systemPrompt:`Answer ONLY using page content.
2
- Keep answer short (2\u20133 sentences).
3
- If not found say: "I could not find that on this page."`,outputLanguage:"en"})}catch{r=await e.create()}let a=`Page:
4
- ${s}
5
-
6
- Q: ${t}`,o=await r.prompt(a);return r?.destroy&&r.destroy(),{success:!0,answer:o?.trim()||"No answer found."}}catch(n){return{success:!1,answer:"",error:n instanceof Error?n.message:"Error occurred"}}}export{l as a};
@@ -1,7 +0,0 @@
1
- var m=null,h=null,l=!1,f=!1;function g(){return typeof navigator>"u"?!1:/Android|iPhone|iPad|iPod|Mobile|Tablet/i.test(navigator.userAgent)}function p(){if(g())return"wasm";try{if(typeof navigator<"u"&&"gpu"in navigator&&navigator.gpu!==void 0)return"webgpu"}catch{}return"wasm"}async function w(){if(!f){if(l){for(;l;)await new Promise(e=>setTimeout(e,200));return}l=!0;try{let{pipeline:e,env:t}=await import("@huggingface/transformers");t.allowRemoteModels=!0,t.allowLocalModels=!1,typeof window<"u"&&typeof caches<"u"&&(t.useWasmCache=!0);let n=p(),o=g();console.log(`yuktai: Transformers.js \u2014 device: ${n}, mobile: ${o}`),m=await e("feature-extraction","Xenova/all-MiniLM-L6-v2",{device:n,dtype:o?"q4":"fp32"}),h=await e("text2text-generation","Xenova/flan-t5-small",{device:n,dtype:o?"q4":"fp32"}),f=!0,l=!1,console.log("yuktai: Transformers.js models loaded \u2705")}catch(e){throw l=!1,console.error("yuktai: Transformers.js model load failed",e),e}}}function y(){return new Promise(e=>{let t=setTimeout(e,1500),n=new MutationObserver(()=>{clearTimeout(t),t=setTimeout(()=>{n.disconnect(),e()},500)});n.observe(document.body,{childList:!0,subtree:!0})})}function b(){let e=[],t=new Set,n=document.querySelectorAll("p, h1, h2, h3, h4, h5, h6, li, td, th, label, figcaption, blockquote, span, a, button, div");for(let s of n){if(s.closest("[data-yuktai-panel]")||s.querySelector("p, h1, h2, h3, h4, li, td, div"))continue;let i=s.innerText?.trim();if(!i||i.length<15||t.has(i))continue;t.add(i),e.push(i);let c=s.getAttribute("aria-label")?.trim();c&&c.length>8&&!t.has(c)&&(t.add(c),e.push(c))}let o=document.title?.trim();o&&!t.has(o)&&e.unshift(o);let r=document.querySelector('meta[name="description"]')?.getAttribute("content")?.trim();return r&&!t.has(r)&&e.unshift(r),e.join(" ").slice(0,8e3)}function v(e,t=150,n=30){if(typeof e!="string")try{e=String(e??"")}catch{return[]}let o=e.trim();if(!o)return[];let a=Math.min(n,Math.floor(t/2)),r=o.split(/\s+/),s=[],u=t-a;for(let i=0;i<r.length;i+=u){let c=r.slice(i,i+t).join(" ");c.trim().length>20&&s.push(c)}return s}function k(e,t){let n=0,o=0,a=0;for(let r=0;r<e.length;r++)n+=e[r]*t[r],o+=e[r]*e[r],a+=t[r]*t[r];return n/(Math.sqrt(o)*Math.sqrt(a)+1e-8)}async function d(e){let t=await m(e,{pooling:"mean",normalize:!0}),n=t?.data??t;return Array.from(n)}async function T(e,t,n=3){let o=await d(e),a=await Promise.all(t.map(async r=>{let s=await d(r),u=k(o,s);return{chunk:r,score:u}}));return a.sort((r,s)=>s.score-r.score),a.slice(0,n).map(r=>r.chunk)}async function x(e){if(!e.trim())return{success:!1,answer:"",error:"Please type a question."};try{await w(),await y();let t=b();if(!t||t.length<50)return{success:!1,answer:"",error:"Not enough content on this page."};let n=v(t);if(n.length===0)return{success:!1,answer:"",error:"Could not process page content."};let r=`Answer the question based on the context. Give a complete answer in 2-3 sentences.
2
-
3
- Context: ${(await T(e,n,3)).join(" ").slice(0,1200)}
4
-
5
- Question: ${e}
6
-
7
- Answer:`,u=(await h(r,{max_new_tokens:120,min_new_tokens:10}))?.[0]?.generated_text?.trim()||"";return u?{success:!0,answer:u}:{success:!0,answer:"I could not find a specific answer on this page."}}catch(t){console.error("yuktai: Transformers RAG error",t);let n=t instanceof Error?t.message:"";return n.includes("Out of memory")||n.includes("memory")?{success:!1,answer:"",error:"Not enough device memory. Try on a device with more RAM or use desktop Chrome with Gemini Nano."}:{success:!1,answer:"",error:n||"Transformers.js error."}}}function P(){try{return typeof WebAssembly<"u"&&typeof Worker<"u"}catch{return!1}}function A(){return f?"ready":l?"loading":"idle"}export{x as a,P as b,A as c};
@@ -1 +0,0 @@
1
- import{a}from"./chunk-3VGU4YGK.mjs";export{a as askPage};
@@ -1 +0,0 @@
1
- import{a,b,c}from"./chunk-XQMQZMAH.mjs";export{a as askPageWithTransformers,c as getModelLoadStatus,b as isTransformersSupported};