1function T(n,a){return`${n}\0${a.targetId}\0${a.character}`}function z(n,a,e){return n.meaning?a.length>1?!0:u(n.meaning)!==u(e):!1}function K(n,a){return n.map(e=>({...e,meaning:e.meaning||p(a[e.character])||void 0}))}const C=["traditional","hong-kong","simplified","japanese","korean"],w={traditional:"Traditional",simplified:"Simplified","hong-kong":"Hong Kong",japanese:"Japanese",korean:"Korean"};function _(n){return!!(n&&[...n].length===1&&new RegExp("^\\p{Script=Han}$","u").test(n))}function p(n){return(n||"").replace(/\s*\(trad\/jp\)/gi,"").replace(/\s*\(trad\)/gi,"").replace(/\s*\(simp\)/gi,"").replace(/\s*\(jp\)/gi,"").trim()}function u(n){return p(n).normalize("NFKC").toLocaleLowerCase("en").replace(/\s+/g," ")}function k(n){const a=[n.semantic_mnemonic,...n.semantic_mnemonic_variants||[]].filter(i=>!!i),e=new Set;return a.filter(i=>!i.character||e.has(i.character)?!1:(e.add(i.character),!0))}function R(n){var a,e,i;return p(((a=n.semantic_mnemonic)==null?void 0:a.mnemonic_keyword)||((e=n.semantic_mnemonic)==null?void 0:e.meaning)||((i=n.chinese_char)==null?void 0:i.gloss)||"")}function E(n){var l,r;if(n.redirect||!n.simplified_form_of)return null;const a=((l=n.chinese_char)==null?void 0:l.char)||n.key,e=n.simplified_form_of;if([...a].length!==1||[...e].length!==1||a===e)return null;const i=(((r=n.chinese_char)==null?void 0:r.tradVariants)||[]).filter(o=>o&&o!==a);if(i.length!==1||i[0]!==e)return null;const t=k(n),s=t.find(o=>o.character===a),c=t.find(o=>o.character===e),h=u(s==null?void 0:s.meaning),d=u(c==null?void 0:c.meaning);return h&&h===d?e:null}const L=n=>n!==void 0&&n>=1&&n<=8;function M(n,a=[]){var i,t;const e=[(t=(i=n.chinese_char)==null?void 0:i.statistics)==null?void 0:t.hskLevel,...a.map(s=>s.hskLevel)].filter(s=>typeof s=="number"&&s>=1&&s<=9);return e.length?Math.min(...e):void 0}function v(n){var a,e,i,t,s,c,h,d,l,r,o;return{key:n.key,redirect:n.redirect,simplifiedFormOf:n.simplified_form_of,chineseCharacter:(a=n.chinese_char)==null?void 0:a.char,simplifiedVariants:(e=n.chinese_char)==null?void 0:e.simpVariants,traditionalVariants:(i=n.chinese_char)==null?void 0:i.tradVariants,hongKongCharacter:(t=n.chinese_char)==null?void 0:t.hkChar,japaneseCharacter:(s=n.japanese_char)==null?void 0:s.literal,japaneseJoyo:L((h=(c=n.japanese_char)==null?void 0:c.misc)==null?void 0:h.grade),koreanCharacter:(d=n.korean_char)==null?void 0:d.character,koreanHanjaForm:(l=n.korean_char)==null?void 0:l.hanjaForm,hskLevel:(o=(r=n.chinese_char)==null?void 0:r.statistics)==null?void 0:o.hskLevel}}function B(n){const a=n.chineseCharacter,e=n.traditionalVariants??[];return!!a&&(e.length===0||e.includes(a)||!!n.simplifiedFormOf)}function O(n){var i;const a=n.chineseCharacter,e=n.simplifiedVariants??[];return!!a&&(!!((i=n.traditionalVariants)!=null&&i.length)||e.every(t=>t===a)||e.includes(a))}function V(n,a){const e=n.chineseCharacter,i=B(n);return[[i?e:void 0,"traditional"],[O(n)?e:void 0,"simplified"],...(n.traditionalVariants??[]).map(t=>[t,"traditional"]),...(n.simplifiedVariants??[]).map(t=>[t,"simplified"]),[n.hongKongCharacter||(i?e:void 0),"hong-kong"],[a??n.japaneseCharacter,"japanese"],[n.koreanCharacter,"korean"],[n.koreanHanjaForm,"korean"]]}function H(n,a){var l;const e=new Map,i=[],t=v(n),s=(l=[t,...a].find(r=>r.japaneseJoyo))==null?void 0:l.japaneseCharacter,c=(r,o)=>{var m;_(r)&&(e.has(r)||(e.set(r,new Set),i.push(r)),o&&((m=e.get(r))==null||m.add(o)))},h=r=>{for(const[o,m]of V(r,s))c(o,m)};h(t);const d=new Map([...e].map(([r,o])=>[r,new Set(o)]));for(const r of a)h(r);return{rolesByCharacter:e,primaryRolesByCharacter:d,order:i}}function S(n){return n.includes("japanese")&&!n.some(a=>a.startsWith("traditional")||a==="simplified")?"ja":n.includes("korean")&&n.length===1?"ko":n.includes("hong-kong")&&n.length===1?"zh-HK":n.includes("simplified")&&!n.includes("traditional")?"zh-Hans":"zh-Hant"}function $({entry:n,word:a,cards:e=k(n),relatedContexts:i=[]}){var l;const{rolesByCharacter:t,primaryRolesByCharacter:s,order:c}=H(n,i),h=new Map(e.map(r=>[r.character,p(r.meaning)])),d=r=>{_(r)&&!c.includes(r)&&(c.push(r),t.set(r,new Set))};d((l=n.chinese_char)==null?void 0:l.char);for(const r of e)d(r.character);return[...a].length===1&&d(a),c.map((r,o)=>{const m=s.get(r),f=[...m!=null&&m.size?m:t.get(r)||[]].sort((g,j)=>C.indexOf(g)-C.indexOf(j)),F=f.length?f.map(g=>w[g]).join(" / "):"Related form";return{character:r,roles:f,roleLabel:F,meaning:h.get(r),targetId:`character-writer-target-${o}`,languageTag:S(f)}})}export{$ as b,T as c,E as e,M as h,R as l,p as n,v as r,z as s,K as w};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.