@d3plus/text 3.0.2 → 3.0.4

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 +1 @@
1
- {"version":3,"file":"d3plus-text.js","sources":["../src/fontFamily.js","../src/stringify.js","../src/strip.js","../src/combiningMarks.js","../src/textSplit.js","../src/trim.js","../src/textWrap.js","../src/titleCase.js"],"sourcesContent":["/**\n @const fontFamily\n @desc The default fallback font list used for all text labels as an Array of Strings.\n @returns {Array<string>}\n*/\nexport const fontFamily = [\"Inter\", \"Helvetica Neue\", \"HelveticaNeue\", \"Helvetica\", \"Arial\", \"sans-serif\"];\n\n/**\n @const fontFamilyStringify\n @desc Converts an Array of font-family names into a CSS font-family string.\n @param {String|Array<string>} *family*\n @returns {String}\n*/\nexport const fontFamilyStringify = family => \n (typeof family === \"string\" ? [family] : family)\n .map(d => d.match(/^[a-z-_]{1,}$/) ? d : `'${d}'`)\n .join(\", \");","/**\n @function stringify\n @desc Coerces value into a String.\n @param {String} value\n*/\nexport default function(value) {\n if (value === void 0) value = \"undefined\";\n else if (!(typeof value === \"string\" || value instanceof String)) value = JSON.stringify(value);\n return value;\n}\n","// great unicode list: http://asecuritysite.com/coding/asc2\n\nconst diacritics = [\n [/[\\300-\\305]/g, \"A\"], [/[\\340-\\345]/g, \"a\"],\n [/[\\306]/g, \"AE\"], [/[\\346]/g, \"ae\"],\n [/[\\337]/g, \"B\"],\n [/[\\307]/g, \"C\"], [/[\\347]/g, \"c\"],\n [/[\\320\\336\\376]/g, \"D\"], [/[\\360]/g, \"d\"],\n [/[\\310-\\313]/g, \"E\"], [/[\\350-\\353]/g, \"e\"],\n [/[\\314-\\317]/g, \"I\"], [/[\\354-\\357]/g, \"i\"],\n [/[\\321]/g, \"N\"], [/[\\361]/g, \"n\"],\n [/[\\u014c\\322-\\326\\330]/g, \"O\"], [/[\\u014d\\362-\\366\\370]/g, \"o\"],\n [/[\\u016a\\331-\\334]/g, \"U\"], [/[\\u016b\\371-\\374]/g, \"u\"],\n [/[\\327]/g, \"x\"],\n [/[\\335]/g, \"Y\"], [/[\\375\\377]/g, \"y\"]\n];\n\n/**\n @function strip\n @desc Removes all non ASCII characters from a string.\n @param {String} value\n @param {String} [spacer = \"-\"]\n*/\nexport default function(value, spacer = \"-\") {\n\n return `${value}`.replace(/[^A-Za-z0-9\\-_\\u0621-\\u064A]/g, char => {\n\n if (char === \" \") return spacer;\n\n let ret = false;\n for (let d = 0; d < diacritics.length; d++) {\n if (new RegExp(diacritics[d][0]).test(char)) {\n ret = diacritics[d][1];\n break;\n }\n }\n\n return ret || \"\";\n\n });\n}\n","// scraped from http://www.fileformat.info/info/unicode/category/Mc/list.htm\n// and http://www.fileformat.info/info/unicode/category/Mn/list.htm\n// JSON.stringify([].slice.call(document.getElementsByClassName(\"table-list\")[0].getElementsByTagName(\"tr\")).filter(function(d){ return d.getElementsByTagName(\"a\").length && d.getElementsByTagName(\"a\")[0].innerHTML.length === 6; }).map(function(d){ return d.getElementsByTagName(\"a\")[0].innerHTML.replace(\"U\", \"u\").replace(\"+\", \"\"); }).sort());\n// The following unicode characters combine to form new characters and should never be split from surrounding characters.\nconst a = [\"u0903\", \"u093B\", \"u093E\", \"u093F\", \"u0940\", \"u0949\", \"u094A\", \"u094B\", \"u094C\", \"u094E\", \"u094F\", \"u0982\", \"u0983\", \"u09BE\", \"u09BF\", \"u09C0\", \"u09C7\", \"u09C8\", \"u09CB\", \"u09CC\", \"u09D7\", \"u0A03\", \"u0A3E\", \"u0A3F\", \"u0A40\", \"u0A83\", \"u0ABE\", \"u0ABF\", \"u0AC0\", \"u0AC9\", \"u0ACB\", \"u0ACC\", \"u0B02\", \"u0B03\", \"u0B3E\", \"u0B40\", \"u0B47\", \"u0B48\", \"u0B4B\", \"u0B4C\", \"u0B57\", \"u0BBE\", \"u0BBF\", \"u0BC1\", \"u0BC2\", \"u0BC6\", \"u0BC7\", \"u0BC8\", \"u0BCA\", \"u0BCB\", \"u0BCC\", \"u0BD7\", \"u0C01\", \"u0C02\", \"u0C03\", \"u0C41\", \"u0C42\", \"u0C43\", \"u0C44\", \"u0C82\", \"u0C83\", \"u0CBE\", \"u0CC0\", \"u0CC1\", \"u0CC2\", \"u0CC3\", \"u0CC4\", \"u0CC7\", \"u0CC8\", \"u0CCA\", \"u0CCB\", \"u0CD5\", \"u0CD6\", \"u0D02\", \"u0D03\", \"u0D3E\", \"u0D3F\", \"u0D40\", \"u0D46\", \"u0D47\", \"u0D48\", \"u0D4A\", \"u0D4B\", \"u0D4C\", \"u0D57\", \"u0D82\", \"u0D83\", \"u0DCF\", \"u0DD0\", \"u0DD1\", \"u0DD8\", \"u0DD9\", \"u0DDA\", \"u0DDB\", \"u0DDC\", \"u0DDD\", \"u0DDE\", \"u0DDF\", \"u0DF2\", \"u0DF3\", \"u0F3E\", \"u0F3F\", \"u0F7F\", \"u102B\", \"u102C\", \"u1031\", \"u1038\", \"u103B\", \"u103C\", \"u1056\", \"u1057\", \"u1062\", \"u1063\", \"u1064\", \"u1067\", \"u1068\", \"u1069\", \"u106A\", \"u106B\", \"u106C\", \"u106D\", \"u1083\", \"u1084\", \"u1087\", \"u1088\", \"u1089\", \"u108A\", \"u108B\", \"u108C\", \"u108F\", \"u109A\", \"u109B\", \"u109C\", \"u17B6\", \"u17BE\", \"u17BF\", \"u17C0\", \"u17C1\", \"u17C2\", \"u17C3\", \"u17C4\", \"u17C5\", \"u17C7\", \"u17C8\", \"u1923\", \"u1924\", \"u1925\", \"u1926\", \"u1929\", \"u192A\", \"u192B\", \"u1930\", \"u1931\", \"u1933\", \"u1934\", \"u1935\", \"u1936\", \"u1937\", \"u1938\", \"u1A19\", \"u1A1A\", \"u1A55\", \"u1A57\", \"u1A61\", \"u1A63\", \"u1A64\", \"u1A6D\", \"u1A6E\", \"u1A6F\", \"u1A70\", \"u1A71\", \"u1A72\", \"u1B04\", \"u1B35\", \"u1B3B\", \"u1B3D\", \"u1B3E\", \"u1B3F\", \"u1B40\", \"u1B41\", \"u1B43\", \"u1B44\", \"u1B82\", \"u1BA1\", \"u1BA6\", \"u1BA7\", \"u1BAA\", \"u1BE7\", \"u1BEA\", \"u1BEB\", \"u1BEC\", \"u1BEE\", \"u1BF2\", \"u1BF3\", \"u1C24\", \"u1C25\", \"u1C26\", \"u1C27\", \"u1C28\", \"u1C29\", \"u1C2A\", \"u1C2B\", \"u1C34\", \"u1C35\", \"u1CE1\", \"u1CF2\", \"u1CF3\", \"u302E\", \"u302F\", \"uA823\", \"uA824\", \"uA827\", \"uA880\", \"uA881\", \"uA8B4\", \"uA8B5\", \"uA8B6\", \"uA8B7\", \"uA8B8\", \"uA8B9\", \"uA8BA\", \"uA8BB\", \"uA8BC\", \"uA8BD\", \"uA8BE\", \"uA8BF\", \"uA8C0\", \"uA8C1\", \"uA8C2\", \"uA8C3\", \"uA952\", \"uA953\", \"uA983\", \"uA9B4\", \"uA9B5\", \"uA9BA\", \"uA9BB\", \"uA9BD\", \"uA9BE\", \"uA9BF\", \"uA9C0\", \"uAA2F\", \"uAA30\", \"uAA33\", \"uAA34\", \"uAA4D\", \"uAA7B\", \"uAA7D\", \"uAAEB\", \"uAAEE\", \"uAAEF\", \"uAAF5\", \"uABE3\", \"uABE4\", \"uABE6\", \"uABE7\", \"uABE9\", \"uABEA\", \"uABEC\"];\nconst b = [\"u0300\", \"u0301\", \"u0302\", \"u0303\", \"u0304\", \"u0305\", \"u0306\", \"u0307\", \"u0308\", \"u0309\", \"u030A\", \"u030B\", \"u030C\", \"u030D\", \"u030E\", \"u030F\", \"u0310\", \"u0311\", \"u0312\", \"u0313\", \"u0314\", \"u0315\", \"u0316\", \"u0317\", \"u0318\", \"u0319\", \"u031A\", \"u031B\", \"u031C\", \"u031D\", \"u031E\", \"u031F\", \"u0320\", \"u0321\", \"u0322\", \"u0323\", \"u0324\", \"u0325\", \"u0326\", \"u0327\", \"u0328\", \"u0329\", \"u032A\", \"u032B\", \"u032C\", \"u032D\", \"u032E\", \"u032F\", \"u0330\", \"u0331\", \"u0332\", \"u0333\", \"u0334\", \"u0335\", \"u0336\", \"u0337\", \"u0338\", \"u0339\", \"u033A\", \"u033B\", \"u033C\", \"u033D\", \"u033E\", \"u033F\", \"u0340\", \"u0341\", \"u0342\", \"u0343\", \"u0344\", \"u0345\", \"u0346\", \"u0347\", \"u0348\", \"u0349\", \"u034A\", \"u034B\", \"u034C\", \"u034D\", \"u034E\", \"u034F\", \"u0350\", \"u0351\", \"u0352\", \"u0353\", \"u0354\", \"u0355\", \"u0356\", \"u0357\", \"u0358\", \"u0359\", \"u035A\", \"u035B\", \"u035C\", \"u035D\", \"u035E\", \"u035F\", \"u0360\", \"u0361\", \"u0362\", \"u0363\", \"u0364\", \"u0365\", \"u0366\", \"u0367\", \"u0368\", \"u0369\", \"u036A\", \"u036B\", \"u036C\", \"u036D\", \"u036E\", \"u036F\", \"u0483\", \"u0484\", \"u0485\", \"u0486\", \"u0487\", \"u0591\", \"u0592\", \"u0593\", \"u0594\", \"u0595\", \"u0596\", \"u0597\", \"u0598\", \"u0599\", \"u059A\", \"u059B\", \"u059C\", \"u059D\", \"u059E\", \"u059F\", \"u05A0\", \"u05A1\", \"u05A2\", \"u05A3\", \"u05A4\", \"u05A5\", \"u05A6\", \"u05A7\", \"u05A8\", \"u05A9\", \"u05AA\", \"u05AB\", \"u05AC\", \"u05AD\", \"u05AE\", \"u05AF\", \"u05B0\", \"u05B1\", \"u05B2\", \"u05B3\", \"u05B4\", \"u05B5\", \"u05B6\", \"u05B7\", \"u05B8\", \"u05B9\", \"u05BA\", \"u05BB\", \"u05BC\", \"u05BD\", \"u05BF\", \"u05C1\", \"u05C2\", \"u05C4\", \"u05C5\", \"u05C7\", \"u0610\", \"u0611\", \"u0612\", \"u0613\", \"u0614\", \"u0615\", \"u0616\", \"u0617\", \"u0618\", \"u0619\", \"u061A\", \"u064B\", \"u064C\", \"u064D\", \"u064E\", \"u064F\", \"u0650\", \"u0651\", \"u0652\", \"u0653\", \"u0654\", \"u0655\", \"u0656\", \"u0657\", \"u0658\", \"u0659\", \"u065A\", \"u065B\", \"u065C\", \"u065D\", \"u065E\", \"u065F\", \"u0670\", \"u06D6\", \"u06D7\", \"u06D8\", \"u06D9\", \"u06DA\", \"u06DB\", \"u06DC\", \"u06DF\", \"u06E0\", \"u06E1\", \"u06E2\", \"u06E3\", \"u06E4\", \"u06E7\", \"u06E8\", \"u06EA\", \"u06EB\", \"u06EC\", \"u06ED\", \"u0711\", \"u0730\", \"u0731\", \"u0732\", \"u0733\", \"u0734\", \"u0735\", \"u0736\", \"u0737\", \"u0738\", \"u0739\", \"u073A\", \"u073B\", \"u073C\", \"u073D\", \"u073E\", \"u073F\", \"u0740\", \"u0741\", \"u0742\", \"u0743\", \"u0744\", \"u0745\", \"u0746\", \"u0747\", \"u0748\", \"u0749\", \"u074A\", \"u07A6\", \"u07A7\", \"u07A8\", \"u07A9\", \"u07AA\", \"u07AB\", \"u07AC\", \"u07AD\", \"u07AE\", \"u07AF\", \"u07B0\", \"u07EB\", \"u07EC\", \"u07ED\", \"u07EE\", \"u07EF\", \"u07F0\", \"u07F1\", \"u07F2\", \"u07F3\", \"u0816\", \"u0817\", \"u0818\", \"u0819\", \"u081B\", \"u081C\", \"u081D\", \"u081E\", \"u081F\", \"u0820\", \"u0821\", \"u0822\", \"u0823\", \"u0825\", \"u0826\", \"u0827\", \"u0829\", \"u082A\", \"u082B\", \"u082C\", \"u082D\", \"u0859\", \"u085A\", \"u085B\", \"u08E3\", \"u08E4\", \"u08E5\", \"u08E6\", \"u08E7\", \"u08E8\", \"u08E9\", \"u08EA\", \"u08EB\", \"u08EC\", \"u08ED\", \"u08EE\", \"u08EF\", \"u08F0\", \"u08F1\", \"u08F2\", \"u08F3\", \"u08F4\", \"u08F5\", \"u08F6\", \"u08F7\", \"u08F8\", \"u08F9\", \"u08FA\", \"u08FB\", \"u08FC\", \"u08FD\", \"u08FE\", \"u08FF\", \"u0900\", \"u0901\", \"u0902\", \"u093A\", \"u093C\", \"u0941\", \"u0942\", \"u0943\", \"u0944\", \"u0945\", \"u0946\", \"u0947\", \"u0948\", \"u094D\", \"u0951\", \"u0952\", \"u0953\", \"u0954\", \"u0955\", \"u0956\", \"u0957\", \"u0962\", \"u0963\", \"u0981\", \"u09BC\", \"u09C1\", \"u09C2\", \"u09C3\", \"u09C4\", \"u09CD\", \"u09E2\", \"u09E3\", \"u0A01\", \"u0A02\", \"u0A3C\", \"u0A41\", \"u0A42\", \"u0A47\", \"u0A48\", \"u0A4B\", \"u0A4C\", \"u0A4D\", \"u0A51\", \"u0A70\", \"u0A71\", \"u0A75\", \"u0A81\", \"u0A82\", \"u0ABC\", \"u0AC1\", \"u0AC2\", \"u0AC3\", \"u0AC4\", \"u0AC5\", \"u0AC7\", \"u0AC8\", \"u0ACD\", \"u0AE2\", \"u0AE3\", \"u0B01\", \"u0B3C\", \"u0B3F\", \"u0B41\", \"u0B42\", \"u0B43\", \"u0B44\", \"u0B4D\", \"u0B56\", \"u0B62\", \"u0B63\", \"u0B82\", \"u0BC0\", \"u0BCD\", \"u0C00\", \"u0C3E\", \"u0C3F\", \"u0C40\", \"u0C46\", \"u0C47\", \"u0C48\", \"u0C4A\", \"u0C4B\", \"u0C4C\", \"u0C4D\", \"u0C55\", \"u0C56\", \"u0C62\", \"u0C63\", \"u0C81\", \"u0CBC\", \"u0CBF\", \"u0CC6\", \"u0CCC\", \"u0CCD\", \"u0CE2\", \"u0CE3\", \"u0D01\", \"u0D41\", \"u0D42\", \"u0D43\", \"u0D44\", \"u0D4D\", \"u0D62\", \"u0D63\", \"u0DCA\", \"u0DD2\", \"u0DD3\", \"u0DD4\", \"u0DD6\", \"u0E31\", \"u0E34\", \"u0E35\", \"u0E36\", \"u0E37\", \"u0E38\", \"u0E39\", \"u0E3A\", \"u0E47\", \"u0E48\", \"u0E49\", \"u0E4A\", \"u0E4B\", \"u0E4C\", \"u0E4D\", \"u0E4E\", \"u0EB1\", \"u0EB4\", \"u0EB5\", \"u0EB6\", \"u0EB7\", \"u0EB8\", \"u0EB9\", \"u0EBB\", \"u0EBC\", \"u0EC8\", \"u0EC9\", \"u0ECA\", \"u0ECB\", \"u0ECC\", \"u0ECD\", \"u0F18\", \"u0F19\", \"u0F35\", \"u0F37\", \"u0F39\", \"u0F71\", \"u0F72\", \"u0F73\", \"u0F74\", \"u0F75\", \"u0F76\", \"u0F77\", \"u0F78\", \"u0F79\", \"u0F7A\", \"u0F7B\", \"u0F7C\", \"u0F7D\", \"u0F7E\", \"u0F80\", \"u0F81\", \"u0F82\", \"u0F83\", \"u0F84\", \"u0F86\", \"u0F87\", \"u0F8D\", \"u0F8E\", \"u0F8F\", \"u0F90\", \"u0F91\", \"u0F92\", \"u0F93\", \"u0F94\", \"u0F95\", \"u0F96\", \"u0F97\", \"u0F99\", \"u0F9A\", \"u0F9B\", \"u0F9C\", \"u0F9D\", \"u0F9E\", \"u0F9F\", \"u0FA0\", \"u0FA1\", \"u0FA2\", \"u0FA3\", \"u0FA4\", \"u0FA5\", \"u0FA6\", \"u0FA7\", \"u0FA8\", \"u0FA9\", \"u0FAA\", \"u0FAB\", \"u0FAC\", \"u0FAD\", \"u0FAE\", \"u0FAF\", \"u0FB0\", \"u0FB1\", \"u0FB2\", \"u0FB3\", \"u0FB4\", \"u0FB5\", \"u0FB6\", \"u0FB7\", \"u0FB8\", \"u0FB9\", \"u0FBA\", \"u0FBB\", \"u0FBC\", \"u0FC6\", \"u102D\", \"u102E\", \"u102F\", \"u1030\", \"u1032\", \"u1033\", \"u1034\", \"u1035\", \"u1036\", \"u1037\", \"u1039\", \"u103A\", \"u103D\", \"u103E\", \"u1058\", \"u1059\", \"u105E\", \"u105F\", \"u1060\", \"u1071\", \"u1072\", \"u1073\", \"u1074\", \"u1082\", \"u1085\", \"u1086\", \"u108D\", \"u109D\", \"u135D\", \"u135E\", \"u135F\", \"u1712\", \"u1713\", \"u1714\", \"u1732\", \"u1733\", \"u1734\", \"u1752\", \"u1753\", \"u1772\", \"u1773\", \"u17B4\", \"u17B5\", \"u17B7\", \"u17B8\", \"u17B9\", \"u17BA\", \"u17BB\", \"u17BC\", \"u17BD\", \"u17C6\", \"u17C9\", \"u17CA\", \"u17CB\", \"u17CC\", \"u17CD\", \"u17CE\", \"u17CF\", \"u17D0\", \"u17D1\", \"u17D2\", \"u17D3\", \"u17DD\", \"u180B\", \"u180C\", \"u180D\", \"u18A9\", \"u1920\", \"u1921\", \"u1922\", \"u1927\", \"u1928\", \"u1932\", \"u1939\", \"u193A\", \"u193B\", \"u1A17\", \"u1A18\", \"u1A1B\", \"u1A56\", \"u1A58\", \"u1A59\", \"u1A5A\", \"u1A5B\", \"u1A5C\", \"u1A5D\", \"u1A5E\", \"u1A60\", \"u1A62\", \"u1A65\", \"u1A66\", \"u1A67\", \"u1A68\", \"u1A69\", \"u1A6A\", \"u1A6B\", \"u1A6C\", \"u1A73\", \"u1A74\", \"u1A75\", \"u1A76\", \"u1A77\", \"u1A78\", \"u1A79\", \"u1A7A\", \"u1A7B\", \"u1A7C\", \"u1A7F\", \"u1AB0\", \"u1AB1\", \"u1AB2\", \"u1AB3\", \"u1AB4\", \"u1AB5\", \"u1AB6\", \"u1AB7\", \"u1AB8\", \"u1AB9\", \"u1ABA\", \"u1ABB\", \"u1ABC\", \"u1ABD\", \"u1B00\", \"u1B01\", \"u1B02\", \"u1B03\", \"u1B34\", \"u1B36\", \"u1B37\", \"u1B38\", \"u1B39\", \"u1B3A\", \"u1B3C\", \"u1B42\", \"u1B6B\", \"u1B6C\", \"u1B6D\", \"u1B6E\", \"u1B6F\", \"u1B70\", \"u1B71\", \"u1B72\", \"u1B73\", \"u1B80\", \"u1B81\", \"u1BA2\", \"u1BA3\", \"u1BA4\", \"u1BA5\", \"u1BA8\", \"u1BA9\", \"u1BAB\", \"u1BAC\", \"u1BAD\", \"u1BE6\", \"u1BE8\", \"u1BE9\", \"u1BED\", \"u1BEF\", \"u1BF0\", \"u1BF1\", \"u1C2C\", \"u1C2D\", \"u1C2E\", \"u1C2F\", \"u1C30\", \"u1C31\", \"u1C32\", \"u1C33\", \"u1C36\", \"u1C37\", \"u1CD0\", \"u1CD1\", \"u1CD2\", \"u1CD4\", \"u1CD5\", \"u1CD6\", \"u1CD7\", \"u1CD8\", \"u1CD9\", \"u1CDA\", \"u1CDB\", \"u1CDC\", \"u1CDD\", \"u1CDE\", \"u1CDF\", \"u1CE0\", \"u1CE2\", \"u1CE3\", \"u1CE4\", \"u1CE5\", \"u1CE6\", \"u1CE7\", \"u1CE8\", \"u1CED\", \"u1CF4\", \"u1CF8\", \"u1CF9\", \"u1DC0\", \"u1DC1\", \"u1DC2\", \"u1DC3\", \"u1DC4\", \"u1DC5\", \"u1DC6\", \"u1DC7\", \"u1DC8\", \"u1DC9\", \"u1DCA\", \"u1DCB\", \"u1DCC\", \"u1DCD\", \"u1DCE\", \"u1DCF\", \"u1DD0\", \"u1DD1\", \"u1DD2\", \"u1DD3\", \"u1DD4\", \"u1DD5\", \"u1DD6\", \"u1DD7\", \"u1DD8\", \"u1DD9\", \"u1DDA\", \"u1DDB\", \"u1DDC\", \"u1DDD\", \"u1DDE\", \"u1DDF\", \"u1DE0\", \"u1DE1\", \"u1DE2\", \"u1DE3\", \"u1DE4\", \"u1DE5\", \"u1DE6\", \"u1DE7\", \"u1DE8\", \"u1DE9\", \"u1DEA\", \"u1DEB\", \"u1DEC\", \"u1DED\", \"u1DEE\", \"u1DEF\", \"u1DF0\", \"u1DF1\", \"u1DF2\", \"u1DF3\", \"u1DF4\", \"u1DF5\", \"u1DFC\", \"u1DFD\", \"u1DFE\", \"u1DFF\", \"u20D0\", \"u20D1\", \"u20D2\", \"u20D3\", \"u20D4\", \"u20D5\", \"u20D6\", \"u20D7\", \"u20D8\", \"u20D9\", \"u20DA\", \"u20DB\", \"u20DC\", \"u20E1\", \"u20E5\", \"u20E6\", \"u20E7\", \"u20E8\", \"u20E9\", \"u20EA\", \"u20EB\", \"u20EC\", \"u20ED\", \"u20EE\", \"u20EF\", \"u20F0\", \"u2CEF\", \"u2CF0\", \"u2CF1\", \"u2D7F\", \"u2DE0\", \"u2DE1\", \"u2DE2\", \"u2DE3\", \"u2DE4\", \"u2DE5\", \"u2DE6\", \"u2DE7\", \"u2DE8\", \"u2DE9\", \"u2DEA\", \"u2DEB\", \"u2DEC\", \"u2DED\", \"u2DEE\", \"u2DEF\", \"u2DF0\", \"u2DF1\", \"u2DF2\", \"u2DF3\", \"u2DF4\", \"u2DF5\", \"u2DF6\", \"u2DF7\", \"u2DF8\", \"u2DF9\", \"u2DFA\", \"u2DFB\", \"u2DFC\", \"u2DFD\", \"u2DFE\", \"u2DFF\", \"u302A\", \"u302B\", \"u302C\", \"u302D\", \"u3099\", \"u309A\", \"uA66F\", \"uA674\", \"uA675\", \"uA676\", \"uA677\", \"uA678\", \"uA679\", \"uA67A\", \"uA67B\", \"uA67C\", \"uA67D\", \"uA69E\", \"uA69F\", \"uA6F0\", \"uA6F1\", \"uA802\", \"uA806\", \"uA80B\", \"uA825\", \"uA826\", \"uA8C4\", \"uA8E0\", \"uA8E1\", \"uA8E2\", \"uA8E3\", \"uA8E4\", \"uA8E5\", \"uA8E6\", \"uA8E7\", \"uA8E8\", \"uA8E9\", \"uA8EA\", \"uA8EB\", \"uA8EC\", \"uA8ED\", \"uA8EE\", \"uA8EF\", \"uA8F0\", \"uA8F1\", \"uA926\", \"uA927\", \"uA928\", \"uA929\", \"uA92A\", \"uA92B\", \"uA92C\", \"uA92D\", \"uA947\", \"uA948\", \"uA949\", \"uA94A\", \"uA94B\", \"uA94C\", \"uA94D\", \"uA94E\", \"uA94F\", \"uA950\", \"uA951\", \"uA980\", \"uA981\", \"uA982\", \"uA9B3\", \"uA9B6\", \"uA9B7\", \"uA9B8\", \"uA9B9\", \"uA9BC\", \"uA9E5\", \"uAA29\", \"uAA2A\", \"uAA2B\", \"uAA2C\", \"uAA2D\", \"uAA2E\", \"uAA31\", \"uAA32\", \"uAA35\", \"uAA36\", \"uAA43\", \"uAA4C\", \"uAA7C\", \"uAAB0\", \"uAAB2\", \"uAAB3\", \"uAAB4\", \"uAAB7\", \"uAAB8\", \"uAABE\", \"uAABF\", \"uAAC1\", \"uAAEC\", \"uAAED\", \"uAAF6\", \"uABE5\", \"uABE8\", \"uABED\", \"uFB1E\", \"uFE00\", \"uFE01\", \"uFE02\", \"uFE03\", \"uFE04\", \"uFE05\", \"uFE06\", \"uFE07\", \"uFE08\", \"uFE09\", \"uFE0A\", \"uFE0B\", \"uFE0C\", \"uFE0D\", \"uFE0E\", \"uFE0F\", \"uFE20\", \"uFE21\", \"uFE22\", \"uFE23\", \"uFE24\", \"uFE25\", \"uFE26\", \"uFE27\", \"uFE28\", \"uFE29\", \"uFE2A\", \"uFE2B\", \"uFE2C\", \"uFE2D\", \"uFE2E\", \"uFE2F\"];\nexport default a.concat(b);\n","import {default as stringify} from \"./stringify.js\";\nimport {default as combiningMarks} from \"./combiningMarks.js\";\nimport {merge} from \"d3-array\";\n\nconst splitChars = [\"-\", \";\", \":\", \"&\", \"|\",\n \"u0E2F\", // thai character pairannoi\n \"u0EAF\", // lao ellipsis\n \"u0EC6\", // lao ko la (word repetition)\n \"u0ECC\", // lao cancellation mark\n \"u104A\", // myanmar sign little section\n \"u104B\", // myanmar sign section\n \"u104C\", // myanmar symbol locative\n \"u104D\", // myanmar symbol completed\n \"u104E\", // myanmar symbol aforementioned\n \"u104F\", // myanmar symbol genitive\n \"u2013\", // en dash\n \"u2014\", // em dash\n \"u2027\", // simplified chinese hyphenation point\n \"u3000\", // simplified chinese ideographic space\n \"u3001\", // simplified chinese ideographic comma\n \"u3002\", // simplified chinese ideographic full stop\n \"uFF0C\", // full-width comma\n \"uFF5E\" // wave dash\n];\n\nconst prefixChars = [\"'\", \"<\", \"(\", \"{\", \"[\",\n \"u00AB\", // left-pointing double angle quotation mark\n \"u300A\", // left double angle bracket\n \"u3008\" // left angle bracket\n];\n\nconst suffixChars = [\"'\", \">\", \")\", \"}\", \"]\", \".\", \"!\", \"?\", \"/\",\n \"u00BB\", // right-pointing double angle quotation mark\n \"u300B\", // right double angle bracket\n \"u3009\" // right angle bracket\n].concat(splitChars);\n\nconst burmeseRange = \"\\u1000-\\u102A\\u103F-\\u1049\\u1050-\\u1055\";\nconst japaneseRange = \"\\u3040-\\u309f\\u30a0-\\u30ff\\uff00-\\uff0b\\uff0d-\\uff5d\\uff5f-\\uff9f\\u3400-\\u4dbf\";\nconst chineseRange = \"\\u3400-\\u9FBF\";\nconst laoRange = \"\\u0E81-\\u0EAE\\u0EB0-\\u0EC4\\u0EC8-\\u0ECB\\u0ECD-\\u0EDD\";\n\nconst noSpaceRange = burmeseRange + chineseRange + japaneseRange + laoRange;\n\n\nconst splitWords = new RegExp(`(\\\\${splitChars.join(\"|\\\\\")})*[^\\\\s|\\\\${splitChars.join(\"|\\\\\")}]*(\\\\${splitChars.join(\"|\\\\\")})*`, \"g\");\n\nconst noSpaceLanguage = new RegExp(`[${noSpaceRange}]`);\nconst splitAllChars = new RegExp(`(\\\\${prefixChars.join(\"|\\\\\")})*[${noSpaceRange}](\\\\${suffixChars.join(\"|\\\\\")}|\\\\${combiningMarks.join(\"|\\\\\")})*|[a-z0-9]+`, \"gi\");\n\n/**\n @function textSplit\n @desc Splits a given sentence into an array of words.\n @param {String} sentence\n*/\nexport default function(sentence) {\n if (!noSpaceLanguage.test(sentence)) return stringify(sentence).match(splitWords).filter(w => w.length);\n return merge(stringify(sentence).match(splitWords).map(d => {\n if (noSpaceLanguage.test(d)) return d.match(splitAllChars);\n return [d];\n }));\n}\n\nexport {prefixChars, splitChars, splitWords, suffixChars};\n","/**\n @function trim\n @desc Cross-browser implementation of [trim](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim).\n @param {String} str\n*/\nfunction trim(str) {\n return str.toString().replace(/^\\s+|\\s+$/g, \"\");\n}\n\n/**\n @function trimLeft\n @desc Cross-browser implementation of [trimLeft](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft).\n @param {String} str\n*/\nfunction trimLeft(str) {\n return str.toString().replace(/^\\s+/, \"\");\n}\n\n/**\n @function trimRight\n @desc Cross-browser implementation of [trimRight](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/TrimRight).\n @param {String} str\n*/\nfunction trimRight(str) {\n return str.toString().replace(/\\s+$/, \"\");\n}\n\nexport {trim, trimLeft, trimRight};\n","import {textWidth} from \"@d3plus/dom\";\n\nimport defaultSplit from \"./textSplit.js\";\nimport stringify from \"./stringify.js\";\nimport {trimRight} from \"./trim.js\";\n\n/**\n @function textWrap\n @desc Based on the defined styles and dimensions, breaks a string into an array of strings for each line of text.\n*/\nexport default function() {\n\n let fontFamily = \"sans-serif\",\n fontSize = 10,\n fontWeight = 400,\n height = 200,\n lineHeight,\n maxLines = null,\n overflow = false,\n split = defaultSplit,\n width = 200;\n\n /**\n The inner return object and wraps the text and returns the line data array.\n @private\n */\n function textWrap(sentence) {\n\n sentence = stringify(sentence);\n\n if (lineHeight === void 0) lineHeight = Math.ceil(fontSize * 1.4);\n\n const words = split(sentence);\n\n const style = {\n \"font-family\": fontFamily,\n \"font-size\": fontSize,\n \"font-weight\": fontWeight,\n \"line-height\": lineHeight\n };\n\n let line = 1,\n textProg = \"\",\n truncated = false,\n widthProg = 0;\n\n const lineData = [],\n sizes = textWidth(words, style),\n space = textWidth(\" \", style);\n\n for (let i = 0; i < words.length; i++) {\n let word = words[i];\n const wordWidth = sizes[words.indexOf(word)];\n word += sentence.slice(textProg.length + word.length).match(\"^( |\\n)*\", \"g\")[0];\n if (textProg.slice(-1) === \"\\n\" || widthProg + wordWidth > width) {\n if (!i && !overflow) {\n truncated = true;\n break;\n }\n if (lineData.length >= line) lineData[line - 1] = trimRight(lineData[line - 1]);\n line++;\n if (lineHeight * line > height || wordWidth > width && !overflow || maxLines && line > maxLines) {\n truncated = true;\n break;\n }\n widthProg = 0;\n lineData.push(word);\n }\n else if (!i) lineData[0] = word;\n else lineData[line - 1] += word;\n textProg += word;\n widthProg += wordWidth;\n widthProg += word.match(/[\\s]*$/g)[0].length * space;\n }\n\n return {\n lines: lineData,\n sentence, truncated,\n widths: textWidth(lineData, style),\n words\n };\n\n }\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the font family accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current font family.\n @param {Function|String} [*value* = \"sans-serif\"]\n */\n textWrap.fontFamily = function(_) {\n return arguments.length ? (fontFamily = _, textWrap) : fontFamily;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the font size accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current font size.\n @param {Function|Number} [*value* = 10]\n */\n textWrap.fontSize = function(_) {\n return arguments.length ? (fontSize = _, textWrap) : fontSize;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the font weight accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current font weight.\n @param {Function|Number|String} [*value* = 400]\n */\n textWrap.fontWeight = function(_) {\n return arguments.length ? (fontWeight = _, textWrap) : fontWeight;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets height limit to the specified value and returns this generator. If *value* is not specified, returns the current value.\n @param {Number} [*value* = 200]\n */\n textWrap.height = function(_) {\n return arguments.length ? (height = _, textWrap) : height;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the line height accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current line height accessor, which is 1.1 times the [font size](#textWrap.fontSize) by default.\n @param {Function|Number} [*value*]\n */\n textWrap.lineHeight = function(_) {\n return arguments.length ? (lineHeight = _, textWrap) : lineHeight;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the maximum number of lines allowed when wrapping.\n @param {Function|Number} [*value*]\n */\n textWrap.maxLines = function(_) {\n return arguments.length ? (maxLines = _, textWrap) : maxLines;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the overflow to the specified boolean and returns this generator. If *value* is not specified, returns the current overflow value.\n @param {Boolean} [*value* = false]\n */\n textWrap.overflow = function(_) {\n return arguments.length ? (overflow = _, textWrap) : overflow;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the word split function to the specified function and returns this generator. If *value* is not specified, returns the current word split function.\n @param {Function} [*value*] A function that, when passed a string, is expected to return that string split into an array of words to textWrap. The default split function splits strings on the following characters: `-`, `/`, `;`, `:`, `&`\n */\n textWrap.split = function(_) {\n return arguments.length ? (split = _, textWrap) : split;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets width limit to the specified value and returns this generator. If *value* is not specified, returns the current value.\n @param {Number} [*value* = 200]\n */\n textWrap.width = function(_) {\n return arguments.length ? (width = _, textWrap) : width;\n };\n\n return textWrap;\n\n}\n","import {suffixChars, default as textSplit} from \"./textSplit.js\";\n\nconst lowercase = [\"a\", \"an\", \"and\", \"as\", \"at\", \"but\", \"by\", \"for\", \"from\", \"if\", \"in\", \"into\", \"near\", \"nor\", \"of\", \"on\", \"onto\", \"or\", \"per\", \"that\", \"the\", \"to\", \"with\", \"via\", \"vs\", \"vs.\"];\nconst uppercase = [\"CEO\", \"CFO\", \"CNC\", \"COO\", \"CPU\", \"GDP\", \"HVAC\", \"ID\", \"IT\", \"R&D\", \"TV\", \"UI\"];\n\n/**\n @function titleCase\n @desc Capitalizes the first letter of each word in a phrase/sentence.\n @param {String} str The string to apply the title case logic.\n*/\nexport default function(str) {\n\n if (str === void 0) return \"\";\n\n const smalls = lowercase.map(s => s.toLowerCase());\n\n let bigs = uppercase.slice();\n bigs = bigs.concat(bigs.map(b => `${b}s`));\n const biglow = bigs.map(b => b.toLowerCase());\n\n const split = textSplit(str);\n return split.map((s, i) => {\n if (s) {\n const lower = s.toLowerCase();\n const stripped = suffixChars.includes(lower.charAt(lower.length - 1)) ? lower.slice(0, -1) : lower;\n const bigindex = biglow.indexOf(stripped);\n if (bigindex >= 0) return bigs[bigindex];\n else if (smalls.includes(stripped) && i !== 0 && i !== split.length - 1) return lower;\n else return s.charAt(0).toUpperCase() + s.substr(1).toLowerCase();\n }\n else return \"\";\n }).reduce((ret, s, i) => {\n if (i && str.charAt(ret.length) === \" \") ret += \" \";\n ret += s;\n return ret;\n }, \"\");\n\n}\n"],"names":["fontFamily","fontFamilyStringify","family","map","d","match","join","value","String","JSON","stringify","diacritics","spacer","replace","char","ret","length","RegExp","test","a","b","concat","splitChars","prefixChars","suffixChars","burmeseRange","japaneseRange","chineseRange","laoRange","noSpaceRange","splitWords","noSpaceLanguage","splitAllChars","combiningMarks","sentence","filter","w","merge","trim","str","toString","trimLeft","trimRight","fontSize","fontWeight","height","lineHeight","maxLines","overflow","split","defaultSplit","width","textWrap","Math","ceil","words","style","line","textProg","truncated","widthProg","lineData","sizes","textWidth","space","i","word","wordWidth","indexOf","slice","push","lines","widths","_","arguments","lowercase","uppercase","smalls","s","toLowerCase","bigs","biglow","textSplit","lower","stripped","includes","charAt","bigindex","toUpperCase","substr","reduce"],"mappings":"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;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA;EAAQ,CAAA;EACryE,MAAMC,CAAI,GAAA;EAAC,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;EAAS,IAAA,OAAA;E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"}
1
+ {"version":3,"file":"d3plus-text.js","sources":["../src/fontFamily.js","../src/stringify.js","../src/strip.js","../src/textSplit.js","../src/trim.js","../src/textWrap.js","../src/titleCase.js"],"sourcesContent":["/**\n @const fontFamily\n @desc The default fallback font list used for all text labels as an Array of Strings.\n @returns {Array<string>}\n*/\nexport const fontFamily = [\"Inter\", \"Helvetica Neue\", \"HelveticaNeue\", \"Helvetica\", \"Arial\", \"sans-serif\"];\n\n/**\n @const fontFamilyStringify\n @desc Converts an Array of font-family names into a CSS font-family string.\n @param {String|Array<string>} *family*\n @returns {String}\n*/\nexport const fontFamilyStringify = family => \n (typeof family === \"string\" ? [family] : family)\n .map(d => d.match(/^[a-z-_]{1,}$/) ? d : `'${d}'`)\n .join(\", \");","/**\n @function stringify\n @desc Coerces value into a String.\n @param {String} value\n*/\nexport default function(value) {\n if (value === void 0) value = \"undefined\";\n else if (!(typeof value === \"string\" || value instanceof String)) value = JSON.stringify(value);\n return value;\n}\n","// great unicode list: http://asecuritysite.com/coding/asc2\n\nconst diacritics = [\n [/[\\300-\\305]/g, \"A\"], [/[\\340-\\345]/g, \"a\"],\n [/[\\306]/g, \"AE\"], [/[\\346]/g, \"ae\"],\n [/[\\337]/g, \"B\"],\n [/[\\307]/g, \"C\"], [/[\\347]/g, \"c\"],\n [/[\\320\\336\\376]/g, \"D\"], [/[\\360]/g, \"d\"],\n [/[\\310-\\313]/g, \"E\"], [/[\\350-\\353]/g, \"e\"],\n [/[\\314-\\317]/g, \"I\"], [/[\\354-\\357]/g, \"i\"],\n [/[\\321]/g, \"N\"], [/[\\361]/g, \"n\"],\n [/[\\u014c\\322-\\326\\330]/g, \"O\"], [/[\\u014d\\362-\\366\\370]/g, \"o\"],\n [/[\\u016a\\331-\\334]/g, \"U\"], [/[\\u016b\\371-\\374]/g, \"u\"],\n [/[\\327]/g, \"x\"],\n [/[\\335]/g, \"Y\"], [/[\\375\\377]/g, \"y\"]\n];\n\n/**\n @function strip\n @desc Removes all non ASCII characters from a string.\n @param {String} value\n @param {String} [spacer = \"-\"]\n*/\nexport default function(value, spacer = \"-\") {\n\n return `${value}`.replace(/[^A-Za-z0-9\\-_\\u0621-\\u064A]/g, char => {\n\n if (char === \" \") return spacer;\n\n let ret = false;\n for (let d = 0; d < diacritics.length; d++) {\n if (new RegExp(diacritics[d][0]).test(char)) {\n ret = diacritics[d][1];\n break;\n }\n }\n\n return ret || \"\";\n\n });\n}\n","import LineBreaker from \"linebreak\";\n\n/**\n @function textSplit\n @desc Splits a given sentence into an array of words.\n @param {String} sentence\n*/\nexport default function(sentence) {\n\n const breaker = new LineBreaker(sentence);\n\n let bk, last, words = [];\n while (bk = breaker.nextBreak()) {\n const word = sentence.slice(last, bk.position);\n words.push(word);\n last = bk.position;\n }\n \n return words;\n}\n","/**\n @function trim\n @desc Cross-browser implementation of [trim](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim).\n @param {String} str\n*/\nfunction trim(str) {\n return str.toString().replace(/^\\s+|\\s+$/g, \"\");\n}\n\n/**\n @function trimLeft\n @desc Cross-browser implementation of [trimLeft](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft).\n @param {String} str\n*/\nfunction trimLeft(str) {\n return str.toString().replace(/^\\s+/, \"\");\n}\n\n/**\n @function trimRight\n @desc Cross-browser implementation of [trimRight](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/TrimRight).\n @param {String} str\n*/\nfunction trimRight(str) {\n return str.toString().replace(/\\s+$/, \"\");\n}\n\nexport {trim, trimLeft, trimRight};\n","import {textWidth} from \"@d3plus/dom\";\n\nimport defaultSplit from \"./textSplit.js\";\nimport stringify from \"./stringify.js\";\nimport {trimRight} from \"./trim.js\";\n\n/**\n @function textWrap\n @desc Based on the defined styles and dimensions, breaks a string into an array of strings for each line of text.\n*/\nexport default function() {\n\n let fontFamily = \"sans-serif\",\n fontSize = 10,\n fontWeight = 400,\n height = 200,\n lineHeight,\n maxLines = null,\n overflow = false,\n split = defaultSplit,\n width = 200;\n\n /**\n The inner return object and wraps the text and returns the line data array.\n @private\n */\n function textWrap(sentence) {\n\n sentence = stringify(sentence);\n\n if (lineHeight === void 0) lineHeight = Math.ceil(fontSize * 1.4);\n\n const words = split(sentence);\n\n const style = {\n \"font-family\": fontFamily,\n \"font-size\": fontSize,\n \"font-weight\": fontWeight,\n \"line-height\": lineHeight\n };\n\n let line = 1,\n textProg = \"\",\n truncated = false,\n widthProg = 0;\n\n const lineData = [],\n sizes = textWidth(words, style);\n\n for (let i = 0; i < words.length; i++) {\n\n let word = words[i];\n const wordWidth = sizes[words.indexOf(word)];\n\n // newline if breaking character or not enough width\n if (textProg.slice(-1) === \"\\n\" || widthProg + wordWidth > width) {\n if (!i && !overflow) {\n truncated = true;\n break;\n }\n if (lineData.length >= line) lineData[line - 1] = trimRight(lineData[line - 1]);\n line++;\n if (lineHeight * line > height || wordWidth > width && !overflow || maxLines && line > maxLines) {\n truncated = true;\n break;\n }\n widthProg = 0;\n lineData.push(word);\n }\n else if (!i) lineData[0] = word;\n else lineData[line - 1] += word;\n\n textProg += word;\n widthProg += wordWidth;\n\n }\n\n return {\n lines: lineData,\n sentence, truncated,\n widths: textWidth(lineData, style),\n words\n };\n\n }\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the font family accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current font family.\n @param {Function|String} [*value* = \"sans-serif\"]\n */\n textWrap.fontFamily = function(_) {\n return arguments.length ? (fontFamily = _, textWrap) : fontFamily;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the font size accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current font size.\n @param {Function|Number} [*value* = 10]\n */\n textWrap.fontSize = function(_) {\n return arguments.length ? (fontSize = _, textWrap) : fontSize;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the font weight accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current font weight.\n @param {Function|Number|String} [*value* = 400]\n */\n textWrap.fontWeight = function(_) {\n return arguments.length ? (fontWeight = _, textWrap) : fontWeight;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets height limit to the specified value and returns this generator. If *value* is not specified, returns the current value.\n @param {Number} [*value* = 200]\n */\n textWrap.height = function(_) {\n return arguments.length ? (height = _, textWrap) : height;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the line height accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current line height accessor, which is 1.1 times the [font size](#textWrap.fontSize) by default.\n @param {Function|Number} [*value*]\n */\n textWrap.lineHeight = function(_) {\n return arguments.length ? (lineHeight = _, textWrap) : lineHeight;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the maximum number of lines allowed when wrapping.\n @param {Function|Number} [*value*]\n */\n textWrap.maxLines = function(_) {\n return arguments.length ? (maxLines = _, textWrap) : maxLines;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the overflow to the specified boolean and returns this generator. If *value* is not specified, returns the current overflow value.\n @param {Boolean} [*value* = false]\n */\n textWrap.overflow = function(_) {\n return arguments.length ? (overflow = _, textWrap) : overflow;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets the word split function to the specified function and returns this generator. If *value* is not specified, returns the current word split function.\n @param {Function} [*value*] A function that, when passed a string, is expected to return that string split into an array of words to textWrap. The default split function splits strings on the following characters: `-`, `/`, `;`, `:`, `&`\n */\n textWrap.split = function(_) {\n return arguments.length ? (split = _, textWrap) : split;\n };\n\n /**\n @memberof textWrap\n @desc If *value* is specified, sets width limit to the specified value and returns this generator. If *value* is not specified, returns the current value.\n @param {Number} [*value* = 200]\n */\n textWrap.width = function(_) {\n return arguments.length ? (width = _, textWrap) : width;\n };\n\n return textWrap;\n\n}\n","import textSplit from \"./textSplit.js\";\n\nconst lowercase = [\"a\", \"an\", \"and\", \"as\", \"at\", \"but\", \"by\", \"for\", \"from\", \"if\", \"in\", \"into\", \"near\", \"nor\", \"of\", \"on\", \"onto\", \"or\", \"per\", \"that\", \"the\", \"to\", \"with\", \"via\", \"vs\", \"vs.\"];\nconst acronyms = [\"CEO\", \"CFO\", \"CNC\", \"COO\", \"CPU\", \"GDP\", \"HVAC\", \"ID\", \"IT\", \"R&D\", \"TV\", \"UI\"]\nconst uppercase = acronyms.reduce((arr, d) => (arr.push(`${d}s`), arr), acronyms.map(d => d.toLowerCase()));\n\n/**\n @function titleCase\n @desc Capitalizes the first letter of each word in a phrase/sentence, accounting for words in English that should be kept lowercase such as \"and\" or \"of\", as well as acronym that should be kept uppercase such as \"CEO\" or \"TVs\".\n @param {String} str The string to apply the title case logic.\n*/\nexport default function(str) {\n\n if (str === undefined) return \"\";\n\n return textSplit(str)\n .reduce((str, word, i) => {\n \n let formattedWord = word;\n const trimmedWord = word.toLowerCase().slice(0, -1);\n\n const exempt = uppercase.includes(trimmedWord) || (lowercase.includes(trimmedWord) && i !== 0 && word.toLowerCase() !== trimmedWord);\n if (!exempt) formattedWord = word.charAt(0).toUpperCase() + word.slice(1);\n\n return str + formattedWord;\n\n }, \"\");\n\n}\n"],"names":["fontFamily","fontFamilyStringify","family","map","d","match","join","value","String","JSON","stringify","diacritics","spacer","replace","char","ret","length","RegExp","test","sentence","breaker","LineBreaker","bk","last","words","nextBreak","word","slice","position","push","trim","str","toString","trimLeft","trimRight","fontSize","fontWeight","height","lineHeight","maxLines","overflow","split","defaultSplit","width","textWrap","Math","ceil","style","line","textProg","truncated","widthProg","lineData","sizes","textWidth","i","wordWidth","indexOf","lines","widths","_","arguments","lowercase","acronyms","uppercase","reduce","arr","toLowerCase","undefined","textSplit","formattedWord","trimmedWord","exempt","includes","charAt","toUpperCase"],"mappings":"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"}
@@ -1,33 +1,28 @@
1
1
  /*
2
- @d3plus/text v3.0.2
2
+ @d3plus/text v3.0.4
3
3
  A smart SVG text box with line wrapping and automatic font size scaling.
4
4
  Copyright (c) 2025 D3plus - https://d3plus.org
5
5
  @license MIT
6
6
  */
