UNPKG

typopo

Version:

Fix frequent microtypography errors in multiple languages. Write neat texts without bothering about typography rules. Typopo works for English, German, Slovak, Czech and Rusyn language.

10 lines (9 loc) 32 kB
/*! * Typopo v2.8.0 (https://typopo.org) * Copyright 2015–2025 Braňo Šandala (https://brano.me) * Licensed under MIT (https://github.com/surfinzap/typopo/blob/main/LICENSE.txt) */ (function(h,f){typeof exports=="object"&&typeof module<"u"?f(exports):typeof define=="function"&&define.amd?define(["exports"],f):(h=typeof globalThis<"u"?globalThis:h||self,f(h.typopo={}))})(this,function(h){"use strict";const f="áäčďéěíĺľňóôöőŕřšťúüűůýŷžабвгґдезіийклмнопрстуфъыьцчжшїщёєюях",w="ÁÄČĎÉĚÍĹĽŇÓÔÖŐŔŘŠŤÚÜŰŮÝŶŽАБВГҐДЕЗІИЙКЛМНОПРСТУФЪЫЬЦЧЖШЇЩЁЄЮЯХ",k="a-z"+f,W="A-Z"+w,N="a-z"+f+"A-Z"+w,q="‚|'|‘|’|ʼ|‛|´|`|′|‹|›",I="’",z="′",L="`",M="„|“|”|\"|«|»|″|,{2,}|‚{2,}|[‘’'‹›′´`]{2,}",T="″",S=" ",y=" ",E=" ",A=" ",j=S+y+E+A,R="\\.\\!\\?",C="\\,\\:\\;",O=C+R,n={lowercaseChars:k,uppercaseChars:W,allChars:N,singleQuoteAdepts:q,apostrophe:I,singlePrime:z,backtick:L,doubleQuoteAdepts:M,doublePrime:T,space:S,nbsp:y,hairSpace:E,narrowNbsp:A,spaces:j,terminalPunctuation:R,sentencePausePunctuation:C,sentencePunctuation:O,openingBrackets:"\\(\\[\\{",closingBrackets:"\\)\\]\\}",ellipsis:"…",hyphen:"-",enDash:"–",emDash:"—",slash:"/",degree:"°",multiplicationSign:"×",ampersand:"&",sectionSign:"§",paragraphSign:"¶",copyright:"©",soundRecordingCopyright:"℗",registeredTrademark:"®",serviceMark:"℠",trademark:"™",plus:"+",minus:"−",plusMinus:"±",percent:"%",permille:"‰",permyriad:"‱",numberSign:"#",numeroSign:"№",romanNumerals:"IVXLCDM",urlPattern:"((?:(http|https|Http|Https|rtsp|Rtsp):\\/\\/(?:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,64}(?:\\:(?:[a-zA-Z0-9\\$\\-\\_\\.\\+\\!\\*\\'\\(\\)\\,\\;\\?\\&\\=]|(?:\\%[a-fA-F0-9]{2})){1,25})?\\@)?)?((?:(?:[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}\\.)+(?:(?:aero|arpa|asia|agency|a[cdefgilmnoqrstuwxz])|(?:biz|b[abdefghijmnorstvwyz])|(?:cat|cloud|com|company|coop|c[acdfghiklmnoruvxyz])|(?:dev|d[ejkmoz])|(?:edu|e[cegrstu])|f[ijkmor]|(?:gov|guide|g[abdefghilmnpqrstuwy])|h[kmnrtu]|(?:info|int|i[delmnoqrst])|(?:jobs|j[emop])|k[eghimnrwyz]|l[abcikrstuvy]|(?:mil|mobi|museum|m[acdghklmnopqrstuvwxyz])|(?:name|net|n[acefgilopruz])|(?:org|om|one)|(?:pro|p[aefghklmnrstwy])|qa|r[eouw]|(?:shop|store|s[abcdeghijklmnortuvyz])|(?:tel|travel|team|t[cdfghjklmnoprtvwz])|u[agkmsyz]|v[aceginu]|(?:work|w[fs])|(?:xyz)|y[etu]|z[amw]))|(?:(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9])\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[1-9]|0)\\.(?:25[0-5]|2[0-4][0-9]|[0-1][0-9]{2}|[1-9][0-9]|[0-9])))(?:\\:\\d{1,5})?)(\\/(?:(?:[a-zA-Z0-9\\;\\/\\?\\:\\@\\&\\=\\#\\~\\-\\.\\+\\!\\*\\'\\(\\)\\,\\_])|(?:\\%[a-fA-F0-9]{2}))*)?(?:\\b|$)",emailPattern:"[a-zA-Z0-9\\+\\.\\_\\%\\-]{1,256}\\@[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}(\\.[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25})+",filenamePattern:"\\b[a-zA-Z0-9_%\\-]+\\.(ai|asm|bat|bmp|c|cpp|cs|css|csv|dart|doc|docx|exe|gif|go|html|ics|java|jpeg|jpg|js|json|key|kt|less|lua|log|md|mp4|odp|ods|odt|pdf|php|pl|png|ppt|pptx|psd|py|r|rar|rb|rs|scala|scss|sh|svg|sql|swift|tar.gz|tar|tex|tiff|ts|txt|vbs|xml|xls|xlsx|yaml|yml|zip)\\b"},Z={quotes:{leftDoubleQuote:"„",rightDoubleQuote:"“",leftSingleQuote:"‚",rightSingleQuote:"‘"},directSpeechIntro:":",dashWords:{spaceBefore:n.nbsp,dash:n.enDash,spaceAfter:n.space},spaceAfter:{copyright:n.space,soundRecordingCopyright:n.space,numeroSign:n.nbsp,sectionSign:n.nbsp,paragraphSign:n.nbsp,abbreviation:n.nbsp},spaceBefore:{percent:n.nbsp},numbers:{ordinalIndicator:"\\.",romanOrdinalIndicator:"\\."},ordinalDate:{firstSpace:n.nbsp,secondSpace:n.nbsp},singleWordAbbreviations:["č","fol","např","odst","par","r","s","str","sv","tj","tzv"],multipleWordAbbreviations:["hl m","n l","p n l","př n l"]},U={quotes:{leftDoubleQuote:"“",rightDoubleQuote:"”",leftSingleQuote:"‘",rightSingleQuote:"’"},directSpeechIntro:",",dashWords:{spaceBefore:"",dash:n.emDash,spaceAfter:""},spaceAfter:{copyright:n.nbsp,soundRecordingCopyright:n.nbsp,numeroSign:n.nbsp,sectionSign:n.nbsp,paragraphSign:n.nbsp,abbreviation:""},spaceBefore:{percent:""},numbers:{ordinalIndicator:"st|nd|rd|th",romanOrdinalIndicator:""},ordinalDate:{firstSpace:n.nbsp,secondSpace:n.nbsp},singleWordAbbreviations:["p","pp","no","vol"],multipleWordAbbreviations:["U S","e g","i e","a m","p m"]},F={quotes:{leftDoubleQuote:"«",rightDoubleQuote:"»",leftSingleQuote:"‹",rightSingleQuote:"›"},directSpeechIntro:":",dashWords:{spaceBefore:n.hairSpace,dash:n.emDash,spaceAfter:n.hairSpace},spaceAfter:{copyright:n.nbsp,soundRecordingCopyright:n.nbsp,numeroSign:n.nbsp,sectionSign:n.narrowNbsp,paragraphSign:n.narrowNbsp,abbreviation:n.nbsp},spaceBefore:{percent:n.nbsp},numbers:{ordinalIndicator:"\\.",romanOrdinalIndicator:"\\."},ordinalDate:{firstSpace:n.nbsp,secondSpace:n.nbsp},singleWordAbbreviations:["ціт","ст","канц","абз","тзв","Зб","ч","напр"],multipleWordAbbreviations:["т зн","Е Ч","евід ч","род ч","т ч","т д"]},H={quotes:{leftDoubleQuote:"„",rightDoubleQuote:"“",leftSingleQuote:"‚",rightSingleQuote:"‘"},directSpeechIntro:":",dashWords:{spaceBefore:n.hairSpace,dash:n.emDash,spaceAfter:n.hairSpace},spaceAfter:{copyright:n.nbsp,soundRecordingCopyright:n.nbsp,numeroSign:n.nbsp,sectionSign:n.narrowNbsp,paragraphSign:n.narrowNbsp,abbreviation:n.nbsp},spaceBefore:{percent:n.nbsp},numbers:{ordinalIndicator:"\\.",romanOrdinalIndicator:"\\."},ordinalDate:{firstSpace:n.nbsp,secondSpace:n.nbsp},singleWordAbbreviations:["č","cit","čl","fol","napr","odst","par","r","roč","s","str","sv","tzv","vyd"],multipleWordAbbreviations:["hl m","n l","p n l","pr n l","s a","s l","t č","t j","zodp red"]},X={quotes:{leftDoubleQuote:"„",rightDoubleQuote:"“",leftSingleQuote:"‚",rightSingleQuote:"‘"},directSpeechIntro:":",dashWords:{spaceBefore:n.hairSpace,dash:n.enDash,spaceAfter:n.hairSpace},spaceAfter:{copyright:n.nbsp,soundRecordingCopyright:n.nbsp,numeroSign:n.nbsp,sectionSign:n.nbsp,paragraphSign:n.nbsp,abbreviation:n.nbsp},spaceBefore:{percent:n.narrowNbsp},numbers:{ordinalIndicator:"\\.",romanOrdinalIndicator:"\\."},ordinalDate:{firstSpace:n.nbsp,secondSpace:n.space},singleWordAbbreviations:["Bhf","ca","Di","Do","Fr","geb","gest","Hbf","Mi","Mo","Nr","S","Sa","So","St","Stk","u","usw","z"],multipleWordAbbreviations:["b w","d h","d i","e V","Ges m b H","n Chr","n u Z","s a","s o","s u","u a m","u a","u ä","u Ä","u dgl","u U","u z","u zw","v a","v Chr","v u Z","z B","z T","z Zt"]},i={cs:Z,"en-us":U,rue:F,sk:H,"de-de":X},Q="en-us";class G{constructor(p){i[p]||(console.warn(`Locale '${p}' not found, falling back to '${Q}'`),p=Q),this.ID=p,this.leftSingleQuote=i[p].quotes.leftSingleQuote,this.rightSingleQuote=i[p].quotes.rightSingleQuote,this.leftDoubleQuote=i[p].quotes.leftDoubleQuote,this.rightDoubleQuote=i[p].quotes.rightDoubleQuote,this.terminalQuotes=this.rightSingleQuote+this.rightDoubleQuote,this.directSpeechIntro=i[p].directSpeechIntro,this.dashWords=i[p].dashWords,this.spaceAfter=i[p].spaceAfter,this.spaceBefore=i[p].spaceBefore,this.ordinalIndicator=i[p].numbers.ordinalIndicator,this.romanOrdinalIndicator=i[p].numbers.romanOrdinalIndicator,this.ordinalDate=i[p].ordinalDate,this.singleWordAbbreviations=[];for(const r in i)this.singleWordAbbreviations=this.singleWordAbbreviations.concat(i[r].singleWordAbbreviations);this.multipleWordAbbreviations=[];for(const r in i)this.multipleWordAbbreviations=this.multipleWordAbbreviations.concat(i[r].multipleWordAbbreviations);const a=[];for(const r in i){const o=i[r].directSpeechIntro;o&&!a.includes(o)&&a.push(o)}this.directSpeechIntroAdepts=a.join("")}}function V(e){return e.replace(/[\n\r]{2,}/gm,` `)}function b(e,p,a){let o=0,t=e,s="";for(;t!==s&&o<50;)s=t,t=t.replace(p,a),o++;return t}function Y(e){return b(e,new RegExp(`([${n.lowercaseChars}${n.uppercaseChars}]{2,})([${n.nbsp}${n.narrowNbsp}])([${n.lowercaseChars}${n.uppercaseChars}]{2,})`,"g"),"$1 $3")}function D(e,p){return e=b(e,new RegExp(`(^|[${n.space}]|[^${n.allChars}\\d${n.apostrophe}${n.plus}${n.minus}${n.hyphen}])([${n.lowercaseChars}])([${n.space}])`,"g"),`$1$2${n.nbsp}`),e=e.replace(new RegExp(`(^|[${n.sentencePunctuation}${n.ellipsis}${n.copyright}${n.registeredTrademark}${n.soundRecordingCopyright}])([${n.spaces}]?)([${n.uppercaseChars}])([${n.spaces}])`,"g"),`$1$2$3${n.nbsp}`),p.ID=="en-us"&&(e=e.replace(new RegExp(`(^|[${n.spaces}])(I)([${n.spaces}])`,"g"),`$1$2${n.nbsp}`)),e}function J(e){return e.replace(new RegExp(`([${n.spaces}])(${n.ampersand})([${n.spaces}])`,"g"),` $2${n.nbsp}`)}function K(e){return e.replace(new RegExp(`([^${n.nbsp}\\d]|^)(\\d{1,2})([${n.spaces}])([${n.allChars}])`,"g"),`$1$2${n.nbsp}$4`)}function ee(e,p){return e.replace(new RegExp(`([^${n.nbsp}\\d_%\\-]|^)(\\d{1,2})(${p.ordinalIndicator})([${n.spaces}]?)([${n.allChars}])`,"g"),`$1$2$3${n.nbsp}$5`)}function ne(e,p){return e.replace(new RegExp(`(\\d)(\\.)([${n.spaces}]?)(\\d)(\\.)([${n.spaces}]?)(\\d)`,"g"),`$1$2${p.ordinalDate.firstSpace}$4$5${p.ordinalDate.secondSpace}$7`)}function pe(e,p){return p.romanOrdinalIndicator!=""?e.replace(new RegExp(`(\\b[${n.uppercaseChars}][${n.allChars}]?${p.romanOrdinalIndicator}[${n.spaces}]?)?(\\b)([${n.romanNumerals}]+)(${p.romanOrdinalIndicator})([${n.spaces}]?)([${n.allChars}\\d])`,"g"),function(a,r,o,t,s,$,c){return r?a:`${o}${t}${s}${n.nbsp}${c}`}):e}function ae(e,p){let a=`(\\b[${n.uppercaseChars}][${n.lowercaseChars}]+?)([${n.spaces}])([${n.romanNumerals}]+\\b)(${p.romanOrdinalIndicator})([${n.nbsp}]?)`,r=new RegExp(a,"g");return e.replace(r,function(o,t,s,$,c,u){return u==""&&$=="I"?t+n.space+$+c:u==""&&$!="I"?t+n.nbsp+$+c:u==n.nbsp&&$=="I"?t+n.space+$+c+u:t+n.nbsp+$+c+n.space})}function re(e,p){return e.replace(new RegExp(`(\\d)([${n.spaces}])([${n.percent}${n.permille}${n.permyriad}])`,"g"),`$1${p.spaceBefore.percent}$3`)}function oe(e,p){let a=n.uppercaseChars;p.ID=="en-us"&&(a=a.replace(/A-Z/g,"A-HJ-Z"));let r=`([^${n.sentencePunctuation}${n.ellipsis}${n.closingBrackets}${p.rightDoubleQuote}${p.rightSingleQuote}${n.apostrophe}${n.multiplicationSign}${n.emDash}${n.enDash}])([${n.spaces}])([${a}])(([${n.spaces}])|(\\.$|$))`,o=new RegExp(r,"g");return e.replace(o,function(t,s,$,c,u,l){return p.ID=="en-us"?s+n.nbsp+c+u:c=="I"&&(l==n.nbsp||l==n.hairSpace||l==n.narrowNbsp)?s+n.nbsp+c+n.space:s+n.nbsp+c+u})}function te(e,p,a){return a=a!==void 0?a:n.nbsp,e.replace(new RegExp(`(${p})([^${n.spaces}${p}])`,"g"),`$1${a}$2`)}function se(e,p,a){return a=a!==void 0?a:n.nbsp,e.replace(new RegExp(`(${p})([${n.spaces}]+)`,"g"),`$1${a}`)}function $e(e,p){return e=Y(e),e=D(e,p),e=J(e),e=K(e),e=ee(e,p),e=ne(e,p),e=pe(e,p),e=oe(e,p),e=ae(e,p),e=re(e,p),e}function ce(e){return e.replace(new RegExp(`(\\S)([${n.spaces}]{2,})(\\S)`,"g"),"$1 $3")}function ue(e,p){let a=e.split(/\r?\n/),r=new RegExp("(^\\s+)([-\\*\\+\\>]*)","g");for(let o=0;o<a.length;o++)a[o]=a[o].replace(r,function(t,s,$){return p.removeWhitespacesBeforeMarkdownList==!1&&$!=""?s+$:$});return a.join(` `)}function ie(e){let p=e.split(/\r?\n/),a=new RegExp("(\\s+$)","g");for(let r=0;r<p.length;r++)p[r]=p[r].replace(a,"");return p.join(` `)}function le(e){return e.replace(new RegExp(`([${n.spaces}])([${n.sentencePausePunctuation}])([^\\-\\)]|$)`,"g"),"$2$3")}function de(e){return e.replace(new RegExp(`([^${n.openingBrackets}])([${n.spaces}])([${n.terminalPunctuation}${n.closingBrackets}${n.degree}])`,"g"),"$1$3")}function he(e,p){return e.replace(new RegExp(`(\\d)([${n.spaces}]?)(${p.ordinalIndicator})([${n.spaces}]|\\b)`,"g"),"$1$3$4")}function fe(e){return e.replace(new RegExp(`([${n.openingBrackets}])([${n.spaces}])([^${n.closingBrackets}])`,"g"),"$1$3")}function be(e){return e.replace(new RegExp(`([${n.lowercaseChars}${n.uppercaseChars}])([${n.openingBrackets}])([${n.lowercaseChars}${n.uppercaseChars}${n.ellipsis}])([${n.lowercaseChars}${n.uppercaseChars}${n.ellipsis}${n.closingBrackets}])`,"g"),function(p,a,r,o,t){return o=="s"|o=="S"|o+t=="es"|o+t=="ES"?`${a}${r}${o}${t}`:`${a}${n.space}${r}${o}${t}`})}function me(e){return e.replace(new RegExp(`([${n.lowercaseChars}${n.uppercaseChars}]{2,}|[${n.ellipsis}])([${n.terminalPunctuation}])([${n.uppercaseChars}])`,"g"),"$1$2 $3")}function ge(e){return e.replace(new RegExp(`([${n.lowercaseChars}${n.uppercaseChars}]{2,}|[${n.ellipsis}])([${n.sentencePausePunctuation}])([${n.lowercaseChars}${n.uppercaseChars}])`,"g"),"$1$2 $3")}function xe(e){return e.replace(new RegExp(`([${n.closingBrackets}])([${n.lowercaseChars}${n.uppercaseChars}])`,"g"),"$1 $2")}function we(e,p){return e.replace(new RegExp(`([^${n.spaces}${n.openingBrackets}${p}])(${p})`,"g"),`$1${n.space}$2`)}function Se(e,p,a){return e=ce(e),e=ue(e,a),e=ie(e),e=le(e),e=de(e),e=he(e,p),e=fe(e),e=be(e),e=me(e),e=xe(e),e=ge(e),e}function ye(e){return e.replace(new RegExp("\\.{2}(?![\\\\/])","g"),".")}function Ee(e){return ye(e)}function Ae(e){return e.replace(new RegExp(`[${n.ellipsis}\\.]{3,}`,"g"),n.ellipsis)}function Re(e){return e.replace(new RegExp(`\\.${n.ellipsis}|${n.ellipsis}{2,}|${n.ellipsis}\\.`,"g"),n.ellipsis)}function Ce(e){return e.replace(new RegExp(`[${n.spaces}]\\.{2}[${n.spaces}]`,"g"),`${n.space}${n.ellipsis}${n.space}`)}function Qe(e){return e.replace(new RegExp(`(,)([${n.spaces}]?)(${n.ellipsis})([${n.spaces}]?)(,)`,"g"),`$1 ${n.ellipsis}$5`)}function De(e){return e.replace(new RegExp(`(,)([${n.spaces}]?)(${n.ellipsis})([${n.spaces}]?)(\\B|[${n.closingBrackets}])([^,]|$)`,"g"),"$1$3$5$6")}function _e(e){return e.replace(new RegExp(`(^${n.ellipsis})([${n.spaces}])([${n.lowercaseChars}${n.uppercaseChars}])`,"gm"),"$1$3")}function Pe(e,p){return e.replace(new RegExp(`([^${p.terminalQuotes}])([${n.sentencePunctuation}])([${n.spaces}]?)([${n.ellipsis}])([${n.spaces}]?)([${n.lowercaseChars}])`,"g"),"$1$2 $4$6")}function Be(e){return e.replace(new RegExp(`([${n.lowercaseChars}])([${n.spaces}])([${n.ellipsis}])([${n.spaces}]?)([${n.uppercaseChars}])`,"g"),"$1$3 $5")}function ve(e){return e.replace(new RegExp(`([${n.allChars}])([${n.ellipsis}])([${n.allChars}])`,"g"),"$1$2 $3")}function ke(e,p){return e.replace(new RegExp(`([${n.sentencePunctuation}${p.terminalQuotes}])([${n.spaces}]?)(${n.ellipsis})([${n.spaces}]?)([${n.uppercaseChars}])`,"g"),"$1 $3 $5")}function We(e,p){return e.replace(new RegExp(`([${n.lowercaseChars}])([${n.spaces}])+([${n.ellipsis}][${p.rightDoubleQuote}${p.rightSingleQuote}]?$)`,"gm"),"$1$3")}function Ne(e,p){return e=Ae(e),e=Qe(e),e=De(e),e=_e(e),e=Pe(e,p),e=Be(e),e=ve(e),e=ke(e,p),e=We(e,p),e=Re(e),e=Ce(e),e}function qe(e,p){return e.replace(new RegExp(`([${n.allChars}\\d])([${n.spaces}]*[${n.enDash}${n.emDash}]{1,3}[${n.spaces}]*|[${n.spaces}]+[${n.hyphen}]{1,3}[${n.spaces}]+)([${n.allChars}\\d])`,"g"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}${p.dashWords.spaceAfter}$3`)}function Ie(e,p){return e.replace(new RegExp(`([${n.allChars}])([${n.spaces}]?)([${n.hyphen}${n.enDash}${n.emDash}]{1,3})([${n.spaces}]?)([${n.sentencePunctuation}\\n\\r])`,"g"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}$5`)}function ze(e,p){return e=e.replace(new RegExp(`([${n.openingBrackets}])[${n.spaces}]*([${n.hyphen}${n.enDash}${n.emDash}]+)[${n.spaces}]*([${n.closingBrackets}])`,"g"),"$1$2$3"),e=e.replace(new RegExp(`([${n.allChars}])[${n.spaces}]*[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]*([${n.openingBrackets}])`,"g"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}${p.dashWords.spaceAfter}$2`),e=e.replace(new RegExp(`([${n.closingBrackets}])[${n.spaces}]*[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]*([${n.allChars}])`,"g"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}${p.dashWords.spaceAfter}$2`),e=e.replace(new RegExp(`([${n.allChars}])[${n.spaces}]*[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]*([${n.closingBrackets}])`,"g"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}${p.dashWords.spaceAfter}$2`),e=e.replace(new RegExp(`([${n.openingBrackets}])[${n.spaces}]*[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]*([${n.allChars}])`,"g"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}${p.dashWords.spaceAfter}$2`),e=e.replace(new RegExp(`([${n.closingBrackets}])[${n.spaces}]*[${n.hyphen}${n.enDash}${n.emDash}][${n.spaces}]*([${n.openingBrackets}])`,"g"),`$1${p.dashWords.spaceBefore}${p.dashWords.dash}${p.dashWords.spaceAfter}$2`),e}function Le(e){return e=b(e,new RegExp(`(\\d)([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]?)(\\d)`,"g"),"$1{{typopo__endash}}$3"),e.replace(new RegExp("{{typopo__endash}}","g"),n.enDash)}function Me(e){return e.replace(new RegExp(`([${n.percent}${n.permille}${n.permyriad}])([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]?)(\\d)`,"g"),`$1${n.enDash}$3`)}function Te(e,p){return e.replace(new RegExp(`(\\d)(${p.ordinalIndicator})([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}]{1,3}[${n.spaces}]?)(\\d)(${p.ordinalIndicator})`,"gi"),`$1$2${n.enDash}$4$5`)}function je(e,p){return e=qe(e,p),e=Ie(e,p),e=ze(e,p),e=Le(e),e=Me(e),e=Te(e,p),e}const d="{{typopo__markdown_tick}}";function _(e,p){return p.keepMarkdownCodeBlocks?e.replace(/(\s*)(```)/g,`$1${d}${d}${d}`).replace(/(``)(.*?)(``)/g,`${d}${d}$2${d}${d}`).replace(/(`)(.*?)(`)/g,`${d}$2${d}`):e}function P(e,p){return p.keepMarkdownCodeBlocks?e.replace(new RegExp(`${d}`,"g"),"`"):e}function Oe(e){return e.replace(new RegExp(`([^${n.romanNumerals}])([${n.sentencePunctuation}])([${n.sentencePausePunctuation}])(${n.doubleQuoteAdepts})`,"g"),"$1$2$4")}function Ze(e){return e.replace(new RegExp(`([^${n.romanNumerals}])([${n.sentencePunctuation}])(${n.doubleQuoteAdepts})([${n.sentencePunctuation}])`,"g"),"$1$2$3")}function Ue(e){return e=e.replace(new RegExp(`([^0-9]|^)(${n.doubleQuoteAdepts})(.+?)(\\d+)(${n.doubleQuoteAdepts})([${n.terminalPunctuation}${n.ellipsis}])`,"g"),"$1$2$3$4$6$5"),e=e.replace(new RegExp(`(\\b\\d{1,3})([${n.spaces}]?)(${n.doubleQuoteAdepts})`,"g"),"$1$2{{typopo__double-prime}}"),e}function Fe(e){return e=e.replace(new RegExp(`(${n.doubleQuoteAdepts})(\\d+)({{typopo__double-prime}})`,"g"),"{{typopo__ldq}}$2{{typopo__rdq}}"),e=e.replace(new RegExp(`(${n.doubleQuoteAdepts})(.*?)(${n.doubleQuoteAdepts})`,"g"),"{{typopo__ldq}}$2{{typopo__rdq}}"),e}function He(e){return e.replace(new RegExp(`(${n.doubleQuoteAdepts})([0-9${n.lowercaseChars}${n.uppercaseChars}])`,"g"),"{{typopo__ldq--unpaired}}$2")}function Xe(e){return e.replace(new RegExp(`([${n.lowercaseChars}${n.uppercaseChars}${n.sentencePunctuation}${n.ellipsis}])(${n.doubleQuoteAdepts})`,"g"),"$1{{typopo__rdq--unpaired}}")}function Ge(e){return e.replace(new RegExp(`([${n.spaces}])(${n.doubleQuoteAdepts})([${n.spaces}])`,"g"),"$1")}function Ve(e){return e.replace(new RegExp("({{typopo__ldq--unpaired}})(.*?)({{typopo__double-prime}})","g"),"{{typopo__ldq}}$2{{typopo__rdq}}").replace(new RegExp("({{typopo__double-prime}})(.*?)({{typopo__rdq--unpaired}})","g"),"{{typopo__ldq}}$2{{typopo__rdq}}")}function Ye(e,p){return e=e.replace(new RegExp(`([^${n.sentencePunctuation}])([${n.spaces}])(${p.leftDoubleQuote})([^${p.rightDoubleQuote}]+?)([^${n.romanNumerals}${n.closingBrackets}])([${n.terminalPunctuation}${n.ellipsis}])(${p.rightDoubleQuote})`,"g"),"$1$2$3$4$5$7$6"),e=e.replace(new RegExp(`([^${n.sentencePunctuation}])([${n.spaces}])(${p.leftDoubleQuote})(.+?)([^${n.romanNumerals}])(${p.rightDoubleQuote})([${n.terminalPunctuation}${n.ellipsis}])([${n.spaces}])([${n.lowercaseChars}])`,"g"),"$1$2$3$4$5$7$6$8$9"),e=e.replace(new RegExp(`(^${p.leftDoubleQuote}[^${p.rightDoubleQuote}]+?[^${n.romanNumerals}])(${p.rightDoubleQuote})([${n.terminalPunctuation}${n.ellipsis}])(\\B)`,"gm"),"$1$3$2$4"),e=e.replace(new RegExp(`([${n.sentencePunctuation}][${n.spaces}]${p.leftDoubleQuote}[^${p.rightDoubleQuote}]+?[^${n.romanNumerals}])(${p.rightDoubleQuote})([${n.terminalPunctuation}${n.ellipsis}])(\\B)`,"g"),"$1$3$2$4"),e=e.replace(new RegExp(`([${n.sentencePunctuation}][${p.rightDoubleQuote}][${n.spaces}]${p.leftDoubleQuote}[^${p.rightDoubleQuote}]+?[^${n.romanNumerals}])(${p.rightDoubleQuote})([${n.terminalPunctuation}${n.ellipsis}])(\\B)`,"g"),"$1$3$2$4"),e}function Je(e,p){return e.replace(/{{typopo__double-prime}}/g,n.doublePrime).replace(/({{typopo__ldq}}|{{typopo__ldq--unpaired}})/g,p.leftDoubleQuote).replace(/({{typopo__rdq}}|{{typopo__rdq--unpaired}})/g,p.rightDoubleQuote)}function Ke(e,p){return e=e.replace(new RegExp(`(${p.leftDoubleQuote})([${n.spaces}])`,"g"),"$1"),e=e.replace(new RegExp(`([${n.spaces}])(${p.rightDoubleQuote})`,"g"),"$2"),e=e.replace(new RegExp(`([${n.spaces}])(${n.doublePrime})`,"g"),"$2"),e}function en(e,p){return e=e.replace(new RegExp(`([${n.sentencePunctuation}${n.allChars}])([${p.leftDoubleQuote}])`,"g"),"$1 $2"),e=D(e,p),e}function nn(e,p){return e.replace(new RegExp(`([${p.rightDoubleQuote}])([${n.allChars}])`,"g"),"$1 $2")}function pn(e,p){const a=`${n.hyphen}${n.enDash}${n.emDash}`;return e=e.replace(new RegExp(`([${n.allChars}])[${p.directSpeechIntroAdepts}]?[${n.spaces}]*[${a}][${n.spaces}]*([${p.leftDoubleQuote}].+?[${p.rightDoubleQuote}])`,"g"),`$1${p.directSpeechIntro} $2`),e=e.replace(new RegExp(`([${n.allChars}])[${p.directSpeechIntroAdepts}][${n.spaces}]*([${p.leftDoubleQuote}].+?[${p.rightDoubleQuote}])`,"g"),`$1${p.directSpeechIntro} $2`),e=e.replace(new RegExp(`([${p.leftDoubleQuote}].+?[${p.rightDoubleQuote}])[${n.spaces}]*[${a}][${n.spaces}]*([${n.allChars}])`,"g"),"$1 $2"),e=e.replace(new RegExp(`^[${n.spaces}]*[${a}][${n.spaces}]*([${p.leftDoubleQuote}].+?[${p.rightDoubleQuote}])`,"g"),"$1"),e=e.replace(new RegExp(`([${n.terminalPunctuation}${n.ellipsis}])[${n.spaces}]+[${a}][${n.spaces}]*([${p.leftDoubleQuote}].+?[${p.rightDoubleQuote}])`,"g"),"$1 $2"),e}function an(e,p,a){return a=a||{},e=_(e,a),e=Oe(e),e=Ze(e),e=Ue(e),e=Fe(e),e=He(e),e=Xe(e),e=Ge(e),e=Ve(e),e=Je(e,p),e=P(e,a),e=Ke(e,p),e=en(e,p),e=nn(e,p),e=pn(e,p),e=Ye(e,p),e}function rn(e){return[["dead","buried"],["drill","bass"],["drum","bass"],["rock","roll"],["pick","mix"],["fish","chips"],["salt","shake"],["mac","cheese"],["pork","beans"],["drag","drop"],["rake","scrape"],["hook","kill"]].forEach(a=>{e=e.replace(new RegExp(`(${a[0]})([${n.spaces}]?)(${n.singleQuoteAdepts})(n)(${n.singleQuoteAdepts})([${n.spaces}]?)(${a[1]})`,"gi"),`$1${n.nbsp}{{typopo__apostrophe}}$4{{typopo__apostrophe}}${n.nbsp}$7`)}),e}function on(e){let p="cause|em|mid|midst|mongst|prentice|round|sblood|ssdeath|sfoot|sheart|shun|slid|slife|slight|snails|strewth|til|tis|twas|tween|twere|twill|twixt|twould";return e.replace(new RegExp(`(${n.singleQuoteAdepts})(${p})`,"gi"),"{{typopo__apostrophe}}$2")}function tn(e){return e.replace(new RegExp(`(\\Bin)(${n.singleQuoteAdepts})`,"gi"),"$1{{typopo__apostrophe}}")}function sn(e){return e.replace(new RegExp(`([\\d${n.allChars}])(${n.singleQuoteAdepts})+([${n.allChars}])`,"g"),"$1{{typopo__apostrophe}}$3")}function $n(e){return e.replace(new RegExp(`([^0-9]|[A-Z][0-9])([${n.spaces}])(${n.singleQuoteAdepts})([\\d]{2})`,"g"),"$1$2{{typopo__apostrophe}}$4")}function cn(e){return e.replace(/(\d)( ?)('|‘|’|‛|′)/g,"$1$2{{typopo__single-prime}}")}function un(e){return e.replace(new RegExp(`(^|[${n.spaces}${n.emDash}${n.enDash}])(${n.singleQuoteAdepts}|,)([${n.allChars}${n.ellipsis}])`,"g"),"$1{{typopo__lsq--unpaired}}$3")}function ln(e){return e.replace(new RegExp(`([${n.allChars}])([${n.sentencePunctuation}${n.ellipsis}])?(${n.singleQuoteAdepts})([ ${n.sentencePunctuation}])?`,"g"),"$1$2{{typopo__rsq--unpaired}}$4")}function dn(e){return e.replace(new RegExp(`(${n.doubleQuoteAdepts})(.*?)(${n.doubleQuoteAdepts})`,"g"),function(p,a,r,o){return r=un(r),r=ln(r),r=hn(r),a+r+o})}function hn(e){return e.replace(new RegExp("({{typopo__lsq--unpaired}})(.*)({{typopo__rsq--unpaired}})","g"),"{{typopo__lsq}}$2{{typopo__rsq}}")}function fn(e){return e.replace(new RegExp(`(\\B)(${n.singleQuoteAdepts})([${n.allChars}]+)(${n.singleQuoteAdepts})(\\B)`,"g"),"$1{{typopo__lsq}}$3{{typopo__rsq}}$5")}function bn(e){return e.replace(new RegExp(`(${n.singleQuoteAdepts})`,"g"),"{{typopo__apostrophe}}")}function mn(e){return e=e.replace(new RegExp("({{typopo__lsq--unpaired}})(.*?)({{typopo__single-prime}})","g"),"{{typopo__lsq}}$2{{typopo__rsq}}"),e=e.replace(new RegExp("({{typopo__single-prime}})(.*?)({{typopo__rsq--unpaired}})","g"),"{{typopo__lsq}}$2{{typopo__rsq}}"),e}function gn(e,p){return e=e.replace(new RegExp(`([^${n.sentencePunctuation}])([${n.spaces}])(${p.leftSingleQuote})([^${p.rightSingleQuote}]+?)([^${n.romanNumerals}])([${n.terminalPunctuation}${n.ellipsis}])(${p.rightSingleQuote})`,"g"),"$1$2$3$4$5$7$6"),e=e.replace(new RegExp(`([^${n.sentencePunctuation}])([${n.spaces}])(${p.leftSingleQuote})(.+?)([^${n.romanNumerals}])(${p.rightSingleQuote})([${n.terminalPunctuation}${n.ellipsis}])([${n.spaces}])([${n.lowercaseChars}])`,"g"),"$1$2$3$4$5$7$6$8$9"),e=e.replace(new RegExp(`([${n.sentencePunctuation}][${n.spaces}]|^)(${p.leftSingleQuote})([^${p.rightSingleQuote}]+?)([^${n.romanNumerals}])(${p.rightSingleQuote})([${n.terminalPunctuation}${n.ellipsis}])(\\B)`,"g"),"$1$2$3$4$6$5$7"),e}function xn(e){return e.replace(new RegExp(`([${n.spaces}])(${n.singlePrime})`,"g"),"$2")}function wn(e,p){return e=e.replace(/({{typopo__single-prime}})/g,n.singlePrime),e=e.replace(/{{typopo__apostrophe}}|{{typopo__lsq--unpaired}}|{{typopo__rsq--unpaired}}/g,n.apostrophe),e=e.replace(/{{typopo__lsq}}/g,p.leftSingleQuote),e=e.replace(/{{typopo__rsq}}/g,p.rightSingleQuote),e=e.replace(/{{typopo__markdown_syntax_highlight}}/g,"```"),e}function Sn(e,p,a){return a=a||{},e=_(e,a),e=rn(e),e=on(e),e=sn(e),e=$n(e),e=tn(e),e=cn(e),e=fn(e),e=dn(e),e=mn(e),e=bn(e),e=wn(e,p),e=P(e,a),e=gn(e,p),e=xn(e),e}function yn(e){return b(e,new RegExp(`([\\d]+)([${n.spaces}]?[${n.lowercaseChars}${n.singlePrime}${n.doublePrime}]*)([${n.spaces}][x][${n.spaces}])([\\d]+)([${n.spaces}]?[${n.lowercaseChars}${n.singlePrime}${n.doublePrime}]*)`,"gi"),`$1$2${n.nbsp}${n.multiplicationSign}${n.nbsp}$4$5`)}function En(e){return b(e,new RegExp(`([${n.allChars}]+)([${n.spaces}][x][${n.spaces}])([${n.allChars}]+)`,"g"),`$1${n.nbsp}${n.multiplicationSign}${n.nbsp}$3`)}function An(e){return e.replace(new RegExp(`([\\d])([${n.spaces}]?)([x|×])([${n.spaces}])([${n.lowercaseChars}]+)`,"gi"),function(p,a,r,o,t,s){return r==""?`${a}${r}${n.multiplicationSign}${n.nbsp}${s}`:`${a}${n.nbsp}${n.multiplicationSign}${n.nbsp}${s}`})}function Rn(e){return e.replace(new RegExp(`([\\d]+)([${n.singlePrime}${n.doublePrime}])?([x|×])([\\d]+)([${n.singlePrime}${n.doublePrime}])?`,"gi"),`$1$2${n.nbsp}${n.multiplicationSign}${n.nbsp}$4$5`)}function Cn(e){return e=yn(e),e=En(e),e=An(e),e=Rn(e),e}function m(e,p,a){return e=we(e,p),e=te(e,p,a),e=se(e,p,a),e}function Qn(e,p){return e=m(e,n.sectionSign,p.spaceAfter.sectionSign),e=m(e,n.paragraphSign,p.spaceAfter.paragraphSign),e}function B(e,p,a){return e.replace(new RegExp(`(\\(${p}\\))([${n.spaces}]*)(\\d)`,"gi"),`${a}$2$3`)}function Dn(e,p){return e=B(e,"c",n.copyright),e=m(e,n.copyright,p.spaceAfter.copyright),e=B(e,"p",n.soundRecordingCopyright),e=m(e,n.soundRecordingCopyright,p.spaceAfter.soundRecordingCopyright),e}function _n(e,p){return e=m(e,n.numeroSign,p.spaceAfter.numeroSign),e}function Pn(e){return e.replace(new RegExp("(\\+\\-)|(\\-\\+)","g"),n.plusMinus)}function g(e,p,a){return e.replace(new RegExp(`([^0-9]|^)([${n.spaces}]*)(\\(${p}\\)|${a})`,"gi"),`$1${a}`)}function Bn(e){return e=g(e,"r",n.registeredTrademark),e=g(e,"sm",n.serviceMark),e=g(e,"tm",n.trademark),e}function v(e,p,a){let r="m|dam|hm|km|Mm|Gm|Tm|Pm|Em|Zm|Ym|m|dm|cm|mm|µm|nm|pm|fm|am|zm|ym";return e.replace(new RegExp(`([${n.spaces}${n.slash}])(${r})(${p})`,"g"),`$1$2${a}`)}function vn(e){return v(e,"2","²")}function kn(e){return v(e,"3","³")}function Wn(e){return e=vn(e),e=kn(e),e}function Nn(e){return e.replace(new RegExp(`([${n.spaces}]+)(${n.numberSign})([${n.spaces}]+)(\\d)`,"g"),"$1$2$4")}function qn(e){return e=Nn(e),e}function In(e,p){const a=`([${n.uppercaseChars}][${n.allChars}]?\\.)([${n.spaces}]?)`,r=`([${n.allChars}]{2,}[^\\.])`,o=[{pattern:`${a}${r}`,replacement:`$1${n.nbsp}$3`},{pattern:`${a}${a}${r}`,replacement:`$1${p.spaceAfter.abbreviation}$3${n.space}$5`},{pattern:`${a}${a}${a}${r}`,replacement:`$1${p.spaceAfter.abbreviation}$3${p.spaceAfter.abbreviation}$5${n.space}$7`}];for(const{pattern:t,replacement:s}of o)e=e.replace(new RegExp(t,"g"),s);return e}function zn(e,p){let a=`([^${n.allChars}${n.enDash}${n.emDash}]|^)`,r=`([${n.allChars}]|\\D)`,o=`([^${n.allChars}${p.leftDoubleQuote}${p.leftSingleQuote}${n.backtick}\\p{Emoji}]|$)`,t=[];for(let s=0;s<p.multipleWordAbbreviations.length;s++){let $=p.multipleWordAbbreviations[s].split(" "),c="";for(let u=0;u<$.length;u++)c+=`(${$[u]})(\\.)([${n.spaces}]?)`;t[s]=c}for(let s=0;s<t.length;s++){let $=`${a}${t[s]}${r}`,c="$1",u=(t[s].match(/\(/g)||[]).length/3;for(let l=0;l<u-1;l++)c+=`$${l*3+2}.${p.spaceAfter.abbreviation}`;c+=`$${(u-1)*3+2}. $${u*3+2}`,e=e.replace(new RegExp($,"gi"),c)}for(let s=0;s<t.length;s++){let $=`${a}${t[s]}${o}`,c="$1",u=(t[s].match(/\(/g)||[]).length/3;for(let l=0;l<u-1;l++)c+=`$${l*3+2}.${p.spaceAfter.abbreviation}`;c+=`$${(u-1)*3+2}.$${u*3+2}`,e=e.replace(new RegExp($,"giu"),c)}return e}function Ln(e,p){let a=[];for(let $=0;$<p.singleWordAbbreviations.length;$++)a[$]=`(${p.singleWordAbbreviations[$]})(\\.)([${n.spaces}]?)`;let r=`([^${n.allChars}${n.enDash}${n.emDash}${n.nbsp}\\.]|^)`,o=`([${n.allChars}\\d]+)([^\\.]|$)`;for(let $=0;$<a.length;$++)e=e.replace(new RegExp(`${r}${a[$]}${o}`,"gi"),`$1$2$3${n.nbsp}$5$6`);let t=`([${n.allChars}\\d])([${n.spaces}])`,s=`([^${n.spaces}${n.allChars}\\d]|$)`;for(let $=0;$<a.length;$++)e=e.replace(new RegExp(`${t}${a[$]}${s}`,"gi"),`$1${n.nbsp}$3$4$5$6`);return e}function Mn(e,p){return e=In(e,p),e=zn(e,p),e=Ln(e,p),e}function Tn(e){return e=e.replace(new RegExp(`([^${n.allChars}]|^)([${n.uppercaseChars}]{2})([${n.lowercaseChars}]{2,})`,"g"),function(p,a,r,o){return`${a}${r.substring(0,1)}${r.substring(1).toLowerCase()}${o}`}),e.replace(new RegExp(`(\\b)(?!iOS)([${n.lowercaseChars}])([${n.uppercaseChars}]{2,})`,"g"),function(p,a,r,o){return`${a}${r.toUpperCase()}${o.toLowerCase()}`})}function jn(e){return e.replace(new RegExp(`(issn)(:?)([${n.spaces}]?)(\\d{4})([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}][${n.spaces}]?)(\\d{4})`,"gi"),`ISSN$2${n.nbsp}$4-$6`)}function On(e){let p=`([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}][${n.spaces}]?)`;return e.replace(new RegExp(`(isbn)(:?)([${n.spaces}]?)(\\d+)`+p+"(\\d+)"+p+"(\\d+)"+p+"(X|\\d+)","gi"),`ISBN$2${n.nbsp}$4-$6-$8-$10`)}function Zn(e){let p=`([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}][${n.spaces}]?)`;return e.replace(new RegExp(`(isbn)(:?)([${n.spaces}]?)(\\d+)`+p+"(\\d+)"+p+"(\\d+)"+p+"(\\d+)"+p+"(X|\\d+)","gi"),`ISBN$2${n.nbsp}$4-$6-$8-$10-$12`)}function Un(e){let p=`([${n.spaces}]?[${n.hyphen}${n.enDash}${n.emDash}][${n.spaces}]?)`;return e.replace(new RegExp("(\\d+)"+p+"(\\d+)"+p+"(\\d+)"+p+"(\\d+)"+p+"(X|\\d+?)","g"),"$1-$3-$5-$7-$9")}function Fn(e){return e=jn(e),e=On(e),e=Zn(e),e=Un(e),e}function Hn(e){let p=[];return x(e,n.emailPattern,p),x(e,n.urlPattern,p),x(e,n.filenamePattern,p),{processedText:Xn(e,p),exceptions:p}}function x(e,p,a){const r=new RegExp(p,"gi"),o=e.match(r);return o&&o.forEach(t=>a.push(t)),a}function Xn(e,p){return p.reduce((a,r,o)=>{const t=`{{typopo__exception-${o}}}`;return a.replace(r,t)},e)}function Gn(e,p){return p.reduce((a,r,o)=>{const t=new RegExp(`{{typopo__exception-${o}}}`,"g");return a.replace(t,r)},e)}function Vn(e,p,a){p=typeof p>"u"?"en-us":p;let r=new G(p);a=typeof a>"u"?{removeLines:!0,removeWhitespacesBeforeMarkdownList:!0,keepMarkdownCodeBlocks:!1}:a;const{processedText:o,exceptions:t}=Hn(e);return e=o,a.removeLines&&(e=V(e)),e=Ne(e,r),e=Se(e,r,a),e=Ee(e),e=je(e,r),e=Sn(e,r,a),e=an(e,r,a),e=Cn(e),e=Qn(e,r),e=Dn(e,r),e=_n(e,r),e=Pn(e),e=Bn(e),e=Wn(e),e=qn(e),e=Tn(e),e=Fn(e),e=Mn(e,r),e=$e(e,r),e=Gn(e,t),e}h.fixTypos=Vn,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});