{"version":3,"sources":["../../src/rules/dates.js","../../src/rules/initials.js","../../src/rules/ordinals.js","../../src/data/prepositions.js","../../src/rules/prepositions.js","../../src/rules/roman.js","../../src/rules/thousands.js","../../src/data/units.js","../../src/rules/units.js","../../src/fixCzech.js","../../src/fixCzechHtml.js","../../src/next/middleware.js"],"names":["NextResponse"],"mappings":";;;;;;;;;AAAA,IAAM,eAAA,GAAkB,gDAAA;AACxB,IAAM,eAAA,GAAkB,mDAAA;AAWjB,SAAS,WAAW,IAAA,EAAM;AAC7B,EAAA,OAAO,KACF,OAAA,CAAQ,eAAA,EAAiB,kBAAsB,CAAA,CAC/C,OAAA,CAAQ,iBAAiB,YAAc,CAAA;AAChD;;;AChBA,IAAM,aAAA,GAAgB,gCAAA;AAUf,SAAS,cAAc,IAAA,EAAM;AAChC,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,OAAA,GAAU,IAAA;AACd,EAAA,GAAG;AACC,IAAA,QAAA,GAAW,OAAA;AACX,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,aAAA,EAAe,SAAW,CAAA;AAAA,EACxD,SAAS,OAAA,KAAY,QAAA;AACrB,EAAA,OAAO,OAAA;AACX;;;AClBA,IAAM,aAAA,GAAgB,+BAAA;AAcf,SAAS,cAAc,IAAA,EAAM;AAChC,EAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,aAAA,EAAe,SAAW,CAAA;AAClD;;;ACRO,IAAM,YAAA,GAAe,OAAO,MAAA,CAAO;AAAA,EACtC,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA;AACJ,CAAC,CAAA;;;ACfD,IAAM,oBAAoB,IAAI,MAAA;AAAA,EAC1B,CAAA,oDAAA,EAA2D,YAAA,CAAa,IAAA,CAAK,GAAG,CAAC,CAAA,eAAA,CAAA;AAAA,EACjF;AACJ,CAAA;AAeO,SAAS,kBAAkB,IAAA,EAAM;AACpC,EAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,iBAAA,EAAmB,QAAU,CAAA;AACrD;;;ACtBA,IAAM,aAAA,GACF,+EAAA;AACJ,IAAM,cAAc,IAAI,MAAA;AAAA,EACpB,gCAAgC,aAAa,CAAA,yBAAA,CAAA;AAAA,EAC7C;AACJ,CAAA;AAaO,SAAS,WAAW,IAAA,EAAM;AAC7B,EAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,WAAA,EAAa,QAAU,CAAA;AAC/C;;;ACpBA,IAAM,eAAA,GAAkB,2BAAA;AAYjB,SAAS,eAAe,IAAA,EAAM;AACjC,EAAA,IAAI,QAAA;AACJ,EAAA,IAAI,OAAA,GAAU,IAAA;AACd,EAAA,GAAG;AACC,IAAA,QAAA,GAAW,OAAA;AACX,IAAA,OAAA,GAAU,OAAA,CAAQ,OAAA,CAAQ,eAAA,EAAiB,UAAY,CAAA;AAAA,EAC3D,SAAS,OAAA,KAAY,QAAA;AACrB,EAAA,OAAO,OAAA;AACX;;;ACXO,IAAM,aAAa,MAAA,CAAO,MAAA;AAAA,EAC7B;AAAA,IACI,MAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA;AAAA,GACJ,CAAE,KAAK,CAAC,CAAA,EAAG,MAAM,CAAA,CAAE,MAAA,GAAS,EAAE,MAAM;AACxC,CAAA;AAUO,IAAM,eAAe,MAAA,CAAO,MAAA;AAAA,EAC/B,CAAC,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,GAAG,CAAA,CAAE,IAAA;AAAA,IACpD,CAAC,CAAA,EAAG,CAAA,KAAM,CAAA,CAAE,SAAS,CAAA,CAAE;AAAA;AAE/B,CAAA;;;ACxFA,SAAS,YAAY,KAAA,EAAO;AACxB,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,qBAAA,EAAuB,MAAM,CAAA;AACtD;AAEA,IAAM,eAAe,UAAA,CAAW,GAAA,CAAI,WAAW,CAAA,CAAE,KAAK,GAAG,CAAA;AACzD,IAAM,iBAAiB,YAAA,CAAa,GAAA,CAAI,WAAW,CAAA,CAAE,KAAK,GAAG,CAAA;AAE7D,IAAM,kBAAkB,IAAI,MAAA;AAAA,EACxB,qBAAqB,YAAY,CAAA,oBAAA,CAAA;AAAA,EACjC;AACJ,CAAA;AAEA,IAAM,oBAAoB,IAAI,MAAA;AAAA,EAC1B,qBAAqB,cAAc,CAAA,4BAAA,CAAA;AAAA,EACnC;AACJ,CAAA;AAiBO,SAAS,WAAW,IAAA,EAAM;AAC7B,EAAA,OAAO,KACF,OAAA,CAAQ,eAAA,EAAiB,QAAU,CAAA,CACnC,OAAA,CAAQ,mBAAmB,QAAU,CAAA;AAC9C;;;ACnBA,IAAM,eAAA,GAAkB,OAAO,MAAA,CAAO;AAAA,EAClC,YAAA,EAAc,IAAA;AAAA,EACd,KAAA,EAAO,IAAA;AAAA,EACP,QAAA,EAAU,IAAA;AAAA,EACV,KAAA,EAAO,IAAA;AAAA,EACP,QAAA,EAAU,IAAA;AAAA,EACV,KAAA,EAAO,IAAA;AAAA,EACP,SAAA,EAAW;AACf,CAAC,CAAA;AAgBM,SAAS,QAAA,CAAS,MAAM,OAAA,EAAS;AACpC,EAAA,IAAI,OAAO,IAAA,KAAS,QAAA,IAAY,IAAA,CAAK,WAAW,CAAA,EAAG;AAC/C,IAAA,OAAO,IAAA;AAAA,EACX;AAEA,EAAA,MAAM,OAAO,OAAA,GAAU,EAAE,GAAG,eAAA,EAAiB,GAAG,SAAQ,GAAI,eAAA;AAE5D,EAAA,IAAI,MAAA,GAAS,IAAA;AACb,EAAA,IAAI,IAAA,CAAK,SAAA,EAAW,MAAA,GAAS,cAAA,CAAe,MAAM,CAAA;AAClD,EAAA,IAAI,IAAA,CAAK,KAAA,EAAO,MAAA,GAAS,UAAA,CAAW,MAAM,CAAA;AAC1C,EAAA,IAAI,IAAA,CAAK,QAAA,EAAU,MAAA,GAAS,aAAA,CAAc,MAAM,CAAA;AAChD,EAAA,IAAI,IAAA,CAAK,KAAA,EAAO,MAAA,GAAS,UAAA,CAAW,MAAM,CAAA;AAC1C,EAAA,IAAI,IAAA,CAAK,QAAA,EAAU,MAAA,GAAS,aAAA,CAAc,MAAM,CAAA;AAChD,EAAA,IAAI,IAAA,CAAK,KAAA,EAAO,MAAA,GAAS,UAAA,CAAW,MAAM,CAAA;AAC1C,EAAA,IAAI,IAAA,CAAK,YAAA,EAAc,MAAA,GAAS,iBAAA,CAAkB,MAAM,CAAA;AACxD,EAAA,OAAO,MAAA;AACX;;;ACzDA,IAAM,aAAA,uBAAoB,GAAA,CAAI,CAAC,UAAU,OAAA,EAAS,KAAA,EAAO,MAAA,EAAQ,UAAU,CAAC,CAAA;AAE5E,IAAM,WAAA,GACF,qHAAA;AAEJ,IAAM,QAAA,GAAW,GAAA;AAEjB,SAAS,YAAY,KAAA,EAAO;AACxB,EAAA,OAAO,KAAA,CAAM,UAAA,CAAW,CAAC,CAAA,KAAM,EAAA;AACnC;AAEA,SAAS,WAAW,KAAA,EAAO;AACvB,EAAA,OACI,KAAA,CAAM,WAAW,CAAC,CAAA,KAAM,MACxB,CAAC,KAAA,CAAM,UAAA,CAAW,MAAM,CAAA,IACxB,CAAC,MAAM,UAAA,CAAW,KAAK,CAAA,IACvB,CAAC,KAAA,CAAM,UAAA,CAAW,IAAI,CAAA,IACtB,CAAC,KAAA,CAAM,UAAA,CAAW,IAAI,CAAA;AAE9B;AAEA,SAAS,gBAAA,CAAiB,IAAA,EAAM,OAAA,EAAS,QAAA,EAAU;AAC/C,EAAA,IAAI,QAAA,IAAY,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA,EAAG;AACjC,IAAA,MAAM,MAAA,GAAS,OAAO,QAAA,GAAW,QAAA;AACjC,IAAA,MAAM,KAAA,GAAQ,QAAA,CAAS,MAAA,EAAQ,OAAO,CAAA;AACtC,IAAA,IAAI,KAAA,CAAM,QAAA,CAAS,QAAA,GAAW,QAAQ,CAAA,EAAG;AACrC,MAAA,OAAO,MAAM,KAAA,CAAM,CAAA,EAAG,EAAE,QAAA,CAAS,MAAA,GAAS,SAAS,MAAA,CAAO,CAAA;AAAA,IAC9D;AACA,IAAA,OAAO,KAAA,CAAM,QAAA,CAAS,QAAQ,CAAA,GAAI,KAAA,CAAM,MAAM,CAAA,EAAG,CAAC,QAAA,CAAS,MAAM,CAAA,GAAI,KAAA;AAAA,EACzE;AACA,EAAA,OAAO,QAAA,CAAS,MAAM,OAAO,CAAA;AACjC;AAEA,SAAS,YAAA,CAAa,KAAA,EAAO,OAAA,EAAS,YAAA,EAAc,SAAS,QAAA,EAAU;AACnE,EAAA,IAAI,CAAC,WAAW,KAAK,CAAA,IAAK,MAAM,UAAA,CAAW,CAAC,MAAM,EAAA,EAAI;AAClD,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,IAAI,UAAA,CAAW,KAAK,CAAA,EAAG;AACnB,IAAA,MAAM,SAAA,GAAY,KAAA,CAAM,UAAA,CAAW,CAAC,CAAA,KAAM,EAAA;AAC1C,IAAA,MAAM,GAAA,GAAM,OAAA,GAAU,OAAA,CAAQ,WAAA,EAAY,GAAI,EAAA;AAC9C,IAAA,IAAI,SAAA,EAAW;AACX,MAAA,MAAM,GAAA,GAAM,YAAA,CAAa,YAAA,CAAa,MAAA,GAAS,CAAC,CAAA;AAChD,MAAA,IAAI,GAAA,IAAO,GAAA,KAAQ,GAAA,EAAK,YAAA,CAAa,GAAA,EAAI;AAAA,IAC7C,CAAA,MAAA,IAAW,cAAc,GAAA,CAAI,GAAG,KAAK,CAAC,SAAA,CAAU,IAAA,CAAK,KAAK,CAAA,EAAG;AACzD,MAAA,YAAA,CAAa,KAAK,GAAG,CAAA;AAAA,IACzB;AACA,IAAA,OAAO,KAAA;AAAA,EACX;AAEA,EAAA,IAAI,YAAA,CAAa,MAAA,GAAS,CAAA,EAAG,OAAO,KAAA;AACpC,EAAA,OAAO,gBAAA,CAAiB,KAAA,EAAO,OAAA,EAAS,QAAQ,CAAA;AACpD;AAEA,SAAS,SAAS,IAAA,EAAM;AACpB,EAAA,MAAM,SAAS,EAAC;AAChB,EAAA,WAAA,CAAY,SAAA,GAAY,CAAA;AACxB,EAAA,IAAI,CAAA;AACJ,EAAA,OAAQ,CAAA,GAAI,WAAA,CAAY,IAAA,CAAK,IAAI,CAAA,EAAI;AACjC,IAAA,MAAA,CAAO,KAAK,EAAE,KAAA,EAAO,CAAA,CAAE,CAAC,GAAG,OAAA,EAAS,CAAA,CAAE,CAAC,CAAA,EAAG,KAAK,CAAA,CAAE,KAAA,GAAQ,EAAE,CAAC,CAAA,CAAE,QAAQ,CAAA;AAAA,EAC1E;AACA,EAAA,OAAO,MAAA;AACX;AAEA,SAAS,WAAA,CAAY,MAAA,EAAQ,KAAA,EAAO,QAAA,EAAU;AAC1C,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,KAAA,GAAQ,CAAC,CAAA;AAC7B,EAAA,IAAI,CAAC,IAAA,EAAM,OAAO,QAAA,IAAY,EAAA;AAC9B,EAAA,IAAI,WAAA,CAAY,KAAK,KAAK,CAAA,SAAU,IAAA,CAAK,KAAA,CAAM,OAAO,CAAC,CAAA;AACvD,EAAA,OAAO,GAAA;AACX;AAEA,SAAS,eAAA,CAAgB,MAAA,EAAQ,YAAA,EAAc,OAAA,EAAS,YAAA,EAAc;AAClE,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,CAAO,QAAQ,CAAA,EAAA,EAAK;AACpC,IAAA,MAAM,EAAE,KAAA,EAAO,OAAA,EAAQ,GAAI,OAAO,CAAC,CAAA;AACnC,IAAA,MAAM,QAAA,GAAW,WAAA,CAAY,MAAA,EAAQ,CAAA,EAAG,YAAY,CAAA;AACpD,IAAA,MAAA,IAAU,YAAA,CAAa,KAAA,EAAO,OAAA,EAAS,YAAA,EAAc,SAAS,QAAQ,CAAA;AAAA,EAC1E;AACA,EAAA,OAAO,MAAA;AACX;AAgBA,IAAM,WAAA,GAAc,EAAA;AAUb,SAAS,wBAAwB,OAAA,EAAS;AAC7C,EAAA,IAAI,MAAA,GAAS,EAAA;AACb,EAAA,MAAM,eAAe,EAAC;AAEtB,EAAA,SAAS,SAAA,CAAU,UAAU,YAAA,EAAc;AACvC,IAAA,IAAI,QAAA,KAAa,GAAG,OAAO,EAAA;AAC3B,IAAA,MAAM,WAAA,GAAc,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,QAAQ,CAAA;AAC5C,IAAA,MAAM,MAAA,GAAS,SAAS,WAAW,CAAA;AACnC,IAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,MAAA,EAAQ,YAAA,EAAc,SAAS,YAAY,CAAA;AAC1E,IAAA,MAAA,GAAS,MAAA,CAAO,MAAM,QAAQ,CAAA;AAC9B,IAAA,OAAO,MAAA;AAAA,EACX;AAEA,EAAA,OAAO;AAAA,IACH,KAAK,KAAA,EAAO;AACR,MAAA,IAAI,OAAO,KAAA,KAAU,QAAA,EAAU,KAAA,GAAQ,OAAO,KAAK,CAAA;AACnD,MAAA,MAAA,IAAU,KAAA;AACV,MAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AAEhC,MAAA,IAAI,WAAW,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,MAAA,CAAO,SAAS,WAAW,CAAA;AACtD,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,WAAA,CAAY,GAAG,CAAA;AACrC,MAAA,MAAM,MAAA,GAAS,MAAA,CAAO,WAAA,CAAY,GAAG,CAAA;AACrC,MAAA,IAAI,SAAS,MAAA,EAAQ,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,UAAU,MAAM,CAAA;AAEzD,MAAA,OAAO,QAAA,GAAW,KAAK,CAAC,IAAA,CAAK,KAAK,MAAA,CAAO,QAAA,GAAW,CAAC,CAAC,CAAA,EAAG,QAAA,EAAA;AACzD,MAAA,OAAO,QAAA,GAAW,KAAK,IAAA,CAAK,IAAA,CAAK,OAAO,QAAA,GAAW,CAAC,CAAC,CAAA,EAAG,QAAA,EAAA;AACxD,MAAA,OAAO,QAAA,GAAW,KAAK,CAAC,IAAA,CAAK,KAAK,MAAA,CAAO,QAAA,GAAW,CAAC,CAAC,CAAA,EAAG,QAAA,EAAA;AAEzD,MAAA,IAAI,QAAA,KAAa,GAAG,OAAO,EAAA;AAE3B,MAAA,MAAM,YAAA,GAAe,MAAA,CAAO,MAAA,CAAO,QAAQ,CAAA;AAC3C,MAAA,OAAO,SAAA,CAAU,UAAU,YAAY,CAAA;AAAA,IAC3C,CAAA;AAAA,IAEA,KAAA,GAAQ;AACJ,MAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,EAAG,OAAO,EAAA;AAChC,MAAA,OAAO,SAAA,CAAU,MAAA,CAAO,MAAA,EAAQ,EAAE,CAAA;AAAA,IACtC;AAAA,GACJ;AACJ;AAUO,SAAS,qBAAqB,OAAA,EAAS;AAC1C,EAAA,IAAI,OAAO,oBAAoB,WAAA,EAAa;AACxC,IAAA,MAAM,IAAI,KAAA;AAAA,MACN;AAAA,KACJ;AAAA,EACJ;AAEA,EAAA,MAAM,OAAA,GAAU,IAAI,WAAA,CAAY,OAAO,CAAA;AACvC,EAAA,MAAM,OAAA,GAAU,IAAI,WAAA,EAAY;AAChC,EAAA,MAAM,SAAA,GAAY,wBAAwB,OAAO,CAAA;AAEjD,EAAA,OAAO,IAAI,eAAA,CAAgB;AAAA,IACvB,SAAA,CAAU,OAAO,UAAA,EAAY;AACzB,MAAA,MAAM,IAAA,GACF,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,OAAA,CAAQ,MAAA,CAAO,KAAA,EAAO,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAA;AAC9E,MAAA,MAAM,GAAA,GAAM,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA;AAC/B,MAAA,IAAI,GAAA,CAAI,SAAS,CAAA,EAAG,UAAA,CAAW,QAAQ,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,IAC9D,CAAA;AAAA,IACA,MAAM,UAAA,EAAY;AACd,MAAA,MAAM,IAAA,GAAO,QAAQ,MAAA,EAAO;AAC5B,MAAA,IAAI,IAAA,CAAK,SAAS,CAAA,EAAG;AACjB,QAAA,MAAM,GAAA,GAAM,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA;AAC/B,QAAA,IAAI,GAAA,CAAI,SAAS,CAAA,EAAG,UAAA,CAAW,QAAQ,OAAA,CAAQ,MAAA,CAAO,GAAG,CAAC,CAAA;AAAA,MAC9D;AACA,MAAA,MAAM,KAAA,GAAQ,UAAU,KAAA,EAAM;AAC9B,MAAA,IAAI,KAAA,CAAM,SAAS,CAAA,EAAG,UAAA,CAAW,QAAQ,OAAA,CAAQ,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,IAClE;AAAA,GACH,CAAA;AACL;;;AC9KA,IAAM,qBAAA,GAAwB,CAAC,WAAW,CAAA;AAsBnC,SAAS,gBAAA,CAAiB,MAAA,GAAS,EAAC,EAAG;AAC1C,EAAA,MAAM;AAAA,IACF,OAAA;AAAA,IACA,aAAA;AAAA,IACA,YAAA,GAAe;AAAA,GACnB,GAAI,MAAA;AAEJ,EAAA,OAAO,eAAe,WAAW,OAAA,EAAS;AACtC,IAAA,IAAI,OAAO,aAAA,KAAkB,UAAA,IAAc,CAAC,aAAA,CAAc,OAAO,CAAA,EAAG;AAChE,MAAA,OAAOA,oBAAa,IAAA,EAAK;AAAA,IAC7B;AAEA,IAAA,MAAM,QAAA,GAAWA,oBAAa,IAAA,EAAK;AAEnC,IAAA,MAAM,WAAA,GAAc,QAAA,CAAS,OAAA,CAAQ,GAAA,CAAI,cAAc,CAAA,IAAK,EAAA;AAC5D,IAAA,MAAM,OAAA,GAAU,aAAa,IAAA,CAAK,CAAC,OAAO,WAAA,CAAY,QAAA,CAAS,EAAE,CAAC,CAAA;AAClE,IAAA,IAAI,CAAC,OAAA,IAAW,CAAC,QAAA,CAAS,IAAA,EAAM;AAC5B,MAAA,OAAO,QAAA;AAAA,IACX;AAEA,IAAA,MAAM,cAAc,QAAA,CAAS,IAAA,CAAK,WAAA,CAAY,oBAAA,CAAqB,OAAO,CAAC,CAAA;AAC3E,IAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,QAAA,CAAS,OAAO,CAAA;AAC5C,IAAA,OAAA,CAAQ,OAAO,gBAAgB,CAAA;AAE/B,IAAA,OAAO,IAAIA,oBAAa,WAAA,EAAa;AAAA,MACjC,QAAQ,QAAA,CAAS,MAAA;AAAA,MACjB,YAAY,QAAA,CAAS,UAAA;AAAA,MACrB;AAAA,KACH,CAAA;AAAA,EACL,CAAA;AACJ","file":"middleware.cjs","sourcesContent":["const FULL_DATE_REGEX = /(\\d{1,2})\\.[ \\t]+(\\d{1,2})\\.[ \\t]+(\\d{2,4})\\b/g;\r\nconst DAY_MONTH_REGEX = /(\\d{1,2})\\.[ \\t]+(\\d{1,2})\\.(?=[^\\p{L}\\p{N}]|$)/gu;\r\n\r\n/**\r\n * Glues date components together with non-breaking spaces.\r\n *\r\n * - `5. 12. 2024` → `5.\\u00A012.\\u00A02024`\r\n * - `5. 12.` → `5.\\u00A012.`\r\n *\r\n * @param {string} text\r\n * @returns {string}\r\n */\r\nexport function applyDates(text) {\r\n    return text\r\n        .replace(FULL_DATE_REGEX, '$1.\\u00A0$2.\\u00A0$3')\r\n        .replace(DAY_MONTH_REGEX, '$1.\\u00A0$2.');\r\n}\r\n","const INITIAL_REGEX = /(\\b\\p{Lu})\\.[ \\t]+(?=\\p{Lu})/gu;\r\n\r\n/**\r\n * Glues an initial (a single uppercase letter followed by a dot) to the\r\n * following word with a non-breaking space. Repeats until stable so chains\r\n * like `J. R. R. Tolkien` are fully fixed.\r\n *\r\n * @param {string} text\r\n * @returns {string}\r\n */\r\nexport function applyInitials(text) {\r\n    let previous;\r\n    let current = text;\r\n    do {\r\n        previous = current;\r\n        current = current.replace(INITIAL_REGEX, '$1.\\u00A0');\r\n    } while (current !== previous);\r\n    return current;\r\n}\r\n","const ORDINAL_REGEX = /(\\d{1,2})\\.[ \\t]+(?=\\p{Ll})/gu;\r\n\r\n/**\r\n * Glues ordinal numbers to the following word with a non-breaking space.\r\n * Triggers only when the next character is a Unicode lowercase letter so\r\n * sentences ending with an ordinal (e.g. `žil v 19. století. Měl…`)\r\n * are not affected at the sentence boundary.\r\n *\r\n * - `1. ledna` → `1.\\u00A0ledna`\r\n * - `25. listopadu 2024` → `25.\\u00A0listopadu 2024`\r\n *\r\n * @param {string} text\r\n * @returns {string}\r\n */\r\nexport function applyOrdinals(text) {\r\n    return text.replace(ORDINAL_REGEX, '$1.\\u00A0');\r\n}\r\n","/**\r\n * Czech one-letter prepositions and conjunctions that should not be left\r\n * at the end of a line (per Czech orthography rules).\r\n *\r\n * Source: https://prirucka.ujc.cas.cz/?id=880\r\n *\r\n * @type {readonly string[]}\r\n */\r\nexport const PREPOSITIONS = Object.freeze([\r\n    'a',\r\n    'i',\r\n    'k',\r\n    'o',\r\n    's',\r\n    'u',\r\n    'v',\r\n    'z',\r\n]);\r\n","import { PREPOSITIONS } from '../data/prepositions.js';\r\n\r\nconst PREPOSITION_REGEX = new RegExp(\r\n    `(?<=^|[\\\\s(\\\\[\"'\\u00A0\\u2018\\u201C\\u00BB\\u2014\\u2013-])(${PREPOSITIONS.join('|')})[ \\\\t]+(?=\\\\S)`,\r\n    'giu',\r\n);\r\n\r\n/**\r\n * Glues Czech one-letter prepositions and conjunctions (a, i, k, o, s, u,\r\n * v, z) to the following word with a non-breaking space.\r\n *\r\n * Case-insensitive – also handles capitalised forms at the start of a\r\n * sentence (`K Tobě`, `V domě`, `S Petrem`).\r\n *\r\n * Uses a lookbehind so consecutive prepositions (`v a z`) are all fixed\r\n * in a single pass.\r\n *\r\n * @param {string} text\r\n * @returns {string}\r\n */\r\nexport function applyPrepositions(text) {\r\n    return text.replace(PREPOSITION_REGEX, '$1\\u00A0');\r\n}\r\n","const ROMAN_NUMERAL =\r\n    '(?:(?=[IVXLCDM])M{0,3}(?:CM|CD|D?C{0,3})(?:XC|XL|L?X{0,3})(?:IX|IV|V?I{0,3}))';\r\nconst ROMAN_REGEX = new RegExp(\r\n    `(\\\\b\\\\p{Lu}\\\\p{L}+)[ \\\\t]+(?=${ROMAN_NUMERAL}\\\\.(?=[^\\\\p{L}\\\\p{N}]|$))`,\r\n    'gu',\r\n);\r\n\r\n/**\r\n * Glues a name to a following Roman numeral (with optional dot) using a\r\n * non-breaking space.\r\n *\r\n * - `Karel IV.` → `Karel\\u00A0IV.`\r\n * - `Jindřich VIII.` → `Jindřich\\u00A0VIII.`\r\n * - `papež Jan Pavel II.` → `papež Jan Pavel\\u00A0II.`\r\n *\r\n * @param {string} text\r\n * @returns {string}\r\n */\r\nexport function applyRoman(text) {\r\n    return text.replace(ROMAN_REGEX, '$1\\u00A0');\r\n}\r\n","const THOUSANDS_REGEX = /(\\d)[ \\t](\\d{3})(?=\\D|$)/g;\r\n\r\n/**\r\n * Replaces a regular space used as a thousand separator with a non-breaking\r\n * space so the number stays on one line (`10 000` → `10\\u00A0000`).\r\n *\r\n * Applied repeatedly to handle multiple separators in a single number\r\n * (`1 000 000`).\r\n *\r\n * @param {string} text\r\n * @returns {string}\r\n */\r\nexport function applyThousands(text) {\r\n    let previous;\r\n    let current = text;\r\n    do {\r\n        previous = current;\r\n        current = current.replace(THOUSANDS_REGEX, '$1\\u00A0$2');\r\n    } while (current !== previous);\r\n    return current;\r\n}\r\n","/**\r\n * Units of measurement that are safe to glue to a preceding number with a\r\n * non-breaking space, regardless of what follows.\r\n *\r\n * Sorted from longest to shortest so the regex alternation matches the most\r\n * specific unit first (e.g. `kWh` before `kW` before `W`).\r\n *\r\n * @type {readonly string[]}\r\n */\r\nexport const SAFE_UNITS = Object.freeze(\r\n    [\r\n        'km/h',\r\n        'm/s',\r\n        'kWh',\r\n        'mAh',\r\n        'mbar',\r\n        'kbps',\r\n        'Mbps',\r\n        'Gbit',\r\n        'kPa',\r\n        'bar',\r\n        'kg',\r\n        'mg',\r\n        'cm',\r\n        'mm',\r\n        'µm',\r\n        'nm',\r\n        'km',\r\n        'ml',\r\n        'cl',\r\n        'dl',\r\n        'kJ',\r\n        'Nm',\r\n        'Wb',\r\n        'lm',\r\n        'lx',\r\n        'cd',\r\n        'mol',\r\n        'min',\r\n        'ms',\r\n        'ns',\r\n        'Hz',\r\n        'Pa',\r\n        'kW',\r\n        'MW',\r\n        'Ohm',\r\n        '°C',\r\n        '°F',\r\n        '°',\r\n        '‰',\r\n        '%',\r\n        'px',\r\n        'pt',\r\n        'dpi',\r\n        'bpm',\r\n        'EUR',\r\n        'USD',\r\n        'CZK',\r\n        'Kč',\r\n        'mg/m³',\r\n        'str',\r\n        'osob',\r\n        'ks',\r\n        'MJ',\r\n        'TB',\r\n        'GB',\r\n        'MB',\r\n        'kB',\r\n        'bit',\r\n        'GBit',\r\n        'mol',\r\n        'Ω',\r\n        '€',\r\n        '$',\r\n        '£',\r\n    ].sort((a, b) => b.length - a.length),\r\n);\r\n\r\n/**\r\n * Units that collide with common Czech words/letters when used as a\r\n * single character (e.g. `s` is also a preposition, `m` matches `m` in\r\n * \"5 mužů\"). They are applied only when the unit is followed by a clear\r\n * word boundary that is not another letter (interpunction or end of string).\r\n *\r\n * @type {readonly string[]}\r\n */\r\nexport const STRICT_UNITS = Object.freeze(\r\n    ['m', 's', 'l', 't', 'g', 'V', 'A', 'W', 'J', 'K', 'B'].sort(\r\n        (a, b) => b.length - a.length,\r\n    ),\r\n);\r\n","import { SAFE_UNITS, STRICT_UNITS } from '../data/units.js';\r\n\r\nfunction escapeRegex(value) {\r\n    return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\n\r\nconst SAFE_PATTERN = SAFE_UNITS.map(escapeRegex).join('|');\r\nconst STRICT_PATTERN = STRICT_UNITS.map(escapeRegex).join('|');\r\n\r\nconst SAFE_UNIT_REGEX = new RegExp(\r\n    `(\\\\d)[ \\\\t]+(?=(?:${SAFE_PATTERN})(?![\\\\p{L}\\\\p{N}]))`,\r\n    'gu',\r\n);\r\n\r\nconst STRICT_UNIT_REGEX = new RegExp(\r\n    `(\\\\d)[ \\\\t]+(?=(?:${STRICT_PATTERN})(?:[.,;:!?)\\\\]/\\\\u00A0]|$))`,\r\n    'gu',\r\n);\r\n\r\n/**\r\n * Glues a number to its unit of measurement with a non-breaking space.\r\n *\r\n * Two passes:\r\n *  1. **Safe units** – multi-character or symbolic units (`km`, `°C`, `Kč`,\r\n *     `Ω`) match whenever they follow a digit and are not the prefix of a\r\n *     longer word.\r\n *  2. **Strict units** – single-letter units that collide with common Czech\r\n *     words (`s`, `m`, `g`, `K`, `V`, `A`, `W`) match only when followed by\r\n *     interpunction or end-of-string – never when followed by another\r\n *     letter (avoids false positives like `5 mužů`).\r\n *\r\n * @param {string} text\r\n * @returns {string}\r\n */\r\nexport function applyUnits(text) {\r\n    return text\r\n        .replace(SAFE_UNIT_REGEX, '$1\\u00A0')\r\n        .replace(STRICT_UNIT_REGEX, '$1\\u00A0');\r\n}\r\n","import { applyDates } from './rules/dates.js';\r\nimport { applyInitials } from './rules/initials.js';\r\nimport { applyOrdinals } from './rules/ordinals.js';\r\nimport { applyPrepositions } from './rules/prepositions.js';\r\nimport { applyRoman } from './rules/roman.js';\r\nimport { applyThousands } from './rules/thousands.js';\r\nimport { applyUnits } from './rules/units.js';\r\n\r\n/**\r\n * @typedef {object} FixCzechOptions\r\n * @property {boolean} [prepositions=true] Glue one-letter prepositions/conjunctions to the next word.\r\n * @property {boolean} [units=true]        Glue numbers to units of measurement.\r\n * @property {boolean} [initials=true]     Glue initials (J., A.) to surnames.\r\n * @property {boolean} [dates=true]        Glue dates (5. 12. 2024) together.\r\n * @property {boolean} [ordinals=true]     Glue ordinal numbers (1. ledna) to the next word.\r\n * @property {boolean} [roman=true]        Glue names to Roman numerals (Karel IV.).\r\n * @property {boolean} [thousands=true]    Replace thousands separators (10 000) with nbsp.\r\n */\r\n\r\nconst DEFAULT_OPTIONS = Object.freeze({\r\n    prepositions: true,\r\n    units: true,\r\n    initials: true,\r\n    dates: true,\r\n    ordinals: true,\r\n    roman: true,\r\n    thousands: true,\r\n});\r\n\r\n/**\r\n * Apply Czech typography rules to a string.\r\n *\r\n * Returns the input unchanged when it isn't a string, so the function is\r\n * safe to call on `null`, `undefined`, numbers etc. without guarding.\r\n *\r\n * Pipeline order matters – `thousands` runs before `units`, otherwise the\r\n * \"10 000 km\" case would steal the thousand-separator space as the\r\n * number-to-unit space.\r\n *\r\n * @param {string} text\r\n * @param {FixCzechOptions} [options]\r\n * @returns {string}\r\n */\r\nexport function fixCzech(text, options) {\r\n    if (typeof text !== 'string' || text.length === 0) {\r\n        return text;\r\n    }\r\n\r\n    const opts = options ? { ...DEFAULT_OPTIONS, ...options } : DEFAULT_OPTIONS;\r\n\r\n    let result = text;\r\n    if (opts.thousands) result = applyThousands(result);\r\n    if (opts.dates) result = applyDates(result);\r\n    if (opts.ordinals) result = applyOrdinals(result);\r\n    if (opts.units) result = applyUnits(result);\r\n    if (opts.initials) result = applyInitials(result);\r\n    if (opts.roman) result = applyRoman(result);\r\n    if (opts.prepositions) result = applyPrepositions(result);\r\n    return result;\r\n}\r\n\r\nexport default fixCzech;\r\n","import { fixCzech } from './fixCzech.js';\r\n\r\nconst RAW_TEXT_TAGS = new Set(['script', 'style', 'pre', 'code', 'textarea']);\r\n\r\nconst TOKEN_REGEX =\r\n    /<!--[\\s\\S]*?-->|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>|<![A-Za-z][^>]*>|<\\?[\\s\\S]*?\\?>|<\\/?([A-Za-z][A-Za-z0-9-]*)\\b[^>]*>|[^<]+/g;\r\n\r\nconst SENTINEL = '\\u0001';\r\n\r\nfunction isTextToken(match) {\r\n    return match.charCodeAt(0) !== 60;\r\n}\r\n\r\nfunction isTagToken(match) {\r\n    return (\r\n        match.charCodeAt(0) === 60 &&\r\n        !match.startsWith('<!--') &&\r\n        !match.startsWith('<![') &&\r\n        !match.startsWith('<!') &&\r\n        !match.startsWith('<?')\r\n    );\r\n}\r\n\r\nfunction fixWithLookahead(text, options, nextChar) {\r\n    if (nextChar && /\\S/.test(nextChar)) {\r\n        const padded = text + nextChar + SENTINEL;\r\n        const fixed = fixCzech(padded, options);\r\n        if (fixed.endsWith(nextChar + SENTINEL)) {\r\n            return fixed.slice(0, -(nextChar.length + SENTINEL.length));\r\n        }\r\n        return fixed.endsWith(SENTINEL) ? fixed.slice(0, -SENTINEL.length) : fixed;\r\n    }\r\n    return fixCzech(text, options);\r\n}\r\n\r\nfunction transformOne(match, tagName, rawTextStack, options, nextChar) {\r\n    if (!isTagToken(match) && match.charCodeAt(0) === 60) {\r\n        return match;\r\n    }\r\n\r\n    if (isTagToken(match)) {\r\n        const isClosing = match.charCodeAt(1) === 47;\r\n        const tag = tagName ? tagName.toLowerCase() : '';\r\n        if (isClosing) {\r\n            const top = rawTextStack[rawTextStack.length - 1];\r\n            if (top && top === tag) rawTextStack.pop();\r\n        } else if (RAW_TEXT_TAGS.has(tag) && !/\\/\\s*>$/.test(match)) {\r\n            rawTextStack.push(tag);\r\n        }\r\n        return match;\r\n    }\r\n\r\n    if (rawTextStack.length > 0) return match;\r\n    return fixWithLookahead(match, options, nextChar);\r\n}\r\n\r\nfunction tokenize(html) {\r\n    const tokens = [];\r\n    TOKEN_REGEX.lastIndex = 0;\r\n    let m;\r\n    while ((m = TOKEN_REGEX.exec(html))) {\r\n        tokens.push({ match: m[0], tagName: m[1], end: m.index + m[0].length });\r\n    }\r\n    return tokens;\r\n}\r\n\r\nfunction lookaheadOf(tokens, index, fallback) {\r\n    const next = tokens[index + 1];\r\n    if (!next) return fallback || '';\r\n    if (isTextToken(next.match)) return next.match.charAt(0);\r\n    return '<';\r\n}\r\n\r\nfunction transformTokens(tokens, rawTextStack, options, trailingChar) {\r\n    let output = '';\r\n    for (let i = 0; i < tokens.length; i++) {\r\n        const { match, tagName } = tokens[i];\r\n        const nextChar = lookaheadOf(tokens, i, trailingChar);\r\n        output += transformOne(match, tagName, rawTextStack, options, nextChar);\r\n    }\r\n    return output;\r\n}\r\n\r\n/**\r\n * Apply Czech typography rules to an HTML string. Tags, attributes,\r\n * comments, doctypes and the contents of `script`/`style`/`pre`/`code`/\r\n * `textarea` elements are left untouched.\r\n *\r\n * @param {string} html\r\n * @param {import('./fixCzech.js').FixCzechOptions} [options]\r\n * @returns {string}\r\n */\r\nexport function fixCzechHtml(html, options) {\r\n    if (typeof html !== 'string' || html.length === 0) return html;\r\n    return transformTokens(tokenize(html), [], options, '');\r\n}\r\n\r\nconst STREAM_TAIL = 64;\r\n\r\n/**\r\n * Stateful streaming processor – feeds chunks of HTML through the same\r\n * transformation as {@link fixCzechHtml} while keeping a small tail\r\n * buffer to handle words and tags split across chunk boundaries.\r\n *\r\n * @param {import('./fixCzech.js').FixCzechOptions} [options]\r\n * @returns {{ feed(chunk: string): string, flush(): string }}\r\n */\r\nexport function createFixCzechProcessor(options) {\r\n    let buffer = '';\r\n    const rawTextStack = [];\r\n\r\n    function flushUpTo(cutPoint, trailingChar) {\r\n        if (cutPoint === 0) return '';\r\n        const processable = buffer.slice(0, cutPoint);\r\n        const tokens = tokenize(processable);\r\n        const output = transformTokens(tokens, rawTextStack, options, trailingChar);\r\n        buffer = buffer.slice(cutPoint);\r\n        return output;\r\n    }\r\n\r\n    return {\r\n        feed(chunk) {\r\n            if (typeof chunk !== 'string') chunk = String(chunk);\r\n            buffer += chunk;\r\n            if (buffer.length === 0) return '';\r\n\r\n            let cutPoint = Math.max(0, buffer.length - STREAM_TAIL);\r\n            const lastLt = buffer.lastIndexOf('<');\r\n            const lastGt = buffer.lastIndexOf('>');\r\n            if (lastLt > lastGt) cutPoint = Math.min(cutPoint, lastLt);\r\n\r\n            while (cutPoint > 0 && !/\\s/.test(buffer[cutPoint - 1])) cutPoint--;\r\n            while (cutPoint > 0 && /\\s/.test(buffer[cutPoint - 1])) cutPoint--;\r\n            while (cutPoint > 0 && !/\\s/.test(buffer[cutPoint - 1])) cutPoint--;\r\n\r\n            if (cutPoint === 0) return '';\r\n\r\n            const trailingChar = buffer.charAt(cutPoint);\r\n            return flushUpTo(cutPoint, trailingChar);\r\n        },\r\n\r\n        flush() {\r\n            if (buffer.length === 0) return '';\r\n            return flushUpTo(buffer.length, '');\r\n        },\r\n    };\r\n}\r\n\r\n/**\r\n * Create a Web-Streams `TransformStream` that applies Czech typography\r\n * rules to an HTML response on the fly. Compatible with Vercel Edge,\r\n * Cloudflare Workers, Node.js 18+, Deno and Bun.\r\n *\r\n * @param {import('./fixCzech.js').FixCzechOptions} [options]\r\n * @returns {TransformStream<Uint8Array | string, Uint8Array>}\r\n */\r\nexport function createFixCzechStream(options) {\r\n    if (typeof TransformStream === 'undefined') {\r\n        throw new Error(\r\n            'createFixCzechStream requires the Web Streams API. Use Node 18+, Deno, Bun, or run in a browser/Edge runtime.',\r\n        );\r\n    }\r\n\r\n    const decoder = new TextDecoder('utf-8');\r\n    const encoder = new TextEncoder();\r\n    const processor = createFixCzechProcessor(options);\r\n\r\n    return new TransformStream({\r\n        transform(chunk, controller) {\r\n            const text =\r\n                typeof chunk === 'string' ? chunk : decoder.decode(chunk, { stream: true });\r\n            const out = processor.feed(text);\r\n            if (out.length > 0) controller.enqueue(encoder.encode(out));\r\n        },\r\n        flush(controller) {\r\n            const tail = decoder.decode();\r\n            if (tail.length > 0) {\r\n                const out = processor.feed(tail);\r\n                if (out.length > 0) controller.enqueue(encoder.encode(out));\r\n            }\r\n            const final = processor.flush();\r\n            if (final.length > 0) controller.enqueue(encoder.encode(final));\r\n        },\r\n    });\r\n}\r\n","import { NextResponse } from 'next/server';\r\nimport { createFixCzechStream } from '../fixCzechHtml.js';\r\n\r\n/**\r\n * @typedef {object} WithCzTypographyOptions\r\n * @property {import('../fixCzech.js').FixCzechOptions} [options] Rule toggles.\r\n * @property {(request: any) => boolean} [shouldProcess]          Custom predicate – return false to skip.\r\n * @property {string[]} [contentTypes=['text/html']]              Content-Type substrings that trigger transformation.\r\n */\r\n\r\nconst DEFAULT_CONTENT_TYPES = ['text/html'];\r\n\r\n/**\r\n * Build a Next.js middleware that pipes every HTML response through\r\n * {@link createFixCzechStream}. Streaming-friendly – the response body\r\n * is not buffered, which keeps Suspense and RSC payload behaviour\r\n * intact.\r\n *\r\n * Usage in `middleware.ts`:\r\n *\r\n * ```ts\r\n * import { withCzTypography } from 'cz-typography/next/middleware';\r\n *\r\n * export const middleware = withCzTypography();\r\n *\r\n * export const config = {\r\n *     matcher: '/((?!api|_next/static|_next/image|favicon.ico).*)',\r\n * };\r\n * ```\r\n *\r\n * @param {WithCzTypographyOptions} [config]\r\n */\r\nexport function withCzTypography(config = {}) {\r\n    const {\r\n        options,\r\n        shouldProcess,\r\n        contentTypes = DEFAULT_CONTENT_TYPES,\r\n    } = config;\r\n\r\n    return async function middleware(request) {\r\n        if (typeof shouldProcess === 'function' && !shouldProcess(request)) {\r\n            return NextResponse.next();\r\n        }\r\n\r\n        const response = NextResponse.next();\r\n\r\n        const contentType = response.headers.get('content-type') ?? '';\r\n        const matches = contentTypes.some((ct) => contentType.includes(ct));\r\n        if (!matches || !response.body) {\r\n            return response;\r\n        }\r\n\r\n        const transformed = response.body.pipeThrough(createFixCzechStream(options));\r\n        const headers = new Headers(response.headers);\r\n        headers.delete('content-length');\r\n\r\n        return new NextResponse(transformed, {\r\n            status: response.status,\r\n            statusText: response.statusText,\r\n            headers,\r\n        });\r\n    };\r\n}\r\n\r\nexport { withCzTypography as default };\r\n"]}