@urbit-xyz/azimuth-hanzi 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-b72e8d27.js","sources":["../src/mapping.ts","../src/core.ts"],"sourcesContent":["import type { CharacterEntry } from './types';\n\n/**\n * The 256 prefix syllables and 256 suffix syllables fixed by Urbit phonotactics.\n * These arrays never change; the character assignments below them do.\n *\n * Position in the array IS the byte value. `PREFIXES[0] === 'doz'`,\n * `SUFFIXES[0] === 'zod'`, etc. The Hanzi maps below are keyed by byte for the\n * same reason: the byte is canonical, the syllable is one rendering of it,\n * the character is another.\n */\nexport const PREFIXES = [\n 'doz', 'mar', 'bin', 'wan', 'sam', 'lit', 'sig', 'hid', 'fid', 'lis', 'sog', 'dir', 'wac', 'sab', 'wis', 'sib',\n 'rig', 'sol', 'dop', 'mod', 'fog', 'lid', 'hop', 'dar', 'dor', 'lor', 'hod', 'fol', 'rin', 'tog', 'sil', 'mir',\n 'hol', 'pas', 'lac', 'rov', 'liv', 'dal', 'sat', 'lib', 'tab', 'han', 'tic', 'pid', 'tor', 'bol', 'fos', 'dot',\n 'los', 'dil', 'for', 'pil', 'ram', 'tir', 'win', 'tad', 'bic', 'dif', 'roc', 'wid', 'bis', 'das', 'mid', 'lop',\n 'ril', 'nar', 'dap', 'mol', 'san', 'loc', 'nov', 'sit', 'nid', 'tip', 'sic', 'rop', 'wit', 'nat', 'pan', 'min',\n 'rit', 'pod', 'mot', 'tam', 'tol', 'sav', 'pos', 'nap', 'nop', 'som', 'fin', 'fon', 'ban', 'mor', 'wor', 'sip',\n 'ron', 'nor', 'bot', 'wic', 'soc', 'wat', 'dol', 'mag', 'pic', 'dav', 'bid', 'bal', 'tim', 'tas', 'mal', 'lig',\n 'siv', 'tag', 'pad', 'sal', 'div', 'dac', 'tan', 'sid', 'fab', 'tar', 'mon', 'ran', 'nis', 'wol', 'mis', 'pal',\n 'las', 'dis', 'map', 'rab', 'tob', 'rol', 'lat', 'lon', 'nod', 'nav', 'fig', 'nom', 'nib', 'pag', 'sop', 'ral',\n 'bil', 'had', 'doc', 'rid', 'moc', 'pac', 'rav', 'rip', 'fal', 'tod', 'til', 'tin', 'hap', 'mic', 'fan', 'pat',\n 'tac', 'lab', 'mog', 'sim', 'son', 'pin', 'lom', 'ric', 'tap', 'fir', 'has', 'bos', 'bat', 'poc', 'hac', 'tid',\n 'hav', 'sap', 'lin', 'dib', 'hos', 'dab', 'bit', 'bar', 'rac', 'par', 'lod', 'dos', 'bor', 'toc', 'hil', 'mac',\n 'tom', 'dig', 'fil', 'fas', 'mit', 'hob', 'har', 'mig', 'hin', 'rad', 'mas', 'hal', 'rag', 'lag', 'fad', 'top',\n 'mop', 'hab', 'nil', 'nos', 'mil', 'fop', 'fam', 'dat', 'nol', 'din', 'hat', 'nac', 'ris', 'fot', 'rib', 'hoc',\n 'nim', 'lar', 'fit', 'wal', 'rap', 'sar', 'nal', 'mos', 'lan', 'don', 'dan', 'lad', 'dov', 'riv', 'bac', 'pol',\n 'lap', 'tal', 'pit', 'nam', 'bon', 'ros', 'ton', 'fod', 'pon', 'sov', 'noc', 'sor', 'lav', 'mat', 'mip', 'fip',\n] as const;\n\nexport const SUFFIXES = [\n 'zod', 'nec', 'bud', 'wes', 'sev', 'per', 'sut', 'let', 'ful', 'pen', 'syt', 'dur', 'wep', 'ser', 'wyl', 'sun',\n 'ryp', 'syx', 'dyr', 'nup', 'heb', 'peg', 'lup', 'dep', 'dys', 'put', 'lug', 'hec', 'ryt', 'tyv', 'syd', 'nex',\n 'lun', 'mep', 'lut', 'sep', 'pes', 'del', 'sul', 'ped', 'tem', 'led', 'tul', 'met', 'wen', 'byn', 'hex', 'feb',\n 'pyl', 'dul', 'het', 'mev', 'rut', 'tyl', 'wyd', 'tep', 'bes', 'dex', 'sef', 'wyc', 'bur', 'der', 'nep', 'pur',\n 'rys', 'reb', 'den', 'nut', 'sub', 'pet', 'rul', 'syn', 'reg', 'tyd', 'sup', 'sem', 'wyn', 'rec', 'meg', 'net',\n 'sec', 'mul', 'nym', 'tev', 'web', 'sum', 'mut', 'nyx', 'rex', 'teb', 'fus', 'hep', 'ben', 'mus', 'wyx', 'sym',\n 'sel', 'ruc', 'dec', 'wex', 'syr', 'wet', 'dyl', 'myn', 'mes', 'det', 'bet', 'bel', 'tux', 'tug', 'myr', 'pel',\n 'syp', 'ter', 'meb', 'set', 'dut', 'deg', 'tex', 'sur', 'fel', 'tud', 'nux', 'rux', 'ren', 'wyt', 'nub', 'med',\n 'lyt', 'dus', 'neb', 'rum', 'tyn', 'seg', 'lyx', 'pun', 'res', 'red', 'fun', 'rev', 'ref', 'mec', 'ted', 'rus',\n 'bex', 'leb', 'dux', 'ryn', 'num', 'pyx', 'ryg', 'ryx', 'fep', 'tyr', 'tus', 'tyc', 'leg', 'nem', 'fer', 'mer',\n 'ten', 'lus', 'nus', 'syl', 'tec', 'mex', 'pub', 'rym', 'tuc', 'fyl', 'lep', 'deb', 'ber', 'mug', 'hut', 'tun',\n 'byl', 'sud', 'pem', 'dev', 'lur', 'def', 'bus', 'bep', 'run', 'mel', 'pex', 'dyt', 'byt', 'typ', 'lev', 'myl',\n 'wed', 'duc', 'fur', 'fex', 'nul', 'luc', 'len', 'ner', 'lex', 'rup', 'ned', 'lec', 'ryd', 'lyd', 'fen', 'wel',\n 'nyd', 'hus', 'rel', 'rud', 'nes', 'hes', 'fet', 'des', 'ret', 'dun', 'ler', 'nyr', 'seb', 'hul', 'ryl', 'lud',\n 'rem', 'lys', 'fyn', 'wer', 'ryc', 'sug', 'nys', 'nyl', 'lyn', 'dyn', 'dem', 'lux', 'fed', 'sed', 'bec', 'mun',\n 'lyr', 'tes', 'mud', 'nyt', 'byr', 'sen', 'weg', 'fyr', 'mur', 'tel', 'rep', 'teg', 'pec', 'nel', 'nev', 'fes',\n] as const;\n\nexport type Prefix = typeof PREFIXES[number];\nexport type Suffix = typeof SUFFIXES[number];\nexport type Phoneme = Prefix | Suffix;\n\n/**\n * Per-byte entry. Tuple form to keep the mapping compact.\n * [character, pinyin, English gloss]\n * Category comes from the enclosing group key.\n */\ntype Entry = readonly [char: string, pinyin: string, gloss: string];\n\n// ===== Prefix → character mapping (keyed by byte 0-255) ======================\n// Prefixes are universal adjectives. Edit here to retune the mapping.\n// Group keys ARE the category; each byte appears in exactly one group.\n\nexport const PREFIX_GROUPS = {\n 'Colors & Light': { // bytes 0-21 (doz..lid)\n 0: ['红', 'hóng', 'red'],\n 1: ['青', 'qīng', 'azure'],\n 2: ['白', 'bái', 'white'],\n 3: ['黑', 'hēi', 'black'],\n 4: ['金', 'jīn', 'golden'],\n 5: ['银', 'yín', 'silver'],\n 6: ['紫', 'zǐ', 'purple'],\n 7: ['碧', 'bì', 'jade-green'],\n 8: ['明', 'míng', 'bright'],\n 9: ['暗', 'àn', 'dark'],\n 10: ['灿', 'càn', 'radiant'],\n 11: ['辉', 'huī', 'brilliant'],\n 12: ['彤', 'tóng', 'vermillion'],\n 13: ['玄', 'xuán', 'dark'],\n 14: ['素', 'sù', 'plain'],\n 15: ['丹', 'dān', 'cinnabar'],\n 16: ['苍', 'cāng', 'grey-blue'],\n 17: ['黛', 'dài', 'indigo'],\n 18: ['朱', 'zhū', 'scarlet'],\n 19: ['翠', 'cuì', 'emerald'],\n 20: ['皓', 'hào', 'luminous'],\n 21: ['曜', 'yào', 'blazing'],\n },\n 'Size & Scale': { // bytes 22-49 (hop..dil)\n 22: ['大', 'dà', 'great'],\n 23: ['小', 'xiǎo', 'small'],\n 24: ['辽', 'liáo', 'vast'],\n 25: ['深', 'shēn', 'deep'],\n 26: ['高', 'gāo', 'high'],\n 27: ['远', 'yuǎn', 'far'],\n 28: ['长', 'cháng', 'long'],\n 29: ['阔', 'kuò', 'broad'],\n 30: ['宏', 'hóng', 'grand'],\n 31: ['纤', 'xiān', 'minute'],\n 32: ['浩', 'hào', 'immense'],\n 33: ['渺', 'miǎo', 'boundless'],\n 34: ['巍', 'wēi', 'towering'],\n 35: ['峻', 'jùn', 'lofty'],\n 36: ['广', 'guǎng', 'extensive'],\n 37: ['厚', 'hòu', 'thick'],\n 38: ['薄', 'báo', 'thin'],\n 39: ['细', 'xì', 'fine'],\n 40: ['粗', 'cū', 'coarse'],\n 41: ['满', 'mǎn', 'full'],\n 42: ['空', 'kōng', 'empty'],\n 43: ['虚', 'xū', 'hollow'],\n 44: ['实', 'shí', 'solid'],\n 45: ['疏', 'shū', 'sparse'],\n 46: ['密', 'mì', 'dense'],\n 47: ['窄', 'zhǎi', 'narrow'],\n 48: ['宽', 'kuān', 'wide'],\n 49: ['无', 'wú', 'boundless'],\n },\n 'Texture & Sensation': { // bytes 50-75 (for..rop)\n 50: ['柔', 'róu', 'soft'],\n 51: ['刚', 'gāng', 'hard'],\n 52: ['温', 'wēn', 'warm'],\n 53: ['凉', 'liáng', 'cool'],\n 54: ['寒', 'hán', 'cold'],\n 55: ['暖', 'nuǎn', 'warm'],\n 56: ['滑', 'huá', 'smooth'],\n 57: ['涩', 'sè', 'rough'],\n 58: ['脆', 'cuì', 'crisp'],\n 59: ['韧', 'rèn', 'supple'],\n 60: ['润', 'rùn', 'moist'],\n 61: ['燥', 'zào', 'dry'],\n 62: ['轻', 'qīng', 'light'],\n 63: ['重', 'zhòng', 'heavy'],\n 64: ['香', 'xiāng', 'fragrant'],\n 65: ['馥', 'fù', 'aromatic'],\n 66: ['清', 'qīng', 'fresh'],\n 67: ['浓', 'nóng', 'rich'],\n 68: ['淡', 'dàn', 'faint'],\n 69: ['烈', 'liè', 'intense'],\n 70: ['醇', 'chún', 'mellow'],\n 71: ['涓', 'juān', 'trickling'],\n 72: ['澈', 'chè', 'clear'],\n 73: ['浊', 'zhuó', 'murky'],\n 74: ['莹', 'yíng', 'lustrous'],\n 75: ['晶', 'jīng', 'crystalline'],\n },\n 'Age & Permanence': { // bytes 76-99 (wit..wic)\n 76: ['古', 'gǔ', 'ancient'],\n 77: ['新', 'xīn', 'new'],\n 78: ['永', 'yǒng', 'eternal'],\n 79: ['恒', 'héng', 'constant'],\n 80: ['久', 'jiǔ', 'lasting'],\n 81: ['暂', 'zàn', 'transient'],\n 82: ['初', 'chū', 'first'],\n 83: ['终', 'zhōng', 'final'],\n 84: ['昔', 'xī', 'past'],\n 85: ['今', 'jīn', 'present'],\n 86: ['幼', 'yòu', 'young'],\n 87: ['老', 'lǎo', 'old'],\n 88: ['稚', 'zhì', 'tender'],\n 89: ['耄', 'mào', 'aged'],\n 90: ['旧', 'jiù', 'former'],\n 91: ['鲜', 'xiān', 'fresh'],\n 92: ['残', 'cán', 'remnant'],\n 93: ['全', 'quán', 'whole'],\n 94: ['半', 'bàn', 'half'],\n 95: ['始', 'shǐ', 'beginning'],\n 96: ['末', 'mò', 'ending'],\n 97: ['元', 'yuán', 'original'],\n 98: ['本', 'běn', 'original'],\n 99: ['真', 'zhēn', 'true'],\n },\n 'Emotional Tone': { // bytes 100-129 (soc..dis)\n 100: ['恬', 'tián', 'serene'],\n 101: ['暴', 'bào', 'fierce'],\n 102: ['婉', 'wǎn', 'gentle'],\n 103: ['狂', 'kuáng', 'wild'],\n 104: ['安', 'ān', 'calm'],\n 105: ['乱', 'luàn', 'chaotic'],\n 106: ['宁', 'níng', 'peaceful'],\n 107: ['悲', 'bēi', 'sorrowful'],\n 108: ['欢', 'huān', 'joyful'],\n 109: ['怒', 'nù', 'wrathful'],\n 110: ['哀', 'āi', 'mournful'],\n 111: ['乐', 'lè', 'happy'],\n 112: ['忧', 'yōu', 'melancholy'],\n 113: ['喜', 'xǐ', 'delighted'],\n 114: ['惊', 'jīng', 'startled'],\n 115: ['惧', 'jù', 'fearful'],\n 116: ['慕', 'mù', 'longing'],\n 117: ['恋', 'liàn', 'devoted'],\n 118: ['傲', 'ào', 'proud'],\n 119: ['谦', 'qiān', 'humble'],\n 120: ['勇', 'yǒng', 'brave'],\n 121: ['怯', 'qiè', 'timid'],\n 122: ['坚', 'jiān', 'resolute'],\n 123: ['绵', 'mián', 'tender'],\n 124: ['猛', 'měng', 'fierce'],\n 125: ['静', 'jìng', 'secluded'],\n 126: ['闲', 'xián', 'leisurely'],\n 127: ['逸', 'yì', 'carefree'],\n 128: ['倦', 'juàn', 'weary'],\n 129: ['醒', 'xǐng', 'alert'],\n },\n 'Virtues & Character': { // bytes 130-159 (map..pat)\n 130: ['仁', 'rén', 'benevolent'],\n 131: ['义', 'yì', 'righteous'],\n 132: ['礼', 'lǐ', 'courteous'],\n 133: ['智', 'zhì', 'wise'],\n 134: ['信', 'xìn', 'trustworthy'],\n 135: ['忠', 'zhōng', 'loyal'],\n 136: ['孝', 'xiào', 'filial'],\n 137: ['廉', 'lián', 'incorrupt'],\n 138: ['耻', 'chǐ', 'honorable'],\n 139: ['慎', 'shèn', 'prudent'],\n 140: ['敬', 'jìng', 'reverent'],\n 141: ['诚', 'chéng', 'sincere'],\n 142: ['笃', 'dǔ', 'devoted'],\n 143: ['睿', 'ruì', 'sagacious'],\n 144: ['哲', 'zhé', 'philosophical'],\n 145: ['纯', 'chún', 'pure'],\n 146: ['毅', 'yì', 'resolute'],\n 147: ['贤', 'xián', 'virtuous'],\n 148: ['善', 'shàn', 'good'],\n 149: ['美', 'měi', 'beautiful'],\n 150: ['德', 'dé', 'virtuous'],\n 151: ['正', 'zhèng', 'upright'],\n 152: ['直', 'zhí', 'honest'],\n 153: ['公', 'gōng', 'fair'],\n 154: ['晰', 'xī', 'clear'],\n 155: ['达', 'dá', 'enlightened'],\n 156: ['通', 'tōng', 'understanding'],\n 157: ['博', 'bó', 'learned'],\n 158: ['儒', 'rú', 'refined'],\n 159: ['卓', 'zhuó', 'distinguished'],\n },\n 'Beauty & Refinement': { // bytes 160-183 (tac..bar)\n 160: ['雅', 'yǎ', 'elegant'],\n 161: ['秀', 'xiù', 'graceful'],\n 162: ['丽', 'lì', 'beautiful'],\n 163: ['妙', 'miào', 'exquisite'],\n 164: ['华', 'huá', 'splendid'],\n 165: ['瑰', 'guī', 'magnificent'],\n 166: ['绮', 'qǐ', 'gorgeous'],\n 167: ['艳', 'yàn', 'dazzling'],\n 168: ['媚', 'mèi', 'charming'],\n 169: ['娴', 'xián', 'refined'],\n 170: ['曼', 'màn', 'gracious'],\n 171: ['端', 'duān', 'dignified'],\n 172: ['庄', 'zhuāng', 'stately'],\n 173: ['典', 'diǎn', 'classic'],\n 174: ['朴', 'pǔ', 'simple'],\n 175: ['简', 'jiǎn', 'plain'],\n 176: ['淳', 'chún', 'unspoiled'],\n 177: ['俊', 'jùn', 'handsome'],\n 178: ['飘', 'piāo', 'elegant'],\n 179: ['灵', 'líng', 'ethereal'],\n 180: ['奇', 'qí', 'wondrous'],\n 181: ['异', 'yì', 'unique'],\n 182: ['殊', 'shū', 'special'],\n 183: ['绝', 'jué', 'peerless'],\n },\n 'Intensity & Clarity': { // bytes 184-207 (rac..top)\n 184: ['剧', 'jù', 'intense'],\n 185: ['微', 'wēi', 'faint'],\n 186: ['稠', 'chóu', 'dense'],\n 187: ['稀', 'xī', 'sparse'],\n 188: ['亮', 'liàng', 'clear'],\n 189: ['昧', 'mèi', 'dim'],\n 190: ['锐', 'ruì', 'sharp'],\n 191: ['钝', 'dùn', 'dull'],\n 192: ['显', 'xiǎn', 'vivid'],\n 193: ['隐', 'yǐn', 'hidden'],\n 194: ['透', 'tòu', 'transparent'],\n 195: ['朦', 'méng', 'hazy'],\n 196: ['耀', 'yào', 'dazzling'],\n 197: ['暧', 'ài', 'dim'],\n 198: ['盛', 'shèng', 'flourishing'],\n 199: ['衰', 'shuāi', 'fading'],\n 200: ['旺', 'wàng', 'thriving'],\n 201: ['枯', 'kū', 'withered'],\n 202: ['荣', 'róng', 'glorious'],\n 203: ['凋', 'diāo', 'wilted'],\n 204: ['茂', 'mào', 'lush'],\n 205: ['萎', 'wěi', 'withering'],\n 206: ['焕', 'huàn', 'radiant'],\n 207: ['黯', 'àn', 'shadowy'],\n },\n 'Rarity & Wonder': { // bytes 208-231 (mop..mos)\n 208: ['珍', 'zhēn', 'rare'],\n 209: ['怪', 'guài', 'strange'],\n 210: ['幽', 'yōu', 'mysterious'],\n 211: ['巧', 'qiǎo', 'wondrous'],\n 212: ['圣', 'shèng', 'sacred'],\n 213: ['神', 'shén', 'divine'],\n 214: ['仙', 'xiān', 'immortal'],\n 215: ['慧', 'huì', 'spiritual'],\n 216: ['幻', 'huàn', 'illusory'],\n 217: ['梦', 'mèng', 'dreamlike'],\n 218: ['魔', 'mó', 'magical'],\n 219: ['祥', 'xiáng', 'auspicious'],\n 220: ['瑞', 'ruì', 'propitious'],\n 221: ['吉', 'jí', 'fortunate'],\n 222: ['福', 'fú', 'blessed'],\n 223: ['禅', 'chán', 'zen'],\n 224: ['道', 'dào', 'enlightened'],\n 225: ['奥', 'ào', 'arcane'],\n 226: ['秘', 'mì', 'secret'],\n 227: ['藏', 'cáng', 'hidden'],\n 228: ['僻', 'pì', 'secluded'],\n 229: ['冥', 'míng', 'profound'],\n 230: ['邃', 'suì', 'abstruse'],\n 231: ['蕴', 'yùn', 'mysterious'],\n },\n 'State & Condition': { // bytes 232-255 (lan..fip)\n 232: ['动', 'dòng', 'moving'],\n 233: ['定', 'dìng', 'still'],\n 234: ['流', 'liú', 'flowing'],\n 235: ['凝', 'níng', 'frozen'],\n 236: ['散', 'sàn', 'scattered'],\n 237: ['聚', 'jù', 'gathered'],\n 238: ['起', 'qǐ', 'rising'],\n 239: ['落', 'luò', 'falling'],\n 240: ['浮', 'fú', 'floating'],\n 241: ['沉', 'chén', 'sinking'],\n 242: ['飞', 'fēi', 'flying'],\n 243: ['栖', 'qī', 'resting'],\n 244: ['觉', 'jué', 'awakened'],\n 245: ['眠', 'mián', 'sleeping'],\n 246: ['生', 'shēng', 'living'],\n 247: ['逝', 'shì', 'passing'],\n 248: ['兴', 'xīng', 'flourishing'],\n 249: ['干', 'gān', 'withered'],\n 250: ['盈', 'yíng', 'full'],\n 251: ['亏', 'kuī', 'waning'],\n 252: ['升', 'shēng', 'ascending'],\n 253: ['降', 'jiàng', 'descending'],\n 254: ['开', 'kāi', 'opening'],\n 255: ['合', 'hé', 'closing'],\n },\n} as const satisfies Record<string, Record<number, Entry>>;\n\n// ===== Suffix → character mapping (keyed by byte 0-255) ======================\n// Suffixes are universal nouns. Edit here to retune the mapping.\n\nexport const SUFFIX_GROUPS = {\n 'Flora & Botanicals': { // bytes 0-27 (zod..hec)\n 0: ['松', 'sōng', 'pine'],\n 1: ['竹', 'zhú', 'bamboo'],\n 2: ['梅', 'méi', 'plum blossom'],\n 3: ['兰', 'lán', 'orchid'],\n 4: ['菊', 'jú', 'chrysanthemum'],\n 5: ['莲', 'lián', 'lotus'],\n 6: ['柳', 'liǔ', 'willow'],\n 7: ['桃', 'táo', 'peach'],\n 8: ['荷', 'hé', 'lotus leaf'],\n 9: ['杏', 'xìng', 'apricot'],\n 10: ['桂', 'guì', 'osmanthus'],\n 11: ['椿', 'chūn', 'toon tree'],\n 12: ['柏', 'bǎi', 'cypress'],\n 13: ['杉', 'shān', 'fir'],\n 14: ['槐', 'huái', 'scholar tree'],\n 15: ['榆', 'yú', 'elm'],\n 16: ['枫', 'fēng', 'maple'],\n 17: ['藤', 'téng', 'vine'],\n 18: ['苔', 'tái', 'moss'],\n 19: ['蕨', 'jué', 'fern'],\n 20: ['茗', 'míng', 'tea leaf'],\n 21: ['芝', 'zhī', 'lingzhi'],\n 22: ['萍', 'píng', 'duckweed'],\n 23: ['蒿', 'hāo', 'artemisia'],\n 24: ['蓼', 'liǎo', 'knotweed'],\n 25: ['薇', 'wēi', 'fern frond'],\n 26: ['芦', 'lú', 'reed'],\n 27: ['蓑', 'suō', 'rush'],\n },\n 'Gems & Minerals': { // bytes 28-51 (ryt..mev)\n 28: ['瑾', 'jǐn', 'fine jade'],\n 29: ['瑜', 'yú', 'jade luster'],\n 30: ['琼', 'qióng', 'jasper'],\n 31: ['璧', 'bì', 'jade disc'],\n 32: ['琳', 'lín', 'beautiful jade'],\n 33: ['瑶', 'yáo', 'precious jade'],\n 34: ['珩', 'héng', 'jade pendant'],\n 35: ['珏', 'jué', 'paired jade'],\n 36: ['琅', 'láng', 'jade-like stone'],\n 37: ['珂', 'kē', 'white jade'],\n 38: ['璞', 'pú', 'uncut jade'],\n 39: ['璜', 'huáng', 'half-ring jade'],\n 40: ['珉', 'mín', 'jade-like stone'],\n 41: ['珈', 'jiā', 'jade ornament'],\n 42: ['玮', 'wěi', 'rare jade'],\n 43: ['瑁', 'mào', 'tortoiseshell'],\n 44: ['珊', 'shān', 'coral'],\n 45: ['瑚', 'hú', 'coral gem'],\n 46: ['玛', 'mǎ', 'agate'],\n 47: ['瑙', 'nǎo', 'chalcedony'],\n 48: ['珣', 'xún', 'fine jade'],\n 49: ['钻', 'zuàn', 'diamond'],\n 50: ['琥', 'hǔ', 'amber'],\n 51: ['珀', 'pò', 'amber gem'],\n },\n 'Celestial Forms': { // bytes 52-77 (rut..rec)\n 52: ['星', 'xīng', 'star'],\n 53: ['月', 'yuè', 'moon'],\n 54: ['日', 'rì', 'sun'],\n 55: ['云', 'yún', 'cloud'],\n 56: ['霞', 'xiá', 'sunset glow'],\n 57: ['虹', 'hóng', 'rainbow'],\n 58: ['霓', 'ní', 'secondary rainbow'],\n 59: ['露', 'lù', 'dew'],\n 60: ['霜', 'shuāng', 'frost'],\n 61: ['雪', 'xuě', 'snow'],\n 62: ['雾', 'wù', 'fog'],\n 63: ['岚', 'lán', 'mountain mist'],\n 64: ['霭', 'ǎi', 'haze'],\n 65: ['霰', 'xiàn', 'sleet'],\n 66: ['雹', 'báo', 'hail'],\n 67: ['霏', 'fēi', 'falling snow'],\n 68: ['烟', 'yān', 'mist'],\n 69: ['辰', 'chén', 'celestial body'],\n 70: ['宿', 'xiù', 'constellation'],\n 71: ['斗', 'dǒu', 'dipper'],\n 72: ['极', 'jí', 'pole star'],\n 73: ['霄', 'xiāo', 'sky'],\n 74: ['穹', 'qióng', 'firmament'],\n 75: ['昊', 'hào', 'vast sky'],\n 76: ['旻', 'mín', 'autumn sky'],\n 77: ['曦', 'xī', 'sunlight'],\n },\n 'Winged Creatures': { // bytes 78-99 (meg..wex)\n 78: ['莺', 'yīng', 'oriole'],\n 79: ['雀', 'què', 'sparrow'],\n 80: ['鹂', 'lí', 'oriole'],\n 81: ['鸥', 'ōu', 'gull'],\n 82: ['鸾', 'luán', 'mythic bird'],\n 83: ['鸢', 'yuān', 'kite'],\n 84: ['鹊', 'què', 'magpie'],\n 85: ['鸽', 'gē', 'dove'],\n 86: ['鹃', 'juān', 'cuckoo'],\n 87: ['鹄', 'hú', 'swan'],\n 88: ['鹤', 'hè', 'crane'],\n 89: ['蝶', 'dié', 'butterfly'],\n 90: ['蛾', 'é', 'moth'],\n 91: ['蝉', 'chán', 'cicada'],\n 92: ['萤', 'yíng', 'firefly'],\n 93: ['蜂', 'fēng', 'bee'],\n 94: ['蚕', 'cán', 'silkworm'],\n 95: ['蟋', 'xī', 'cricket'],\n 96: ['螳', 'táng', 'mantis'],\n 97: ['蜻', 'qīng', 'dragonfly'],\n 98: ['蜓', 'tíng', 'damselfly'],\n 99: ['燕', 'yàn', 'swallow'],\n },\n 'Water Forms': { // bytes 100-121 (syr..tud)\n 100: ['波', 'bō', 'wave'],\n 101: ['涛', 'tāo', 'billows'],\n 102: ['澜', 'lán', 'ripples'],\n 103: ['浪', 'làng', 'waves'],\n 104: ['漪', 'yī', 'ripple'],\n 105: ['湍', 'tuān', 'rapids'],\n 106: ['溟', 'míng', 'dark sea'],\n 107: ['沧', 'cāng', 'ocean'],\n 108: ['瀚', 'hàn', 'vast water'],\n 109: ['汐', 'xī', 'tide'],\n 110: ['潮', 'cháo', 'tidal wave'],\n 111: ['泉', 'quán', 'spring'],\n 112: ['溪', 'xī', 'brook'],\n 113: ['涧', 'jiàn', 'mountain stream'],\n 114: ['潭', 'tán', 'pool'],\n 115: ['渊', 'yuān', 'abyss'],\n 116: ['渚', 'zhǔ', 'islet'],\n 117: ['浦', 'pǔ', 'riverbank'],\n 118: ['汀', 'tīng', 'sandbar'],\n 119: ['洄', 'huí', 'whirlpool'],\n 120: ['漩', 'xuán', 'vortex'],\n 121: ['濑', 'lài', 'shoals'],\n },\n 'Textiles & Threads': { // bytes 122-141 (nux..mec)\n 122: ['绫', 'líng', 'damask silk'],\n 123: ['罗', 'luó', 'gauze silk'],\n 124: ['绸', 'chóu', 'silk'],\n 125: ['缎', 'duàn', 'satin'],\n 126: ['锦', 'jǐn', 'brocade'],\n 127: ['绣', 'xiù', 'embroidery'],\n 128: ['纱', 'shā', 'gauze'],\n 129: ['帛', 'bó', 'silk fabric'],\n 130: ['纬', 'wěi', 'weft'],\n 131: ['绢', 'juàn', 'thin silk'],\n 132: ['绪', 'xù', 'silk thread'],\n 133: ['缕', 'lǚ', 'thread'],\n 134: ['纶', 'lún', 'silk cord'],\n 135: ['绳', 'shéng', 'rope'],\n 136: ['缨', 'yīng', 'tassel'],\n 137: ['络', 'luò', 'net'],\n 138: ['纹', 'wén', 'pattern'],\n 139: ['绯', 'fēi', 'crimson silk'],\n 140: ['缃', 'xiāng', 'yellow silk'],\n 141: ['绦', 'tāo', 'silk ribbon'],\n },\n 'Literature & Arts': { // bytes 142-165 (ted..mex)\n 142: ['诗', 'shī', 'poem'],\n 143: ['词', 'cí', 'verse'],\n 144: ['赋', 'fù', 'rhapsody'],\n 145: ['曲', 'qǔ', 'melody'],\n 146: ['谣', 'yáo', 'ballad'],\n 147: ['歌', 'gē', 'song'],\n 148: ['赞', 'zàn', 'hymn'],\n 149: ['铭', 'míng', 'inscription'],\n 150: ['志', 'zhì', 'record'],\n 151: ['传', 'zhuàn', 'biography'],\n 152: ['笺', 'jiān', 'letter paper'],\n 153: ['札', 'zhá', 'note'],\n 154: ['牍', 'dú', 'tablet'],\n 155: ['牒', 'dié', 'bamboo slip'],\n 156: ['册', 'cè', 'volume'],\n 157: ['卷', 'juàn', 'scroll'],\n 158: ['帙', 'zhì', 'book case'],\n 159: ['墨', 'mò', 'ink'],\n 160: ['砚', 'yàn', 'inkstone'],\n 161: ['笔', 'bǐ', 'brush'],\n 162: ['纸', 'zhǐ', 'paper'],\n 163: ['章', 'zhāng', 'chapter'],\n 164: ['篇', 'piān', 'essay'],\n 165: ['句', 'jù', 'phrase'],\n },\n 'Light & Shadow': { // bytes 166-187 (pub..dyt)\n 166: ['曙', 'shǔ', 'dawn'],\n 167: ['晖', 'huī', 'sunlight'],\n 168: ['晕', 'yùn', 'halo'],\n 169: ['光', 'guāng', 'radiance'],\n 170: ['晃', 'huǎng', 'gleam'],\n 171: ['晔', 'yè', 'splendor'],\n 172: ['晟', 'shèng', 'brightness'],\n 173: ['晨', 'chén', 'morning'],\n 174: ['暮', 'mù', 'dusk'],\n 175: ['暝', 'míng', 'twilight'],\n 176: ['宵', 'xiāo', 'night'],\n 177: ['昏', 'hūn', 'dusk'],\n 178: ['晓', 'xiǎo', 'daybreak'],\n 179: ['旭', 'xù', 'sunrise'],\n 180: ['影', 'yǐng', 'shadow'],\n 181: ['彩', 'cǎi', 'color'],\n 182: ['晴', 'qíng', 'clear sky'],\n 183: ['映', 'yìng', 'reflection'],\n 184: ['照', 'zhào', 'illumination'],\n 185: ['焰', 'yàn', 'flame'],\n 186: ['烛', 'zhú', 'candle'],\n 187: ['灯', 'dēng', 'lamp'],\n },\n 'Sound & Echo': { // bytes 188-205 (byt..lyd)\n 188: ['韵', 'yùn', 'rhyme'],\n 189: ['音', 'yīn', 'sound'],\n 190: ['律', 'lǜ', 'rhythm'],\n 191: ['调', 'diào', 'tone'],\n 192: ['弦', 'xián', 'string'],\n 193: ['簧', 'huáng', 'reed'],\n 194: ['磬', 'qìng', 'chime stone'],\n 195: ['铃', 'líng', 'bell'],\n 196: ['箫', 'xiāo', 'flute'],\n 197: ['筝', 'zhēng', 'zither'],\n 198: ['鼓', 'gǔ', 'drum'],\n 199: ['钹', 'bó', 'cymbal'],\n 200: ['笙', 'shēng', 'mouth organ'],\n 201: ['埙', 'xūn', 'ocarina'],\n 202: ['琴', 'qín', 'lute'],\n 203: ['瑟', 'sè', 'zither'],\n 204: ['钟', 'zhōng', 'bell'],\n 205: ['磐', 'pán', 'stone chime'],\n },\n 'Essence & Spirit': { // bytes 206-229 (fen..sug)\n 206: ['魂', 'hún', 'soul'],\n 207: ['魄', 'pò', 'spirit'],\n 208: ['气', 'qì', 'vital force'],\n 209: ['息', 'xī', 'breath'],\n 210: ['君', 'jūn', 'noble spirit'],\n 211: ['侠', 'xiá', 'hero'],\n 212: ['师', 'shī', 'master'],\n 213: ['者', 'zhě', 'one who'],\n 214: ['悟', 'wù', 'zen'],\n 215: ['理', 'lǐ', 'the way'],\n 216: ['行', 'xíng', 'virtue'],\n 217: ['心', 'xīn', 'heart'],\n 218: ['愿', 'yuàn', 'will'],\n 219: ['念', 'niàn', 'thought'],\n 220: ['意', 'yì', 'intent'],\n 221: ['情', 'qíng', 'feeling'],\n 222: ['性', 'xìng', 'nature'],\n 223: ['命', 'mìng', 'destiny'],\n 224: ['缘', 'yuán', 'fate'],\n 225: ['佑', 'yòu', 'blessing'],\n 226: ['禄', 'lù', 'fortune'],\n 227: ['寿', 'shòu', 'longevity'],\n 228: ['庆', 'qìng', 'auspice'],\n 229: ['兆', 'zhào', 'omen'],\n },\n 'Nature Parts': { // bytes 230-255 (nys..fes)\n 230: ['峰', 'fēng', 'peak'],\n 231: ['岳', 'yuè', 'mountain'],\n 232: ['岭', 'lǐng', 'ridge'],\n 233: ['崖', 'yá', 'cliff'],\n 234: ['壑', 'hè', 'ravine'],\n 235: ['谷', 'gǔ', 'valley'],\n 236: ['林', 'lín', 'forest'],\n 237: ['丛', 'cóng', 'grove'],\n 238: ['野', 'yě', 'wilderness'],\n 239: ['原', 'yuán', 'plain'],\n 240: ['坪', 'píng', 'meadow'],\n 241: ['畔', 'pàn', 'shore'],\n 242: ['滨', 'bīn', 'waterside'],\n 243: ['洲', 'zhōu', 'islet'],\n 244: ['屿', 'yǔ', 'isle'],\n 245: ['礁', 'jiāo', 'reef'],\n 246: ['岩', 'yán', 'rock'],\n 247: ['石', 'shí', 'stone'],\n 248: ['砂', 'shā', 'sand'],\n 249: ['土', 'tǔ', 'earth'],\n 250: ['尘', 'chén', 'dust'],\n 251: ['埃', 'āi', 'fine dust'],\n 252: ['泥', 'ní', 'clay'],\n 253: ['沙', 'shā', 'sand'],\n 254: ['洞', 'dòng', 'cave'],\n 255: ['穴', 'xué', 'grotto'],\n },\n} as const satisfies Record<string, Record<number, Entry>>;\n\n// ===== Derived indices and lookups ===========================================\n\n/**\n * Flatten the byte-keyed group structure into a phoneme-keyed map. Asserts that\n * every byte 0..N appears exactly once (catches drops, duplicates, out-of-range\n * keys at module load time, before tests).\n */\nfunction flattenByteGroups(\n groups: Record<string, Record<number, Entry>>,\n phonemes: readonly string[]\n): Record<string, CharacterEntry> {\n const out: Record<string, CharacterEntry> = {};\n const seenBytes = new Set<number>();\n\n for (const [category, entries] of Object.entries(groups)) {\n for (const [byteStr, tuple] of Object.entries(entries)) {\n const byte = Number(byteStr);\n if (!Number.isInteger(byte) || byte < 0 || byte >= phonemes.length) {\n throw new Error(`Invalid byte key ${byteStr} in category ${category}`);\n }\n if (seenBytes.has(byte)) {\n throw new Error(`Duplicate byte ${byte} (already assigned before category ${category})`);\n }\n seenBytes.add(byte);\n const [character, pinyin, meaning] = tuple;\n out[phonemes[byte]] = { character, pinyin, meaning, category };\n }\n }\n\n if (seenBytes.size !== phonemes.length) {\n const missing: number[] = [];\n for (let i = 0; i < phonemes.length; i++) {\n if (!seenBytes.has(i)) missing.push(i);\n }\n throw new Error(`Missing bytes: ${missing.join(', ')}`);\n }\n\n return out;\n}\n\nexport const PREFIX_CHARACTERS = flattenByteGroups(PREFIX_GROUPS, PREFIXES) as Record<Prefix, CharacterEntry>;\nexport const SUFFIX_CHARACTERS = flattenByteGroups(SUFFIX_GROUPS, SUFFIXES) as Record<Suffix, CharacterEntry>;\n\nexport const PREFIX_INDEX: Record<string, string> = Object.fromEntries(\n Object.entries(PREFIX_CHARACTERS).map(([k, v]) => [k, v.character])\n);\n\nexport const SUFFIX_INDEX: Record<string, string> = Object.fromEntries(\n Object.entries(SUFFIX_CHARACTERS).map(([k, v]) => [k, v.character])\n);\n\nexport const PHONEME_INDEX: Record<string, string> = {\n ...PREFIX_INDEX,\n ...SUFFIX_INDEX,\n};\n\nexport function isPrefix(phoneme: string): boolean {\n return phoneme in PREFIX_INDEX;\n}\n\nexport function isSuffix(phoneme: string): boolean {\n return phoneme in SUFFIX_INDEX;\n}\n\nexport function getCharacter(phoneme: string): string | undefined {\n return PHONEME_INDEX[phoneme];\n}\n","import memoize from 'lodash.memoize';\nimport { Config, ParsedPoint, PointType } from './types';\nimport { PHONEME_INDEX, isPrefix, isSuffix } from './mapping';\n\ntype Space = NonNullable<Config['space']>;\ntype Position = { x: number; y: number };\n\nconst DEFAULTS = {\n background: '#000',\n foreground: '#FFF',\n size: 128,\n space: 'default' as Space,\n fontWeight: 400,\n fontFamily: 'Noto Sans SC, Noto Sans TC, Microsoft YaHei, SimHei, sans-serif',\n} as const;\n\ntype ResolvedConfig = Required<Config>;\n\nfunction withDefaults(config: Config): ResolvedConfig {\n return { ...DEFAULTS, ...config };\n}\n\nconst POINT_TYPES: Record<number, PointType> = {\n 1: 'galaxy',\n 2: 'star',\n 4: 'planet',\n 8: 'moon',\n};\n\n/**\n * Split a string into equal-sized substrings.\n */\nfunction chunkStr(str: string, size: number): string[] {\n return str.match(new RegExp(`.{1,${size}}`, 'g')) ?? [];\n}\n\n/**\n * Normalize a point name by removing the sigil prefix, hyphens, and casing.\n * @example deSig('~sampel-palnet') => 'sampelpalnet'\n */\nexport function deSig(point: string): string {\n return point.replace(/[\\^~-]/g, '').toLowerCase();\n}\n\n/**\n * Parse a point name into phonemes and characters.\n */\nexport function parsePoint(point: string): ParsedPoint {\n if (!point) throw new Error('Point name is required');\n\n const cleaned = deSig(point);\n const phonemes = chunkStr(cleaned, 3);\n\n const type = POINT_TYPES[phonemes.length];\n if (!type) {\n throw new Error(\n `Invalid point name length: ${phonemes.length} phonemes. Expected 1 (galaxy), 2 (star), 4 (planet), or 8 (moon).`\n );\n }\n\n for (const phoneme of phonemes) {\n if (!isPrefix(phoneme) && !isSuffix(phoneme)) {\n throw new Error(`Invalid phoneme: '${phoneme}' is not a valid Urbit syllable.`);\n }\n }\n\n const characters = phonemes.map((p) => PHONEME_INDEX[p]);\n\n return {\n point,\n phonemes,\n type,\n characters,\n hanziName: characters.join(''),\n };\n}\n\n// ---- Layout table ----------------------------------------------------------\n// Each cell controls font scale and character positions for one\n// (point type, space) combination. All values are relative to `size`, so\n// changing a magic number here is the only edit a contributor needs to make\n// to retune layout.\n\ntype LayoutSpec = {\n fontScale: number;\n /** Height scale relative to `size`; defaults to 1. */\n heightScale?: number;\n positions: (size: number, height: number) => Position[];\n};\n\nconst centeredOne = (s: number): Position[] => [{ x: s / 2, y: s / 2 }];\n\nconst starPair = (s: number, h: number, inset: number): Position[] => [\n { x: s * inset, y: h / 2 },\n { x: s * (1 - inset), y: h / 2 },\n];\n\nconst planetGrid = (s: number, offset: number): Position[] => {\n const c = s / 2;\n const d = s * offset;\n return [\n { x: c - d, y: c - d },\n { x: c + d, y: c - d },\n { x: c - d, y: c + d },\n { x: c + d, y: c + d },\n ];\n};\n\nconst moonGrid = (s: number): Position[] => {\n const c = s / 2;\n const xOffsets = [-0.375, -0.125, 0.125, 0.375];\n const yOffsets = [-0.25, 0.25];\n const positions: Position[] = [];\n for (const yo of yOffsets) {\n for (const xo of xOffsets) {\n positions.push({ x: c + s * xo, y: c + s * yo });\n }\n }\n return positions;\n};\n\nconst LAYOUTS: Record<PointType, Record<Space, LayoutSpec>> = {\n galaxy: {\n none: { fontScale: 0.8, positions: centeredOne },\n default: { fontScale: 0.6, positions: centeredOne },\n large: { fontScale: 0.4, positions: centeredOne },\n },\n star: {\n none: { fontScale: 0.45, heightScale: 0.5, positions: (s, h) => starPair(s, h, 0.25) },\n default: { fontScale: 0.35, positions: (s, h) => starPair(s, h, 0.3) },\n large: { fontScale: 0.25, positions: (s, h) => starPair(s, h, 0.3) },\n },\n planet: {\n none: { fontScale: 0.4, positions: (s) => planetGrid(s, 0.25) },\n default: { fontScale: 0.28, positions: (s) => planetGrid(s, 0.27) },\n large: { fontScale: 0.2, positions: (s) => planetGrid(s, 0.3) },\n },\n moon: {\n none: { fontScale: 0.2, positions: (s) => moonGrid(s) },\n default: { fontScale: 0.15, positions: (s) => moonGrid(s) },\n large: { fontScale: 0.12, positions: (s) => moonGrid(s) },\n },\n};\n\n/**\n * Generate an SVG sigil for a point using Chinese characters.\n */\nfunction hanziSigil(config: Config): string {\n const { point, background, foreground, size, space, fontWeight, fontFamily } = withDefaults(config);\n const { characters, type } = parsePoint(point);\n\n const spec = LAYOUTS[type][space];\n const width = size;\n const height = size * (spec.heightScale ?? 1);\n const fontSize = size * spec.fontScale;\n const positions = spec.positions(size, height);\n\n const textElements = characters.map((char, i) => {\n const { x, y } = positions[i];\n return `<text\n x=\"${x}\"\n y=\"${y}\"\n font-family=\"${fontFamily}\"\n font-size=\"${fontSize}\"\n font-weight=\"${fontWeight}\"\n fill=\"${foreground}\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n >${char}</text>`;\n }).join('\\n ');\n\n return `<svg\n style=\"display: block;\"\n width=\"${width}\"\n height=\"${height}\"\n viewBox=\"0 0 ${width} ${height}\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n <rect fill=\"${background}\" width=\"${width}\" height=\"${height}\" x=\"0\" y=\"0\" />\n ${textElements}\n</svg>`;\n}\n\nfunction createCacheKey(config: Config): string {\n const c = withDefaults(config);\n return `${c.point}|${c.size}|${c.background}|${c.foreground}|${c.space}|${c.fontWeight}|${c.fontFamily}`;\n}\n\ntype MemoizedHanziSigil = ((config: Config) => string) & {\n cache: { clear?: () => void };\n};\n\nconst memoizedHanziSigil: MemoizedHanziSigil = memoize(\n (config: Config) => hanziSigil(config),\n createCacheKey\n);\n\nexport default hanziSigil;\nexport { hanziSigil, memoizedHanziSigil };\n"],"names":["PREFIXES","SUFFIXES","PREFIX_GROUPS","SUFFIX_GROUPS","flattenByteGroups","groups","phonemes","out","seenBytes","Set","_i","_Object$entries","Object","entries","length","_Object$entries$_i","category","_i2","_Object$entries2","_Object$entries2$_i","byteStr","tuple","byte","Number","isInteger","Error","has","add","character","pinyin","meaning","size","missing","i","push","join","PREFIX_CHARACTERS","SUFFIX_CHARACTERS","PREFIX_INDEX","fromEntries","map","_ref","k","v","SUFFIX_INDEX","_ref2","PHONEME_INDEX","_extends","isPrefix","phoneme","isSuffix","getCharacter","DEFAULTS","background","foreground","space","fontWeight","fontFamily","withDefaults","config","POINT_TYPES","chunkStr","str","_str$match","match","RegExp","deSig","point","replace","toLowerCase","parsePoint","cleaned","type","_iterator","_createForOfIteratorHelperLoose","_step","done","value","characters","p","hanziName","centeredOne","s","x","y","starPair","h","inset","planetGrid","offset","c","d","moonGrid","xOffsets","yOffsets","positions","_yOffsets","yo","_iterator2","_step2","xo","LAYOUTS","galaxy","none","fontScale","large","star","heightScale","planet","moon","hanziSigil","_spec$heightScale","_withDefaults","_parsePoint","spec","width","height","fontSize","textElements","char","_positions$i","createCacheKey","memoizedHanziSigil","memoize"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;;;;;;AAQG;AACUA,IAAAA,QAAQ,GAAG,CACtB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EACtG;AAEGC,IAAAA,QAAQ,GAAG,CACtB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAC9G,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK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"}
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('./core-b72e8d27.js');
6
+ require('lodash.memoize');
7
+
8
+
9
+
10
+ exports.deSig = core.deSig;
11
+ exports.default = core.hanziSigil;
12
+ exports.hanziSigil = core.hanziSigil;
13
+ exports.memoizedHanziSigil = core.memoizedHanziSigil;
14
+ exports.parsePoint = core.parsePoint;
15
+ //# sourceMappingURL=core.cjs.development.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.cjs.development.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./core-7919ab70.js");require("lodash.memoize"),exports.deSig=e.deSig,exports.default=e.hanziSigil,exports.hanziSigil=e.hanziSigil,exports.memoizedHanziSigil=e.memoizedHanziSigil,exports.parsePoint=e.parsePoint;
2
+ //# sourceMappingURL=core.cjs.production.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.cjs.production.min.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/dist/core.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ import { Config, ParsedPoint } from './types';
2
+ /**
3
+ * Normalize a point name by removing the sigil prefix, hyphens, and casing.
4
+ * @example deSig('~sampel-palnet') => 'sampelpalnet'
5
+ */
6
+ export declare function deSig(point: string): string;
7
+ /**
8
+ * Parse a point name into phonemes and characters.
9
+ */
10
+ export declare function parsePoint(point: string): ParsedPoint;
11
+ /**
12
+ * Generate an SVG sigil for a point using Chinese characters.
13
+ */
14
+ declare function hanziSigil(config: Config): string;
15
+ type MemoizedHanziSigil = ((config: Config) => string) & {
16
+ cache: {
17
+ clear?: () => void;
18
+ };
19
+ };
20
+ declare const memoizedHanziSigil: MemoizedHanziSigil;
21
+ export default hanziSigil;
22
+ export { hanziSigil, memoizedHanziSigil };
@@ -0,0 +1,3 @@
1
+ export { d as deSig, h as default, h as hanziSigil, m as memoizedHanziSigil, p as parsePoint } from './core-325c2f1f.js';
2
+ import 'lodash.memoize';
3
+ //# sourceMappingURL=core.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
package/dist/core.js ADDED
@@ -0,0 +1,8 @@
1
+
2
+ 'use strict'
3
+
4
+ if (process.env.NODE_ENV === 'production') {
5
+ module.exports = require('./core.cjs.production.min.js')
6
+ } else {
7
+ module.exports = require('./core.cjs.development.js')
8
+ }
@@ -0,0 +1,24 @@
1
+ import type { Config } from './types';
2
+ /**
3
+ * Base web component for rendering Hanzi sigils.
4
+ *
5
+ * <urbit-hanzi point="~zod" size="128" background="#000" foreground="#fff"></urbit-hanzi>
6
+ */
7
+ export declare class HanziSigil extends HTMLElement {
8
+ static get observedAttributes(): string[];
9
+ constructor();
10
+ connectedCallback(): void;
11
+ attributeChangedCallback(): void;
12
+ protected getConfig(): Config;
13
+ protected getSvg(): string | null;
14
+ protected renderError(): void;
15
+ protected render(): void;
16
+ }
17
+ /**
18
+ * Variant that renders the sigil as an <img> with a data URI source.
19
+ *
20
+ * <urbit-hanzi-image point="~zod" size="128"></urbit-hanzi-image>
21
+ */
22
+ export declare class HanziSigilImage extends HanziSigil {
23
+ protected render(): void;
24
+ }
@@ -0,0 +1,126 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var core = require('./core-b72e8d27.js');
6
+ require('lodash.memoize');
7
+
8
+ /**
9
+ * Base web component for rendering Hanzi sigils.
10
+ *
11
+ * <urbit-hanzi point="~zod" size="128" background="#000" foreground="#fff"></urbit-hanzi>
12
+ */
13
+ var HanziSigil = /*#__PURE__*/function (_HTMLElement) {
14
+ function HanziSigil() {
15
+ var _this;
16
+ _this = _HTMLElement.call(this) || this;
17
+ _this.attachShadow({
18
+ mode: 'open'
19
+ });
20
+ return _this;
21
+ }
22
+ core._inheritsLoose(HanziSigil, _HTMLElement);
23
+ var _proto = HanziSigil.prototype;
24
+ _proto.connectedCallback = function connectedCallback() {
25
+ this.render();
26
+ };
27
+ _proto.attributeChangedCallback = function attributeChangedCallback() {
28
+ this.render();
29
+ };
30
+ _proto.getConfig = function getConfig() {
31
+ return {
32
+ point: this.getAttribute('point') || '',
33
+ size: parseInt(this.getAttribute('size') || '128', 10),
34
+ background: this.getAttribute('background') || '#000',
35
+ foreground: this.getAttribute('foreground') || '#FFF',
36
+ space: this.getAttribute('space') || 'default',
37
+ fontWeight: parseInt(this.getAttribute('font-weight') || '400', 10),
38
+ fontFamily: this.getAttribute('font-family') || undefined
39
+ };
40
+ };
41
+ _proto.getSvg = function getSvg() {
42
+ var config = this.getConfig();
43
+ if (!config.point) return null;
44
+ try {
45
+ return core.hanziSigil(config);
46
+ } catch (error) {
47
+ console.error('Failed to generate Hanzi sigil:', error);
48
+ return null;
49
+ }
50
+ };
51
+ _proto.renderError = function renderError() {
52
+ if (!this.shadowRoot) return;
53
+ var point = this.getAttribute('point') || '';
54
+ this.shadowRoot.innerHTML = point ? "<div style=\"color: red; font-size: 12px;\">Invalid point: " + point + "</div>" : '';
55
+ };
56
+ _proto.render = function render() {
57
+ if (!this.shadowRoot) return;
58
+ var svg = this.getSvg();
59
+ if (svg) {
60
+ this.shadowRoot.innerHTML = svg;
61
+ } else {
62
+ this.renderError();
63
+ }
64
+ };
65
+ return core._createClass(HanziSigil, null, [{
66
+ key: "observedAttributes",
67
+ get: function get() {
68
+ return ['point', 'size', 'background', 'foreground', 'space', 'font-weight', 'font-family'];
69
+ }
70
+ }]);
71
+ }(/*#__PURE__*/core._wrapNativeSuper(HTMLElement));
72
+ /**
73
+ * Variant that renders the sigil as an <img> with a data URI source.
74
+ *
75
+ * <urbit-hanzi-image point="~zod" size="128"></urbit-hanzi-image>
76
+ */
77
+ var HanziSigilImage = /*#__PURE__*/function (_HanziSigil) {
78
+ function HanziSigilImage() {
79
+ return _HanziSigil.apply(this, arguments) || this;
80
+ }
81
+ core._inheritsLoose(HanziSigilImage, _HanziSigil);
82
+ var _proto2 = HanziSigilImage.prototype;
83
+ _proto2.render = function render() {
84
+ if (!this.shadowRoot) return;
85
+ var svg = this.getSvg();
86
+ if (!svg) {
87
+ this.renderError();
88
+ return;
89
+ }
90
+ var config = this.getConfig();
91
+ var dataUri = "data:image/svg+xml;utf8," + encodeURIComponent(svg);
92
+ this.shadowRoot.innerHTML = "<img\n src=\"" + dataUri + "\"\n width=\"" + config.size + "\"\n height=\"" + config.size + "\"\n alt=\"Hanzi sigil for " + config.point + "\"\n style=\"display: block;\"\n />";
93
+ };
94
+ return HanziSigilImage;
95
+ }(HanziSigil);
96
+
97
+ // Register web components if in browser environment
98
+ if (typeof window !== 'undefined' && window.customElements) {
99
+ if (typeof customElements.get('urbit-hanzi') === 'undefined') {
100
+ customElements.define('urbit-hanzi', HanziSigil);
101
+ }
102
+ if (typeof customElements.get('urbit-hanzi-image') === 'undefined') {
103
+ customElements.define('urbit-hanzi-image', HanziSigilImage);
104
+ }
105
+ }
106
+
107
+ exports.PHONEME_INDEX = core.PHONEME_INDEX;
108
+ exports.PREFIXES = core.PREFIXES;
109
+ exports.PREFIX_CHARACTERS = core.PREFIX_CHARACTERS;
110
+ exports.PREFIX_GROUPS = core.PREFIX_GROUPS;
111
+ exports.PREFIX_INDEX = core.PREFIX_INDEX;
112
+ exports.SUFFIXES = core.SUFFIXES;
113
+ exports.SUFFIX_CHARACTERS = core.SUFFIX_CHARACTERS;
114
+ exports.SUFFIX_GROUPS = core.SUFFIX_GROUPS;
115
+ exports.SUFFIX_INDEX = core.SUFFIX_INDEX;
116
+ exports.deSig = core.deSig;
117
+ exports.default = core.hanziSigil;
118
+ exports.getCharacter = core.getCharacter;
119
+ exports.hanziSigil = core.hanziSigil;
120
+ exports.isPrefix = core.isPrefix;
121
+ exports.isSuffix = core.isSuffix;
122
+ exports.memoizedHanziSigil = core.memoizedHanziSigil;
123
+ exports.parsePoint = core.parsePoint;
124
+ exports.HanziSigil = HanziSigil;
125
+ exports.HanziSigilImage = HanziSigilImage;
126
+ //# sourceMappingURL=index.cjs.development.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.development.js","sources":["../src/hanzi-sigil.ts","../src/index.ts"],"sourcesContent":["import hanziSigil from './core';\nimport type { Config } from './types';\n\n/**\n * Base web component for rendering Hanzi sigils.\n *\n * <urbit-hanzi point=\"~zod\" size=\"128\" background=\"#000\" foreground=\"#fff\"></urbit-hanzi>\n */\nexport class HanziSigil extends HTMLElement {\n static get observedAttributes() {\n return ['point', 'size', 'background', 'foreground', 'space', 'font-weight', 'font-family'];\n }\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n this.render();\n }\n\n attributeChangedCallback() {\n this.render();\n }\n\n protected getConfig(): Config {\n return {\n point: this.getAttribute('point') || '',\n size: parseInt(this.getAttribute('size') || '128', 10),\n background: this.getAttribute('background') || '#000',\n foreground: this.getAttribute('foreground') || '#FFF',\n space: (this.getAttribute('space') as Config['space']) || 'default',\n fontWeight: parseInt(this.getAttribute('font-weight') || '400', 10),\n fontFamily: this.getAttribute('font-family') || undefined,\n };\n }\n\n protected getSvg(): string | null {\n const config = this.getConfig();\n if (!config.point) return null;\n try {\n return hanziSigil(config);\n } catch (error) {\n console.error('Failed to generate Hanzi sigil:', error);\n return null;\n }\n }\n\n protected renderError() {\n if (!this.shadowRoot) return;\n const point = this.getAttribute('point') || '';\n this.shadowRoot.innerHTML = point\n ? `<div style=\"color: red; font-size: 12px;\">Invalid point: ${point}</div>`\n : '';\n }\n\n protected render() {\n if (!this.shadowRoot) return;\n const svg = this.getSvg();\n if (svg) {\n this.shadowRoot.innerHTML = svg;\n } else {\n this.renderError();\n }\n }\n}\n\n/**\n * Variant that renders the sigil as an <img> with a data URI source.\n *\n * <urbit-hanzi-image point=\"~zod\" size=\"128\"></urbit-hanzi-image>\n */\nexport class HanziSigilImage extends HanziSigil {\n protected render() {\n if (!this.shadowRoot) return;\n const svg = this.getSvg();\n if (!svg) {\n this.renderError();\n return;\n }\n const config = this.getConfig();\n const dataUri = `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`;\n this.shadowRoot.innerHTML = `<img\n src=\"${dataUri}\"\n width=\"${config.size}\"\n height=\"${config.size}\"\n alt=\"Hanzi sigil for ${config.point}\"\n style=\"display: block;\"\n />`;\n }\n}\n","import hanziSigil, { parsePoint, memoizedHanziSigil, deSig } from './core';\nimport { HanziSigil, HanziSigilImage } from './hanzi-sigil';\n\n// Register web components if in browser environment\nif (typeof window !== 'undefined' && window.customElements) {\n if (typeof customElements.get('urbit-hanzi') === 'undefined') {\n customElements.define('urbit-hanzi', HanziSigil);\n }\n if (typeof customElements.get('urbit-hanzi-image') === 'undefined') {\n customElements.define('urbit-hanzi-image', HanziSigilImage);\n }\n}\n\n// Re-export types\nexport * from './types';\n\n// Re-export mapping data + lookup helpers\nexport {\n PREFIXES,\n SUFFIXES,\n PREFIX_GROUPS,\n SUFFIX_GROUPS,\n PREFIX_CHARACTERS,\n SUFFIX_CHARACTERS,\n PREFIX_INDEX,\n SUFFIX_INDEX,\n PHONEME_INDEX,\n isPrefix,\n isSuffix,\n getCharacter,\n} from './mapping';\nexport type { Prefix, Suffix, Phoneme } from './mapping';\n\n// Export core functions\nexport { hanziSigil, parsePoint, memoizedHanziSigil, deSig };\nexport default hanziSigil;\n\n// Export web components for manual registration\nexport { HanziSigil, HanziSigilImage };\n"],"names":["HanziSigil","_HTMLElement","_this","call","attachShadow","mode","_inheritsLoose","_proto","prototype","connectedCallback","render","attributeChangedCallback","getConfig","point","getAttribute","size","parseInt","background","foreground","space","fontWeight","fontFamily","undefined","getSvg","config","hanziSigil","error","console","renderError","shadowRoot","innerHTML","svg","_createClass","key","get","_wrapNativeSuper","HTMLElement","HanziSigilImage","_HanziSigil","apply","arguments","_proto2","dataUri","encodeURIComponent","window","customElements","define"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("./core-7919ab70.js");require("lodash.memoize");var e=function(e){function i(){var t;return(t=e.call(this)||this).attachShadow({mode:"open"}),t}t._inheritsLoose(i,e);var r=i.prototype;return r.connectedCallback=function(){this.render()},r.attributeChangedCallback=function(){this.render()},r.getConfig=function(){return{point:this.getAttribute("point")||"",size:parseInt(this.getAttribute("size")||"128",10),background:this.getAttribute("background")||"#000",foreground:this.getAttribute("foreground")||"#FFF",space:this.getAttribute("space")||"default",fontWeight:parseInt(this.getAttribute("font-weight")||"400",10),fontFamily:this.getAttribute("font-family")||void 0}},r.getSvg=function(){var e=this.getConfig();if(!e.point)return null;try{return t.hanziSigil(e)}catch(t){return console.error("Failed to generate Hanzi sigil:",t),null}},r.renderError=function(){if(this.shadowRoot){var t=this.getAttribute("point")||"";this.shadowRoot.innerHTML=t?'<div style="color: red; font-size: 12px;">Invalid point: '+t+"</div>":""}},r.render=function(){if(this.shadowRoot){var t=this.getSvg();t?this.shadowRoot.innerHTML=t:this.renderError()}},t._createClass(i,null,[{key:"observedAttributes",get:function(){return["point","size","background","foreground","space","font-weight","font-family"]}}])}(t._wrapNativeSuper(HTMLElement)),i=function(e){function i(){return e.apply(this,arguments)||this}return t._inheritsLoose(i,e),i.prototype.render=function(){if(this.shadowRoot){var t=this.getSvg();if(t){var e=this.getConfig(),i="data:image/svg+xml;utf8,"+encodeURIComponent(t);this.shadowRoot.innerHTML='<img\n src="'+i+'"\n width="'+e.size+'"\n height="'+e.size+'"\n alt="Hanzi sigil for '+e.point+'"\n style="display: block;"\n />'}else this.renderError()}},i}(e);"undefined"!=typeof window&&window.customElements&&(void 0===customElements.get("urbit-hanzi")&&customElements.define("urbit-hanzi",e),void 0===customElements.get("urbit-hanzi-image")&&customElements.define("urbit-hanzi-image",i)),exports.PHONEME_INDEX=t.PHONEME_INDEX,exports.PREFIXES=t.PREFIXES,exports.PREFIX_CHARACTERS=t.PREFIX_CHARACTERS,exports.PREFIX_GROUPS=t.PREFIX_GROUPS,exports.PREFIX_INDEX=t.PREFIX_INDEX,exports.SUFFIXES=t.SUFFIXES,exports.SUFFIX_CHARACTERS=t.SUFFIX_CHARACTERS,exports.SUFFIX_GROUPS=t.SUFFIX_GROUPS,exports.SUFFIX_INDEX=t.SUFFIX_INDEX,exports.deSig=t.deSig,exports.default=t.hanziSigil,exports.getCharacter=t.getCharacter,exports.hanziSigil=t.hanziSigil,exports.isPrefix=t.isPrefix,exports.isSuffix=t.isSuffix,exports.memoizedHanziSigil=t.memoizedHanziSigil,exports.parsePoint=t.parsePoint,exports.HanziSigil=e,exports.HanziSigilImage=i;
2
+ //# sourceMappingURL=index.cjs.production.min.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs.production.min.js","sources":["../src/hanzi-sigil.ts","../src/index.ts"],"sourcesContent":["import hanziSigil from './core';\nimport type { Config } from './types';\n\n/**\n * Base web component for rendering Hanzi sigils.\n *\n * <urbit-hanzi point=\"~zod\" size=\"128\" background=\"#000\" foreground=\"#fff\"></urbit-hanzi>\n */\nexport class HanziSigil extends HTMLElement {\n static get observedAttributes() {\n return ['point', 'size', 'background', 'foreground', 'space', 'font-weight', 'font-family'];\n }\n\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n this.render();\n }\n\n attributeChangedCallback() {\n this.render();\n }\n\n protected getConfig(): Config {\n return {\n point: this.getAttribute('point') || '',\n size: parseInt(this.getAttribute('size') || '128', 10),\n background: this.getAttribute('background') || '#000',\n foreground: this.getAttribute('foreground') || '#FFF',\n space: (this.getAttribute('space') as Config['space']) || 'default',\n fontWeight: parseInt(this.getAttribute('font-weight') || '400', 10),\n fontFamily: this.getAttribute('font-family') || undefined,\n };\n }\n\n protected getSvg(): string | null {\n const config = this.getConfig();\n if (!config.point) return null;\n try {\n return hanziSigil(config);\n } catch (error) {\n console.error('Failed to generate Hanzi sigil:', error);\n return null;\n }\n }\n\n protected renderError() {\n if (!this.shadowRoot) return;\n const point = this.getAttribute('point') || '';\n this.shadowRoot.innerHTML = point\n ? `<div style=\"color: red; font-size: 12px;\">Invalid point: ${point}</div>`\n : '';\n }\n\n protected render() {\n if (!this.shadowRoot) return;\n const svg = this.getSvg();\n if (svg) {\n this.shadowRoot.innerHTML = svg;\n } else {\n this.renderError();\n }\n }\n}\n\n/**\n * Variant that renders the sigil as an <img> with a data URI source.\n *\n * <urbit-hanzi-image point=\"~zod\" size=\"128\"></urbit-hanzi-image>\n */\nexport class HanziSigilImage extends HanziSigil {\n protected render() {\n if (!this.shadowRoot) return;\n const svg = this.getSvg();\n if (!svg) {\n this.renderError();\n return;\n }\n const config = this.getConfig();\n const dataUri = `data:image/svg+xml;utf8,${encodeURIComponent(svg)}`;\n this.shadowRoot.innerHTML = `<img\n src=\"${dataUri}\"\n width=\"${config.size}\"\n height=\"${config.size}\"\n alt=\"Hanzi sigil for ${config.point}\"\n style=\"display: block;\"\n />`;\n }\n}\n","import hanziSigil, { parsePoint, memoizedHanziSigil, deSig } from './core';\nimport { HanziSigil, HanziSigilImage } from './hanzi-sigil';\n\n// Register web components if in browser environment\nif (typeof window !== 'undefined' && window.customElements) {\n if (typeof customElements.get('urbit-hanzi') === 'undefined') {\n customElements.define('urbit-hanzi', HanziSigil);\n }\n if (typeof customElements.get('urbit-hanzi-image') === 'undefined') {\n customElements.define('urbit-hanzi-image', HanziSigilImage);\n }\n}\n\n// Re-export types\nexport * from './types';\n\n// Re-export mapping data + lookup helpers\nexport {\n PREFIXES,\n SUFFIXES,\n PREFIX_GROUPS,\n SUFFIX_GROUPS,\n PREFIX_CHARACTERS,\n SUFFIX_CHARACTERS,\n PREFIX_INDEX,\n SUFFIX_INDEX,\n PHONEME_INDEX,\n isPrefix,\n isSuffix,\n getCharacter,\n} from './mapping';\nexport type { Prefix, Suffix, Phoneme } from './mapping';\n\n// Export core functions\nexport { hanziSigil, parsePoint, memoizedHanziSigil, deSig };\nexport default hanziSigil;\n\n// Export web components for manual registration\nexport { HanziSigil, HanziSigilImage };\n"],"names":["HanziSigil","_HTMLElement","_this","call","this","attachShadow","mode","_inheritsLoose","_proto","prototype","connectedCallback","render","attributeChangedCallback","getConfig","point","getAttribute","size","parseInt","background","foreground","space","fontWeight","fontFamily","undefined","getSvg","config","hanziSigil","error","console","renderError","shadowRoot","innerHTML","svg","_createClass","key","get","_wrapNativeSuper","HTMLElement","HanziSigilImage","_HanziSigil","apply","arguments","dataUri","encodeURIComponent","window","customElements","define"],"mappings":"kIAQaA,IAAAA,WAAWC,GAKtB,SAAAD,IAAA,IAAAE,EAEsC,OADpCA,EAAAD,EAAAE,YAAOC,MACFC,aAAa,CAAEC,KAAM,SAAUJ,CACtC,CAACK,iBAAAP,EAAAC,GAAA,IAAAO,EAAAR,EAAAS,UAiDA,OAjDAD,EAEDE,kBAAA,WACEN,KAAKO,UACNH,EAEDI,yBAAA,WACER,KAAKO,UACNH,EAESK,UAAA,WACR,MAAO,CACLC,MAAOV,KAAKW,aAAa,UAAY,GACrCC,KAAMC,SAASb,KAAKW,aAAa,SAAW,MAAO,IACnDG,WAAYd,KAAKW,aAAa,eAAiB,OAC/CI,WAAYf,KAAKW,aAAa,eAAiB,OAC/CK,MAAQhB,KAAKW,aAAa,UAAgC,UAC1DM,WAAYJ,SAASb,KAAKW,aAAa,gBAAkB,MAAO,IAChEO,WAAYlB,KAAKW,aAAa,qBAAkBQ,IAEnDf,EAESgB,OAAA,WACR,IAAMC,EAASrB,KAAKS,YACpB,IAAKY,EAAOX,MAAO,OAAO,KAC1B,IACE,OAAOY,EAAAA,WAAWD,EACnB,CAAC,MAAOE,GAEP,OADAC,QAAQD,MAAM,kCAAmCA,GAC1C,IACT,GACDnB,EAESqB,YAAA,WACR,GAAKzB,KAAK0B,WAAV,CACA,IAAMhB,EAAQV,KAAKW,aAAa,UAAY,GAC5CX,KAAK0B,WAAWC,UAAYjB,EAAK,4DAC+BA,EAAK,SACjE,EAJkB,GAKvBN,EAESG,OAAA,WACR,GAAKP,KAAK0B,WAAV,CACA,IAAME,EAAM5B,KAAKoB,SACbQ,EACF5B,KAAK0B,WAAWC,UAAYC,EAE5B5B,KAAKyB,aALe,GAOvBI,EAAAA,aAAAjC,EAAA,KAAA,CAAA,CAAAkC,IAAA,qBAAAC,IAxDD,WACE,MAAO,CAAC,QAAS,OAAQ,aAAc,aAAc,QAAS,cAAe,cAC/E,IAAC,EAAAC,EAAAA,iBAH6BC,cAiEnBC,WAAgBC,GAAA,SAAAD,IAAA,OAAAC,EAAAC,MAAApC,KAAAqC,YAAArC,IAAA,CAiB1B,OAjB0BG,iBAAA+B,EAAAC,GAAAD,EAAA7B,UACjBE,OAAA,WACR,GAAKP,KAAK0B,WAAV,CACA,IAAME,EAAM5B,KAAKoB,SACjB,GAAKQ,EAAL,CAIA,IAAMP,EAASrB,KAAKS,YACd6B,EAAO,2BAA8BC,mBAAmBX,GAC9D5B,KAAK0B,WAAWC,UACPW,oBAAAA,qBACEjB,EAAOT,KAAI,oBACVS,EAAOT,sCACMS,EAAOX,MAE7B,0CATH,MAFEV,KAAKyB,aAHe,GAevBS,CAAA,EAjBkCtC,GCrEf,oBAAX4C,QAA0BA,OAAOC,sBACO,IAAtCA,eAAeV,IAAI,gBAC5BU,eAAeC,OAAO,cAAe9C,QAEgB,IAA5C6C,eAAeV,IAAI,sBAC5BU,eAAeC,OAAO,oBAAqBR"}
@@ -0,0 +1,8 @@
1
+ import hanziSigil, { parsePoint, memoizedHanziSigil, deSig } from './core';
2
+ import { HanziSigil, HanziSigilImage } from './hanzi-sigil';
3
+ export * from './types';
4
+ export { PREFIXES, SUFFIXES, PREFIX_GROUPS, SUFFIX_GROUPS, PREFIX_CHARACTERS, SUFFIX_CHARACTERS, PREFIX_INDEX, SUFFIX_INDEX, PHONEME_INDEX, isPrefix, isSuffix, getCharacter, } from './mapping';
5
+ export type { Prefix, Suffix, Phoneme } from './mapping';
6
+ export { hanziSigil, parsePoint, memoizedHanziSigil, deSig };
7
+ export default hanziSigil;
8
+ export { HanziSigil, HanziSigilImage };
@@ -0,0 +1,105 @@
1
+ import { _ as _inheritsLoose, h as hanziSigil, a as _createClass, b as _wrapNativeSuper } from './core-325c2f1f.js';
2
+ export { k as PHONEME_INDEX, P as PREFIXES, f as PREFIX_CHARACTERS, c as PREFIX_GROUPS, i as PREFIX_INDEX, S as SUFFIXES, g as SUFFIX_CHARACTERS, e as SUFFIX_GROUPS, j as SUFFIX_INDEX, d as deSig, o as getCharacter, l as isPrefix, n as isSuffix, m as memoizedHanziSigil, p as parsePoint } from './core-325c2f1f.js';
3
+ import 'lodash.memoize';
4
+
5
+ /**
6
+ * Base web component for rendering Hanzi sigils.
7
+ *
8
+ * <urbit-hanzi point="~zod" size="128" background="#000" foreground="#fff"></urbit-hanzi>
9
+ */
10
+ var HanziSigil = /*#__PURE__*/function (_HTMLElement) {
11
+ function HanziSigil() {
12
+ var _this;
13
+ _this = _HTMLElement.call(this) || this;
14
+ _this.attachShadow({
15
+ mode: 'open'
16
+ });
17
+ return _this;
18
+ }
19
+ _inheritsLoose(HanziSigil, _HTMLElement);
20
+ var _proto = HanziSigil.prototype;
21
+ _proto.connectedCallback = function connectedCallback() {
22
+ this.render();
23
+ };
24
+ _proto.attributeChangedCallback = function attributeChangedCallback() {
25
+ this.render();
26
+ };
27
+ _proto.getConfig = function getConfig() {
28
+ return {
29
+ point: this.getAttribute('point') || '',
30
+ size: parseInt(this.getAttribute('size') || '128', 10),
31
+ background: this.getAttribute('background') || '#000',
32
+ foreground: this.getAttribute('foreground') || '#FFF',
33
+ space: this.getAttribute('space') || 'default',
34
+ fontWeight: parseInt(this.getAttribute('font-weight') || '400', 10),
35
+ fontFamily: this.getAttribute('font-family') || undefined
36
+ };
37
+ };
38
+ _proto.getSvg = function getSvg() {
39
+ var config = this.getConfig();
40
+ if (!config.point) return null;
41
+ try {
42
+ return hanziSigil(config);
43
+ } catch (error) {
44
+ console.error('Failed to generate Hanzi sigil:', error);
45
+ return null;
46
+ }
47
+ };
48
+ _proto.renderError = function renderError() {
49
+ if (!this.shadowRoot) return;
50
+ var point = this.getAttribute('point') || '';
51
+ this.shadowRoot.innerHTML = point ? "<div style=\"color: red; font-size: 12px;\">Invalid point: " + point + "</div>" : '';
52
+ };
53
+ _proto.render = function render() {
54
+ if (!this.shadowRoot) return;
55
+ var svg = this.getSvg();
56
+ if (svg) {
57
+ this.shadowRoot.innerHTML = svg;
58
+ } else {
59
+ this.renderError();
60
+ }
61
+ };
62
+ return _createClass(HanziSigil, null, [{
63
+ key: "observedAttributes",
64
+ get: function get() {
65
+ return ['point', 'size', 'background', 'foreground', 'space', 'font-weight', 'font-family'];
66
+ }
67
+ }]);
68
+ }(/*#__PURE__*/_wrapNativeSuper(HTMLElement));
69
+ /**
70
+ * Variant that renders the sigil as an <img> with a data URI source.
71
+ *
72
+ * <urbit-hanzi-image point="~zod" size="128"></urbit-hanzi-image>
73
+ */
74
+ var HanziSigilImage = /*#__PURE__*/function (_HanziSigil) {
75
+ function HanziSigilImage() {
76
+ return _HanziSigil.apply(this, arguments) || this;
77
+ }
78
+ _inheritsLoose(HanziSigilImage, _HanziSigil);
79
+ var _proto2 = HanziSigilImage.prototype;
80
+ _proto2.render = function render() {
81
+ if (!this.shadowRoot) return;
82
+ var svg = this.getSvg();
83
+ if (!svg) {
84
+ this.renderError();
85
+ return;
86
+ }
87
+ var config = this.getConfig();
88
+ var dataUri = "data:image/svg+xml;utf8," + encodeURIComponent(svg);
89
+ this.shadowRoot.innerHTML = "<img\n src=\"" + dataUri + "\"\n width=\"" + config.size + "\"\n height=\"" + config.size + "\"\n alt=\"Hanzi sigil for " + config.point + "\"\n style=\"display: block;\"\n />";
90
+ };
91
+ return HanziSigilImage;
92
+ }(HanziSigil);
93
+
94
+ // Register web components if in browser environment
95
+ if (typeof window !== 'undefined' && window.customElements) {
96
+ if (typeof customElements.get('urbit-hanzi') === 'undefined') {
97
+ customElements.define('urbit-hanzi', HanziSigil);
98
+ }
99
+ if (typeof customElements.get('urbit-hanzi-image') === 'undefined') {
100
+ customElements.define('urbit-hanzi-image', HanziSigilImage);
101
+ }
102
+ }
103
+
104
+ export { HanziSigil, HanziSigilImage, hanziSigil as default, hanziSigil };
105
+ //# sourceMappingURL=index.esm.js.map