@sheetxl/query 0.8.0-beta.4 → 0.8.0-beta.6

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.
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("@sheetxl/sdk");var t;(t||={}).Mode={Display:`display`,Value:`value`};function n(e){return Number.isFinite(e)?function(e){let t=e.indexOf(`e`);if(t===-1)return e;let n=e.substring(t+2);return`${e.substring(0,t)}E${e[t+1]}${n.length<2?`0`+n:n}`}(String(Number(e.toPrecision(15)))):String(e)}function r(t,r){if(!Number.isFinite(t))return String(t);if(!r||r===`General`)return n(t);try{let i=e.NumberFormat.getEngine().format(r,t)?.text;return i?i.trim():n(t)}catch{return n(t)}}function i(e,n){let r=n===t.Mode.Value,i=e.getText({hideStringPrefix:!0,useFormattingCategory:r});return i?{match:i,display:e.getText({useFormattingCategory:r})}:null}function a(t){if(t==null)return null;if(typeof t==`string`)return{match:t,display:`'${t}`};if(typeof t==`boolean`){let e=t?`TRUE`:`FALSE`;return{match:e,display:e}}if(typeof t==`number`){let e=n(t);return{match:e,display:e}}if(e.FormulaError.isError(t)){let e=t.getLabel();return{match:e,display:e}}let r=t.toString();return{match:r,display:r}}var o=[`display`,`value`,`raw`,`formula`,`hyperlink`,`numberFormat`,`comment`,`shape`,`chart`,`name`],s=[`display`,`value`,`formula`,`comment`,`shape`,`chart`,`name`],c=(e,t)=>e<=t+3?e:t,l=e=>{if(!e)return null;let t=String(e.toHex?.()??``);if(!t)return e.toString();let n=/^#FF/i.test(t)&&t.length===9?`#${t.slice(3)}`:t,r=e.toString();if(!r)return n;let i=r.toLowerCase().replace(/^#/,``);return i===n.slice(1).toLowerCase()||i===t.slice(1).toLowerCase()?n:`${n} (${r.replace(/\d+\.\d{4,}/g,e=>String(parseFloat(Number(e).toFixed(2))))})`},u=t=>{let n=t.getFill(),r=n.getType();if(r===e.IFill.Type.None)return null;if(r===e.IFill.Type.Pattern){let t=n,r=t.getPatternType();if(r===e.IFill.BuiltInSheetPattern.None)return null;let i=l(t.getForeground());if(r===e.IFill.BuiltInSheetPattern.Solid)return i?`solid ${i}`:`solid`;let a=l(t.getBackground());return[`${r} pattern`,i,a?`on ${a}`:null].filter(Boolean).join(` `)}let i=l(n.getColor?.());return i?`${r} ${i}`:r},d=e=>{let t=p(e);return t.length>0?t.join(` · `):null},f=new Set([`top`,`left`,`bottom`,`right`]),p=e=>{let t=e.getBorders(),n=[[`top`,t.getTop()],[`left`,t.getLeft()],[`bottom`,t.getBottom()],[`right`,t.getRight()],[`horizontal`,t.getHorizontal()],[`vertical`,t.getVertical()],[`diagonalUp`,t.getDiagonalUp()],[`diagonalDown`,t.getDiagonalDown()]],r=new Map;for(let[e,t]of n){let n=t?.getStyle?.();if(!n||n===`none`)continue;let i=l(t?.getColor?.()),a=i?`${n} ${i}`:n,o=r.get(a);o?o.push(e):r.set(a,[e])}let i=[];for(let[e,t]of r){let n=t.length===4&&t.every(e=>f.has(e));i.push(`${n?`outline`:t.join(`+`)} ${e}`)}return i},m=e=>{let t=e.getNumberFormat();return t&&t!==`General`?t:null},h=(e,t)=>{let n=e.getAlignment(),r=t.getAlignment(),i=[];return n.getHorizontal()!==r.getHorizontal()&&i.push(`h ${n.getHorizontal()}`),n.getVertical()!==r.getVertical()&&i.push(`v ${n.getVertical()}`),n.getOverflow()!==r.getOverflow()&&i.push(n.getOverflow()),n.getIndent()!==r.getIndent()&&i.push(`indent ${n.getIndent()}`),n.getRotation()!==r.getRotation()&&i.push(`rotation ${n.getRotation()}`),i.length>0?i.join(` · `):null},g=(e,t)=>{let n=e.getFont(),r=t.getFont(),i=[];n.getBold()!==r.getBold()&&i.push(n.getBold()?`bold`:`not bold`),n.getItalic()!==r.getItalic()&&i.push(n.getItalic()?`italic`:`not italic`),n.getUnderline()!==r.getUnderline()&&i.push(`underline ${n.getUnderline()}`),n.getStrike()!==r.getStrike()&&i.push(n.getStrike()?`strike`:`not strike`),n.getSize()!==r.getSize()&&i.push(`${n.getSize()}pt`),n.getFamily()!==r.getFamily()&&i.push(n.getFamily());let a=l(n.getColor());return a!==l(r.getColor())&&i.push(a??`no color`),i.length>0?i.join(` · `):null},_=e.ICellRange.Feature;function v(t,n,r){let{rowIndex:i,colIndex:a}=n,o=r===`row`,s=o?a:i;if(s===0)return null;let c=t.getRange({rowStart:i,rowEnd:i,colStart:a,colEnd:a}).getSurrounding({contentOnly:!0}).getCoords(),l=o?c.colStart:c.rowStart;if(l<s){let e=b(t,o?i:l,o?l:a);if(e)return e}let u=o?t.getRange({rowStart:i,rowEnd:i,colStart:0,colEnd:a-1}):t.getRange({rowStart:0,rowEnd:i-1,colStart:a,colEnd:a});for(let n of u.entries({features:[_.Contentful],axis:o?e.IRange.Axis.Column:e.IRange.Axis.Row,reverse:!0})){if(n.context.getType()!==e.ScalarType.String)continue;let r=n.context.getCoords();return b(t,r.rowIndex,r.colIndex)}return null}var y=e=>e?`${JSON.stringify(e.text)} (${e.address})`:null;function b(n,r,a){let o=n.getRange({rowStart:r,rowEnd:r,colStart:a,colEnd:a}).getCell();if(o.getType()!==e.ScalarType.String)return null;let s=i(o,t.Mode.Display)?.match;return s?{text:s,address:o.getAddress()}:null}function x(e){let t=e,n=``;do n=String.fromCharCode(65+t%26)+n,t=Math.floor(t/26)-1;while(t>=0);return n}var S=e.ICellRange.Feature;function C(e,n){let r=n?.maxSeries??24,a=n?.maxProfileCells??2e4,o=n?.maxCategories??3,s=e.getRowCount(),c=e.getColumnCount();if(s===1&&c===1)return{shape:`cell`,summary:i(e.getCell(),t.Mode.Display)?.display??`(blank)`,series:[]};let l=e.getRange(),u=l.getCoords(),d=s>=c;if(s===1||c===1)return{shape:`list`,summary:ce(l,o),series:[]};let f=ee(e,d),p=d?c:s,m=d?null:`by row`,h=f.present&&f.inside,g=d&&h?u.rowStart+1:u.rowStart,_=!d&&h?u.colStart+1:u.colStart,v=re(l,d,d?g:_,a),y=d&&v?v.start-1:u.rowEnd,b=!d&&v?v.start-1:u.colEnd,x=y-g+1,S=b-_+1,C=x*S>a,te=C&&d?Math.max(1,Math.floor(a/Math.max(1,S))):x,ne=C&&!d?Math.max(1,Math.floor(a/Math.max(1,x))):S,ie=Math.min(y,g+te-1),ae=Math.min(b,_+ne-1),w=Math.min(p,r),T=[],oe=[];for(let t=0;t<w;t++){let n=d?l.getRangeAt(g,u.colStart+t,ie,u.colStart+t):l.getRangeAt(u.rowStart+t,_,u.rowStart+t,ae);T.push(se(e,d,t,f.names)),oe.push(ce(n,o))}let le=T.length?Math.max(...T.map(e=>e.length)):0,E=T.map((e,t)=>`${e.padEnd(le)} ${oe[t]}`);p>w&&E.push(`…${p-w} more ${d?`columns`:`rows`} not profiled · read them with getStats()`);let D=[m,f.note,v?.note];return C&&D.push(`profiled from the first ${d?`${te} rows`:`${ne} columns`} of ${d?x:S}`),{shape:f.present?`table`:`block`,summary:D.filter(Boolean).join(` · `),series:E}}function ee(e,t){let n=e.getRange(),r=n.getCoords(),i=e.getCell().getTable();if(i){let e=i.getColumns().map(e=>e.getName()),n=i.getRange().getCoords();return{present:!0,inside:!0,note:`${n.rowStart===r.rowStart&&n.rowEnd===r.rowEnd&&n.colStart===r.colStart&&n.colEnd===r.colEnd?``:`part of `}table ${i.getName()}`,names:t?e:null}}let a=t?r.rowStart+1:r.colStart+1,o=T(t?n.getRangeAt(a,r.colStart,r.rowEnd,r.colEnd):n.getRangeAt(r.rowStart,a,r.rowEnd,r.colEnd)),s=t?n.getRangeAt(r.rowStart,r.colStart,r.rowStart,r.colEnd):n.getRangeAt(r.rowStart,r.colStart,r.rowEnd,r.colStart);if(T(s)&&!o)return{present:!0,inside:!0,note:`header `+(t?`row ${r.rowStart+1}`:`column ${x(r.colStart)}`),names:oe(s,e,t)};let c=(t?r.rowStart:r.colStart)-1;if(c>=0&&!T(n)){let i=t?n.getRangeAt(c,r.colStart,c,r.colEnd):n.getRangeAt(r.rowStart,c,r.rowEnd,c);if(T(i))return{present:!0,inside:!1,note:`header ${t?`row ${c+1}`:`column ${x(c)}`} (above this block)`,names:oe(i,e,t)}}return{present:!1,inside:!1,note:`no header detected`,names:null}}var te=3;function ne(e,t=2e4){let n=e.getRowCount(),r=e.getColumnCount();if(n<2||r<2)return null;let i=n>=r,a=e.getCoords(),o=ee({getRowCount:()=>n,getColumnCount:()=>r,getCell:()=>e.getCell(),getRange:()=>e},i),s=o.present&&o.inside;return re(e,i,(i?a.rowStart:a.colStart)+ +!!s,t)}function re(e,t,n,r){let i=e.getCoords(),a=t?i.rowEnd:i.colEnd,o=t?i.colStart:i.rowStart,s=t?i.colEnd:i.rowEnd,c,l=-1,u=e.getCell().getTable(),d=t&&!!u?.isShowTotals()&&u.getRange().getCoords().rowEnd===i.rowEnd;if(d)l=a;else{if(e.getRowCount()*e.getColumnCount()>r)return null;let u=e.getValues(),d=(e,n)=>t?u[e-i.rowStart][n-i.colStart]:u[n-i.rowStart][e-i.colStart],f=s-o+1,p=Array(f).fill(0),m=Array(f).fill(!1);for(let r=n;r<=a;r++){if(r-n>=2){let n=ie(f,e=>d(r,o+e),p,m,e=>t?`${x(o+e)}${r+1}`:`${x(r)}${o+e+1}`);if(n.matches>=2&&2*n.matches>n.candidates){let i=t?e.getRangeAt(r,o,r,s):e.getRangeAt(o,r,s,r);l=r,c={...n,byColumn:t,typed:(i.getCounts([S.Formula])[S.Formula]??0)===0};break}}for(let e=0;e<f;e++){let t=d(r,o+e);typeof t==`number`&&(p[e]+=t,m[e]=!0)}}if(l<0)return null}let f=e.getSheet(),p=[];for(let n=l;n<=a;n++){let r=t?{rowIndex:n,colIndex:i.colStart}:{rowIndex:i.rowStart,colIndex:n},a=w(e,r)??v(f,r,t?`row`:`column`);p.push({index:n,label:a,...n===l&&c?{sums:c}:{}})}let m=e=>t?String(e+1):x(e),h=l===a?`${t?`row`:`column`} ${m(l)}`:`${t?`rows`:`columns`} ${m(l)}:${m(a)}`,g=p.slice(0,te).map(e=>[m(e.index),e.label?JSON.stringify(e.label.text):null,e.sums?ae(e.sums):e.index===l&&d?`table totals`:null].filter(Boolean).join(` `)),_=p.length-g.length;return{byColumn:t,start:l,lines:p,note:`${h} not profiled: ${g.join(` · `)}${_>0?` · +${_} more`:``}`}}function ie(e,t,r,i,a){let o=0,s=0,c=[];for(let l=0;l<e;l++){if(!i[l])continue;s++;let e=t(l),u=r[l];typeof e==`number`&&Math.abs(e-u)<=1e-9*Math.max(1,Math.abs(u))?o++:typeof e==`number`?c.push(`${a(l)} ${n(e)} ≠ Σ ${n(u)}`):c.push(`${a(l)} ${e==null?`blank`:typeof e==`string`?`text`:String(e)}`)}return{matches:o,candidates:s,misses:c}}function ae(e){let t=e.misses.slice(0,3),n=e.misses.length-t.length,r=t.length>0?`; ${t.join(`, `)}${n>0?`, +${n} more`:``}`:``;return`${e.typed?`typed, `:``}= Σ ${e.byColumn?`above`:`to the left`} (${e.matches} of ${e.candidates}${r})`}function w(n,r){let a=n.getRangeAt(r.rowIndex,r.colIndex).getCell();if(a.getType()!==e.ScalarType.String)return null;let o=i(a,t.Mode.Display)?.match;return o?{text:o,address:a.getAddress()}:null}function T(t){let n=t.getStats({onError:`ignore`}),r=n.getCount();return r>0&&(n.getTypedCounts()[e.ScalarType.String]??0)===r}function oe(e,n,r){let a=n.getRange().getCoords(),o=e.getCoords(),s=r?a.colEnd-a.colStart+1:a.rowEnd-a.rowStart+1,c=[];for(let n=0;n<s;n++){let s=r?e.getRangeAt(o.rowStart,a.colStart+n).getCell():e.getRangeAt(a.rowStart+n,o.colStart).getCell();c.push(i(s,t.Mode.Display)?.match??``)}return c}function se(e,t,n,r){let i=e.getRange().getCoords(),a=t?x(i.colStart+n):String(i.rowStart+n+1),o=r?.[n];return o?`${a} ${o}`:a}function ce(t,n=3){let r=t.getStats({onError:`ignore`}),i=r.getTypedCounts(),a=r.getCount(),o=r.getSize(),s=o-a;if(a===0)return`${o} cells, all blank`;let c=t.getCounts([S.Formula])[S.Formula]??0,l=E(t),u=i[e.ScalarType.Number]??0,d=i[e.ScalarType.String]??0,f=i[e.ScalarType.Error]??0,p=[String(a)],m=!1;if(c===a){let e=[...t.getRegions(S.Formula)];if(e.length===1){let t=e[0].getCell().getFormulaText();p.push(`formula`,t||`(uniform)`)}else p.push(`formula`,`${e.length} distinct`)}else if(l===a)p.push(`date`,ue(r,D(t).format));else if(u===a){let e=D(t);p.push(`number`,ue(r,e.format),...de(r,e))}else if(d===a)p.push(`text`,fe(r,n));else{let t=[u?`number ${u}`:null,d?`text ${d}`:null,i[e.ScalarType.Boolean]?`boolean ${i[e.ScalarType.Boolean]}`:null,f?`error ${f}`:null].filter(Boolean);p.push(`mixed`,t.join(` · `)),m=!0}let h=[f>0&&!m?`error ${f}`:null,s>0?`${s} blank`:null,c>0&&c!==a?`${c} formula`:null].filter(Boolean),g=p.filter(Boolean).join(` `);return h.length?`${g} · ${h.join(` · `)}`:g}function le(t,n=3){let r=t.getStats({onError:`ignore`}),i=r.getTypedCounts(),a=[],o=i[e.ScalarType.Number]??0;if(o>0){let e=D(t),n=[ue(r,e.format),...de(r,e)].filter(Boolean);a.push(`Number: ${o} ${n.join(` `)}`.trimEnd())}let s=i[e.ScalarType.String]??0;if(s>0){let e=fe(r,n,e=>typeof e==`string`);a.push(`String: ${s} ${e}`.trimEnd())}let c=i[e.ScalarType.Boolean]??0;if(c>0){let e=fe(r,n,e=>typeof e==`boolean`);a.push(`Boolean: ${c} ${e}`.trimEnd())}return a}function E(t){let n=0;return t.forEach((t,r)=>{r.getInteropType()===e.InteropScalarType.Date&&n++}),n}function D(t){let n=t=>t.getStats({onError:`ignore`}).getTypedCounts()[e.ScalarType.Number]??0,r=new Map,i=0;for(let e of t.getRegions(S.NumberFormat)){let t=e.getRange().getStyle().getNumberFormat(),a=n(e.getRange());i+=a,t&&a>0&&r.set(t,(r.get(t)??0)+a)}let a=n(t)-i;a>0&&r.set(`General`,(r.get(`General`)??0)+a);let o=[...r].sort((e,t)=>t[1]-e[1]||Number(t[0]===`General`)-Number(e[0]===`General`));if(o.length===0)return{format:null,mixed:null};let s=e.NumberFormat.getEngine(),c=e=>{if(e===`General`)return`1`;let t=s.getFormatInfo(e);return t?`${t.isDate?`date`:t.scale}`:`1`},l=o[0][0];return o.every(([e])=>c(e)===c(l))?{format:l===`General`?null:l,mixed:null}:{format:null,mixed:o.map(([e,t])=>`${e} ${t}`).join(` · `)}}function ue(e,t){let n=e.getAggregates({onError:`ignore`});if(n.min===null||n.max===null)return``;let i=r(n.min,t),a=r(n.max,t);return i===a?i:`${i} … ${a}`}function de(e,{format:t,mixed:n}){if(n)return[`mixed formats (${n})`];let i=e.getAggregates({onError:`ignore`}),a=[];return i.sum!==null&&a.push(`Σ ${r(i.sum,t)}`),i.average!==null&&a.push(`x̄ ${r(i.average,t)}`),a}function fe(e,t,n){let r=e.getFrequencies(n?{filterFn:n}:void 0),i=r.getUniqueCount();if(i===0)return``;if(i===r.getTotalCount())return`${i} distinct, no repeats`;let a=Array.from(r.getValueCounts()).slice(0,t);return`${i} unique (${a.map(([e,t])=>`${e} ${t}`).join(` · `)}${i>a.length?` · …`:``})`}var O=e.ICellRange.Feature,pe=e=>(e.rowEnd-e.rowStart+1)*(e.colEnd-e.colStart+1),me=(e,t)=>{let n=Math.min(e.rowEnd,t.rowEnd)-Math.max(e.rowStart,t.rowStart)+1;if(n<=0)return 0;let r=Math.min(e.colEnd,t.colEnd)-Math.max(e.colStart,t.colStart)+1;return r<=0?0:n*r},he=e=>e.toLocaleString(`en-US`),ge=(e,t)=>{let n=`×${he(e.content)}`;return t===`times`||e.styled===e.content?n:`${n} (+${he(e.styled-e.content)} blank)`},_e=t=>{if(t.length===0)return``;let n=e.AddressUtils.rangeToString(t[0]);if(t.length===1)return n;let r=t.length-1;return`${n}, +${r} block${r===1?``:`s`}`};function k(e,t){let n=t?.manyDistinct??20,{sorted:r,top:i,rare:a,more:o}=ve(e,t);if(r.length===0)return``;let s=e=>((e,t)=>{let n=_e(e.blocks);return`${e.label===t?.hideLabel?``:`${e.label} `}${ge(e,t?.countStyle??`cells`)}${n?` ${n}`:``}`})(e,t);if(o===0)return r.map(s).join(` · `);let c=r.reduce((e,t)=>e+t.content,0),l=c>0?r[0].content/c:0,u=[],d=r.length>n?`${r.length} distinct${l<.5?`, no convention`:``}; largest `:``;return u.push(d+i.map(s).join(` · `)),a.length>0&&u.push(`rarest ${a.map(s).join(` · `)}`),u.push(`+${o} more${t?.recovery?` (${t.recovery})`:``}`),u.join(` · `)}function ve(e,t){let n=t?.maxValues??8,r=[...e].sort((e,t)=>t.content-e.content||t.styled-e.styled||(e.label<t.label?-1:1));if(r.length<=n)return{sorted:r,top:r,rare:[],more:0};let i=Math.max(1,Math.floor(n/2)),a=r.slice(0,i),o=[];for(let e=r.length-1;e>=i&&o.length<n-i;e--)r[e].content>0&&o.push(r[e]);return o.reverse(),{sorted:r,top:a,rare:o,more:r.length-a.length-o.length}}var ye=[{name:`family`,project:(e,t)=>A(e.getFont().getFamily(),t?.getFont().getFamily())},{name:`size`,project:(e,t)=>A(e.getFont().getSize(),t?.getFont().getSize(),e=>`${e}pt`)},{name:`bold`,project:(e,t)=>A(e.getFont().getBold(),t?.getFont().getBold()??!1,e=>e?`bold`:`not bold`)},{name:`italic`,project:(e,t)=>A(e.getFont().getItalic(),t?.getFont().getItalic()??!1,e=>e?`italic`:`not italic`)},{name:`underline`,project:(e,t)=>A(e.getFont().getUnderline(),t?.getFont().getUnderline(),e=>String(e))},{name:`strike`,project:(e,t)=>A(e.getFont().getStrike(),t?.getFont().getStrike()??!1,e=>e?`strike`:`not strike`)},{name:`color`,project:(e,t)=>A(l(e.getFont().getColor()),t?l(t.getFont().getColor()):null)}],be=e=>De(e)??`Custom`,xe={name:`category`,project:e=>{let t=m(e);return t===null?null:be(t)}},Se={name:`format`,project:e=>m(e)},Ce=[xe,Se],we=[{name:`color`,project:e=>u(e)}],Te=[{name:`edges`,project:e=>d(e)}],Ee=[{name:`h`,ambiguous:!0,project:(e,t)=>A(e.getAlignment().getHorizontal(),t?.getAlignment().getHorizontal())},{name:`v`,ambiguous:!0,project:(e,t)=>A(e.getAlignment().getVertical(),t?.getAlignment().getVertical())},{name:`overflow`,project:(e,t)=>A(e.getAlignment().getOverflow(),t?.getAlignment().getOverflow())},{name:`indent`,project:(e,t)=>A(e.getAlignment().getIndent(),t?.getAlignment().getIndent()??0,e=>`indent ${e}`)},{name:`rotation`,project:(e,t)=>A(e.getAlignment().getRotation(),t?.getAlignment().getRotation()??0,e=>`rotation ${e}`)}];function A(e,t,n=String){return e==null||t!==void 0&&e===t?null:n(e)}function De(t){if(!t||t===`General`)return null;let n=e.NumberFormat.Builder.parse(t);if(n.category===`General`)return null;let r=n.decimalPlaces;return r==null?n.category:`${n.category} ${r}dp`}var Oe={[O.Font]:ye,[O.NumberFormat]:Ce,[O.Fill]:we,[O.Borders]:Te,[O.Alignment]:Ee},ke=e=>e in Oe;function Ae(e,t,n,r){let i=Oe[t];if(!i)return null;let a=e.getEntireCoords(),o=e.getUsedRange()?.getCoords()??null,s=[...e.getEntireRange().getRegions(t)];if(s.length===0)return null;let c=r?.content??(o?[...e.getEntireRange().getRegions(O.Contentful)].map(e=>e.getCoords()):[]),l=e=>c.reduce((t,n)=>t+me(e,n),0),u=e=>o?me(e,o):0,d=e=>{let t=e.getRange().getStyle(),r=[];for(let e of i){let i=e.project(t,n);i!==null&&r.push(e.ambiguous?`${e.name} ${i}`:i)}return r.join(` · `)},f=new Set,p=new Map;for(let e of s)p.set(e,e.getRange().getStyle()),f.add(d(e));let m=a.rowEnd-a.rowStart+1,h=a.colEnd-a.colStart+1,g=[],_=[],v=[];for(let e of s){let t=e.getCoords();2*(t.rowEnd-t.rowStart+1)>m?g.push(e):2*(t.colEnd-t.colStart+1)>h?_.push(e):v.push(e)}let y=[];y.push(...Le(`columns`,g,d,a,!0)),y.push(...Le(`rows`,_,d,a,!1));let b=v.reduce((e,t)=>e+u(t.getCoords()),0),x=e=>{let t=[];for(let r of v){let i=e.project(p.get(r),n);i!==null&&t.push({...r.getCoords(),key:i,label:i})}let r=new Map;for(let e of function(e){let t=[...e];if(t.length<=1)return t;let n=!0,r=0;for(;r<2;){let e=n;t.sort((t,n)=>t.key<n.key?-1:t.key>n.key?1:e?t.rowStart-n.rowStart||t.rowEnd-n.rowEnd||t.colStart-n.colStart:t.colStart-n.colStart||t.colEnd-n.colEnd||t.rowStart-n.rowStart);let i=[],a=!1;for(let n of t){let t=i[i.length-1];t&&t.key===n.key&&(e?t.rowStart===n.rowStart&&t.rowEnd===n.rowEnd&&t.colEnd+1===n.colStart:t.colStart===n.colStart&&t.colEnd===n.colEnd&&t.rowEnd+1===n.rowStart)?(i[i.length-1]={...t,colEnd:e?n.colEnd:t.colEnd,rowEnd:e?t.rowEnd:n.rowEnd},a=!0):i.push(n)}t=i,r=a?0:r+1,n=!n}return t}(t)){let t=r.get(e.key)??{label:e.label,content:0,styled:0,blocks:[]};t.content+=l(e),t.styled+=u(e),t.blocks.push(e),r.set(e.key,t)}return[...r.values()].map(e=>({...e,blocks:e.blocks.sort((e,t)=>pe(t)-pe(e))}))},S=[];if(t===O.NumberFormat)S.push(...function(e,t,n){let{top:r,rare:i,more:a}=ve(e,n),o=[],s=-1;for(let e of[...r,...i]){e===i[0]&&(s=o.length);let n=ve(t.filter(t=>be(t.label)===e.label),{maxValues:1/0}).sorted,r=n.length===1;if(o.push([e.label,ge(e,`cells`),_e(e.blocks),r?n[0].label:`${n.length} formats`]),!r){for(let e of n.slice(0,Ie))o.push([``,ge(e,`cells`),_e(e.blocks),e.label]);n.length>Ie&&o.push([``,``,``,`…and ${n.length-Ie} more`])}}let c=[0,1,2].map(e=>Math.max(...o.map(t=>t[e].length))),l=o.map(e=>`${e[0].padEnd(c[0])} ${e[1].padEnd(c[1])} ${e[2].padEnd(c[2])} ${e[3]}`.trimEnd());return a>0&&l.splice(s<0?l.length:s,0,`…and ${a} more${n?.recovery?` · ${n.recovery}`:``}`),l}(x(xe),x(Se),r));else for(let e of i){let t=x(e);if(t.length===0)continue;let n=k(t,{...r,hideLabel:e.name});n.length<=Pe?S.push(`${e.name.padEnd(10)}${n}`):S.push(...Fe(e.name,t,r))}return{distinct:f.size,cells:b,normal:n?Ne(t,n):null,tiers:y,attributes:S}}function je(e,t){if(e.length===0)return null;let n=new Map,r=new Map,i=0;for(let t of e){let e=t.getRowCount()*t.getColumnCount(),a=t.getCell(),o=a.getFormulaText({r1c1:!0})??``,s=n.get(o)??{label:o,cells:0,blocks:[]};s.cells+=e,s.blocks.push(t.getCoords()),n.set(o,s);let c=new Set;for(let e of a.getFormula()?.getTokens()??[]){if(e.type!==`function`)continue;let t=String(e.value??e.text??``).toUpperCase();t&&c.add(t)}c.size===0&&(i+=e);for(let t of c)r.set(t,(r.get(t)??0)+e)}let a={...t,countStyle:`times`},o=[...n.values()].map(e=>({label:e.label,content:e.cells,styled:e.cells,blocks:e.blocks.sort((e,t)=>pe(t)-pe(e))})),s=[...r.entries()].map(([e,t])=>({label:e,content:t,styled:t,blocks:[]}));return i>0&&s.push({label:`no function`,content:i,styled:i,blocks:[]}),{distinct:n.size,lines:[`${`distinct`.padEnd(10)}${k(o,a)}`,`${`functions`.padEnd(10)}${k(s,a)}`]}}function Me(e,t){let n=e.getStats({onError:`ignore`}).getTypedCounts(),r=new Map,i=[[`number`,`number`],[`string`,`text`],[`boolean`,`boolean`],[`error`,`error`],[`richData`,`richData`]];for(let[e,t]of i){let i=n[e]??0;i>0&&r.set(t,i)}let a=E(e),o=0;for(let e of t){let t=e.getRange().getStats({onError:`ignore`}).getTypedCounts();o+=e.getRowCount()*e.getColumnCount();for(let[e,n]of i){let i=t[e]??0;i>0&&r.set(n,(r.get(n)??0)-i)}a>0&&(t.number??0)>0&&(a-=E(e.getRange()))}return a>0&&(r.set(`date`,a),r.set(`number`,(r.get(`number`)??0)-a)),o>0&&r.set(`formula`,o),[...r.entries()].filter(([,e])=>e>0).sort((e,t)=>t[1]-e[1])}function Ne(e,t){switch(e){case O.Font:return function(e){let t=e.getFont(),n=[t.getFamily(),`${t.getSize()}pt`],r=l(t.getColor());return r&&n.push(r),t.getBold()&&n.push(`bold`),t.getItalic()&&n.push(`italic`),n.join(` · `)}(t);case O.NumberFormat:{let e=m(t);return e===null?null:`${be(e)} ${e}`}case O.Fill:return u(t);case O.Borders:return d(t);case O.Alignment:{let e=t.getAlignment(),n=[];return e.getHorizontal()!==`general`&&n.push(`h ${e.getHorizontal()}`),e.getVertical()!==`bottom`&&n.push(`v ${e.getVertical()}`),e.getOverflow()!==`visible`&&n.push(String(e.getOverflow())),e.getIndent()&&n.push(`indent ${e.getIndent()}`),e.getRotation()&&n.push(`rotation ${e.getRotation()}`),n.length>0?n.join(` · `):null}default:return null}}var Pe=110;function Fe(e,t,n){let{sorted:r,top:i,rare:a,more:o}=ve(t,n),s=[...i,...a].map(e=>[ge(e,`cells`),_e(e.blocks),e.label]),c=[0,1].map(e=>Math.max(...s.map(t=>t[e].length))),l=s.map(e=>` ${e[0].padEnd(c[0])} ${e[1].padEnd(c[1])} ${e[2]}`);o>0&&l.splice(i.length,0,` …and ${o} more${n?.recovery?` · ${n.recovery}`:``}`);let u=n?.manyDistinct??20;return[r.length>u?`${e.padEnd(10)}${r.length} distinct`:e,...l]}var Ie=6;function Le(t,n,r,i,a){if(n.length===0)return[];let o=new Map;for(let e of n){let t=r(e),n=o.get(t);n?n.push(e):o.set(t,[e])}let s=a?i.colEnd-i.colStart+1:i.rowEnd-i.rowStart+1,c=[];for(let[n,r]of o){let i=0,o=r.map(t=>{let n=t.getCoords();i+=a?n.colEnd-n.colStart+1:n.rowEnd-n.rowStart+1;let r=a?e.AddressUtils.runToString(n.colStart,n.colEnd,!0):e.AddressUtils.runToString(n.rowStart,n.rowEnd,!1),o=a?n.rowStart:n.colStart;return o===0?r:`${r} (from ${a?`row ${o+1}`:`column ${e.AddressUtils.runToString(o,o,!0).split(`:`)[0]}`})`});2*i>s?c.push(`${`sheet`.padEnd(10)}${n||`default`}`):c.push(`${t.padEnd(10)}${o.join(`, `)} ${n||`default`}`)}return c}var Re=(e,t)=>e.length>t?`${e.slice(0,t-1)}…`:e,j=e=>{if(!e)return null;if(typeof e!=`string`)return l(e);let t=e.replace(/^#/,``);return/^[0-9a-f]{6}$/i.test(t)||/^[0-9a-f]{8}$/i.test(t)?`#${(t.length===8&&/^ff/i.test(t)?t.slice(2):t).toUpperCase()}`:e},ze=t=>{if(!t)return null;let n=[],r=(t=>{if(!t)return null;if(typeof t==`string`)return j(t);let n=t.type;if(n===e.IFill.Type.None)return null;if(n===e.IFill.Type.Gradient)return`gradient`;let r=t,i=j(r.foreground??t.color??r.background),a=r.patternType;return[a&&a!==e.IFill.BuiltInSheetPattern.Solid?`${a} pattern`:null,i].filter(Boolean).join(` `)||null})(t.fill);r&&n.push(`fill ${r}`);let i=t.font;if(i){let t=[];(i.weight===void 0?!0===i.bold:i.weight>=600)&&t.push(`bold`),(i.style===void 0?!0===i.italic:i.style===e.IFont.Style.Italic)&&t.push(`italic`),i.strike&&t.push(`strike`),i.underline&&i.underline!==e.IFont.UnderlineStyle.None&&t.push(`underline ${i.underline}`);let r=i.color===`auto`?null:j(i.color);r&&t.push(`text ${r}`),t.length>0&&n.push(t.join(` `))}if(t.numberFormat!==void 0&&t.numberFormat!==null){let r=typeof t.numberFormat==`number`?e.NumberFormat.resolve(t.numberFormat):String(t.numberFormat);r&&n.push(r)}return t.borders&&n.push(`border`),t.alignment&&n.push(`alignment`),n.length>0?n.join(` · `):null},Be=t=>{let n=t.type??e.IConditionalFormat.ColorStopType.Num,r=t.value,i=r==null||r===``?n:`${n} ${r}`,a=j(t.color);return a?`${i} ${a}`:i},Ve=t=>{let n=t.type;if(t.type===e.IConditionalFormat.ScaleType.DataBar){let e=j(t.color);e&&(n+=` ${e}`)}else t.type===e.IConditionalFormat.ScaleType.IconSet&&(t.iconSet&&(n+=` ${t.iconSet}`),t.reverse&&(n+=` reversed`),t.icon?.length&&(n+=` custom icons`));let r=(t.stops??[]).map(Be).join(` → `);return r?`${n} · ${r}`:n},He=`(no rule)`,Ue=e=>{let t=e.getScale(),n=[];if(t)n.push(Ve(t));else{n.push(e.getCondition()?.toString()||He);let t=ze(e.getStyle());t&&n.push(`→ ${t}`)}return e.isStopIfTrue()&&n.push(`· stop if true`),Re(n.join(` `),90)},We=e=>{let t=[e.getCondition()?.toString()||He],n=e.getAlertStyle();return n&&t.push(n),e.isIncludeBlanks()&&t.push(`blanks allowed`),e.isHideDropdown()&&t.push(`no dropdown`),Re(t.join(` · `),90)},Ge=t=>{if(t?.getOperator()?.getName()!==e.ICondition.BuiltInOperatorNames.InSet)return null;let n=t.getParam()?.items;if(!n)return null;if(typeof n==`string`)return n;let r=n.slice(0,20).map(e=>a(e)?.match??``),i=n.length-r.length;return i>0?`${r.join(`, `)}, +${i} more`:r.join(`, `)},Ke=(e,t)=>{if(e.length===0)return null;let n=e.slice(0,3).map(t),r=e.length-n.length;return r>0?`${n.join(` | `)} | +${r} more`:n.join(` | `)},M=e.ICellRange.Feature,N=e=>e.getRange().getStyle(),qe=e=>i(e.getCell(),t.Mode.Display)?.display??null;function Je(e,t){switch(e){case M.Formula:return e=>e.getCell().getFormulaText();case M.Error:return qe;case M.CalcError:return e=>{let t=qe(e)??``,n=e.getCell().getFormulaText();return(n?`${t} ${n}`:t).trim()||null};case M.Merge:return qe;case M.Comments:return e=>{let t=e.getCell().getComments()?.getContent();if(typeof t!=`string`)return null;let n=t.replace(/\s+/g,` `).trim();return n?n.length>60?`${n.slice(0,59)}…`:n:null};case M.Spills:return e=>e.getCell().getSpill()?.getValuesRange().toString()??null;case M.Hyperlink:return e=>e.getCell().getHyperlink()?.getAddress()??null;case M.Table:return e=>e.getCell().getTable()?.getName()??null;case M.Fill:return e=>u(N(e));case M.Borders:return e=>d(N(e));case M.NumberFormat:return e=>m(N(e));case M.Alignment:return t?e=>h(N(e),t):void 0;case M.Font:return t?e=>g(N(e),t):void 0;case M.Protection:return e=>{let t=N(e).getProtection(),n=[];return t.isAlwaysUnlocked()&&n.push(`always unlocked`),t.isShowFormulas()||n.push(`formulas hidden`),n.join(`, `)||null};case M.Unlock:return e=>{let t=[];e.getCell().getProtection().isAlwaysUnlocked()&&t.push(`always unlocked`);let n=e.getRange();for(let e of n.getSheet().getProtectedRanges().getItems({address:n}))t.push(`range ${e.getName()}${e.isUnlocked()?``:` · password`}`);return t.join(`, `)||null};case M.Conditionals:return e=>Ke(e.getRange().getConditionalFormats(),Ue);case M.DataValidations:return e=>Ke(e.getRange().getDataValidations(),We);case M.Contentful:return e=>le(e.getRange()).join(` `)||null;default:return}}function Ye(e,t){let n=e.map(e=>Je(e,t)).filter(e=>!!e);if(n.length!==0)return n.length===1?n[0]:e=>{let t=n.map(t=>t(e)).filter(Boolean);return t.length>0?t.join(` `):null}}var P=class{constructor(){this._lines=[],this._headingOffset=0}setHeadingOffset(e){return this._headingOffset=e,this}_heading(e,t){return this._lines.push(`${`#`.repeat(Math.min(6,e+this._headingOffset))} ${t}`),this}h1(e){return this._heading(1,e)}h2(e){return this._heading(2,e)}h3(e){return this._heading(3,e)}text(e){return this._lines.push(e),this}blank(){return this._lines.push(``),this}bullet(e){return typeof e==`string`?this._lines.push(`- ${e}`):e.forEach(e=>this._lines.push(`- ${e}`)),this}fact(e){return typeof e==`string`?this._lines.push(` ${e}`):e.forEach(e=>this._lines.push(` ${e}`)),this}bold(e){return`**${e}**`}codespan(e){return`\`${e}\``}code(e,t=``){return`\`\`\`${t}\n${e}\n\`\`\``}beginFrame(e){return new Xe(this,e)}_addLines(e){this._lines.push(...e)}toLines(){return[...this._lines]}},Xe=class{constructor(e,t){this._parent=e,this._headers=t,this._indexWidth=0,this._rows=[],this._colWidths=t.map(e=>e.length)}addRow(e,t){let n=e.map(e=>typeof e==`string`?{text:e}:e);return n.forEach((e,t)=>{this._colWidths[t]=Math.max(this._colWidths[t]??0,e.text.length)}),t!==void 0&&(this._indexWidth=Math.max(this._indexWidth,t.length)),this._rows.push({index:t,cells:n}),this}endFrame(){return this._parent._addLines(this._renderLines()),this._parent}_columnAlignment(e){let t=0,n=0;for(let r of this._rows){let i=r.cells[e];i&&i.text&&(n++,i.alignment===`right`&&t++)}return n>0&&2*t>=n?`right`:void 0}_renderLines(){let e=this._indexWidth>0?` `.repeat(this._indexWidth):``,t=this._colWidths.map((e,t)=>this._columnAlignment(t)),n=[];if(this._headers.some(e=>e.length>0)){let r=this._headers.map((e,n)=>Ze(e,this._colWidths[n],t[n])).join(` `);n.push(`${e}${e?` `:``}${r}`.trimEnd())}for(let e of this._rows){let t=e.cells.map((e,t)=>Ze(e.text,this._colWidths[t],e.alignment)).join(` `),r=this._indexWidth>0?(e.index??``).padStart(this._indexWidth)+` `:``;n.push(`${r}${t}`.trimEnd())}return n}},Ze=(e,t,n)=>{if(e.length>=t)return e;let r=t-e.length;return n===`right`?e.padStart(t):n===`center`?` `.repeat(Math.floor(r/2))+e+` `.repeat(Math.ceil(r/2)):e.padEnd(t)};function Qe(e,t,n){let r=c(t.length,n?.maxRegions??200),i=t.length>r?t.slice(0,r):t,a=i.length<t.length;if(i.length===0)return void e.text(`None`);let o=i.map(e=>e.toString()),s=Math.max(...o.map(e=>e.length)),l=i.map(e=>`${e.getRowCount()}×${e.getColumnCount()}`),u=Math.max(...l.map(e=>e.length)),d=n?.profile?n?.maxProfiled??12:0;for(let t=0;t<i.length;t++){let r=i[t],a=n?.payload?.(r),c=r.isClipped()?` ✂ clipped at the query edge — the block continues`:``,f=` ${o[t].padEnd(s)} ${l[t].padEnd(u)}`;if(t<d){let t=C(r,n);if(e.text(`${f} ${t.summary}${c}`),!1===n?.series)continue;for(let n of t.series)e.text(` ${n}`);continue}e.text(a?`${f} ${a}${c}`:`${f}${c}`.trimEnd())}if(d>0&&i.length>d&&e.text(` …${i.length-d} more regions listed but not profiled · profile one with getRange().getStats(), or loop them in code`),a){let i=n?.recovery??`narrow the range, or loop the regions in code — this listing is a report, not the query`;e.text(` …truncated at ${r} of ${t.length} regions · ${i}`)}}function $e(t,n){let r=[...t],i=t.getFeatures(),a=i.join(`, `),o=i.length===1&&i[0]===e.ICellRange.Feature.Contentful,s=t.getRange().getSheet().getWorkbook()?.getStyles().getNormal()??null,c=new P;return c.h1(`Regions — ${a} (${r.length})`),Qe(c,r,{...n,profile:o,payload:o?void 0:Ye(i,s)}),c.toLines().join(`
2
2
  `).trimEnd()}function et(e,t=[]){let n=[...t],r=e.getDescription();r&&n.push([`description`,r]),n.push([`columns`,e.getColumns().map(e=>e.getName()).join(`, `)]),n.push([`headers`,e.isShowHeaders()?`shown`:`hidden`]),n.push([`totals`,e.isShowTotals()?`shown`:`hidden`]);let i=Math.max(10,...n.map(([e])=>e.length+2));return n.map(([e,t])=>`${e.padEnd(i)}${t}`)}function tt(e,t,n){if(t.length===0)return;let r=t.map(e=>{let t=e.getRange();return{table:e,address:t.toString(),size:`${t.getRowCount()}×${t.getColumnCount()}`}}),i=Math.max(...r.map(e=>e.address.length)),a=Math.max(...r.map(e=>e.size.length));e.h2(`Tables (${n} cell${n===1?``:`s`} · ${t.length} table${t.length===1?``:`s`})`);for(let t of r){e.text(` ${t.address.padEnd(i)} ${t.size.padEnd(a)} ${t.table.getName()}`);for(let n of et(t.table))e.text(` ${n}`)}e.blank()}function nt(e){let t=new P;return t.h1(`Table — ${e.getName()}`),t.fact(et(e,[[`range`,lt(e.getRange())]])),t.toLines().join(`
3
- `).trimEnd()}var F=e.ICellRange.Feature,rt=[F.Error,F.CalcError,F.Contentful,F.Formula,F.Spills,F.Merge,F.AutoTable,F.Hyperlink,F.Comments,F.NumberFormat,F.Font,F.Fill,F.Borders,F.Alignment,F.Conditionals,F.DataValidations],it=new Map(Object.entries(F).map(([e,t])=>[t,e])),at=e=>it.get(e)??e;function ot(e){let t=new Map(Object.values(F).map(e=>[e.toLowerCase(),e])),n=[];for(let r of e.split(`,`)){let e=r.trim();if(!e)continue;let i=t.get(e.toLowerCase());if(!i)throw Error(`Unknown feature '${e}'. Features: ${Object.values(F).join(`, `)}.`);n.push(i)}return n}var I=e=>`${e.toString()}, ${e.getRowCount()}×${e.getColumnCount()}`,L=t=>e.AddressUtils.sheetNameToString(t)??`Untitled`,R=e=>`wb.getSheet(${JSON.stringify(e.getSheet().getName())})`,st=e=>(e=>{if(!e.includes(`$`))return e;let t=``,n=!1;for(let r of e){if(r===`'`)n=!n;else if(r===`$`&&!n)continue;t+=r}return t})(e.getAddress()),ct=e=>{let t=st(e);return t.includes(`!`)?t:`${L(e.getSheet().getName())}!${t}`},lt=e=>{let t=e.toString();return`${t.includes(`!`)?t:`${L(e.getSheet().getName())}!${t}`}, ${e.getRowCount()}×${e.getColumnCount()}`};function ut(e,t){let n=Me(t,[...t.getRegions(F.Formula)]),r=t.getStats({onError:`ignore`}).getCount();e.h2(`Kind (${r} cell${r===1?``:`s`} · ${n.length} kind${n.length===1?``:`s`})`);for(let[t,r]of n)e.text(` ${t.padEnd(10)}${r}`);n.length===0&&e.fact(`None`),e.blank()}function dt(e,t,n){let r=t.getSheet().getWorkbook()?.getStyles().getNormal()??null,i=n?.features===void 0?null:new Set(typeof n.features==`string`?[n.features]:n.features),a=rt.filter(e=>!i||i.has(e));if(a.length===0)return;let o=t.getCounts(a),s,c=()=>s??=[...t.getSheet().getEntireRange().getRegions(F.Contentful)].map(e=>e.getCoords());for(let i of a){let a=i===F.Contentful?ft(t):[...t.getRegions(i)];if(a.length===0){let t=r&&i!==F.Font?Ne(i,r):null;t&&(e.h2(`${at(i)} (${pt(0,0)})`),e.text(` ${`normal`.padEnd(10)}${t}`),e.blank());continue}let s=!!n?.profile&&i===F.Contentful,l=`${R(t)}.getRegions(${JSON.stringify(i)})`,u=`${l} lists all ${a.length}`,d=ke(i)?Ae(t.getSheet(),i,r,{recovery:u,content:c()}):null,f=i===F.Formula?je(a,{recovery:u}):null,p=d?`${pt(a.length,d.cells)} · ${d.distinct} distinct`:f?`${pt(a.length,o[i])} · ${f.distinct} distinct`:pt(a.length,o[i]);if(e.h2(`${at(i)} (${p})`),d){d.normal&&e.text(` ${`normal`.padEnd(10)}${d.normal}`);for(let t of d.tiers)e.text(` ${t}`);for(let t of d.attributes)e.text(` ${t}`);e.text(` ${`regions`.padEnd(10)}${l}`),e.blank()}else{if(f)for(let t of f.lines)e.text(` ${t}`);i===F.Contentful&&a.sort((e,t)=>t.getRowCount()*t.getColumnCount()-e.getRowCount()*e.getColumnCount()),Qe(e,a,{maxRegions:n?.maxRegions,maxProfiled:n?.maxProfiled,profile:s,series:!1,payload:s?void 0:Je(i,r),recovery:u}),e.blank()}}}var ft=e=>[...e.getRegions([F.Contentful,F.Table])].filter(e=>e.getCell().isContentful()),pt=(e,t)=>`${t} cell${t===1?``:`s`} · ${e} region${e===1?``:`s`}`,mt=(e,t)=>e.length>t?`${e.slice(0,t-1)}…`:e,ht=e=>e.isIFormula?e:null,gt=e=>{let t=e.getScope();return t?`${L(t)}!${e.getName()}`:e.getName()},_t=e=>{let t=e.getAddress();return t.includes(`!`)?t:`${L(e.getSheet().getName())}!${t}`};async function vt(e){let t=ht(e),n;return n=t?`=`+t.getExpression():e.getRanges?.()?.getAddress()??``,t&&await t.isVolatile()&&(n+=` (volatile)`),n.trim()}var yt=new Set([e.FormulaError.Code.Ref,e.FormulaError.Code.Name]),bt=t=>{let n=t.value,r=typeof n==`string`?n:n?.error,i=typeof r==`string`?e.FormulaError.getBuiltInByLabel(r):void 0;return i&&yt.has(i.getCode())?i.getCode()===e.FormulaError.Code.Name?`#NAME?`:`#REF!`:null},xt=new Set,St=e=>{let t=e.value;return typeof t==`object`&&t?.name?t.name:e.text??``};function Ct(e){let t=null;for(let n=0;n<e.length;n++){let r=e[n];if(r.type!==`named`||!r.context)continue;let i=r.context.name?.toUpperCase();if(i!==`LAMBDA`&&(i!==`LET`||r.context.argIndex%2!=0))continue;let a=n+1;for(;a<e.length&&e[a].type===`whitespace`;)a++;if(e[a]?.type!==`separator`)continue;let o=St(r).toLowerCase();o&&(t??=new Set).add(o)}return t??xt}async function z(e,t,n){if(t.length===0)return;let r=new Set;for(let e of n?.symbols??t)r.add(e.getName().toLowerCase());let i=new Map,a=new Set;for(let e of t)i.set(e.getId(),e),e.getScope()&&a.add(e.getName().toLowerCase());let o=await Promise.all(t.map(async e=>{let t=function(e,t){let n=ht(e),r=[];if(n){let e=n.getTokens(),i=null,a=null;for(let n of e){if(n.type===`error`){a??=bt(n);continue}if(n.type!==`named`)continue;let o=St(n);o&&!t.has(o.toLowerCase())&&(i??=Ct(e),i.has(o.toLowerCase())||r.includes(o)||r.push(o))}if(a||r.length>0)return{broken:!0,missing:r,error:r.length>0?`#NAME?: ${r.join(`, `)}`:a};if(!n.isReferenceOnly())return{broken:!1,missing:r,error:``}}let i=null;try{i=e.getRanges?.()??null}catch{return{broken:!0,missing:r,error:`#REF!`}}let a=!i||i.isInvalidAny();return{broken:a,missing:r,error:a?`#REF!`:``}}(e,r),n=ht(e),o=n?await async function(e,t){let n=await e.getDirectDependents(),r=0,i=[],a=new Set,o=[];if(n){let e=n.getCoords(),s=n.getCount();for(let c=0;c<s;c++){let s=n.at(c);if(s.isINamedRange){let e=s;if(a.has(e.getId()))continue;a.add(e.getId());let n=t.get(e.getId());i.push(n?gt(n):e.getName())}else{let t=e[c];r+=(t.rowEnd-t.rowStart+1)*(t.colEnd-t.colStart+1),o.push(_t(s))}}}let s=r+i.length;if(s===0)return{text:`unused`,weight:s};let c=[...i,...o],l=[],u=0;for(let e=0;e<c.length;e++){let t=(l.length>0?2:0)+c[e].length;if(l.length>0&&u+t>60)break;l.push(l.length===0?mt(c[e],60):c[e]),u+=t}let d=c.length-l.length,f=d>0?`, +${d} more`:``;return{text:`${s} · ${l.join(`, `)}${f}`,weight:s}}(n,i):null;o?.weight===0&&!e.getScope()&&a.has(e.getName().toLowerCase())&&(o={...o,text:`unused · shadowed`});let s=e.getComment()??``,c=gt(e);return{name:c,refersTo:await vt(e),dependents:o,hidden:e.isHidden(),comment:mt(s,60),broken:t.broken,error:t.error,sortKey:c.toLowerCase().replace(/'/g,``)}})),s=(e,t)=>{let n=(t.dependents?.weight??0)-(e.dependents?.weight??0);return n===0?e.sortKey.localeCompare(t.sortKey):n},l=[...o.filter(e=>e.broken).sort(s),...o.filter(e=>!e.broken).sort(s)],u=c(l.length,n?.maxNames??200),d=l.length>u?l.slice(0,u):l,f=d.filter(e=>e.broken),p=d.filter(e=>!e.broken);e.h2(`${n?.heading??`Names`} (${o.length})`);let m=(t,n)=>{let r=t.some(e=>e.hidden),i=t.some(e=>e.comment.length>0),a=t.some(e=>e.dependents!==null),o=[`Name`,`Refers To`];n&&o.push(`Error`),a&&o.push(`Dependents`),r&&o.push(`Hidden`),i&&o.push(`Comment`);let s=e.beginFrame(o);for(let e of t){let t=[{text:e.name},{text:e.refersTo}];n&&t.push({text:e.error}),a&&t.push({text:e.dependents?.text??``}),r&&t.push({text:e.hidden?`hidden`:``}),i&&t.push({text:e.comment}),s.addRow(t)}s.endFrame()};if(f.length>0){let t=l.reduce((e,t)=>e+ +!!t.broken,0);e.text(`${t} ${t===1?`does`:`do`} not resolve:`),m(f,!0),e.blank()}if(p.length>0&&m(p,!1),d.length<o.length){let t=n?.recovery??`getByName('Name') renders one in full`;e.text(` …and ${o.length-d.length} more · ${t}`)}e.blank()}function wt(e,t,n){let r=n.getCoords().min,i=[],a=0,o=0;if(n.forEachSpan((e,t)=>{let s=t.getCoords();if(o++,a+=s.max-s.min+1,i.length>=100)return;let c=n.at(s.min-r).getText(),l=n.at(s.max-r).getText();i.push({address:`${c}:${l}`,count:s.max-s.min+1})},{visibility:`hidden`,includeEmpty:!0}),a===0)return;e.h2(`${t} (${a})`);let s=Math.max(...i.map(e=>e.address.length));for(let t of i)e.text(` ${t.address.padEnd(s)} ${t.count}`);o>i.length&&e.text(` …and ${o-i.length} more`),e.blank()}function Tt(e,t,n,r){if(n.length===0)return;let i=n.length>50?n.slice(0,50):n,a=i.map(e=>({address:mt(st(e.getRanges()),40),rule:r(e)}));e.h2(`${t} (${n.length})`);let o=Math.max(...a.map(e=>e.address.length));for(let t of a)e.text(` ${t.address.padEnd(o)} ${t.rule}`.trimEnd());i.length<n.length&&e.text(` …and ${n.length-i.length} more`),e.blank()}function Et(e,t=!1){let n=e.getSheet(),r=e.getCoords(),i=n.getName(),a=[];for(let e of n.getNames().getItems({type:`formula`,includeHidden:!0})??[]){let n=null;try{n=e.getRanges?.()??null}catch{}n?n.getCoords().some(e=>{return(!e.scope||e.scope===i)&&(n=e,(t=r).rowStart<=n.rowEnd&&n.rowStart<=t.rowEnd&&t.colStart<=n.colEnd&&n.colStart<=t.colEnd);var t,n})&&a.push(e):t&&e.getScope()===i&&a.push(e)}return a}async function Dt(e,t){let n=t.getSheet();await z(e,Et(t,!0),{symbols:n.getWorkbook()?.getNames().getItems({includeHidden:!0})??n.getNames().getItems({includeHidden:!0})??[]});let r=t.getColumnHeaders(),i=t.getRowHeaders();wt(e,`Hidden Columns`,r),wt(e,`Hidden Rows`,i);let a=t.getTables();a.length>0&&tt(e,a,t.getCounts([F.Table])[F.Table]??0)}var Ot=`#REF!`,B=e=>{let t=e.getContent();return t.getType()===`chart`&&typeof t.getSeries==`function`?t:null},kt=(t,n)=>`${L(t.getName())}!${e.AddressUtils.rangeToString(n)??``}`,At=(e,t)=>e?kt(e.getSheet(),e.getCoords()):t,V=e=>e.replace(/\s*[\r\n]+\s*/g,` ⏎ `).trim(),jt=(e,t)=>({colStart:Math.min(e.colStart,t.colStart),rowStart:Math.min(e.rowStart,t.rowStart),colEnd:Math.max(e.colEnd,t.colEnd),rowEnd:Math.max(e.rowEnd,t.rowEnd)}),Mt=e=>{if(e.length===0)return null;let t=e[0],n=t.getValuesRange();if(!n)return null;let r=n.getSheet(),i=n.getCoords(),a=e.length===1,o=i.colStart===i.colEnd,s=i.rowStart===i.rowEnd;if(!a&&!o&&!s)return null;let c=o&&s?null:o?`column`:s?`row`:null,l=t.getCategoriesFormula(),u=t.getNameRange(),d=t.getNameFormula()!==null;if(d&&!u?.isSingleCell())return null;let f=i,p=u?.getCoords()??null;for(let n=1;n<e.length;n++){let a=e[n];if(a.getChartType()!==t.getChartType()||a.isSecondaryAxis()!==t.isSecondaryAxis()||a.getCategoriesFormula()!==l)return null;let m=a.getValuesRange();if(!m||m.getSheet()!==r)return null;let h=m.getCoords(),g=h.colStart===f.colStart+1&&h.colEnd===f.colEnd+1&&h.rowStart===i.rowStart&&h.rowEnd===i.rowEnd,_=h.rowStart===f.rowStart+1&&h.rowEnd===f.rowEnd+1&&h.colStart===i.colStart&&h.colEnd===i.colEnd;if(c===null&&(c=g&&o?`column`:_&&s?`row`:null),c===null||(c===`column`?!g:!_)||(f=h,a.getNameFormula()!==null!==d))return null;if(d){let e=a.getNameRange();if(!e?.isSingleCell()||e.getSheet()!==u.getSheet())return null;let t=e.getCoords();if(!(c===`column`?t.colStart===p.colStart+1&&t.rowStart===p.rowStart:t.rowStart===p.rowStart+1&&t.colStart===p.colStart))return null;p=t}}return{values:kt(r,jt(i,f)),by:a?null:c,names:u&&p?kt(u.getSheet(),jt(u.getCoords(),p)):null,categories:At(t.getCategoriesRange(),l)}},Nt=e=>{let t=[],n=[[`name`,e.getNameFormula()],[`values`,e.getValuesFormula()],[`categories`,e.getCategoriesFormula()]];for(let[e,r]of n)r?.includes(Ot)&&t.push(`${e} ${r}`);return t},Pt=e=>{let t=0;for(let n of e)Nt(n).length>0&&t++;return t},Ft=e=>{let t=e.getChartType();return t&&t!==`unknown`?t:null};function It(e){let t=[],n=Ft(e);n&&t.push(n);let r=e.getChartTitle();var i,a;r&&t.push(`"${i=V(r),a=40,i.length>a?`${i.slice(0,a-1)}…`:i}"`);let o=e.getSeries();if(o.length>0){t.push(`${o.length} series`);let n=e.getPivotSource(),r=n?null:Mt(o);n?t.push(`pivot table ${n}`):r&&(t.push(`values ${r.values}`),r.categories&&t.push(`categories ${r.categories}`));let i=Pt(o);i>0&&t.push(`${Ot} in ${i} series`)}return t.length>0?t.join(` · `):null}function Lt(e){let t=[],n=e.getChartTitle();n&&t.push([`title`,`"${V(n)}"`]);let r=e.getSeries();if(r.length===0)return t;let i=e.getPivotSource(),a=i?null:Mt(r);i?t.push([`series`,`${r.length} · from pivot table ${i}`]):a?(t.push([`series`,`${r.length} · ${a.values}${a.by?` by ${a.by}`:``}`]),a.names&&t.push([r.length===1?`name`:`names`,a.names]),a.categories&&t.push([`categories`,a.categories])):t.push([`series`,String(r.length)]);let o=Pt(r);return o>0&&t.push([`broken`,`${Ot} in ${o} series`]),t}var Rt=e=>Ft(e)??``,zt=e=>{let t=e.getTitle(),n=[t?`"${V(t)}"`:`no title`],r=e.getNumberFormat();return r&&r!==`General`&&n.push(`format ${r}`),`${e.getKind()} (${n.join(`, `)})`};function Bt(e,t){let n=Ft(t);e.fact(`Type: chart`+(n?` — ${n}`:``));let r=t.getChartTitle();e.fact(`Title: `+(r?`"${V(r)}"`:`(none)`));let i=t.getSeries(),a=t.getPivotSource();if(a)e.fact(`Series (${i.length}): from pivot table ${a}`);else if(i.length>0){let t=Mt(i);if(t){let n=[`values ${t.values}${t.by?` by ${t.by}`:``}`];t.names&&n.push(`${i.length===1?`name`:`names`} ${t.names}`),t.categories&&n.push(`categories ${t.categories}`),e.fact(`Series (${i.length}): ${n.join(` · `)}`)}else(function(e,t){let n=t.slice(0,c(t.length,12)),r=n.map(e=>{let t=At(e.getValuesRange(),e.getValuesFormula())??`(no values)`,n=At(e.getCategoriesRange(),e.getCategoriesFormula()),r=[`values ${t}`];n&&r.push(`categories ${n}`);let i=At(e.getNameRange(),e.getNameFormula());i&&r.push(`name ${i}`);let a=e.getName();return{name:a?V(a):`(unnamed)`,type:e.isSecondaryAxis()?`${e.getChartType()} · secondary axis`:e.getChartType(),source:r.join(` · `)}});e.fact(`Series (${t.length}):`);let i=Math.max(...r.map(e=>e.name.length)),a=Math.max(...r.map(e=>e.type.length));for(let t of r)e.text(` ${t.name.padEnd(i)} ${t.type.padEnd(a)} ${t.source}`);n.length<t.length&&e.text(` …and ${t.length-n.length} more · getContent().getSeries() on this movable lists every one`)})(e,i)}let o=t.getAxes();o.length>0&&e.fact(`Axes: ${o.map(zt).join(` · `)}`)}var Vt=(e,t)=>e.colStart<=t.colEnd&&t.colStart<=e.colEnd&&e.rowStart<=t.rowEnd&&t.rowStart<=e.rowEnd,Ht=e=>{let t=e.movable.getRange();return`${kt(t.getSheet(),t.getCoords())} "${e.movable.getName()||`(unnamed)`}"${e.direct?``:` (through its dependents)`}`},Ut=(e,t)=>e.length>t?`${e.slice(0,t-1)}…`:e,Wt=e=>e.replace(/[\r\n]+/g,` `).trim(),Gt=e=>e.getShapeType?.()??``,Kt=t=>{let n=t.getRange();return e.AddressUtils.rangeToString(n.getCoords())??n.toString()},qt=(e,t,n)=>{let r=e.replace(/\r\n?|\n/g,` ⏎ `);if(t===null||r.length<=t)return`"${r}"`;let i=r.charCodeAt(t-1),a=i>=55296&&i<=56319?t-1:t;return`"${r.slice(0,a)}…" (+${r.length-a} chars) · full: ${n}`},Jt=({movable:e,text:t})=>qt(t,300,(e=>`${R(e.getRange())}.getRange(${JSON.stringify(Kt(e))}).getMovables()`)(e)),Yt=e=>{let t=e.getContent();return typeof t.getTextFrame==`function`?t.getTextFrame()?.getText()??``:null};function Xt(e){let t=[];for(let n of e){let e=Yt(n)??``;e.trim()!==``&&t.push({movable:n,text:e})}return t.sort((e,t)=>{let n=e.movable.getRange().getCoords(),r=t.movable.getRange().getCoords();return n.rowStart-r.rowStart||n.colStart-r.colStart})}var Zt=e=>e.getType()===`picture`&&e.getResource?.()?.getName()||null,Qt=e=>{let t=e.getName()||`(unnamed)`,n=e.getDescription(),r=B(e);if(r)return Ut([It(r),n?Wt(n):null,t].filter(Boolean).join(` · `),140);let i=e.getContent(),a=[],o=Zt(i);return o&&a.push(o),n&&a.push(Wt(n)),Ut(a.length>0?`${t} — ${a.join(` · `)}`:t,90)},$t=e=>{let t=e.getName()||`(unnamed)`,n=e.getDescription();return Ut(n?`${t} — ${Wt(n)}`:t,90)},en=new Map([[`chart`,`Charts`],[`shape`,`Shapes`],[`picture`,`Pictures`],[`slicer`,`Slicers`]]),tn=e=>en.get(e)??`${e.charAt(0).toUpperCase()}${e.slice(1)}s`;function nn(e){let t=new Map;for(let n of e){let e=n.getContent().getType(),r=t.get(e);r?r.push(n):t.set(e,[n])}let n=new Map;for(let e of en.keys()){let r=t.get(e);r&&n.set(e,r)}for(let[e,r]of t)n.set(e,r);return n}function rn(e,t){for(let[n,r]of nn(t))an(e,n,r)}function an(e,t,n){let r=Xt(n),i=new Map(r.map(e=>[e.movable,e])),a=[...r.map(e=>e.movable),...n.filter(e=>!i.has(e))],o=a.slice(0,c(a.length,50)),s=o.map(e=>{let t=i.get(e),n=B(e);return{address:Kt(e),preset:n?Rt(n):Gt(e.getContent()),summary:n?$t(e):Qt(e),details:n?Lt(n):[],text:t?Jt(t):``,hidden:e.isHidden()?` (hidden)`:``}});e.h2(`${tn(t)} (${n.length}${r.length>0?` · ${r.length} with text`:``})`);let l=Math.max(...s.map(e=>e.address.length)),u=Math.max(...s.map(e=>e.preset.length)),d=Math.min(40,Math.max(0,...s.filter(e=>e.text).map(e=>e.summary.length)));for(let t of s){let n=u>0?`${t.preset.padEnd(u)} `:``,r=t.text?`${t.summary.padEnd(d)} ${t.text}`:t.summary;e.text(` ${t.address.padEnd(l)} ${n}${r}${t.hidden}`.trimEnd());let i=Math.max(10,...t.details.map(([e])=>e.length+2));for(let[n,r]of t.details)e.text(` ${n.padEnd(i)}${r}`)}if(o.length<a.length){let r=`${R(n[0].getRange())}.getMovables().getItems({ type: ${JSON.stringify(t)} })`;e.text(` …and ${a.length-o.length} more · ${r} reports every one in full`)}e.blank()}function on(t){let n=new P,r=t.getRange(),i=t.getContent(),a=i.getType();n.h1(`Movable — ${lt(r)}`),n.blank(),n.fact(`Name: ${t.getName()||`(unnamed)`}`);let o=B(t);o?Bt(n,o):n.fact(`Type: ${a}`);let s=Zt(i);s&&n.fact(`Content: ${s}`);let c=Gt(i);c&&n.fact(`Shape: ${c}`);let l=i.getTextFrame?.();l&&n.fact(`Text: ${qt(l.getText(),null,``)}`);let u=t.getDescription();u&&n.fact(`Alt Text: ${Wt(u)}`),n.fact(`Anchor: ${I(r)}, ${(t=>{switch(t){case e.IAnchored.Type.Absolute:return`absolute — stays put when rows or columns move`;case e.IAnchored.Type.OneCell:return`oneCell — moves with the cells, keeps its size`;default:return`twoCell — moves and resizes with the cells`}})(t.getAnchorType?.())}`),n.fact(`Bounds: ${(e=>{let t=e.getBounds();if(!t)return`not laid out`;let n=e=>Math.round(e);return`${n(t.width)}×${n(t.height)} px at (${n(t.x)}, ${n(t.y)})`})(t)}`),t.isHidden()&&n.fact(`Hidden: true — this object is not visible in the UI`);let d=t.getRotation();return d!==0&&n.fact(`Rotation: ${d}°`),n.fact(`Z-Order: ${t.getZIndex()}`),n.blank(),n.text(`Sheet: ${L(r.getSheet().getName())}`),n.toLines().join(`
4
- `).trimEnd()}var sn=e=>e.getVisibility()===`visible`,cn=(e,t,n)=>{let r=e.getSheets().getItems({visibility:`veryHidden`}),i=t?.trim();if(!i)return r.filter(e=>n||sn(e)).map(e=>({sheet:e,address:null}));let a=/^'(.*)'!(.+)$/.exec(i)??/^([^!]+)!(.+)$/.exec(i);if(a){let[,e,t]=a,n=r.find(t=>t.getName()===e);if(!n)throw Error(`Sheet not found: ${e}`);return[{sheet:n,address:t}]}let o=r.find(e=>e.getName()===i);if(o)return[{sheet:o,address:null}];if(/[*?]/.test(i)){let e=(e=>{let t=e.replace(/[.*+?^${}()|[\]\\]/g,e=>e===`*`?`.*`:e===`?`?`.`:`\\${e}`);return RegExp(`^${t}$`)})(i),t=r.filter(t=>e.test(t.getName())&&(n||sn(t)));if(t.length===0)throw Error(`No sheets match ${JSON.stringify(i)}. Sheets: ${r.map(e=>e.getName()).join(`, `)}`);return t.map(e=>({sheet:e,address:null}))}let s=r.filter(e=>n||sn(e));try{s[0]?.getRange(i)}catch{throw Error(`Unknown scope ${JSON.stringify(i)}: not a sheet name or a range. Sheets: ${r.map(e=>e.getName()).join(`, `)}`)}return s.map(e=>({sheet:e,address:i}))},ln=(e,n)=>{switch(n){case`display`:return i(e,t.Mode.Display);case`value`:return i(e,t.Mode.Value);case`raw`:return a(e.getValue());case`formula`:{let t=e.getFormulaText();return t?{match:t,display:t}:null}case`hyperlink`:{let t=e.getHyperlink()?.getAddress()??null;return t?{match:t,display:t}:null}case`numberFormat`:{let t=e.getStyle().getNumberFormat();return t&&t!==`General`?{match:t,display:t}:null}default:return null}},un=[`hyperlink`,`numberFormat`],H=(e,t)=>t&&t.trim()!==``?[{field:e,text:{match:t,display:t}}]:[],dn=e=>[...H(`comment`,e.getContent()),...e.getReplies().flatMap(e=>H(`comment`,e.getContent()))],fn=(e,t)=>{let n=B(e);if(n)return t.includes(`chart`)?[...H(`chart`,n.getChartTitle()),...n.getAxes().flatMap(e=>H(`chart`,e.getTitle())),...n.getSeries().flatMap(e=>e.getNameFormula()===null?H(`chart`,e.getName()):[]),...H(`chart`,e.getDescription())]:[];let r=Yt(e);return r!==null&&t.includes(`shape`)?[...H(`shape`,r),...H(`shape`,e.getDescription())]:[]},pn=e=>{let t=e.isIFormula?`=${e.getExpression()}`:null,n=t??e.getRanges?.()?.getAddress()??e.getName();return[{field:`name`,text:{match:e.getName(),display:n}},...t?H(`name`,t):[],...H(`name`,e.getComment())]},mn=(e,t)=>e.colStart<=t.colEnd&&t.colStart<=e.colEnd&&e.rowStart<=t.rowEnd&&t.rowStart<=e.rowEnd,hn=(e,t)=>{let n=e.getRanges?.()??null;return t.some(({sheet:t,address:r})=>{if(r===null&&e.getScope()===t.getName())return!0;let i=r===null?null:t.getRange(r).getCoords();for(let e=0;e<(n?.length??0);e++){let r=n.at(e);if(r.getSheet()===t&&(!i||mn(r.getCoords(),i)))return!0}return!1})},gn=(e,t)=>e.rowStart-t.rowStart||e.colStart-t.colStart,_n=(e,t,n)=>{let r=null,i=e=>({range:`${t}!${e.getRange().toString()}`,table:e.getName()});return{resolve(a,o){let s=(e=>e.getTable())(a);if(e===`table`)return s?i(s):void 0;if(r===null){r=[];for(let e of n.getRegions()){let n=e.getCoords();n.rowStart===n.rowEnd&&n.colStart===n.colEnd||r.push({coords:n,address:`${t}!${e.toString()}`})}}let c=r.find(({coords:e})=>o.rowIndex>=e.rowStart&&o.rowIndex<=e.rowEnd&&o.colIndex>=e.colStart&&o.colIndex<=e.colEnd);return c?{range:c.address,...s?{table:s.getName()}:{}}:s?i(s):void 0}}};async function vn(t,n){if(!n.pattern)throw Error(`grep requires a pattern`);let r=n.fields?.length?n.fields:s,i=n.output??`content`,a=n.maxCount??200,o=!0===n.invert,c=!0===n.hidden,l=(e=>{if(e===void 0||!1===e)return null;if(!0===e)return`contentful`;if(e===`contentful`||e===`table`)return e;throw Error(`Invalid context ${JSON.stringify(e)}: expected 'contentful' or 'table'. Context is the enclosing block, not a line count — a grid has no ±N lines.`)})(n.context),u=(e=>{let t=e.fixedStrings?(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`))(e.pattern):e.pattern;e.word&&(t=`(?<!\\w)(?:${t})(?!\\w)`);let n=e.ignoreCase?`iu`:`u`;try{return new RegExp(t,n)}catch{try{return new RegExp(t,n.replace(`u`,``))}catch(t){throw Error(`Invalid regex ${JSON.stringify(e.pattern)}: ${t instanceof Error?t.message:String(t)}. Use fixedStrings (-F) to search for the literal text.`)}}})(n),d=cn(t,n.scope,c),f=!r.some(e=>un.includes(e)),p=r.includes(`display`)&&r.includes(`value`),m=i===`content`||i===`addresses`,h=[],g=[],_=0,v=0,y=0,b=!1,x=e=>{let t=e.filter((t,n)=>u.test(t.text.match)&&e.findIndex(e=>e.field===t.field&&e.text.display===t.text.display&&u.test(e.text.match))===n);return o?t.length===0&&e.length>0?[e[0]]:null:t.length===0?null:i===`addresses`?t.slice(0,1):t},S=(e,t,n,r,i)=>{if(a>0&&_+v>=a)return b=!0,!1;if(e===`cell`?_++:v++,m)for(let e of r)h.push({sheet:t,address:n,field:e.field,text:e.text.display,...i?{context:i}:{}});return!0};for(let{sheet:t,address:n}of d){if(b)continue;let a=t.getName();y++,await t.getCalculation().ready();let o=n===null?t.getUsedRange():t.getRange(n),s=o&&l&&i===`content`?_n(l,a,o):null,u={...n===null?{}:{address:n},...c?{}:{ignoreHidden:!0}},d=new Map;if(r.includes(`comment`))for(let e of t.getComments().getItems(u)){let t=e.getRange().getCoords();d.set(`${t.rowStart}:${t.colStart}`,e)}let m=0;o?.forEach((e,t)=>{if(f&&e==null)return;let n=t.getCell(),i=t.getCoords(),o=[],c;for(let e of r){if(e===`comment`){let e=`${i.rowIndex}:${i.colIndex}`,t=d.get(e);t&&(o.push(...dn(t)),d.delete(e));continue}let t=ln(n,e);e===`display`&&(c=t?.match??null),t!==null&&(e===`value`&&p&&(c===void 0&&(c=ln(n,`display`)?.match??null),t.match===c)||o.push({field:e,text:t}))}let l=x(o);if(!l)return;let u=s?.resolve(n,i);if(!S(`cell`,a,t.getAddress(),l,u))return{break:!0};m++},c?void 0:{ignoreHidden:!0});let h=[...d.values()].map(e=>({comment:e,at:e.getRange().getCoords()})).sort((e,t)=>gn(e.at,t.at));for(let{comment:t,at:n}of h){if(b)break;let r=x(dn(t));if(!r)continue;let i=s?.resolve(t.getRange().getCell(),{rowIndex:n.rowStart,colIndex:n.colStart});S(`cell`,a,e.AddressUtils.rangeToString(n)??t.getRange().toString(),r,i)&&m++}let _=0;if(!b&&(r.includes(`shape`)||r.includes(`chart`))){let n=t.getMovables().getItems(u).filter(e=>c||!e.isHidden()).map(e=>({movable:e,at:e.getRange().getCoords()})).sort((e,t)=>gn(e.at,t.at));for(let{movable:t,at:i}of n){let n=x(fn(t,r));if(n){if(!S(`object`,a,e.AddressUtils.rangeToString(i)??t.getRange().toString(),n))break;_++}}}(m>0||_>0)&&g.push({sheet:a,cells:m,objects:_})}if(!b&&r.includes(`name`)){let e=!!n.scope?.trim(),r=t.getNames().getItems(c?{includeHidden:!0}:void 0)??[];for(let t of r){if(e&&!hn(t,d))continue;let n=x(pn(t));if(n&&!S(`object`,t.getScope()??``,t.getName(),n))break}}return{pattern:n.pattern,fields:r,scope:n.scope?.trim()||`workbook`,matches:h,cellCount:_,objectCount:v,sheets:g,sheetsSearched:y,sheetsMatched:g.length,truncated:b,output:i}}var yn=e=>{let t=e.replace(/\s+/g,` `).trim();return t.length>120?`${t.slice(0,119)}…`:t},bn=e=>e.sheet?`${e.sheet}!${e.address}`:e.address,xn=(e,t)=>`${e} ${t}${e===1?``:`s`}`,Sn=(e,t)=>t>0?`${xn(e,`cell`)} · ${xn(t,`object`)}`:xn(e,`cell`),Cn=(e,t,n,r)=>{let i=t.map(e=>r?bn(e):e.address),a=Math.max(...i.map(e=>e.length)),o=Math.max(...t.map(e=>e.field.length));for(let r=0;r<t.length;r++){let s=t[r];e.push(`${n}${i[r].padEnd(a)} ${s.field.padEnd(o)} ${yn(s.text)}`)}};function wn(e){let{pattern:t,fields:n,scope:r,matches:i,cellCount:a,objectCount:o,sheetsSearched:s,sheetsMatched:c}=e,l=[`grep "${t}" · ${r} · fields ${n.join(`,`)} · ${Sn(a,o)} in ${c} of ${s} ${s===1?`sheet`:`sheets`}`];if(e.output===`count`){for(let t of e.sheets)l.push(` ${t.sheet}: ${t.objects>0?Sn(t.cells,t.objects):t.cells}`);let t=o-e.sheets.reduce((e,t)=>e+t.objects,0);t>0&&l.push(` names: ${t}`)}else if(e.output===`sheets`){for(let t of e.sheets)l.push(` ${t.sheet}`);e.sheets.length===0&&l.push(o>0?` no sheets · names only`:` no matches`)}else if(i.length===0)l.push(` no matches`);else if(e.output===`addresses`)for(let e of i)l.push(` ${bn(e)}`);else{let e=[],t=new Map;for(let n of i){let r=n.context?.range??``,i=t.get(r);i||(i={key:r,heading:n.context?n.context.table?`${n.context.range} · ${n.context.table}`:n.context.range:null,rows:[]},t.set(r,i),e.push(i)),i.rows.push(n)}for(let t of e)t.heading?(l.push(` ${t.heading}`),Cn(l,t.rows,` `,!1)):Cn(l,t.rows,` `,!0)}return e.truncated&&l.push(` …truncated at ${Sn(a,o)} · narrow the pattern, or scope the search to one sheet or range`),l.join(`
3
+ `).trimEnd()}var F=e.ICellRange.Feature,rt=[F.Error,F.CalcError,F.Contentful,F.Formula,F.Spills,F.Merge,F.AutoTable,F.Hyperlink,F.Comments,F.NumberFormat,F.Font,F.Fill,F.Borders,F.Alignment,F.Conditionals,F.DataValidations],it=new Map(Object.entries(F).map(([e,t])=>[t,e])),at=e=>it.get(e)??e;function ot(e){let t=new Map(Object.values(F).map(e=>[e.toLowerCase(),e])),n=[];for(let r of e.split(`,`)){let e=r.trim();if(!e)continue;let i=t.get(e.toLowerCase());if(!i)throw Error(`Unknown feature '${e}'. Features: ${Object.values(F).join(`, `)}.`);n.push(i)}return n}var I=e=>`${e.toString()}, ${e.getRowCount()}×${e.getColumnCount()}`,L=t=>e.AddressUtils.sheetNameToString(t)??`Untitled`,R=e=>`wb.getSheet(${JSON.stringify(e.getSheet().getName())})`,st=e=>(e=>{if(!e.includes(`$`))return e;let t=``,n=!1;for(let r of e){if(r===`'`)n=!n;else if(r===`$`&&!n)continue;t+=r}return t})(e.getAddress()),ct=e=>{let t=st(e);return t.includes(`!`)?t:`${L(e.getSheet().getName())}!${t}`},lt=e=>{let t=e.toString();return`${t.includes(`!`)?t:`${L(e.getSheet().getName())}!${t}`}, ${e.getRowCount()}×${e.getColumnCount()}`};function ut(e,t){let n=Me(t,[...t.getRegions(F.Formula)]),r=t.getStats({onError:`ignore`}).getCount();e.h2(`Kind (${r} cell${r===1?``:`s`} · ${n.length} kind${n.length===1?``:`s`})`);for(let[t,r]of n)e.text(` ${t.padEnd(10)}${r}`);n.length===0&&e.fact(`None`),e.blank()}function dt(e,t,n){let r=t.getSheet().getWorkbook()?.getStyles().getNormal()??null,i=n?.features===void 0?null:new Set(typeof n.features==`string`?[n.features]:n.features),a=rt.filter(e=>!i||i.has(e));if(a.length===0)return;let o=t.getCounts(a),s,c=()=>s??=[...t.getSheet().getEntireRange().getRegions(F.Contentful)].map(e=>e.getCoords());for(let i of a){let a=i===F.Contentful?ft(t):[...t.getRegions(i)];if(a.length===0){let t=r&&i!==F.Font?Ne(i,r):null;t&&(e.h2(`${at(i)} (${pt(0,0)})`),e.text(` ${`normal`.padEnd(10)}${t}`),e.blank());continue}let s=!!n?.profile&&i===F.Contentful,l=`${R(t)}.getRegions(${JSON.stringify(i)})`,u=`${l} lists all ${a.length}`,d=ke(i)?Ae(t.getSheet(),i,r,{recovery:u,content:c()}):null,f=i===F.Formula?je(a,{recovery:u}):null,p=d?`${pt(a.length,d.cells)} · ${d.distinct} distinct`:f?`${pt(a.length,o[i])} · ${f.distinct} distinct`:pt(a.length,o[i]);if(e.h2(`${at(i)} (${p})`),d){d.normal&&e.text(` ${`normal`.padEnd(10)}${d.normal}`);for(let t of d.tiers)e.text(` ${t}`);for(let t of d.attributes)e.text(` ${t}`);e.text(` ${`regions`.padEnd(10)}${l}`),e.blank()}else{if(f)for(let t of f.lines)e.text(` ${t}`);i===F.Contentful&&a.sort((e,t)=>t.getRowCount()*t.getColumnCount()-e.getRowCount()*e.getColumnCount()),Qe(e,a,{maxRegions:n?.maxRegions,maxProfiled:n?.maxProfiled,profile:s,series:!1,payload:s?void 0:Je(i,r),recovery:u}),e.blank()}}}var ft=e=>[...e.getRegions([F.Contentful,F.Table])].filter(e=>e.getCell().isContentful()),pt=(e,t)=>`${t} cell${t===1?``:`s`} · ${e} region${e===1?``:`s`}`,mt=(e,t)=>e.length>t?`${e.slice(0,t-1)}…`:e,ht=e=>e.isIFormula?e:null,gt=e=>{let t=e.getScope();return t?`${L(t)}!${e.getName()}`:e.getName()},_t=e=>{let t=e.getAddress();return t.includes(`!`)?t:`${L(e.getSheet().getName())}!${t}`};async function vt(e){let t=ht(e),n;return n=t?`=`+t.getExpression():e.getRanges?.()?.getAddress()??``,t&&await t.isVolatile()&&(n+=` (volatile)`),n.trim()}var yt=new Set([e.FormulaError.Code.Ref,e.FormulaError.Code.Name]),bt=t=>{let n=t.value,r=typeof n==`string`?n:n?.error,i=typeof r==`string`?e.FormulaError.getBuiltInByLabel(r):void 0;return i&&yt.has(i.getCode())?i.getCode()===e.FormulaError.Code.Name?`#NAME?`:`#REF!`:null},xt=new Set,St=e=>{let t=e.value;return typeof t==`object`&&t?.name?t.name:e.text??``};function Ct(e){let t=null;for(let n=0;n<e.length;n++){let r=e[n];if(r.type!==`named`||!r.context)continue;let i=r.context.name?.toUpperCase();if(i!==`LAMBDA`&&(i!==`LET`||r.context.argIndex%2!=0))continue;let a=n+1;for(;a<e.length&&e[a].type===`whitespace`;)a++;if(e[a]?.type!==`separator`)continue;let o=St(r).toLowerCase();o&&(t??=new Set).add(o)}return t??xt}async function z(e,t,n){if(t.length===0)return;let r=new Set;for(let e of n?.symbols??t)r.add(e.getName().toLowerCase());let i=new Map,a=new Set;for(let e of t)i.set(e.getId(),e),e.getScope()&&a.add(e.getName().toLowerCase());let o=await Promise.all(t.map(async e=>{let t=function(e,t){let n=ht(e),r=[];if(n){let e=n.getTokens(),i=null,a=null;for(let n of e){if(n.type===`error`){a??=bt(n);continue}if(n.type!==`named`)continue;let o=St(n);o&&!t.has(o.toLowerCase())&&(i??=Ct(e),i.has(o.toLowerCase())||r.includes(o)||r.push(o))}if(a||r.length>0)return{broken:!0,missing:r,error:r.length>0?`#NAME?: ${r.join(`, `)}`:a};if(!n.isReferenceOnly())return{broken:!1,missing:r,error:``}}let i=null;try{i=e.getRanges?.()??null}catch{return{broken:!0,missing:r,error:`#REF!`}}let a=!i||i.isInvalidAny();return{broken:a,missing:r,error:a?`#REF!`:``}}(e,r),n=ht(e),o=n?await async function(e,t){let n=await e.getDirectDependents(),r=0,i=[],a=new Set,o=[];if(n){let e=n.getCoords(),s=n.getCount();for(let c=0;c<s;c++){let s=n.at(c);if(s.isINamedRange){let e=s;if(a.has(e.getId()))continue;a.add(e.getId());let n=t.get(e.getId());i.push(n?gt(n):e.getName())}else{let t=e[c];r+=(t.rowEnd-t.rowStart+1)*(t.colEnd-t.colStart+1),o.push(_t(s))}}}let s=r+i.length;if(s===0)return{text:`unused`,weight:s};let c=[...i,...o],l=[],u=0;for(let e=0;e<c.length;e++){let t=(l.length>0?2:0)+c[e].length;if(l.length>0&&u+t>60)break;l.push(l.length===0?mt(c[e],60):c[e]),u+=t}let d=c.length-l.length,f=d>0?`, +${d} more`:``;return{text:`${s} · ${l.join(`, `)}${f}`,weight:s}}(n,i):null;o?.weight===0&&!e.getScope()&&a.has(e.getName().toLowerCase())&&(o={...o,text:`unused · shadowed`});let s=e.getComment()??``,c=gt(e);return{name:c,refersTo:await vt(e),dependents:o,hidden:e.isHidden(),comment:mt(s,60),broken:t.broken,error:t.error,sortKey:c.toLowerCase().replace(/'/g,``)}})),s=(e,t)=>{let n=(t.dependents?.weight??0)-(e.dependents?.weight??0);return n===0?e.sortKey.localeCompare(t.sortKey):n},l=[...o.filter(e=>e.broken).sort(s),...o.filter(e=>!e.broken).sort(s)],u=c(l.length,n?.maxNames??200),d=l.length>u?l.slice(0,u):l,f=d.filter(e=>e.broken),p=d.filter(e=>!e.broken);e.h2(`${n?.heading??`Names`} (${o.length})`);let m=(t,n)=>{let r=t.some(e=>e.hidden),i=t.some(e=>e.comment.length>0),a=t.some(e=>e.dependents!==null),o=[`Name`,`Refers To`];n&&o.push(`Error`),a&&o.push(`Dependents`),r&&o.push(`Hidden`),i&&o.push(`Comment`);let s=e.beginFrame(o);for(let e of t){let t=[{text:e.name},{text:e.refersTo}];n&&t.push({text:e.error}),a&&t.push({text:e.dependents?.text??``}),r&&t.push({text:e.hidden?`hidden`:``}),i&&t.push({text:e.comment}),s.addRow(t)}s.endFrame()};if(f.length>0){let t=l.reduce((e,t)=>e+ +!!t.broken,0);e.text(`${t} ${t===1?`does`:`do`} not resolve:`),m(f,!0),e.blank()}if(p.length>0&&m(p,!1),d.length<o.length){let t=n?.recovery??`getByName('Name') renders one in full`;e.text(` …and ${o.length-d.length} more · ${t}`)}e.blank()}function wt(e,t,n){let r=n.getCoords().min,i=[],a=0,o=0;if(n.forEachSpan((e,t)=>{let s=t.getCoords();if(o++,a+=s.max-s.min+1,i.length>=100)return;let c=n.at(s.min-r).getText(),l=n.at(s.max-r).getText();i.push({address:`${c}:${l}`,count:s.max-s.min+1})},{visibility:`hidden`,includeEmpty:!0}),a===0)return;e.h2(`${t} (${a})`);let s=Math.max(...i.map(e=>e.address.length));for(let t of i)e.text(` ${t.address.padEnd(s)} ${t.count}`);o>i.length&&e.text(` …and ${o-i.length} more`),e.blank()}function Tt(e,t,n,r){if(n.length===0)return;let i=n.length>50?n.slice(0,50):n,a=i.map(e=>({address:mt(st(e.getRanges()),40),rule:r(e)}));e.h2(`${t} (${n.length})`);let o=Math.max(...a.map(e=>e.address.length));for(let t of a)e.text(` ${t.address.padEnd(o)} ${t.rule}`.trimEnd());i.length<n.length&&e.text(` …and ${n.length-i.length} more`),e.blank()}function Et(e,t=!1){let n=e.getSheet(),r=e.getCoords(),i=n.getName(),a=[];for(let e of n.getNames().getItems({type:`formula`,includeHidden:!0})??[]){let n=null;try{n=e.getRanges?.()??null}catch{}n?n.getCoords().some(e=>{return(!e.scope||e.scope===i)&&(n=e,(t=r).rowStart<=n.rowEnd&&n.rowStart<=t.rowEnd&&t.colStart<=n.colEnd&&n.colStart<=t.colEnd);var t,n})&&a.push(e):t&&e.getScope()===i&&a.push(e)}return a}async function Dt(e,t){let n=t.getSheet();await z(e,Et(t,!0),{symbols:n.getWorkbook()?.getNames().getItems({includeHidden:!0})??n.getNames().getItems({includeHidden:!0})??[]});let r=t.getColumnHeaders(),i=t.getRowHeaders();wt(e,`Hidden Columns`,r),wt(e,`Hidden Rows`,i);let a=t.getTables();a.length>0&&tt(e,a,t.getCounts([F.Table])[F.Table]??0)}var Ot=`#REF!`,B=e=>{let t=e.getContent();return t.getType()===`chart`&&typeof t.getSeries==`function`?t:null},kt=(t,n)=>`${L(t.getName())}!${e.AddressUtils.rangeToString(n)??``}`,At=(e,t)=>e?kt(e.getSheet(),e.getCoords()):t,V=e=>e.replace(/\s*[\r\n]+\s*/g,` ⏎ `).trim(),jt=(e,t)=>({colStart:Math.min(e.colStart,t.colStart),rowStart:Math.min(e.rowStart,t.rowStart),colEnd:Math.max(e.colEnd,t.colEnd),rowEnd:Math.max(e.rowEnd,t.rowEnd)}),Mt=e=>{if(e.length===0)return null;let t=e[0],n=t.getValuesRange();if(!n)return null;let r=n.getSheet(),i=n.getCoords(),a=e.length===1,o=i.colStart===i.colEnd,s=i.rowStart===i.rowEnd;if(!a&&!o&&!s)return null;let c=o&&s?null:o?`column`:s?`row`:null,l=t.getCategoriesFormula(),u=t.getNameRange(),d=t.getNameFormula()!==null;if(d&&!u?.isSingleCell())return null;let f=i,p=u?.getCoords()??null;for(let n=1;n<e.length;n++){let a=e[n];if(a.getChartType()!==t.getChartType()||a.isSecondaryAxis()!==t.isSecondaryAxis()||a.getCategoriesFormula()!==l)return null;let m=a.getValuesRange();if(!m||m.getSheet()!==r)return null;let h=m.getCoords(),g=h.colStart===f.colStart+1&&h.colEnd===f.colEnd+1&&h.rowStart===i.rowStart&&h.rowEnd===i.rowEnd,_=h.rowStart===f.rowStart+1&&h.rowEnd===f.rowEnd+1&&h.colStart===i.colStart&&h.colEnd===i.colEnd;if(c===null&&(c=g&&o?`column`:_&&s?`row`:null),c===null||(c===`column`?!g:!_)||(f=h,a.getNameFormula()!==null!==d))return null;if(d){let e=a.getNameRange();if(!e?.isSingleCell()||e.getSheet()!==u.getSheet())return null;let t=e.getCoords();if(!(c===`column`?t.colStart===p.colStart+1&&t.rowStart===p.rowStart:t.rowStart===p.rowStart+1&&t.colStart===p.colStart))return null;p=t}}return{values:kt(r,jt(i,f)),by:a?null:c,names:u&&p?kt(u.getSheet(),jt(u.getCoords(),p)):null,categories:At(t.getCategoriesRange(),l)}},Nt=e=>{let t=[],n=[[`name`,e.getNameFormula()],[`values`,e.getValuesFormula()],[`categories`,e.getCategoriesFormula()]];for(let[e,r]of n)r?.includes(Ot)&&t.push(`${e} ${r}`);return t},Pt=e=>{let t=0;for(let n of e)Nt(n).length>0&&t++;return t},Ft=e=>{let t=e.getChartType();return t&&t!==`unknown`?t:null};function It(e){let t=[],n=Ft(e);n&&t.push(n);let r=e.getChartTitle();var i,a;r&&t.push(`"${i=V(r),a=40,i.length>a?`${i.slice(0,a-1)}…`:i}"`);let o=e.getSeries();if(o.length>0){t.push(`${o.length} series`);let n=e.getPivotSource(),r=n?null:Mt(o);n?t.push(`pivot table ${n}`):r&&(t.push(`values ${r.values}`),r.categories&&t.push(`categories ${r.categories}`));let i=Pt(o);i>0&&t.push(`${Ot} in ${i} series`)}return t.length>0?t.join(` · `):null}function Lt(e){let t=[],n=e.getChartTitle();n&&t.push([`title`,`"${V(n)}"`]);let r=e.getSeries();if(r.length===0)return t;let i=e.getPivotSource(),a=i?null:Mt(r);i?t.push([`series`,`${r.length} · from pivot table ${i}`]):a?(t.push([`series`,`${r.length} · ${a.values}${a.by?` by ${a.by}`:``}`]),a.names&&t.push([r.length===1?`name`:`names`,a.names]),a.categories&&t.push([`categories`,a.categories])):t.push([`series`,String(r.length)]);let o=Pt(r);return o>0&&t.push([`broken`,`${Ot} in ${o} series`]),t}var Rt=e=>Ft(e)??``,zt=e=>{let t=e.getTitle(),n=[t?`"${V(t)}"`:`no title`],r=e.getNumberFormat();return r&&r!==`General`&&n.push(`format ${r}`),`${e.getKind()} (${n.join(`, `)})`};function Bt(e,t){let n=Ft(t);e.fact(`Type: chart`+(n?` — ${n}`:``));let r=t.getChartTitle();e.fact(`Title: `+(r?`"${V(r)}"`:`(none)`));let i=t.getSeries(),a=t.getPivotSource();if(a)e.fact(`Series (${i.length}): from pivot table ${a}`);else if(i.length>0){let t=Mt(i);if(t){let n=[`values ${t.values}${t.by?` by ${t.by}`:``}`];t.names&&n.push(`${i.length===1?`name`:`names`} ${t.names}`),t.categories&&n.push(`categories ${t.categories}`),e.fact(`Series (${i.length}): ${n.join(` · `)}`)}else(function(e,t){let n=t.slice(0,c(t.length,12)),r=n.map(e=>{let t=At(e.getValuesRange(),e.getValuesFormula())??`(no values)`,n=At(e.getCategoriesRange(),e.getCategoriesFormula()),r=[`values ${t}`];n&&r.push(`categories ${n}`);let i=At(e.getNameRange(),e.getNameFormula());i&&r.push(`name ${i}`);let a=e.getName();return{name:a?V(a):`(unnamed)`,type:e.isSecondaryAxis()?`${e.getChartType()} · secondary axis`:e.getChartType(),source:r.join(` · `)}});e.fact(`Series (${t.length}):`);let i=Math.max(...r.map(e=>e.name.length)),a=Math.max(...r.map(e=>e.type.length));for(let t of r)e.text(` ${t.name.padEnd(i)} ${t.type.padEnd(a)} ${t.source}`);n.length<t.length&&e.text(` …and ${t.length-n.length} more · getContent().getSeries() on this movable lists every one`)})(e,i)}let o=t.getAxes();o.length>0&&e.fact(`Axes: ${o.map(zt).join(` · `)}`)}var Vt=(e,t)=>e.colStart<=t.colEnd&&t.colStart<=e.colEnd&&e.rowStart<=t.rowEnd&&t.rowStart<=e.rowEnd,Ht=e=>{let t=e.movable.getRange();return`${kt(t.getSheet(),t.getCoords())} "${e.movable.getContent().getName?.()||`(unnamed)`}"${e.direct?``:` (through its dependents)`}`},Ut=(e,t)=>e.length>t?`${e.slice(0,t-1)}…`:e,Wt=e=>e.replace(/[\r\n]+/g,` `).trim(),Gt=e=>e.getShapeType?.()??``,Kt=t=>{let n=t.getRange();return e.AddressUtils.rangeToString(n.getCoords())??n.toString()},qt=(e,t,n)=>{let r=e.replace(/\r\n?|\n/g,` ⏎ `);if(t===null||r.length<=t)return`"${r}"`;let i=r.charCodeAt(t-1),a=i>=55296&&i<=56319?t-1:t;return`"${r.slice(0,a)}…" (+${r.length-a} chars) · full: ${n}`},Jt=({movable:e,text:t})=>qt(t,300,(e=>`${R(e.getRange())}.getRange(${JSON.stringify(Kt(e))}).getMovables()`)(e)),Yt=e=>{let t=e.getContent();return typeof t.getTextFrame==`function`?t.getTextFrame()?.getText()??``:null};function Xt(e){let t=[];for(let n of e){let e=Yt(n)??``;e.trim()!==``&&t.push({movable:n,text:e})}return t.sort((e,t)=>{let n=e.movable.getRange().getCoords(),r=t.movable.getRange().getCoords();return n.rowStart-r.rowStart||n.colStart-r.colStart})}var Zt=e=>e.getType()===`picture`&&e.getResource?.()?.getName()||null,Qt=e=>{let t=e.getContent().getName?.()||`(unnamed)`,n=e.getContent().getDescription(),r=B(e);if(r)return Ut([It(r),n?Wt(n):null,t].filter(Boolean).join(` · `),140);let i=e.getContent(),a=[],o=Zt(i);return o&&a.push(o),n&&a.push(Wt(n)),Ut(a.length>0?`${t} — ${a.join(` · `)}`:t,90)},$t=e=>{let t=e.getContent().getName?.()||`(unnamed)`,n=e.getContent().getDescription();return Ut(n?`${t} — ${Wt(n)}`:t,90)},en=new Map([[`chart`,`Charts`],[`shape`,`Shapes`],[`picture`,`Pictures`],[`slicer`,`Slicers`]]),tn=e=>en.get(e)??`${e.charAt(0).toUpperCase()}${e.slice(1)}s`;function nn(e){let t=new Map;for(let n of e){let e=n.getContent().getType();if(e===`note`)continue;let r=t.get(e);r?r.push(n):t.set(e,[n])}let n=new Map;for(let e of en.keys()){let r=t.get(e);r&&n.set(e,r)}for(let[e,r]of t)n.set(e,r);return n}function rn(e,t){for(let[n,r]of nn(t))an(e,n,r)}function an(e,t,n){let r=Xt(n),i=new Map(r.map(e=>[e.movable,e])),a=[...r.map(e=>e.movable),...n.filter(e=>!i.has(e))],o=a.slice(0,c(a.length,50)),s=o.map(e=>{let t=i.get(e),n=B(e);return{address:Kt(e),preset:n?Rt(n):Gt(e.getContent()),summary:n?$t(e):Qt(e),details:n?Lt(n):[],text:t?Jt(t):``,hidden:e.isHidden()?` (hidden)`:``}});e.h2(`${tn(t)} (${n.length}${r.length>0?` · ${r.length} with text`:``})`);let l=Math.max(...s.map(e=>e.address.length)),u=Math.max(...s.map(e=>e.preset.length)),d=Math.min(40,Math.max(0,...s.filter(e=>e.text).map(e=>e.summary.length)));for(let t of s){let n=u>0?`${t.preset.padEnd(u)} `:``,r=t.text?`${t.summary.padEnd(d)} ${t.text}`:t.summary;e.text(` ${t.address.padEnd(l)} ${n}${r}${t.hidden}`.trimEnd());let i=Math.max(10,...t.details.map(([e])=>e.length+2));for(let[n,r]of t.details)e.text(` ${n.padEnd(i)}${r}`)}if(o.length<a.length){let r=`${R(n[0].getRange())}.getMovables().getItems({ type: ${JSON.stringify(t)} })`;e.text(` …and ${a.length-o.length} more · ${r} reports every one in full`)}e.blank()}function on(t){let n=new P,r=t.getRange(),i=t.getContent(),a=i.getType();n.h1(`Movable — ${lt(r)}`),n.blank(),n.fact(`Name: ${t.getContent().getName?.()||`(unnamed)`}`);let o=B(t);o?Bt(n,o):n.fact(`Type: ${a}`);let s=Zt(i);s&&n.fact(`Content: ${s}`);let c=Gt(i);c&&n.fact(`Shape: ${c}`);let l=i.getTextFrame?.();l&&n.fact(`Text: ${qt(l.getText(),null,``)}`);let u=t.getContent().getDescription();u&&n.fact(`Alt Text: ${Wt(u)}`),n.fact(`Anchor: ${I(r)}, ${(t=>{switch(t){case e.IAnchored.Type.Absolute:return`absolute — stays put when rows or columns move`;case e.IAnchored.Type.OneCell:return`oneCell — moves with the cells, keeps its size`;default:return`twoCell — moves and resizes with the cells`}})(t.getAnchorType?.())}`),n.fact(`Bounds: ${(e=>{let t=e.getBounds();if(!t)return`not laid out`;let n=e=>Math.round(e);return`${n(t.width)}×${n(t.height)} px at (${n(t.x)}, ${n(t.y)})`})(t)}`),t.isHidden()&&n.fact(`Hidden: true — this object is not visible in the UI`);let d=t.getRotation();return d!==0&&n.fact(`Rotation: ${d}°`),n.fact(`Z-Order: ${t.getZIndex()}`),n.blank(),n.text(`Sheet: ${L(r.getSheet().getName())}`),n.toLines().join(`
4
+ `).trimEnd()}var sn=e=>e.getVisibility()===`visible`,cn=(e,t,n)=>{let r=e.getSheets().getItems({visibility:`veryHidden`}),i=t?.trim();if(!i)return r.filter(e=>n||sn(e)).map(e=>({sheet:e,address:null}));let a=/^'(.*)'!(.+)$/.exec(i)??/^([^!]+)!(.+)$/.exec(i);if(a){let[,e,t]=a,n=r.find(t=>t.getName()===e);if(!n)throw Error(`Sheet not found: ${e}`);return[{sheet:n,address:t}]}let o=r.find(e=>e.getName()===i);if(o)return[{sheet:o,address:null}];if(/[*?]/.test(i)){let e=(e=>{let t=e.replace(/[.*+?^${}()|[\]\\]/g,e=>e===`*`?`.*`:e===`?`?`.`:`\\${e}`);return RegExp(`^${t}$`)})(i),t=r.filter(t=>e.test(t.getName())&&(n||sn(t)));if(t.length===0)throw Error(`No sheets match ${JSON.stringify(i)}. Sheets: ${r.map(e=>e.getName()).join(`, `)}`);return t.map(e=>({sheet:e,address:null}))}let s=r.filter(e=>n||sn(e));try{s[0]?.getRange(i)}catch{throw Error(`Unknown scope ${JSON.stringify(i)}: not a sheet name or a range. Sheets: ${r.map(e=>e.getName()).join(`, `)}`)}return s.map(e=>({sheet:e,address:i}))},ln=(e,n)=>{switch(n){case`display`:return i(e,t.Mode.Display);case`value`:return i(e,t.Mode.Value);case`raw`:return a(e.getValue());case`formula`:{let t=e.getFormulaText();return t?{match:t,display:t}:null}case`hyperlink`:{let t=e.getHyperlink()?.getAddress()??null;return t?{match:t,display:t}:null}case`numberFormat`:{let t=e.getStyle().getNumberFormat();return t&&t!==`General`?{match:t,display:t}:null}default:return null}},un=[`hyperlink`,`numberFormat`],H=(e,t)=>t&&t.trim()!==``?[{field:e,text:{match:t,display:t}}]:[],dn=e=>[...H(`comment`,e.getContent()),...e.getReplies().flatMap(e=>H(`comment`,e.getContent()))],fn=(e,t)=>{let n=B(e);if(n)return t.includes(`chart`)?[...H(`chart`,n.getChartTitle()),...n.getAxes().flatMap(e=>H(`chart`,e.getTitle())),...n.getSeries().flatMap(e=>e.getNameFormula()===null?H(`chart`,e.getName()):[]),...H(`chart`,e.getContent().getDescription())]:[];let r=Yt(e);return r!==null&&t.includes(`shape`)?[...H(`shape`,r),...H(`shape`,e.getContent().getDescription())]:[]},pn=e=>{let t=e.isIFormula?`=${e.getExpression()}`:null,n=t??e.getRanges?.()?.getAddress()??e.getName();return[{field:`name`,text:{match:e.getName(),display:n}},...t?H(`name`,t):[],...H(`name`,e.getComment())]},mn=(e,t)=>e.colStart<=t.colEnd&&t.colStart<=e.colEnd&&e.rowStart<=t.rowEnd&&t.rowStart<=e.rowEnd,hn=(e,t)=>{let n=e.getRanges?.()??null;return t.some(({sheet:t,address:r})=>{if(r===null&&e.getScope()===t.getName())return!0;let i=r===null?null:t.getRange(r).getCoords();for(let e=0;e<(n?.length??0);e++){let r=n.at(e);if(r.getSheet()===t&&(!i||mn(r.getCoords(),i)))return!0}return!1})},gn=(e,t)=>e.rowStart-t.rowStart||e.colStart-t.colStart,_n=(e,t,n)=>{let r=null,i=e=>({range:`${t}!${e.getRange().toString()}`,table:e.getName()});return{resolve(a,o){let s=(e=>e.getTable())(a);if(e===`table`)return s?i(s):void 0;if(r===null){r=[];for(let e of n.getRegions()){let n=e.getCoords();n.rowStart===n.rowEnd&&n.colStart===n.colEnd||r.push({coords:n,address:`${t}!${e.toString()}`})}}let c=r.find(({coords:e})=>o.rowIndex>=e.rowStart&&o.rowIndex<=e.rowEnd&&o.colIndex>=e.colStart&&o.colIndex<=e.colEnd);return c?{range:c.address,...s?{table:s.getName()}:{}}:s?i(s):void 0}}};async function vn(t,n){if(!n.pattern)throw Error(`grep requires a pattern`);let r=n.fields?.length?n.fields:s,i=n.output??`content`,a=n.maxCount??200,o=!0===n.invert,c=!0===n.hidden,l=(e=>{if(e===void 0||!1===e)return null;if(!0===e)return`contentful`;if(e===`contentful`||e===`table`)return e;throw Error(`Invalid context ${JSON.stringify(e)}: expected 'contentful' or 'table'. Context is the enclosing block, not a line count — a grid has no ±N lines.`)})(n.context),u=(e=>{let t=e.fixedStrings?(e=>e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`))(e.pattern):e.pattern;e.word&&(t=`(?<!\\w)(?:${t})(?!\\w)`);let n=e.ignoreCase?`iu`:`u`;try{return new RegExp(t,n)}catch{try{return new RegExp(t,n.replace(`u`,``))}catch(t){throw Error(`Invalid regex ${JSON.stringify(e.pattern)}: ${t instanceof Error?t.message:String(t)}. Use fixedStrings (-F) to search for the literal text.`)}}})(n),d=cn(t,n.scope,c),f=!r.some(e=>un.includes(e)),p=r.includes(`display`)&&r.includes(`value`),m=i===`content`||i===`addresses`,h=[],g=[],_=0,v=0,y=0,b=!1,x=e=>{let t=e.filter((t,n)=>u.test(t.text.match)&&e.findIndex(e=>e.field===t.field&&e.text.display===t.text.display&&u.test(e.text.match))===n);return o?t.length===0&&e.length>0?[e[0]]:null:t.length===0?null:i===`addresses`?t.slice(0,1):t},S=(e,t,n,r,i)=>{if(a>0&&_+v>=a)return b=!0,!1;if(e===`cell`?_++:v++,m)for(let e of r)h.push({sheet:t,address:n,field:e.field,text:e.text.display,...i?{context:i}:{}});return!0};for(let{sheet:t,address:n}of d){if(b)continue;let a=t.getName();y++,await t.getCalculation().ready();let o=n===null?t.getUsedRange():t.getRange(n),s=o&&l&&i===`content`?_n(l,a,o):null,u={...n===null?{}:{address:n},...c?{}:{ignoreHidden:!0}},d=new Map;if(r.includes(`comment`))for(let e of t.getComments().getItems(u)){let t=e.getRange().getCoords();d.set(`${t.rowStart}:${t.colStart}`,e)}let m=0;o?.forEach((e,t)=>{if(f&&e==null)return;let n=t.getCell(),i=t.getCoords(),o=[],c;for(let e of r){if(e===`comment`){let e=`${i.rowIndex}:${i.colIndex}`,t=d.get(e);t&&(o.push(...dn(t)),d.delete(e));continue}let t=ln(n,e);e===`display`&&(c=t?.match??null),t!==null&&(e===`value`&&p&&(c===void 0&&(c=ln(n,`display`)?.match??null),t.match===c)||o.push({field:e,text:t}))}let l=x(o);if(!l)return;let u=s?.resolve(n,i);if(!S(`cell`,a,t.getAddress(),l,u))return{break:!0};m++},c?void 0:{ignoreHidden:!0});let h=[...d.values()].map(e=>({comment:e,at:e.getRange().getCoords()})).sort((e,t)=>gn(e.at,t.at));for(let{comment:t,at:n}of h){if(b)break;let r=x(dn(t));if(!r)continue;let i=s?.resolve(t.getRange().getCell(),{rowIndex:n.rowStart,colIndex:n.colStart});S(`cell`,a,e.AddressUtils.rangeToString(n)??t.getRange().toString(),r,i)&&m++}let _=0;if(!b&&(r.includes(`shape`)||r.includes(`chart`))){let n=t.getMovables().getItems(u).filter(e=>e.getContent().getType()!==`note`).filter(e=>c||!e.isHidden()).map(e=>({movable:e,at:e.getRange().getCoords()})).sort((e,t)=>gn(e.at,t.at));for(let{movable:t,at:i}of n){let n=x(fn(t,r));if(n){if(!S(`object`,a,e.AddressUtils.rangeToString(i)??t.getRange().toString(),n))break;_++}}}(m>0||_>0)&&g.push({sheet:a,cells:m,objects:_})}if(!b&&r.includes(`name`)){let e=!!n.scope?.trim(),r=t.getNames().getItems(c?{includeHidden:!0}:void 0)??[];for(let t of r){if(e&&!hn(t,d))continue;let n=x(pn(t));if(n&&!S(`object`,t.getScope()??``,t.getName(),n))break}}return{pattern:n.pattern,fields:r,scope:n.scope?.trim()||`workbook`,matches:h,cellCount:_,objectCount:v,sheets:g,sheetsSearched:y,sheetsMatched:g.length,truncated:b,output:i}}var yn=e=>{let t=e.replace(/\s+/g,` `).trim();return t.length>120?`${t.slice(0,119)}…`:t},bn=e=>e.sheet?`${e.sheet}!${e.address}`:e.address,xn=(e,t)=>`${e} ${t}${e===1?``:`s`}`,Sn=(e,t)=>t>0?`${xn(e,`cell`)} · ${xn(t,`object`)}`:xn(e,`cell`),Cn=(e,t,n,r)=>{let i=t.map(e=>r?bn(e):e.address),a=Math.max(...i.map(e=>e.length)),o=Math.max(...t.map(e=>e.field.length));for(let r=0;r<t.length;r++){let s=t[r];e.push(`${n}${i[r].padEnd(a)} ${s.field.padEnd(o)} ${yn(s.text)}`)}};function wn(e){let{pattern:t,fields:n,scope:r,matches:i,cellCount:a,objectCount:o,sheetsSearched:s,sheetsMatched:c}=e,l=[`grep "${t}" · ${r} · fields ${n.join(`,`)} · ${Sn(a,o)} in ${c} of ${s} ${s===1?`sheet`:`sheets`}`];if(e.output===`count`){for(let t of e.sheets)l.push(` ${t.sheet}: ${t.objects>0?Sn(t.cells,t.objects):t.cells}`);let t=o-e.sheets.reduce((e,t)=>e+t.objects,0);t>0&&l.push(` names: ${t}`)}else if(e.output===`sheets`){for(let t of e.sheets)l.push(` ${t.sheet}`);e.sheets.length===0&&l.push(o>0?` no sheets · names only`:` no matches`)}else if(i.length===0)l.push(` no matches`);else if(e.output===`addresses`)for(let e of i)l.push(` ${bn(e)}`);else{let e=[],t=new Map;for(let n of i){let r=n.context?.range??``,i=t.get(r);i||(i={key:r,heading:n.context?n.context.table?`${n.context.range} · ${n.context.table}`:n.context.range:null,rows:[]},t.set(r,i),e.push(i)),i.rows.push(n)}for(let t of e)t.heading?(l.push(` ${t.heading}`),Cn(l,t.rows,` `,!1)):Cn(l,t.rows,` `,!0)}return e.truncated&&l.push(` …truncated at ${Sn(a,o)} · narrow the pattern, or scope the search to one sheet or range`),l.join(`
5
5
  `)}var Tn={name:`grep`,description:`Search a workbook's text by pattern: cell contents, and the text that is in no cell — comments, shapes, charts and defined names. Returns grid-anchored matches, each tagged with the layer it matched. Selection by attribute (fills, formats, features) is the regions read, not grep.`,params:[{name:`pattern`,type:`string`,description:`The regular expression to search for (literal with fixedStrings).`,required:!0,positional:0},{name:`fields`,type:`enum[]`,values:o,defaultValue:s,description:`Layers to search: display (number format applied), value (as the formula bar shows it; duplicate of display suppressed per cell), raw (the stored scalar — dates as serials), formula, hyperlink, numberFormat (the format code, e.g. "0.00%"), comment (comments, notes and replies), shape (text on a shape, alt text), chart (title, axis titles, literal series names, alt text), name (defined names and tables: the name, what it refers to, its comment).`},{name:`fixedStrings`,type:`boolean`,alias:`F`,defaultValue:!1,description:`Treat the pattern as a literal string, not a regular expression.`},{name:`ignoreCase`,type:`boolean`,alias:`i`,defaultValue:!1,description:`Case-insensitive matching.`},{name:`word`,type:`boolean`,alias:`w`,defaultValue:!1,description:`Require the match to fall on word boundaries (text edges count as edges).`},{name:`invert`,type:`boolean`,alias:`v`,defaultValue:!1,description:`Report cells and objects where no requested field matched. Only those with text in a requested field are considered — blanks are not findings.`},{name:`scope`,type:`string`,description:`Where to search: a sheet name (globs allowed: "Q*"), a sheet-qualified range (Sheet1!A1:D9), or a bare range applied to every sheet. Defaults to every used range.`},{name:`hidden`,type:`boolean`,defaultValue:!1,description:`Search hidden rows, columns and sheets, which are excluded by default. Naming a hidden sheet in scope always searches it.`},{name:`context`,type:`enum`,values:[`contentful`,`table`],alias:`C`,valueOptional:!0,description:`Annotate and group matches by the block they sit in: contentful (the uniform data region; bare -C means this) or table (enclosing table only). Not a line count — a grid has no ±N lines.`},{name:`maxCount`,type:`number`,alias:`m`,defaultValue:200,description:`Stop after this many matching cells and objects (0 = unlimited). Truncation is always reported, and only when a further match actually exists.`},{name:`output`,type:`enum`,values:[`content`,`addresses`,`count`,`sheets`],defaultValue:`content`,description:`What to return: content (address, layer and text), addresses (one per matched cell), count (per sheet), or sheets (names with a match).`}],run:vn,render:wn},En=[`IWorkbook`,`ISheet`,`ICellRange`,`ICell`,`IRange`,`ITable`,`IStyle`,`IScript.ScriptContext`],Dn=e=>e.slice(e.lastIndexOf(`.`)+1);function U(e,t){if(e.types[t])return t;let n=Object.keys(e.types),r=t.toLowerCase(),i=n.filter(e=>e.toLowerCase()===r);if(i.length===1)return i[0];if(t.includes(`.`))return null;let a=n.filter(e=>Dn(e).toLowerCase()===r);return a.length===1?a[0]:null}function On(e,t,n){let r=n.replace(/<[\s\S]*$/,``).trim(),i=t.split(`.`);for(let t=i.length-1;t>=0;t--){let n=[...i.slice(0,t),r].join(`.`);if(e.types[n])return n}return null}function kn(e,t,n,r=new Set){if(r.has(t))return null;r.add(t);let i=e.types[t];if(!i)return null;let a=(i.members??[]).filter(n);if(a.length>0)return{key:t,members:a};for(let a of i.extends??[]){let i=On(e,t,a),o=i?kn(e,i,n,r):null;if(o)return o}return null}function An(e,t,n){let r=e.types[t],i=(r.extends??[]).map(n=>{let r=On(e,t,n);return{text:n,key:r,memberCount:r?e.types[r].members?.length??0:0}}),a=r.members??[],o=n?.toLowerCase();return{kind:`type`,key:t,entry:r,bases:i,members:o?a.filter(e=>e.name.toLowerCase().includes(o)):a,...n?{filter:n}:{}}}function jn(e,t,n){let r=e=>{let r=t(e).toLowerCase();return r===n?0:r.startsWith(n)?1:2};return e.map((e,t)=>({item:e,order:t,score:r(e)})).sort((e,t)=>e.score-t.score||e.order-t.order).map(e=>e.item)}function Mn(e,t){let n=function(e){return e.trim().replace(/^SheetXL\./,``).replace(/\(\)$/,``).replace(/#/g,`.`)}(t??``);if(!n){let t=En.filter(t=>e.types[t]).map(t=>({key:t,entry:e.types[t]}));return{kind:`overview`,total:Object.keys(e.types).length,entryPoints:t}}let r=U(e,n);if(r)return An(e,r);let i=n.lastIndexOf(`.`);if(i>0){let t=U(e,n.slice(0,i)),r=n.slice(i+1);if(t&&r){let n=r.toLowerCase(),i=kn(e,t,e=>e.name===r)??kn(e,t,e=>e.name.toLowerCase()===n);if(i)return{kind:`member`,key:t,declaredOn:i.key,members:i.members};let a=An(e,t,r);if(a.members.length>0)return a}}return function(e,t){let n=t.toLowerCase(),r=[],i=[];for(let[t,a]of Object.entries(e.types)){Dn(t).toLowerCase().includes(n)&&r.push(t);for(let e of a.members??[])e.name.toLowerCase().includes(n)&&i.push({key:t,member:e})}let a=jn(r,Dn,n),o=jn(i,e=>e.member.name,n);return{kind:`search`,query:t,types:a.slice(0,20),members:o.slice(0,40),omitted:Math.max(0,a.length-20)+Math.max(0,o.length-40)}}(e,i>0?n.slice(i+1):n)}var Nn=[{match:/^(get|set)?(number)?(format|numfmt)s?$/i,relies:[`IStyle`,`setNumberFormat`],hint:"Formatting lives on the style: `getStyle().setNumberFormat('0.00%')`, `getStyle().getNumberFormat()`."}];function Pn(e,t){let n=[],r=new Set,i=new Set,a=t=>{if(i.has(t))return;i.add(t);let o=e.types[t];if(o){for(let e of o.members??[])r.has(e.name)||(r.add(e.name),n.push(e));for(let n of o.extends??[]){let r=On(e,t,n);r&&a(r)}}};return a(t),n}function Fn(e,t){let n=e.toLowerCase(),r=t.toLowerCase();if(n===r)return 0;if(n.startsWith(r)||r.startsWith(n))return 1;let i=function(e,t){let n=Array.from({length:t.length+1},(e,t)=>t);for(let r=1;r<=e.length;r++){let i=n[0];n[0]=r;for(let a=1;a<=t.length;a++){let o=n[a];n[a]=Math.min(n[a]+1,n[a-1]+1,i+(e[r-1]===t[a-1]?0:1)),i=o}}return n[t.length]}(n,r);return i<=Math.max(2,Math.floor(.3*n.length))?1+i:null}var In=(e,t)=>`${t?`${t}.`:``}${e.signature.replace(/;$/,``)}${e.summary?` — ${e.summary}`:``}`,W=(e,t,n=`${t}s`)=>`${e.toLocaleString(`en-US`)} ${e===1?t:n}`;function Ln(e,t){let n=t?`${t} · `:``,r=e.summary?` — ${e.summary}`:``,i=e.deprecated?` (deprecated)`:``;return`- ${n}\`${a=e.signature,a.replace(/;$/,``)}\`${i}${r}`;var a}function Rn(e,t){let n=t?.command??`api`;switch(e.kind){case`overview`:return function(e,t){let n=[`# SheetXL scripting API — ${W(e.total,`name`)}`,``,`Where a script starts:`];for(let{key:t,entry:r}of e.entryPoints){let e=r.members?` (${W(r.members.length,`member`)})`:``;n.push(`- \`${t}\`${e}${r.summary?` — ${r.summary}`:``}`)}return n.push(``,`\`${t} <Type>\` lists what you can call on a type, one line per member.`,`\`${t} <Type>.<member>\` prints that member's full documentation.`,`\`${t} <word>\` searches type and member names.`,``,"Every type answers, not only the ones above. In a script each name is written `SheetXL.<Type>`."),n.join(`
6
6
  `)}(e,n);case`type`:return function(e,t){let{key:n,entry:r,members:i}=e,a=r.members?.length??0,o=[r.kind+(r.typeParams??``)];r.members&&o.push(W(a,`member`)),r.deprecated&&o.push(`deprecated`);let s=[`# ${n} — ${o.join(` · `)}`];if(r.summary&&s.push(r.summary),r.signature&&s.push(``,"```ts",r.signature,"```"),e.bases.length>0){s.push(``);for(let n of e.bases)s.push(n.key?`Also has everything on \`${n.text}\` (${W(n.memberCount,`member`)}): \`${t} ${n.key}\``:`Extends \`${n.text}\`.`)}if(r.members){s.push(``),e.filter&&s.push(`${W(i.length,`member`)} of ${a} matching '${e.filter}':`);for(let e of i)s.push(Ln(e))}return r.nested&&r.nested.length>0&&!e.filter&&s.push(``,`Nested types — \`${t} ${n}.<name>\`: ${r.nested.join(`, `)}`),s.push(``,r.members?`Full documentation for one member: \`${t} ${n}.<member>\` · scripting.d.ts:${r.lines[0]}-${r.lines[1]}`:`scripting.d.ts:${r.lines[0]}-${r.lines[1]}`),s.join(`
7
7
  `)}(e,n);case`member`:return function(e,t){let n=e.members[0].name,r=[`# ${e.key}.${n}`];return e.declaredOn!==e.key&&r.push(`Inherited from \`${e.declaredOn}\`.`),e.members.length>1&&r.push(`${e.members.length} overloads.`),e.members.forEach((t,n)=>{let i=e.sources?.[n]??`${t.summary?`/** ${t.summary} */\n`:``}${t.signature}`;r.push(``,"```ts",i,"```",`scripting.d.ts:${t.lines[0]}-${t.lines[1]}`)}),r.push(``,`Everything on the type: \`${t} ${e.declaredOn}\``),r.join(`
@@ -35,7 +35,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require
35
35
  `).trimEnd();let s=c(i,Math.max(1,Math.floor(n/a))),l=i>s?r.slice(0,s):r,u=o.beginFrame(Array(a).fill(``));for(let e of l)u.addRow(Array.from({length:a},(t,n)=>ui(e?.[n])));return u.endFrame(),l.length<i&&o.text(`…truncated at ${l.length} of ${i} rows · slice or aggregate in the expression before returning it`),o.toLines().join(`
36
36
  `).trimEnd()}var li=e=>!!e&&typeof e==`object`&&!0===e.isIRange,ui=e=>{if(e==null)return{text:``};let t=(a(e)?.display??``).replace(/[\r\n]+/g,` `);return typeof e==`number`?{text:t,alignment:`right`}:{text:t}},Y=e.ICellRange.Feature,di=[[Y.Font,`fonts`],[Y.NumberFormat,`formats`],[Y.Fill,`fills`],[Y.Borders,`borders`],[Y.Alignment,`alignments`]];async function fi(t,n){let r=new P;r.h1(`Workbook — ${t.getName()??`Untitled`}`),r.text(`Locale: ${t.getRuntime().getLocale()}`);let i=t.getCalculation();i.getStatus()===e.ICalculation.Status.Off?r.text(`Calculation: off — formulas have not been evaluated; values are as loaded. wb.getCalculation().calculate() evaluates them`):i.getStatus()===e.ICalculation.Status.Error?r.text(`Calculation: error — the engine failed to start; values are as loaded. wb.getCalculation().start() tries again`):i.getCalculationMode()===e.ICalculation.CalculationMode.Manual&&r.text(`Calculation: manual — values are as of the last calculation. wb.getCalculation().calculate() refreshes them`);let a=cr(t.getProtection());a&&r.text(`Protection: ${a}`),r.blank();let o=t.getSheets().getItems({visibility:e.ISheet.Visibility.VeryHidden}),s=t.getSelectedSheet(),c=t.getStyles().getNormal(),l=[];for(let e of o){let t=pi(e,c);l.push({sheet:e,label:vi(e,e.getId()===s.getId()),counts:t.counts,lines:t.lines,formulaSignature:t.formulaSignature})}let u=new Map;for(let e of l){if(!e.formulaSignature)continue;let t=u.get(e.formulaSignature);t?t.push(e):u.set(e.formulaSignature,[e])}for(let e of u.values())if(!(e.length<2))for(let t of e){let n=e.filter(e=>e!==t).map(e=>L(e.sheet.getName()));t.lines.push({label:`twin of`,extent:n.join(`, `),detail:``})}let d=l;if(l.length>250){d=l.slice(0,250);let e=l.find(e=>e.sheet.getId()===s.getId());e&&!d.includes(e)&&(d[d.length-1]=e)}r.h2(`Sheets (${l.length})`),r.blank();let f=d.flatMap(e=>e.lines).filter(e=>e.detail),p=Math.max(9,...d.flatMap(e=>e.lines).map(e=>e.label.length))+1,m=Math.max(0,...f.map(e=>e.extent.length))+2;for(let e of d){r.h3(e.label),e.lines.length===0&&r.text(` empty`);for(let t of e.lines){let e=t.detail?` ${t.label.padEnd(p)}${t.extent.padEnd(m)}${t.detail}`:` ${t.label.padEnd(p)}${t.extent}`;r.text(e.trimEnd())}r.blank()}return d.length<l.length&&(r.text(`…and ${l.length-d.length} more sheets · wb.getSheets().getItems() lists all`),r.blank()),yi(r,`Errors`,l,Y.Error),yi(r,`Calc Failures`,l,Y.CalcError),yi(r,`Circular References`,l,Y.Circular),await z(r,t.getNames().getItems({type:`formula`,includeHidden:!0})??[],{maxNames:n?.maxNames??30,recovery:`wb.getNames() renders the full view`,symbols:t.getNames().getItems({includeHidden:!0})??[]}),Wr(r,Ur(t),n),r.toLines().join(`
37
37
  `).trimEnd()}function pi(e,t){let n=e.getUsedRange();if(!n)return{counts:null,lines:[...mi(e),...hi(e)],formulaRegions:0,formulaSignature:``};let r=n.getCounts([Y.Contentful,Y.Formula,Y.Error,Y.CalcError,Y.Circular,Y.Table]),i=[],a=ft(n),o=[...n.getRegions(Y.Formula)];if(a.length>0){let e=function(e,t){let n=Me(e,t);return n.length===0?null:n.map(([e,t])=>`${e} ×${he(t)}`).join(` · `)}(n,o);i.push({label:`content`,extent:_i(a),detail:[X(r[Y.Contentful]??0,`cell`),X(a.length,`block`),e,`${R(n)} lists the blocks`].filter(Boolean).join(` · `)})}let s=``;if(o.length>0){let e=new Set,t=[];for(let n of o){let r=n.getCell().getFormulaText({r1c1:!0})??``;e.add(r),t.push(`${n.toString()}${r}`)}s=t.sort().join(`
38
- `),i.push({label:`formula`,extent:_i(o),detail:[X(r[Y.Formula]??0,`cell`),X(o.length,`region`),`${e.size} distinct`].join(` · `)})}for(let[e,t]of[[Y.Error,`errors`],[Y.CalcError,`calc failures`],[Y.Circular,`circular`]]){let a=r[e]??0;if(a===0)continue;let o=[...n.getRegions(e)];i.push({label:t,extent:_i(o),detail:[X(a,`cell`),X(o.length,`region`)].join(` · `)})}let c=n.getTables();c.length>0&&i.push({label:`tables`,extent:_i(c.map(e=>e.getRange())),detail:[X(r[Y.Table]??0,`cell`),X(c.length,`table`),gi(c.map(e=>e.getName()))].join(` · `)});let l=e.getPivotTables().getItems();l.length>0&&i.push({label:`pivots`,extent:String(l.length),detail:gi(l.map(e=>e.getName()))}),i.push(...mi(e));let u=a.map(e=>e.getCoords()),d=[];for(let[n,r]of di){let i=Ae(e,n,t,{content:u})?.distinct??0;i>0&&d.push(`${r} ${i}`)}return d.length>0&&i.push({label:`style`,extent:n.toString(),detail:d.join(` · `)}),i.push(...hi(e)),{counts:r,lines:i,formulaRegions:o.length,formulaSignature:s}}function mi(e){let t=[];for(let[n,r]of nn(e.getMovables().getItems())){let i=Xt(r),a=n===`chart`?gi(r.map(Qt)):i.length>0?`${i.length} with text`:``;t.push({label:tn(n).toLowerCase(),extent:String(r.length),detail:a});let o=i.slice(0,c(i.length,5));for(let e of o)t.push({label:``,extent:Kt(e.movable),detail:Jt(e)+(e.movable.isHidden()?` (hidden)`:``)});o.length<i.length&&t.push({label:``,extent:``,detail:`…and ${i.length-o.length} more · wb.getSheet(${JSON.stringify(e.getName())}) quotes every one`})}return t}function hi(e){let t=fr(e);return t?[{label:`protected`,extent:t.extent,detail:t.detail}]:[]}function gi(e){let t=[],n=0;for(let r of e){let e=(t.length>0?2:0)+r.length;if(t.length>0&&n+e>60)break;t.push(r),n+=e}let r=e.length-t.length;return r>0?`${t.join(`, `)}, +${r} more`:t.join(`, `)}function _i(t){let n=null;for(let e of t){let t=e.getCoords();n=n?{rowStart:Math.min(n.rowStart,t.rowStart),colStart:Math.min(n.colStart,t.colStart),rowEnd:Math.max(n.rowEnd,t.rowEnd),colEnd:Math.max(n.colEnd,t.colEnd)}:t}return n?e.AddressUtils.rangeToString(n)??``:``}var X=(e,t)=>`${e} ${t}${e===1?``:`s`}`;function vi(t,n){let r=t.getVisibility(),i=``;return n&&(i+=` (selected)`),r===e.ISheet.Visibility.Hidden?i+=` (hidden)`:r===e.ISheet.Visibility.VeryHidden&&(i+=` (very hidden)`),t.getProtection().isLocked()&&(i+=` (protected)`),`${L(t.getName())}${i}`}function yi(t,n,r,i){let a=r.reduce((e,t)=>e+(t.counts?.[i]??0),0),o=i===Y.Error?r.flatMap(e=>function(e){let t=[];for(let n of e.getMovables().getItems({type:`chart`})){let e=B(n);if(e)for(let r of e.getSeries()){let e=Nt(r);if(e.length===0)continue;let i=r.getName();t.push({movable:n,detail:`series ${i?`"${V(i)}"`:`(unnamed)`} ${e.join(` · `)}`})}}return t}(e.sheet)):[];if(a===0&&o.length===0)return;let s=[],c=0;for(let e of r){if(!e.counts?.[i])continue;let t=e.sheet.getUsedRange();if(!t)continue;let n=L(e.sheet.getName());for(let e of t.getRegions(i))c++,s.length>=20||s.push({address:`${n}!${e.toString()}`,size:`${e.getRowCount()}×${e.getColumnCount()}`,payload:bi(e)})}let l=o.slice(0,20);for(let{movable:t,detail:n}of l){let r=t.getRange();s.push({address:`${L(r.getSheet().getName())}!${e.AddressUtils.rangeToString(r.getCoords())??``}`,size:`chart`,payload:`${t.getName()||`(unnamed)`} · ${n}`})}let u=[];a>0&&u.push(String(a)),o.length>0&&u.push(`${o.length} in charts`),t.h2(`${n} (${u.join(` · `)})`);let d=Math.max(0,...s.map(e=>e.address.length)),f=Math.max(0,...s.map(e=>e.size.length));for(let e of s)t.text(` ${e.address.padEnd(d)} ${e.size.padEnd(f)} ${e.payload}`.trimEnd());c>s.length-l.length&&t.text(` …and ${c-(s.length-l.length)} more · getRegions('${i}') on a sheet's used range lists the rest`),o.length>l.length&&t.text(` …and ${o.length-l.length} more in charts · a sheet's report lists its charts under Charts`),t.blank()}function bi(e){let n=e.getCell(),r=i(n,t.Mode.Display)?.display??``,a=n.getFormulaText();return a?`${r} ${a}`.trim():r}var Z=(e,t)=>!!e&&typeof e==`object`&&!0===e[t],xi={kind:`protectedRanges`,is:e=>Z(e,`isIProtectedRangeCollection`),render:e=>{let t=e.getItems();return t.length===0?`# Unlocked Ranges (0)
38
+ `),i.push({label:`formula`,extent:_i(o),detail:[X(r[Y.Formula]??0,`cell`),X(o.length,`region`),`${e.size} distinct`].join(` · `)})}for(let[e,t]of[[Y.Error,`errors`],[Y.CalcError,`calc failures`],[Y.Circular,`circular`]]){let a=r[e]??0;if(a===0)continue;let o=[...n.getRegions(e)];i.push({label:t,extent:_i(o),detail:[X(a,`cell`),X(o.length,`region`)].join(` · `)})}let c=n.getTables();c.length>0&&i.push({label:`tables`,extent:_i(c.map(e=>e.getRange())),detail:[X(r[Y.Table]??0,`cell`),X(c.length,`table`),gi(c.map(e=>e.getName()))].join(` · `)});let l=e.getPivotTables().getItems();l.length>0&&i.push({label:`pivots`,extent:String(l.length),detail:gi(l.map(e=>e.getName()))}),i.push(...mi(e));let u=a.map(e=>e.getCoords()),d=[];for(let[n,r]of di){let i=Ae(e,n,t,{content:u})?.distinct??0;i>0&&d.push(`${r} ${i}`)}return d.length>0&&i.push({label:`style`,extent:n.toString(),detail:d.join(` · `)}),i.push(...hi(e)),{counts:r,lines:i,formulaRegions:o.length,formulaSignature:s}}function mi(e){let t=[];for(let[n,r]of nn(e.getMovables().getItems())){let i=Xt(r),a=n===`chart`?gi(r.map(Qt)):i.length>0?`${i.length} with text`:``;t.push({label:tn(n).toLowerCase(),extent:String(r.length),detail:a});let o=i.slice(0,c(i.length,5));for(let e of o)t.push({label:``,extent:Kt(e.movable),detail:Jt(e)+(e.movable.isHidden()?` (hidden)`:``)});o.length<i.length&&t.push({label:``,extent:``,detail:`…and ${i.length-o.length} more · wb.getSheet(${JSON.stringify(e.getName())}) quotes every one`})}return t}function hi(e){let t=fr(e);return t?[{label:`protected`,extent:t.extent,detail:t.detail}]:[]}function gi(e){let t=[],n=0;for(let r of e){let e=(t.length>0?2:0)+r.length;if(t.length>0&&n+e>60)break;t.push(r),n+=e}let r=e.length-t.length;return r>0?`${t.join(`, `)}, +${r} more`:t.join(`, `)}function _i(t){let n=null;for(let e of t){let t=e.getCoords();n=n?{rowStart:Math.min(n.rowStart,t.rowStart),colStart:Math.min(n.colStart,t.colStart),rowEnd:Math.max(n.rowEnd,t.rowEnd),colEnd:Math.max(n.colEnd,t.colEnd)}:t}return n?e.AddressUtils.rangeToString(n)??``:``}var X=(e,t)=>`${e} ${t}${e===1?``:`s`}`;function vi(t,n){let r=t.getVisibility(),i=``;return n&&(i+=` (selected)`),r===e.ISheet.Visibility.Hidden?i+=` (hidden)`:r===e.ISheet.Visibility.VeryHidden&&(i+=` (very hidden)`),t.getProtection().isLocked()&&(i+=` (protected)`),`${L(t.getName())}${i}`}function yi(t,n,r,i){let a=r.reduce((e,t)=>e+(t.counts?.[i]??0),0),o=i===Y.Error?r.flatMap(e=>function(e){let t=[];for(let n of e.getMovables().getItems({type:`chart`})){let e=B(n);if(e)for(let r of e.getSeries()){let e=Nt(r);if(e.length===0)continue;let i=r.getName();t.push({movable:n,detail:`series ${i?`"${V(i)}"`:`(unnamed)`} ${e.join(` · `)}`})}}return t}(e.sheet)):[];if(a===0&&o.length===0)return;let s=[],c=0;for(let e of r){if(!e.counts?.[i])continue;let t=e.sheet.getUsedRange();if(!t)continue;let n=L(e.sheet.getName());for(let e of t.getRegions(i))c++,s.length>=20||s.push({address:`${n}!${e.toString()}`,size:`${e.getRowCount()}×${e.getColumnCount()}`,payload:bi(e)})}let l=o.slice(0,20);for(let{movable:t,detail:n}of l){let r=t.getRange();s.push({address:`${L(r.getSheet().getName())}!${e.AddressUtils.rangeToString(r.getCoords())??``}`,size:`chart`,payload:`${t.getContent().getName?.()||`(unnamed)`} · ${n}`})}let u=[];a>0&&u.push(String(a)),o.length>0&&u.push(`${o.length} in charts`),t.h2(`${n} (${u.join(` · `)})`);let d=Math.max(0,...s.map(e=>e.address.length)),f=Math.max(0,...s.map(e=>e.size.length));for(let e of s)t.text(` ${e.address.padEnd(d)} ${e.size.padEnd(f)} ${e.payload}`.trimEnd());c>s.length-l.length&&t.text(` …and ${c-(s.length-l.length)} more · getRegions('${i}') on a sheet's used range lists the rest`),o.length>l.length&&t.text(` …and ${o.length-l.length} more in charts · a sheet's report lists its charts under Charts`),t.blank()}function bi(e){let n=e.getCell(),r=i(n,t.Mode.Display)?.display??``,a=n.getFormulaText();return a?`${r} ${a}`.trim():r}var Z=(e,t)=>!!e&&typeof e==`object`&&!0===e[t],xi={kind:`protectedRanges`,is:e=>Z(e,`isIProtectedRangeCollection`),render:e=>{let t=e.getItems();return t.length===0?`# Unlocked Ranges (0)
39
39
  None`:t.slice(0,Q).map(_r).concat(t.length>Q?[`…and ${t.length-Q} more · render one at a time to see them`]:[]).join(`
40
40
 
41
41
  `)}},Q=20,Si=[{kind:`workbook`,is:e=>Z(e,`isIWorkbook`),render:(e,t)=>fi(e,t)},{kind:`sheet`,is:e=>Z(e,`isISheet`),render:(e,t)=>ni(e,t)},{kind:`cell`,is:e=>Z(e,`isICell`),render:(e,t)=>yr(e,t)},{kind:`names`,is:e=>Z(e,`isINamedCollection`),render:(e,t)=>Yr(e,t)},{kind:`modules`,is:e=>Z(e,`isIModuleCollection`),render:(e,t)=>qr(e,t)},{kind:`module`,is:e=>Z(e,`isIModule`),render:(e,t)=>Kr(e,t)},{kind:`formula`,is:e=>Z(e,`isIFormula`),render:(e,t)=>Lr(e,t)},{kind:`table`,is:e=>Z(e,`isITable`),render:e=>nt(e)},{kind:`movable`,is:e=>Z(e,`isIMovable`),render:e=>on(e)},{kind:`conditionalFormat`,is:e=>Z(e,`isIConditionalFormat`),render:e=>Tr(e)},{kind:`dataValidation`,is:e=>Z(e,`isIDataValidation`),render:e=>Dr(e)},{kind:`protection`,is:e=>Z(e,`isISheetProtection`)||Z(e,`isIWorkbookProtection`),render:e=>gr(e)},xi,{kind:`protectedRange`,is:e=>Z(e,`isIProtectedRange`),render:e=>_r(e)},{kind:`stats`,is:e=>Z(e,`isIRangeStats`),render:e=>ai(e)},{kind:`counts`,is:e=>Z(e,`isICellRangeCounts`),render:e=>Er(e)},{kind:`style`,is:e=>Z(e,`isIStyle`),render:e=>si(e)},{kind:`regions`,is:e=>Z(e,`isICellRegions`),render:(e,t)=>$e(e,t)},{kind:`cellRange`,is:e=>Z(e,`isICellRange`),render:(e,t)=>wr(e,t)},{kind:`ranges`,is:e=>Z(e,`isICellRanges`),render:(e,t)=>ei(e,t)},{kind:`range`,is:e=>Z(e,`isIRange`),render:(e,t)=>ci(e,t)},{kind:`values`,is:e=>Array.isArray(e)&&e.length>0&&e.every(e=>Array.isArray(e)),render:(e,t)=>ci(e,t)},{kind:`records`,is:e=>Array.isArray(e)&&e.length>0&&e.every(Xr),render:(e,t)=>Zr(e,t)},{kind:`record`,is:e=>Xr(e),render:(e,t)=>Zr(e,t)},{kind:`items`,is:e=>Array.isArray(e)&&e.length>0&&e.every(e=>!!$(e)),render:async(e,t)=>{let n=e.length>Q?e.slice(0,Q):e,r=[];for(let e of n)r.push(await $(e).render(e,t));return n.length<e.length&&r.push(`…and ${e.length-n.length} more · render one at a time to see them`),r.join(`
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/query - SheetXL - Workbook read surface and renderers (grep, reports) — capabilities declared once, adapted by any host surface - v0.8.0-beta.4
2
+ * @license @sheetxl/query - SheetXL - Workbook read surface and renderers (grep, reports) — capabilities declared once, adapted by any host surface - v0.8.0-beta.6
3
3
  *
4
4
  * (C) 2026-present SheetXL Inc. & Michael T. Ford
5
5
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -1528,7 +1528,7 @@ function Zt(e, t) {
1528
1528
  }
1529
1529
  var Qt = (e, t) => e.colStart <= t.colEnd && t.colStart <= e.colEnd && e.rowStart <= t.rowEnd && t.rowStart <= e.rowEnd, $t = (e) => {
1530
1530
  let t = e.movable.getRange();
1531
- return `${Bt(t.getSheet(), t.getCoords())} "${e.movable.getName() || "(unnamed)"}"${e.direct ? "" : " (through its dependents)"}`;
1531
+ return `${Bt(t.getSheet(), t.getCoords())} "${e.movable.getContent().getName?.() || "(unnamed)"}"${e.direct ? "" : " (through its dependents)"}`;
1532
1532
  }, en = (e, t) => e.length > t ? `${e.slice(0, t - 1)}…` : e, tn = (e) => e.replace(/[\r\n]+/g, " ").trim(), nn = (e) => e.getShapeType?.() ?? "", rn = (t) => {
1533
1533
  let n = t.getRange();
1534
1534
  return e.rangeToString(n.getCoords()) ?? n.toString();
@@ -1556,7 +1556,7 @@ function cn(e) {
1556
1556
  });
1557
1557
  }
1558
1558
  var ln = (e) => e.getType() === "picture" && e.getResource?.()?.getName() || null, un = (e) => {
1559
- let t = e.getName() || "(unnamed)", n = e.getDescription(), r = K(e);
1559
+ let t = e.getContent().getName?.() || "(unnamed)", n = e.getContent().getDescription(), r = K(e);
1560
1560
  if (r) return en([
1561
1561
  qt(r),
1562
1562
  n ? tn(n) : null,
@@ -1565,7 +1565,7 @@ var ln = (e) => e.getType() === "picture" && e.getResource?.()?.getName() || nul
1565
1565
  let i = e.getContent(), a = [], o = ln(i);
1566
1566
  return o && a.push(o), n && a.push(tn(n)), en(a.length > 0 ? `${t} — ${a.join(" · ")}` : t, 90);
1567
1567
  }, dn = (e) => {
1568
- let t = e.getName() || "(unnamed)", n = e.getDescription();
1568
+ let t = e.getContent().getName?.() || "(unnamed)", n = e.getContent().getDescription();
1569
1569
  return en(n ? `${t} — ${tn(n)}` : t, 90);
1570
1570
  }, fn = /* @__PURE__ */ new Map([
1571
1571
  ["chart", "Charts"],
@@ -1576,7 +1576,9 @@ var ln = (e) => e.getType() === "picture" && e.getResource?.()?.getName() || nul
1576
1576
  function mn(e) {
1577
1577
  let t = /* @__PURE__ */ new Map();
1578
1578
  for (let n of e) {
1579
- let e = n.getContent().getType(), r = t.get(e);
1579
+ let e = n.getContent().getType();
1580
+ if (e === "note") continue;
1581
+ let r = t.get(e);
1580
1582
  r ? r.push(n) : t.set(e, [n]);
1581
1583
  }
1582
1584
  let n = /* @__PURE__ */ new Map();
@@ -1618,7 +1620,7 @@ function gn(e, t, n) {
1618
1620
  }
1619
1621
  function _n(e) {
1620
1622
  let t = new V(), r = e.getRange(), i = e.getContent(), a = i.getType();
1621
- t.h1(`Movable — ${yt(r)}`), t.blank(), t.fact(`Name: ${e.getName() || "(unnamed)"}`);
1623
+ t.h1(`Movable — ${yt(r)}`), t.blank(), t.fact(`Name: ${e.getContent().getName?.() || "(unnamed)"}`);
1622
1624
  let o = K(e);
1623
1625
  o ? Zt(t, o) : t.fact(`Type: ${a}`);
1624
1626
  let s = ln(i);
@@ -1627,7 +1629,7 @@ function _n(e) {
1627
1629
  c && t.fact(`Shape: ${c}`);
1628
1630
  let l = i.getTextFrame?.();
1629
1631
  l && t.fact(`Text: ${an(l.getText(), null, "")}`);
1630
- let u = e.getDescription();
1632
+ let u = e.getContent().getDescription();
1631
1633
  u && t.fact(`Alt Text: ${tn(u)}`), t.fact(`Anchor: ${U(r)}, ${((e) => {
1632
1634
  switch (e) {
1633
1635
  case n.Type.Absolute: return "absolute — stays put when rows or columns move";
@@ -1724,10 +1726,10 @@ var vn = (e) => e.getVisibility() === "visible", yn = (e, t, n) => {
1724
1726
  ...J("chart", n.getChartTitle()),
1725
1727
  ...n.getAxes().flatMap((e) => J("chart", e.getTitle())),
1726
1728
  ...n.getSeries().flatMap((e) => e.getNameFormula() === null ? J("chart", e.getName()) : []),
1727
- ...J("chart", e.getDescription())
1729
+ ...J("chart", e.getContent().getDescription())
1728
1730
  ] : [];
1729
1731
  let r = sn(e);
1730
- return r !== null && t.includes("shape") ? [...J("shape", r), ...J("shape", e.getDescription())] : [];
1732
+ return r !== null && t.includes("shape") ? [...J("shape", r), ...J("shape", e.getContent().getDescription())] : [];
1731
1733
  }, wn = (e) => {
1732
1734
  let t = e.isIFormula ? `=${e.getExpression()}` : null, n = t ?? e.getRanges?.()?.getAddress() ?? e.getName();
1733
1735
  return [
@@ -1861,7 +1863,7 @@ async function kn(t, n) {
1861
1863
  }
1862
1864
  let _ = 0;
1863
1865
  if (!y && (r.includes("shape") || r.includes("chart"))) {
1864
- let n = t.getMovables().getItems(u).filter((e) => s || !e.isHidden()).map((e) => ({
1866
+ let n = t.getMovables().getItems(u).filter((e) => e.getContent().getType() !== "note").filter((e) => s || !e.isHidden()).map((e) => ({
1865
1867
  movable: e,
1866
1868
  at: e.getRange().getCoords()
1867
1869
  })).sort((e, t) => Dn(e.at, t.at));
@@ -3733,7 +3735,7 @@ function zi(t, n, r, i) {
3733
3735
  s.push({
3734
3736
  address: `${W(r.getSheet().getName())}!${e.rangeToString(r.getCoords()) ?? ""}`,
3735
3737
  size: "chart",
3736
- payload: `${t.getName() || "(unnamed)"} · ${n}`
3738
+ payload: `${t.getContent().getName?.() || "(unnamed)"} · ${n}`
3737
3739
  });
3738
3740
  }
3739
3741
  let u = [];
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license @sheetxl/query - SheetXL - Workbook read surface and renderers (grep, reports) — capabilities declared once, adapted by any host surface - v0.8.0-beta.4
2
+ * @license @sheetxl/query - SheetXL - Workbook read surface and renderers (grep, reports) — capabilities declared once, adapted by any host surface - v0.8.0-beta.6
3
3
  *
4
4
  * (C) 2026-present SheetXL Inc. & Michael T. Ford
5
5
  * License: The license can be found at https://www.sheetxl.com/license.
@@ -1555,7 +1555,7 @@ function Wt(e, t) {
1555
1555
  var qt = (e, t) => e.colStart <= t.colEnd && t.colStart <= e.colEnd && e.rowStart <= t.rowEnd && t.rowStart <= e.rowEnd;
1556
1556
  var Jt = (e) => {
1557
1557
  const t = e.movable.getRange();
1558
- return `${Tt(t.getSheet(), t.getCoords())} "${e.movable.getName() || "(unnamed)"}"${e.direct ? "" : " (through its dependents)"}`;
1558
+ return `${Tt(t.getSheet(), t.getCoords())} "${e.movable.getContent().getName?.() || "(unnamed)"}"${e.direct ? "" : " (through its dependents)"}`;
1559
1559
  }, Gt = (e, t) => e.length > t ? `${e.slice(0, t - 1)}…` : e, Xt = (e) => e.replace(/[\r\n]+/g, " ").trim(), Zt = (e) => e.getShapeType?.() ?? "", Kt = (t) => {
1560
1560
  const n = t.getRange();
1561
1561
  return e.rangeToString(n.getCoords()) ?? n.toString();
@@ -1583,7 +1583,7 @@ function tn(e) {
1583
1583
  });
1584
1584
  }
1585
1585
  var nn = (e) => "picture" === e.getType() && e.getResource?.()?.getName() || null, on = (e) => {
1586
- const t = e.getName() || "(unnamed)", n = e.getDescription(), o = Mt(e);
1586
+ const t = e.getContent().getName?.() || "(unnamed)", n = e.getContent().getDescription(), o = Mt(e);
1587
1587
  if (o) return Gt([
1588
1588
  Ht(o),
1589
1589
  n ? Xt(n) : null,
@@ -1593,7 +1593,7 @@ var nn = (e) => "picture" === e.getType() && e.getResource?.()?.getName() || nul
1593
1593
  a && s.push(a), n && s.push(Xt(n));
1594
1594
  return Gt(s.length > 0 ? `${t} — ${s.join(" · ")}` : t, 90);
1595
1595
  }, rn = (e) => {
1596
- const t = e.getName() || "(unnamed)", n = e.getDescription();
1596
+ const t = e.getContent().getName?.() || "(unnamed)", n = e.getContent().getDescription();
1597
1597
  return Gt(n ? `${t} — ${Xt(n)}` : t, 90);
1598
1598
  }, sn = /* @__PURE__ */ new Map([
1599
1599
  ["chart", "Charts"],
@@ -1604,7 +1604,9 @@ var nn = (e) => "picture" === e.getType() && e.getResource?.()?.getName() || nul
1604
1604
  function ln(e) {
1605
1605
  const t = /* @__PURE__ */ new Map();
1606
1606
  for (const n of e) {
1607
- const e = n.getContent().getType(), o = t.get(e);
1607
+ const e = n.getContent().getType();
1608
+ if ("note" === e) continue;
1609
+ const o = t.get(e);
1608
1610
  o ? o.push(n) : t.set(e, [n]);
1609
1611
  }
1610
1612
  const n = /* @__PURE__ */ new Map();
@@ -1646,7 +1648,7 @@ function un(e, t, n) {
1646
1648
  }
1647
1649
  function gn(e) {
1648
1650
  const t = new Je(), o = e.getRange(), r = e.getContent(), s = r.getType();
1649
- t.h1(`Movable — ${gt(o)}`), t.blank(), t.fact(`Name: ${e.getName() || "(unnamed)"}`);
1651
+ t.h1(`Movable — ${gt(o)}`), t.blank(), t.fact(`Name: ${e.getContent().getName?.() || "(unnamed)"}`);
1650
1652
  const a = Mt(e);
1651
1653
  a ? Wt(t, a) : t.fact(`Type: ${s}`);
1652
1654
  const l = nn(r);
@@ -1655,7 +1657,7 @@ function gn(e) {
1655
1657
  i && t.fact(`Shape: ${i}`);
1656
1658
  const c = r.getTextFrame?.();
1657
1659
  c && t.fact(`Text: ${Qt(c.getText(), null, "")}`);
1658
- const u = e.getDescription();
1660
+ const u = e.getContent().getDescription();
1659
1661
  u && t.fact(`Alt Text: ${Xt(u)}`), t.fact(`Anchor: ${at(o)}, ${((e) => {
1660
1662
  switch (e) {
1661
1663
  case n.Type.Absolute: return "absolute — stays put when rows or columns move";
@@ -1752,10 +1754,10 @@ var dn = (e) => "visible" === e.getVisibility(), hn = (e, t, n) => {
1752
1754
  ...pn("chart", n.getChartTitle()),
1753
1755
  ...n.getAxes().flatMap((e) => pn("chart", e.getTitle())),
1754
1756
  ...n.getSeries().flatMap((e) => null === e.getNameFormula() ? pn("chart", e.getName()) : []),
1755
- ...pn("chart", e.getDescription())
1757
+ ...pn("chart", e.getContent().getDescription())
1756
1758
  ] : [];
1757
1759
  const o = en(e);
1758
- return null !== o && t.includes("shape") ? [...pn("shape", o), ...pn("shape", e.getDescription())] : [];
1760
+ return null !== o && t.includes("shape") ? [...pn("shape", o), ...pn("shape", e.getContent().getDescription())] : [];
1759
1761
  }, Sn = (e) => {
1760
1762
  const t = e.isIFormula ? `=${e.getExpression()}` : null, n = t ?? e.getRanges?.()?.getAddress() ?? e.getName();
1761
1763
  return [
@@ -1893,7 +1895,7 @@ async function En(t, n) {
1893
1895
  }
1894
1896
  let $ = 0;
1895
1897
  if (!S && (o.includes("shape") || o.includes("chart"))) {
1896
- const n = t.getMovables().getItems(u).filter((e) => l || !e.isHidden()).map((e) => ({
1898
+ const n = t.getMovables().getItems(u).filter((e) => "note" !== e.getContent().getType()).filter((e) => l || !e.isHidden()).map((e) => ({
1897
1899
  movable: e,
1898
1900
  at: e.getRange().getCoords()
1899
1901
  })).sort((e, t) => xn(e.at, t.at));
@@ -3797,7 +3799,7 @@ function Vr(t, n, o, r) {
3797
3799
  l.push({
3798
3800
  address: `${lt(o.getSheet().getName())}!${e.rangeToString(o.getCoords()) ?? ""}`,
3799
3801
  size: "chart",
3800
- payload: `${t.getName() || "(unnamed)"} · ${n}`
3802
+ payload: `${t.getContent().getName?.() || "(unnamed)"} · ${n}`
3801
3803
  });
3802
3804
  }
3803
3805
  const u = [];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@sheetxl/query",
3
3
  "description": "SheetXL - Workbook read surface and renderers (grep, reports) — capabilities declared once, adapted by any host surface",
4
- "version": "0.8.0-beta.4",
4
+ "version": "0.8.0-beta.6",
5
5
  "license": "SEE LICENSE IN <LICENSE>",
6
6
  "type": "module",
7
7
  "exports": {
@@ -43,8 +43,8 @@
43
43
  "query"
44
44
  ],
45
45
  "dependencies": {
46
- "@sheetxl/primitives": "^0.8.0-beta.4",
47
- "@sheetxl/sdk": "^0.8.0-beta.4"
46
+ "@sheetxl/primitives": "^0.8.0-beta.6",
47
+ "@sheetxl/sdk": "^0.8.0-beta.6"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@types/node": "^26.1.2"
@@ -45,6 +45,8 @@ export declare const describeTypeHeading: (type: string) => string;
45
45
  /**
46
46
  * `movables` by content type, in section order: the known types as {@link TYPE_HEADINGS} lists
47
47
  * them, then any other in the order it first appears. Z-order is kept within a type.
48
+ *
49
+ * A note's box is left out: the note is reported with the comments, and its box says nothing more.
48
50
  */
49
51
  export declare function groupMovables(movables: readonly IMovable[]): Map<string, IMovable[]>;
50
52
  /**