7
- (u=>{"function"==typeof define&&define.amd?define(u):u()})(function(){if("undefined"!=typeof window){try{if("undefined"==typeof SVGElement||Boolean(SVGElement.prototype.innerHTML))return}catch(u){return}function B(u){switch(u.nodeType){case 1:var A=u,C="";return C+="<"+A.tagName,A.hasAttributes()&&[].forEach.call(A.attributes,function(u){C+=" "+u.name+'="'+u.value+'"'}),C+=">",A.hasChildNodes()&&[].forEach.call(A.childNodes,function(u){C+=B(u)}),C+="</"+A.tagName+">";case 3:return u.textContent.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");case 8:return"\x3c!--"+u.nodeValue+"--\x3e"}}Object.defineProperty(SVGElement.prototype,"innerHTML",{get:function(){var A="";return[].forEach.call(this.childNodes,function(u){A+=B(u)}),A},set:function(u){for(;this.firstChild;)this.removeChild(this.firstChild);try{var A=new DOMParser,C=(A.async=!1,"<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>"+u+"</svg>"),B=A.parseFromString(C,"text/xml").documentElement;[].forEach.call(B.childNodes,function(u){this.appendChild(this.ownerDocument.importNode(u,!0))}.bind(this))}catch(u){throw new Error("Error parsing markup string")}}}),Object.defineProperty(SVGElement.prototype,"innerSVG",{get:function(){return this.innerHTML},set:function(u){this.innerHTML=u}})}}),((u,A)=>{"object"==typeof exports&&"undefined"!=typeof module?A(exports,require("d3-array"),require("@d3plus/dom")):"function"==typeof define&&define.amd?define("@d3plus/text",["exports","d3-array","@d3plus/dom"],A):A((u="undefined"!=typeof globalThis?globalThis:u||self).d3plus={},u.d3Array,u.dom)})(this,function(u,A,p){
7
+ (e=>{"function"==typeof define&&define.amd?define(e):e()})(function(){if("undefined"!=typeof window){try{if("undefined"==typeof SVGElement||Boolean(SVGElement.prototype.innerHTML))return}catch(e){return}function r(e){switch(e.nodeType){case 1:var t=e,n="";return n+="<"+t.tagName,t.hasAttributes()&&[].forEach.call(t.attributes,function(e){n+=" "+e.name+'="'+e.value+'"'}),n+=">",t.hasChildNodes()&&[].forEach.call(t.childNodes,function(e){n+=r(e)}),n+="</"+t.tagName+">";case 3:return e.textContent.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;");case 8:return"\x3c!--"+e.nodeValue+"--\x3e"}}Object.defineProperty(SVGElement.prototype,"innerHTML",{get:function(){var t="";return[].forEach.call(this.childNodes,function(e){t+=r(e)}),t},set:function(e){for(;this.firstChild;)this.removeChild(this.firstChild);try{var t=new DOMParser,n=(t.async=!1,"<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>"+e+"</svg>"),r=t.parseFromString(n,"text/xml").documentElement;[].forEach.call(r.childNodes,function(e){this.appendChild(this.ownerDocument.importNode(e,!0))}.bind(this))}catch(e){throw new Error("Error parsing markup string")}}}),Object.defineProperty(SVGElement.prototype,"innerSVG",{get:function(){return this.innerHTML},set:function(e){this.innerHTML=e}})}}),((e,t)=>{"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("linebreak"),require("@d3plus/dom")):"function"==typeof define&&define.amd?define("@d3plus/text",["exports","linebreak","@d3plus/dom"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).d3plus={},e.LineBreaker,e.dom)})(this,function(e,u,x){
8
8
  /**
9
9
  @function stringify
10
10
  @desc Coerces value into a String.
11
11
  @param {String} value
12
- */function m(u){return void 0===u?u="undefined":"string"==typeof u||u instanceof String||(u=JSON.stringify(u)),u}
12
+ */function C(e){return void 0===e?e="undefined":"string"==typeof e||e instanceof String||(e=JSON.stringify(e)),e}
13
13
  // great unicode list: http://asecuritysite.com/coding/asc2
14
- let D=[[/[\300-\305]/g,"A"],[/[\340-\345]/g,"a"],[/[\306]/g,"AE"],[/[\346]/g,"ae"],[/[\337]/g,"B"],[/[\307]/g,"C"],[/[\347]/g,"c"],[/[\320\336\376]/g,"D"],[/[\360]/g,"d"],[/[\310-\313]/g,"E"],[/[\350-\353]/g,"e"],[/[\314-\317]/g,"I"],[/[\354-\357]/g,"i"],[/[\321]/g,"N"],[/[\361]/g,"n"],[/[\u014c\322-\326\330]/g,"O"],[/[\u014d\362-\366\370]/g,"o"],[/[\u016a\331-\334]/g,"U"],[/[\u016b\371-\374]/g,"u"],[/[\327]/g,"x"],[/[\335]/g,"Y"],[/[\375\377]/g,"y"]];
14
+ let i=[[/[\300-\305]/g,"A"],[/[\340-\345]/g,"a"],[/[\306]/g,"AE"],[/[\346]/g,"ae"],[/[\337]/g,"B"],[/[\307]/g,"C"],[/[\347]/g,"c"],[/[\320\336\376]/g,"D"],[/[\360]/g,"d"],[/[\310-\313]/g,"E"],[/[\350-\353]/g,"e"],[/[\314-\317]/g,"I"],[/[\354-\357]/g,"i"],[/[\321]/g,"N"],[/[\361]/g,"n"],[/[\u014c\322-\326\330]/g,"O"],[/[\u014d\362-\366\370]/g,"o"],[/[\u016a\331-\334]/g,"U"],[/[\u016b\371-\374]/g,"u"],[/[\327]/g,"x"],[/[\335]/g,"Y"],[/[\375\377]/g,"y"]];
15
15
  /**
16
16
  @function strip
17
17
  @desc Removes all non ASCII characters from a string.
18
18
  @param {String} value
19
19
  @param {String} [spacer = "-"]
20
20
  */
21
- // scraped from http://www.fileformat.info/info/unicode/category/Mc/list.htm
22
- // and http://www.fileformat.info/info/unicode/category/Mn/list.htm
23
- // JSON.stringify([].slice.call(document.getElementsByClassName("table-list")[0].getElementsByTagName("tr")).filter(function(d){ return d.getElementsByTagName("a").length && d.getElementsByTagName("a")[0].innerHTML.length === 6; }).map(function(d){ return d.getElementsByTagName("a")[0].innerHTML.replace("U", "u").replace("+", ""); }).sort());
24
- // The following unicode characters combine to form new characters and should never be split from surrounding characters.
25
- var C=["u0903","u093B","u093E","u093F","u0940","u0949","u094A","u094B","u094C","u094E","u094F","u0982","u0983","u09BE","u09BF","u09C0","u09C7","u09C8","u09CB","u09CC","u09D7","u0A03","u0A3E","u0A3F","u0A40","u0A83","u0ABE","u0ABF","u0AC0","u0AC9","u0ACB","u0ACC","u0B02","u0B03","u0B3E","u0B40","u0B47","u0B48","u0B4B","u0B4C","u0B57","u0BBE","u0BBF","u0BC1","u0BC2","u0BC6","u0BC7","u0BC8","u0BCA","u0BCB","u0BCC","u0BD7","u0C01","u0C02","u0C03","u0C41","u0C42","u0C43","u0C44","u0C82","u0C83","u0CBE","u0CC0","u0CC1","u0CC2","u0CC3","u0CC4","u0CC7","u0CC8","u0CCA","u0CCB","u0CD5","u0CD6","u0D02","u0D03","u0D3E","u0D3F","u0D40","u0D46","u0D47","u0D48","u0D4A","u0D4B","u0D4C","u0D57","u0D82","u0D83","u0DCF","u0DD0","u0DD1","u0DD8","u0DD9","u0DDA","u0DDB","u0DDC","u0DDD","u0DDE","u0DDF","u0DF2","u0DF3","u0F3E","u0F3F","u0F7F","u102B","u102C","u1031","u1038","u103B","u103C","u1056","u1057","u1062","u1063","u1064","u1067","u1068","u1069","u106A","u106B","u106C","u106D","u1083","u1084","u1087","u1088","u1089","u108A","u108B","u108C","u108F","u109A","u109B","u109C","u17B6","u17BE","u17BF","u17C0","u17C1","u17C2","u17C3","u17C4","u17C5","u17C7","u17C8","u1923","u1924","u1925","u1926","u1929","u192A","u192B","u1930","u1931","u1933","u1934","u1935","u1936","u1937","u1938","u1A19","u1A1A","u1A55","u1A57","u1A61","u1A63","u1A64","u1A6D","u1A6E","u1A6F","u1A70","u1A71","u1A72","u1B04","u1B35","u1B3B","u1B3D","u1B3E","u1B3F","u1B40","u1B41","u1B43","u1B44","u1B82","u1BA1","u1BA6","u1BA7","u1BAA","u1BE7","u1BEA","u1BEB","u1BEC","u1BEE","u1BF2","u1BF3","u1C24","u1C25","u1C26","u1C27","u1C28","u1C29","u1C2A","u1C2B","u1C34","u1C35","u1CE1","u1CF2","u1CF3","u302E","u302F","uA823","uA824","uA827","uA880","uA881","uA8B4","uA8B5","uA8B6","uA8B7","uA8B8","uA8B9","uA8BA","uA8BB","uA8BC","uA8BD","uA8BE","uA8BF","uA8C0","uA8C1","uA8C2","uA8C3","uA952","uA953","uA983","uA9B4","uA9B5","uA9BA","uA9BB","uA9BD","uA9BE","uA9BF","uA9C0","uAA2F","uAA30","uAA33","uAA34","uAA4D","uAA7B","uAA7D","uAAEB","uAAEE","uAAEF","uAAF5","uABE3","uABE4","uABE6","uABE7","uABE9","uABEA","uABEC"].concat(["u0300","u0301","u0302","u0303","u0304","u0305","u0306","u0307","u0308","u0309","u030A","u030B","u030C","u030D","u030E","u030F","u0310","u0311","u0312","u0313","u0314","u0315","u0316","u0317","u0318","u0319","u031A","u031B","u031C","u031D","u031E","u031F","u0320","u0321","u0322","u0323","u0324","u0325","u0326","u0327","u0328","u0329","u032A","u032B","u032C","u032D","u032E","u032F","u0330","u0331","u0332","u0333","u0334","u0335","u0336","u0337","u0338","u0339","u033A","u033B","u033C","u033D","u033E","u033F","u0340","u0341","u0342","u0343","u0344","u0345","u0346","u0347","u0348","u0349","u034A","u034B","u034C","u034D","u034E","u034F","u0350","u0351","u0352","u0353","u0354","u0355","u0356","u0357","u0358","u0359","u035A","u035B","u035C","u035D","u035E","u035F","u0360","u0361","u0362","u0363","u0364","u0365","u0366","u0367","u0368","u0369","u036A","u036B","u036C","u036D","u036E","u036F","u0483","u0484","u0485","u0486","u0487","u0591","u0592","u0593","u0594","u0595","u0596","u0597","u0598","u0599","u059A","u059B","u059C","u059D","u059E","u059F","u05A0","u05A1","u05A2","u05A3","u05A4","u05A5","u05A6","u05A7","u05A8","u05A9","u05AA","u05AB","u05AC","u05AD","u05AE","u05AF","u05B0","u05B1","u05B2","u05B3","u05B4","u05B5","u05B6","u05B7","u05B8","u05B9","u05BA","u05BB","u05BC","u05BD","u05BF","u05C1","u05C2","u05C4","u05C5","u05C7","u0610","u0611","u0612","u0613","u0614","u0615","u0616","u0617","u0618","u0619","u061A","u064B","u064C","u064D","u064E","u064F","u0650","u0651","u0652","u0653","u0654","u0655","u0656","u0657","u0658","u0659","u065A","u065B","u065C","u065D","u065E","u065F","u0670","u06D6","u06D7","u06D8","u06D9","u06DA","u06DB","u06DC","u06DF","u06E0","u06E1","u06E2","u06E3","u06E4","u06E7","u06E8","u06EA","u06EB","u06EC","u06ED","u0711","u0730","u0731","u0732","u0733","u0734","u0735","u0736","u0737","u0738","u0739","u073A","u073B","u073C","u073D","u073E","u073F","u0740","u0741","u0742","u0743","u0744","u0745","u0746","u0747","u0748","u0749","u074A","u07A6","u07A7","u07A8","u07A9","u07AA","u07AB","u07AC","u07AD","u07AE","u07AF","u07B0","u07EB","u07EC","u07ED","u07EE","u07EF","u07F0","u07F1","u07F2","u07F3","u0816","u0817","u0818","u0819","u081B","u081C","u081D","u081E","u081F","u0820","u0821","u0822","u0823","u0825","u0826","u0827","u0829","u082A","u082B","u082C","u082D","u0859","u085A","u085B","u08E3","u08E4","u08E5","u08E6","u08E7","u08E8","u08E9","u08EA","u08EB","u08EC","u08ED","u08EE","u08EF","u08F0","u08F1","u08F2","u08F3","u08F4","u08F5","u08F6","u08F7","u08F8","u08F9","u08FA","u08FB","u08FC","u08FD","u08FE","u08FF","u0900","u0901","u0902","u093A","u093C","u0941","u0942","u0943","u0944","u0945","u0946","u0947","u0948","u094D","u0951","u0952","u0953","u0954","u0955","u0956","u0957","u0962","u0963","u0981","u09BC","u09C1","u09C2","u09C3","u09C4","u09CD","u09E2","u09E3","u0A01","u0A02","u0A3C","u0A41","u0A42","u0A47","u0A48","u0A4B","u0A4C","u0A4D","u0A51","u0A70","u0A71","u0A75","u0A81","u0A82","u0ABC","u0AC1","u0AC2","u0AC3","u0AC4","u0AC5","u0AC7","u0AC8","u0ACD","u0AE2","u0AE3","u0B01","u0B3C","u0B3F","u0B41","u0B42","u0B43","u0B44","u0B4D","u0B56","u0B62","u0B63","u0B82","u0BC0","u0BCD","u0C00","u0C3E","u0C3F","u0C40","u0C46","u0C47","u0C48","u0C4A","u0C4B","u0C4C","u0C4D","u0C55","u0C56","u0C62","u0C63","u0C81","u0CBC","u0CBF","u0CC6","u0CCC","u0CCD","u0CE2","u0CE3","u0D01","u0D41","u0D42","u0D43","u0D44","u0D4D","u0D62","u0D63","u0DCA","u0DD2","u0DD3","u0DD4","u0DD6","u0E31","u0E34","u0E35","u0E36","u0E37","u0E38","u0E39","u0E3A","u0E47","u0E48","u0E49","u0E4A","u0E4B","u0E4C","u0E4D","u0E4E","u0EB1","u0EB4","u0EB5","u0EB6","u0EB7","u0EB8","u0EB9","u0EBB","u0EBC","u0EC8","u0EC9","u0ECA","u0ECB","u0ECC","u0ECD","u0F18","u0F19","u0F35","u0F37","u0F39","u0F71","u0F72","u0F73","u0F74","u0F75","u0F76","u0F77","u0F78","u0F79","u0F7A","u0F7B","u0F7C","u0F7D","u0F7E","u0F80","u0F81","u0F82","u0F83","u0F84","u0F86","u0F87","u0F8D","u0F8E","u0F8F","u0F90","u0F91","u0F92","u0F93","u0F94","u0F95","u0F96","u0F97","u0F99","u0F9A","u0F9B","u0F9C","u0F9D","u0F9E","u0F9F","u0FA0","u0FA1","u0FA2","u0FA3","u0FA4","u0FA5","u0FA6","u0FA7","u0FA8","u0FA9","u0FAA","u0FAB","u0FAC","u0FAD","u0FAE","u0FAF","u0FB0","u0FB1","u0FB2","u0FB3","u0FB4","u0FB5","u0FB6","u0FB7","u0FB8","u0FB9","u0FBA","u0FBB","u0FBC","u0FC6","u102D","u102E","u102F","u1030","u1032","u1033","u1034","u1035","u1036","u1037","u1039","u103A","u103D","u103E","u1058","u1059","u105E","u105F","u1060","u1071","u1072","u1073","u1074","u1082","u1085","u1086","u108D","u109D","u135D","u135E","u135F","u1712","u1713","u1714","u1732","u1733","u1734","u1752","u1753","u1772","u1773","u17B4","u17B5","u17B7","u17B8","u17B9","u17BA","u17BB","u17BC","u17BD","u17C6","u17C9","u17CA","u17CB","u17CC","u17CD","u17CE","u17CF","u17D0","u17D1","u17D2","u17D3","u17DD","u180B","u180C","u180D","u18A9","u1920","u1921","u1922","u1927","u1928","u1932","u1939","u193A","u193B","u1A17","u1A18","u1A1B","u1A56","u1A58","u1A59","u1A5A","u1A5B","u1A5C","u1A5D","u1A5E","u1A60","u1A62","u1A65","u1A66","u1A67","u1A68","u1A69","u1A6A","u1A6B","u1A6C","u1A73","u1A74","u1A75","u1A76","u1A77","u1A78","u1A79","u1A7A","u1A7B","u1A7C","u1A7F","u1AB0","u1AB1","u1AB2","u1AB3","u1AB4","u1AB5","u1AB6","u1AB7","u1AB8","u1AB9","u1ABA","u1ABB","u1ABC","u1ABD","u1B00","u1B01","u1B02","u1B03","u1B34","u1B36","u1B37","u1B38","u1B39","u1B3A","u1B3C","u1B42","u1B6B","u1B6C","u1B6D","u1B6E","u1B6F","u1B70","u1B71","u1B72","u1B73","u1B80","u1B81","u1BA2","u1BA3","u1BA4","u1BA5","u1BA8","u1BA9","u1BAB","u1BAC","u1BAD","u1BE6","u1BE8","u1BE9","u1BED","u1BEF","u1BF0","u1BF1","u1C2C","u1C2D","u1C2E","u1C2F","u1C30","u1C31","u1C32","u1C33","u1C36","u1C37","u1CD0","u1CD1","u1CD2","u1CD4","u1CD5","u1CD6","u1CD7","u1CD8","u1CD9","u1CDA","u1CDB","u1CDC","u1CDD","u1CDE","u1CDF","u1CE0","u1CE2","u1CE3","u1CE4","u1CE5","u1CE6","u1CE7","u1CE8","u1CED","u1CF4","u1CF8","u1CF9","u1DC0","u1DC1","u1DC2","u1DC3","u1DC4","u1DC5","u1DC6","u1DC7","u1DC8","u1DC9","u1DCA","u1DCB","u1DCC","u1DCD","u1DCE","u1DCF","u1DD0","u1DD1","u1DD2","u1DD3","u1DD4","u1DD5","u1DD6","u1DD7","u1DD8","u1DD9","u1DDA","u1DDB","u1DDC","u1DDD","u1DDE","u1DDF","u1DE0","u1DE1","u1DE2","u1DE3","u1DE4","u1DE5","u1DE6","u1DE7","u1DE8","u1DE9","u1DEA","u1DEB","u1DEC","u1DED","u1DEE","u1DEF","u1DF0","u1DF1","u1DF2","u1DF3","u1DF4","u1DF5","u1DFC","u1DFD","u1DFE","u1DFF","u20D0","u20D1","u20D2","u20D3","u20D4","u20D5","u20D6","u20D7","u20D8","u20D9","u20DA","u20DB","u20DC","u20E1","u20E5","u20E6","u20E7","u20E8","u20E9","u20EA","u20EB","u20EC","u20ED","u20EE","u20EF","u20F0","u2CEF","u2CF0","u2CF1","u2D7F","u2DE0","u2DE1","u2DE2","u2DE3","u2DE4","u2DE5","u2DE6","u2DE7","u2DE8","u2DE9","u2DEA","u2DEB","u2DEC","u2DED","u2DEE","u2DEF","u2DF0","u2DF1","u2DF2","u2DF3","u2DF4","u2DF5","u2DF6","u2DF7","u2DF8","u2DF9","u2DFA","u2DFB","u2DFC","u2DFD","u2DFE","u2DFF","u302A","u302B","u302C","u302D","u3099","u309A","uA66F","uA674","uA675","uA676","uA677","uA678","uA679","uA67A","uA67B","uA67C","uA67D","uA69E","uA69F","uA6F0","uA6F1","uA802","uA806","uA80B","uA825","uA826","uA8C4","uA8E0","uA8E1","uA8E2","uA8E3","uA8E4","uA8E5","uA8E6","uA8E7","uA8E8","uA8E9","uA8EA","uA8EB","uA8EC","uA8ED","uA8EE","uA8EF","uA8F0","uA8F1","uA926","uA927","uA928","uA929","uA92A","uA92B","uA92C","uA92D","uA947","uA948","uA949","uA94A","uA94B","uA94C","uA94D","uA94E","uA94F","uA950","uA951","uA980","uA981","uA982","uA9B3","uA9B6","uA9B7","uA9B8","uA9B9","uA9BC","uA9E5","uAA29","uAA2A","uAA2B","uAA2C","uAA2D","uAA2E","uAA31","uAA32","uAA35","uAA36","uAA43","uAA4C","uAA7C","uAAB0","uAAB2","uAAB3","uAAB4","uAAB7","uAAB8","uAABE","uAABF","uAAC1","uAAEC","uAAED","uAAF6","uABE5","uABE8","uABED","uFB1E","uFE00","uFE01","uFE02","uFE03","uFE04","uFE05","uFE06","uFE07","uFE08","uFE09","uFE0A","uFE0B","uFE0C","uFE0D","uFE0E","uFE0F","uFE20","uFE21","uFE22","uFE23","uFE24","uFE25","uFE26","uFE27","uFE28","uFE29","uFE2A","uFE2B","uFE2C","uFE2D","uFE2E","uFE2F"]),B=["-",";",":","&","|","u0E2F","u0EAF","u0EC6","u0ECC","u104A","u104B","u104C","u104D","u104E","u104F","u2013","u2014","u2027","u3000","u3001","u3002","uFF0C","uFF5E"];let n=["'",">",")","}","]",".","!","?","/","u00BB","u300B","u3009"].concat(B);var E="က-ဪဿ-၉ၐ-ၕ㐀-龿぀-ゟ゠-ヿ＀-+--}⦅-゚㐀-䶿ກ-ຮະ-ໄ່-໋ໍ-ໝ";let e=new RegExp(`(\\${B.join("|\\")})*[^\\s|\\${B.join("|\\")}]*(\\${B.join("|\\")})*`,"g"),t=new RegExp(`[${E}]`),F=new RegExp(`(\\${["'","<","(","{","[","u00AB","u300A","u3008"].join("|\\")})*[${E}](\\${n.join("|\\")}|\\${C.join("|\\")})*|[a-z0-9]+`,"gi");
26
21
  /**
27
22
  @function textSplit
28
23
  @desc Splits a given sentence into an array of words.
29
24
  @param {String} sentence
30
- */function r(u){return t.test(u)?A.merge(m(u).match(e).map(u=>t.test(u)?u.match(F):[u])):m(u).match(e).filter(u=>u.length)}
25
+ */function n(e){var t=new u(e);let n,r,i=[];for(;n=t.nextBreak();){var o=e.slice(r,n.position);i.push(o),r=n.position}return i}
31
26
  /**
32
27
  @function trim
33
28
  @desc Cross-browser implementation of [trim](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim).
@@ -37,68 +32,70 @@ var C=["u0903","u093B","u093E","u093F","u0940","u0949","u094A","u094B","u094C","
37
32
  @function trimRight
38
33
  @desc Cross-browser implementation of [trimRight](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/TrimRight).
39
34
  @param {String} str
40
- */function y(u){return u.toString().replace(/\s+$/,"")}
35
+ */function b(e){return e.toString().replace(/\s+$/,"")}
41
36
  /**
42
37
  @function textWrap
43
38
  @desc Based on the defined styles and dimensions, breaks a string into an array of strings for each line of text.
44
- */let i=["a","an","and","as","at","but","by","for","from","if","in","into","near","nor","of","on","onto","or","per","that","the","to","with","via","vs","vs."],o=["CEO","CFO","CNC","COO","CPU","GDP","HVAC","ID","IT","R&D","TV","UI"];u.fontFamily=["Inter","Helvetica Neue","HelveticaNeue","Helvetica","Arial","sans-serif"],u.fontFamilyStringify=u=>("string"==typeof u?[u]:u).map(u=>u.match(/^[a-z-_]{1,}$/)?u:`'${u}'`).join(", "),u.stringify=m,u.strip=function(u,B="-"){return(""+u).replace(/[^A-Za-z0-9\-_\u0621-\u064A]/g,A=>{if(" "===A)return B;let C=!1;for(let u=0;u<D.length;u++)if(new RegExp(D[u][0]).test(A)){C=D[u][1];break}return C||""})},u.textSplit=r,u.textWrap=function(){let o="sans-serif",a=10,l=400,f=200,c,s=null,g=!1,h=r,d=200;
39
+ */let o=["a","an","and","as","at","but","by","for","from","if","in","into","near","nor","of","on","onto","or","per","that","the","to","with","via","vs","vs."];var t=["CEO","CFO","CNC","COO","CPU","GDP","HVAC","ID","IT","R&D","TV","UI"];let a=t.reduce((e,t)=>(e.push(t+"s"),e),t.map(e=>e.toLowerCase()));
40
+ /**
41
+ @function titleCase
42
+ @desc Capitalizes the first letter of each word in a phrase/sentence, accounting for words in English that should be kept lowercase such as "and" or "of", as well as acronym that should be kept uppercase such as "CEO" or "TVs".
43
+ @param {String} str The string to apply the title case logic.
44
+ */e.fontFamily=["Inter","Helvetica Neue","HelveticaNeue","Helvetica","Arial","sans-serif"],e.fontFamilyStringify=e=>("string"==typeof e?[e]:e).map(e=>e.match(/^[a-z-_]{1,}$/)?e:`'${e}'`).join(", "),e.stringify=C,e.strip=function(e,r="-"){return(""+e).replace(/[^A-Za-z0-9\-_\u0621-\u064A]/g,t=>{if(" "===t)return r;let n=!1;for(let e=0;e<i.length;e++)if(new RegExp(i[e][0]).test(t)){n=i[e][1];break}return n||""})},e.textSplit=n,e.textWrap=function(){let c="sans-serif",g=10,h=400,d=200,p,m=null,y=!1,w=n,v=200;
45
45
  /**
46
46
  The inner return object and wraps the text and returns the line data array.
47
47
  @private
48
- */function A(A){A=m(A),void 0===c&&(c=Math.ceil(1.4*a));var C=h(A),u={"font-family":o,"font-size":a,"font-weight":l,"line-height":c};let B=1,D="",E=!1,e=0;var t=[],F=p.textWidth(C,u),n=p.textWidth(" ",u);for(let u=0;u<C.length;u++){var r=C[u],i=F[C.indexOf(r)];if(r+=A.slice(D.length+r.length).match("^( |\n)*","g")[0],"\n"===D.slice(-1)||e+i>d){if(!u&&!g){E=!0;break}if(t.length>=B&&(t[B-1]=y(t[B-1])),B++,c*B>f||i>d&&!g||s&&B>s){E=!0;break}e=0,t.push(r)}else u?t[B-1]+=r:t[0]=r;D+=r,e=(e+=i)+r.match(/[\s]*$/g)[0].length*n}return{lines:t,sentence:A,truncated:E,widths:p.textWidth(t,u),words:C}}
48
+ */function t(e){e=C(e),void 0===p&&(p=Math.ceil(1.4*g));var t=w(e),n={"font-family":c,"font-size":g,"font-weight":h,"line-height":p};let r=1,i="",o=!1,u=0;var a=[],l=x.textWidth(t,n);for(let e=0;e<t.length;e++){var f=t[e],s=l[t.indexOf(f)];
49
+ // newline if breaking character or not enough width
50
+ if("\n"===i.slice(-1)||u+s>v){if(!e&&!y){o=!0;break}if(a.length>=r&&(a[r-1]=b(a[r-1])),r++,p*r>d||s>v&&!y||m&&r>m){o=!0;break}u=0,a.push(f)}else e?a[r-1]+=f:a[0]=f;i+=f,u+=s}return{lines:a,sentence:e,truncated:o,widths:x.textWidth(a,n),words:t}}
49
51
  /**
50
52
  @memberof textWrap
51
53
  @desc If *value* is specified, sets the font family accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current font family.
52
54
  @param {Function|String} [*value* = "sans-serif"]
53
- */return A.fontFamily=function(u){return arguments.length?(o=u,A):o},
55
+ */return t.fontFamily=function(e){return arguments.length?(c=e,t):c},
54
56
  /**
55
57
  @memberof textWrap
56
58
  @desc If *value* is specified, sets the font size accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current font size.
57
59
  @param {Function|Number} [*value* = 10]
58
- */A.fontSize=function(u){return arguments.length?(a=u,A):a},
60
+ */t.fontSize=function(e){return arguments.length?(g=e,t):g},
59
61
  /**
60
62
  @memberof textWrap
61
63
  @desc If *value* is specified, sets the font weight accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current font weight.
62
64
  @param {Function|Number|String} [*value* = 400]
63
- */A.fontWeight=function(u){return arguments.length?(l=u,A):l},
65
+ */t.fontWeight=function(e){return arguments.length?(h=e,t):h},
64
66
  /**
65
67
  @memberof textWrap
66
68
  @desc If *value* is specified, sets height limit to the specified value and returns this generator. If *value* is not specified, returns the current value.
67
69
  @param {Number} [*value* = 200]
68
- */A.height=function(u){return arguments.length?(f=u,A):f},
70
+ */t.height=function(e){return arguments.length?(d=e,t):d},
69
71
  /**
70
72
  @memberof textWrap
71
73
  @desc If *value* is specified, sets the line height accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current line height accessor, which is 1.1 times the [font size](#textWrap.fontSize) by default.
72
74
  @param {Function|Number} [*value*]
73
- */A.lineHeight=function(u){return arguments.length?(c=u,A):c},
75
+ */t.lineHeight=function(e){return arguments.length?(p=e,t):p},
74
76
  /**
75
77
  @memberof textWrap
76
78
  @desc If *value* is specified, sets the maximum number of lines allowed when wrapping.
77
79
  @param {Function|Number} [*value*]
78
- */A.maxLines=function(u){return arguments.length?(s=u,A):s},
80
+ */t.maxLines=function(e){return arguments.length?(m=e,t):m},
79
81
  /**
80
82
  @memberof textWrap
81
83
  @desc If *value* is specified, sets the overflow to the specified boolean and returns this generator. If *value* is not specified, returns the current overflow value.
82
84
  @param {Boolean} [*value* = false]
83
- */A.overflow=function(u){return arguments.length?(g=u,A):g},
85
+ */t.overflow=function(e){return arguments.length?(y=e,t):y},
84
86
  /**
85
87
  @memberof textWrap
86
88
  @desc If *value* is specified, sets the word split function to the specified function and returns this generator. If *value* is not specified, returns the current word split function.
87
89
  @param {Function} [*value*] A function that, when passed a string, is expected to return that string split into an array of words to textWrap. The default split function splits strings on the following characters: `-`, `/`, `;`, `:`, `&`
88
- */A.split=function(u){return arguments.length?(h=u,A):h},
90
+ */t.split=function(e){return arguments.length?(w=e,t):w},
89
91
  /**
90
92
  @memberof textWrap
91
93
  @desc If *value* is specified, sets width limit to the specified value and returns this generator. If *value* is not specified, returns the current value.
92
94
  @param {Number} [*value* = 200]
93
- */A.width=function(u){return arguments.length?(d=u,A):d},A},u.titleCase=
94
- /**
95
- @function titleCase
96
- @desc Capitalizes the first letter of each word in a phrase/sentence.
97
- @param {String} str The string to apply the title case logic.
98
- */function(B){if(void 0===B)return"";let E=i.map(u=>u.toLowerCase()),e=o.slice(),t=(e=e.concat(e.map(u=>u+"s"))).map(u=>u.toLowerCase()),F=r(B);return F.map((u,A)=>{var C,B,D;return u?(C=u.toLowerCase(),B=n.includes(C.charAt(C.length-1))?C.slice(0,-1):C,0<=(D=t.indexOf(B))?e[D]:E.includes(B)&&0!==A&&A!==F.length-1?C:u.charAt(0).toUpperCase()+u.substr(1).toLowerCase()):""}).reduce((u,A,C)=>(C&&" "===B.charAt(u.length)&&(u+=" "),u+=A),"")},u.trim=function(u){return u.toString().replace(/^\s+|\s+$/g,"")}
95
+ */t.width=function(e){return arguments.length?(v=e,t):v},t},e.titleCase=function(e){return void 0===e?"":n(e).reduce((e,t,n)=>{let r=t;var i=t.toLowerCase().slice(0,-1),n=a.includes(i)||o.includes(i)&&0!==n&&t.toLowerCase()!==i;return e+(r=n?r:t.charAt(0).toUpperCase()+t.slice(1))},"")},e.trim=function(e){return e.toString().replace(/^\s+|\s+$/g,"")}
99
96
  /**
100
97
  @function trimLeft
101
98
  @desc Cross-browser implementation of [trimLeft](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/TrimLeft).
102
99
  @param {String} str
103
- */,u.trimLeft=function(u){return u.toString().replace(/^\s+/,"")},u.trimRight=y});
100
+ */,e.trimLeft=function(e){return e.toString().replace(/^\s+/,"")},e.trimRight=b});
104
101
  //# sourceMappingURL=d3plus-text.js.map